TL:DR Using CANopen, don't see CANopen IDs on the bus.
I'm very confused. I have a semi-functional CANopen network set up between a PLC and a motor controller. Those two items are the only two nodes on the bus.
I say semi-functional because only some of the features work. The sync message is going out from the PLC who is the bus master. This is verified by the motor controller, that will fault if the sync message goes missing like when unplugging the CAN bus.
Information seems to only move on the bus via TPDOA and RPDOA. The motor controller accepts data on CAN ID 0x201 RPDOA. The motor controller transmits data on CAN ID 0x181 TPDOA. This aligns with the CANopen standard.
I'm trying to move other data from the motor controller to the PLC vis TPDOB, TPDOC, and TPDOD. The addresses should be 0x281, 0x381, and 0x481 respectively. This is not functional and the PLC does not receive anything. This also aligns with the CANopen standard.
To try and figure out what's wrong I sniffed the CAN network. The sniffing was done With an Arduino and a CAN shield with an MCP2515. The MCP2515 uses an 8MHz cristal and the bus is running at 500k. The problem is that when looking at just the IDs I don't see anything that I was expecting. The two most common IDs are 0x269 and 0x4A9. These don't match any CANopen IDs. There are some other IDs that I'm also seeing but far less frequently 0x26A, 0x4AA, 0x262, and so on.
To make sure that what I'm seeing is not some artifact I've poured over the library that I'm using. I did not find any faults with the way the IDs are detected and presented. I also looked at how the library configures the CAN bus baud rate. I did not entirely agree with their implementation and tweaked it. Unfortunately, even with the tweak, all I see is the aforementioned IDs.
The thing I have yet to try is to filter out the two most common IDs to make sure that they are not somehow obscuring the other IDs because the buffers of the MCP2515 may be overloaded. It only has two buffers and I don't think the Arduino can read them fast enough.
Are there any reasons why the actual CAN IDs look funny? Am I misinterpreting the CANopen ID standard or is there some other coding in play?