CMX-CANopen allows for optimized implementations of CANopen conformant devices. CMX-CANopen was developed to allow for maximum task optimization, especially when used with an RTOS such as CMX-RTX. Even without an RTOS, CMX-CANopen allows adapting the execution priorities of critical tasks making CMX-CANopen one of the best performing CANopen stacks available.
The CANopen Process Data Objects (PDO) allow for a very flexible configuration allowing a single CANbus message to be filled with a combination of variables available in the Object Dictionary (OD) of a node. This PDO mapping process is implemented so efficiently in CMX-CANopen, that in most cases an incoming Receive PDO (RPDO) can be processed right in the CANbus interrupt service routine.
All major tasks performed in CMX-CANopen are controlled from one single module. If CMX-CANopen is not used with an RTOS, the execution of tasks can still be optimized towards an application. In general, tasks can be executed within the CAN interrupt service routine, a timer interrupt service routine or in the background. This even allows processing different PDOs at different priority levels.
When designing multiple CANopen devices that only vary slightly (for example in some Object Dictionary (OD) entries and/or in PDO configuration) it is desirable to only develop and maintain one version of the code. With CMX-CANopen the entire OD and the PDO configuration can be stored in non-volatile memory. As a result, the configuration of a node can be changed drastically just by downloading a configuration file (download via CANopen supported).
CMX-CANopen is delivered with two examples for implementations of the CANopen Device Profile DS401 - generic I/O. Additional and customized examples are available upon request and can include Device Profile Implementations such as Joysticks, Encoders (DS406), Batteries (DSP418), Chargers (DSP419) or Elevators/Lifts (DSP417).All examples pass the official CANopen Conformance Test!