I recently switched my device from ModbusRTU to CANopen by changing out the Anybus Compactcom and making some minor firmware updates. The device now seems to be properly functioning as a CANopen node, but I am having a bit of trouble mapping the PDOs for cyclic data transfer.
The host application consists of 117 Anybus ADI's, each a UINT16. According to the Anybus documentation, the ADIs correspond to objects in the CANopen node's object dictionary from 2001h to 5fffh (ADI 1-3fff).
When I attempt to read an object directly from the CANopen node using my master simulator, I get the expected value every time, but after mapping my PDOs I only ever get the first ADI (then all zeros) when I try a cyclical data read.
In my EDS file, I mapped each ADI like this:
[2001]
ParameterName=ADI1
ObjectType=0x7
DataType=0x0006
LowLimit=0x0000
HighLimit=0xFFFF
DefaultValue=0x0
AccessType=ro
PDOMapping=1
In my master configuration program, I map the ADIs that I need to PDOs and download the configuration to the master. When I start data transfer, all I get is the first ADI-- EVEN IF I didn't map it. As long as ANY object is mapped, I get the data from the first ADI then all zeros after that.
I know this is a complicated setup and this probably isn't enough information to get a good answer, but I am new with CANopen so anyone who has experience with CANopen (especially using an Anybus-CC) please give me some suggestions or let me know what else you need to know about the setup.