We are having issues writing assembly mappings that work with both the CANopen and EtherNet/IP protocols. In our EtherNet/IP implementation, we have a single assembly write map containing 3 ADIs (32 bits each). This works well, but when utilizing the same code for CANopen, the third ADI’s process data is truncated and is never sent over the bus. We believe this is due to the maximum payload size of a CAN frame being 64 bits. Removing one ADI from the original write map and adding it to a new one solves the issue, and we get two CAN frames with different identifiers being transmitted on the bus (first frame contains the first two assembly mapped TPDOs and the second one contains the third).
This updated code with two write maps does not work on our EtherNet/IP module as our LED status indicators signal that the network status LED is off (indicating no power or no IP address), and the module status LED is solid red (indicating a major fault). Is there a way to have the same code display the process data on both EtherNet/IP and CANopen? We also have a Profinet board that we have not yet tested with the assembly map changes yet and would like to find a solution to allow us to reuse our code for all protocols if possible.