CANopen is a communication protocol and device profile specification for embedded systems used in automation.
In terms of the OSI model, CANopen implements the layers above and including the network layer.
The CANopen standard consists of an addressing scheme, several small communication protocols and an application layer defined by a device profile.
The communication protocols have support for network management, device monitoring and communication between nodes,
including a simple transport layer for message segmentation/desegmentation.
The lower level protocol implementing the data link and physical layers is usually Controller Area Network (CAN),
although devices using some other means of communication (such as Ethernet Powerlink, EtherCAT)
can also implement the CANopen device profile.
The basic CANopen device and communication profiles are given in the CAN in Automation (CiA) draft standard 301.
Profiles for more specialized devices are built on top of this basic profile, and are specified in numerous
other standards released by CAN in Automation, such as CiA401 for I/O-modules and CiA402 for motion control.
A canopen library built on top of Janz Software pmc module library has been developed
to remote control a number of CANopen DS-301 standard based brushless motors.
A UI written in QT desktop has been developed to test servo motors trajectories.
Further info about CANOPEN protocol can be found in the articles section.