====== Control System Using CANopen ====== In the EEROS library you will find a directory with examples. For this example see [[https://github.com/eeros-project/eeros-framework/blob/master/examples/can/|CanExample.cpp]]. Open a shell in the build directory of your EEROS library and run $ sudo ./examples/can/CanExample This example will only be present in your build directory if EEROS was built with ''-DUSE_CAN=TRUE'' set. \\ The system comprises a control system, a safety system and a sequencer with a few sequences. The example assumes that you have two identical Faulhaber drives in your CAN network. The node identifiers are '1' and '2'. Read more about the functionality of the [[eeros_architecture:control_system:available_blocks:canreceivefaulhaber|]] and [[eeros_architecture:control_system:available_blocks:cansendfaulhaber|]] blocks. ==== Control System ==== The control system basically has just a block to send CAN packages to the drives and another block to receive information from them. You have to adjust the scaling for the sending and receiving block according to your gearboxes and encoders. ==== Safety System ==== The safety system incorporates a few levels with the necessary events to switch between them. The exit handler serves to shutdown the system in a controlled way. ==== Sequencer ==== The most important sequence is the ''initSequence''. It initialyzes the drives (by NMT commands and SDO transfers) and brings them up to operational mode (by PDO transfers). The ''moveSequence'' simply turns the motors back and forth while logging the velocity and the position. The ''stopSequence'' disables the drives before the program ends.