I am working with a two port NI PCI-CAN Series 2 card and two Copley Controls servo drives (nodes) controlling two motion axes. There are feedback devices connected to the generic I/O pins on one of the nodes that will determine when I should acquire information from either or both of the nodes on the network (current, bus voltage, velocity, etc). The higher the sample rate, the less time I have to spend acquiring data, so limiting overhead is of key importance.
At the moment, my plan is to map an event triggered transmit PDO on the node with the generic I/O feedback such that the all the required information from that drive will be sent to the CAN card when the I/O event occurs. This event will also signal the CAN card to send SDO messages to the network node that does not have the PDO triggered event.
One option I have come up with to achieve this interaction would require a register where I can map the receive PDO so that when the PDO message is received, it is automatically directed to the proper location and made available to LabVIEW The closest thing I could find that looks to achieve the same goal is using the Channel API and predefined messages. Is the Arbitration ID the same as the Can Message Identifier (COB-ID)? If I use the CAN Read.vi in the Channel API menu of the NI-CAN library and no message has been received with the specified Arbitration ID, will the Number of samples received output be 0? Is there a preferred method for dealing with PDO messages with minimal overhead?
This is my first foray into using CAN devices, so getting pointed in the right direction in terms of LabVIEW PDO support would be a big help.