Programming CANOpen Motion
How do you make a CANOpen motion control system move? Your program creates the desired motions by sending the appropriate commands over the CAN bus using the vendor independent CiA 402 profile.
A CANOpen profile is a standard set of objects to interface to a particular device type, such as inputs, outputs, encoders, or motor drives. A profile that is still being evaluated is called a Draft Standard; eventually it will become a CiA (CAN-in-Automation) standard. So CiA 402 was originally called DS402, and is still often called DS 402.
Most CiA standards are available from the CAN in Automation web site for free by requesting the desired standards. However, CiA 402 is not available. I suspect the reason is that CiA 402 is now part of the IEC 61800-7-201 and IEC 61800-7-301 standards, and thus are only available from the IEC.
I was able to locate and download a copy of the older DS402 standard; there might be a few changes, but it should be good enough for my uses, and I also have the various manufacturers’ guides on how they implemented CiA 402.
Ease of use is one weakness of CANOpen. I’ve been looking through DS 402 and although it may be well designed, it’s not easy to learn. I think more vendors should do what Copley Controls does: provide a much easier to use interface that makes it much faster to get started with their drives.
Another approach is to have a motion controller that controls the CANOpen axes, such as the Schneider LMC (Lexium Motion Controller) series, the Elmo Maestro, and (for Ethernet PowerLink) the Balder NextMove E100. In this case, your program interacts directly with the motion controller instead of the CANOpen drives.