CANopen
The CANopen application layer is specified in CiA 301. This document describes the basic communication services and protocols mapped to the Classical CAN data link layer. The CANopen services are also mapped to other communication technologies for example EtherCAT and Powerlink.
The specified communication services and the related protocols (given in brackets) comprise:
- Network management (NMT and Heartbeat)
- Device configuration (SDO)
- Real-time transmission of process data (PDO)
- Node synchronization (SYNC and TIME)
- Diagnostics (EMCY and SDO)
The related CANopen protocols require the unique assignment of a 7-bit node-ID by the system designer, in order to guarantee that all protocols use a unique CAN-ID. This can be achieved by different methods. Most common is the assignment by means of DIP switches. But there are also other means possible, e.g. dedicated configuration interfaces (e.g. a display). If the CAN interface of the CANopen device is used, the layer setting services (LSS) as defined in CiA 305 should be used. LSS is often used in IP67-rated devices.
CANopen requires the implementation of an object dictionary. This is a list of all parameters representing the CANopen device functionality including process data, configuration options, and diagnostic information. This object dictionary is well structured and each parameter is addressable by means of a 16-bit index and an 8-bit sub-index. This 24-bit address is used by some communication services as a multiplexer to overcome the limitation of just 2048 identifiers provided by the CAN data link layer. This is so-to-say a prolongation of the 11-bit CAN-ID used by default for all CANopen protocols.
Object dictionary structure
The 16-bit index range is structured as follows:
000016 | reserved |
000116 to 025F16 | Data type parameters |
026016 to 0FFF16 | reserved |
100016 to 1FFF16 | Communication parameters |
200016 to 5FFF16 | Manufacturer-specific parameters |
600016 to 67FF16 | Logic device 1 parameters |
680016 to 6FFF16 | Logic device 2 parameters |
700016 to 77FF16 | Logic device 3 parameters |
780016 to 7FFF16 | Logic device 4 parameters |
800016 to 87FF16 | Logic device 5 parameters |
880016 to 8FFF16 | Logic device 6 parameters/td> |
900016 to 97FF16 | Logic device 7 parameters |
980016 to 9FFF16 | Logic device 8 parameters |
A00016 to AFFF16 | Network variables |
B00016 to BFFF16 | System variables |
C00016 to FFFF16 | reserved |
Each of these parameters can have up to 256 sub-parameters addressable by means of the 8-bit sub-index. The sub-parameter 0016 is used to indicate the highest implemented sub-parameter in case of arrays (all sub-parameters are of the same data type) or records (sub-parameters are of different data types). Parameters specified as variables support just the sub-parameter 0016.
The CANopen object dictionary supports up to eight logical devices meaning you can implement multiple device profiles in a single CANopen device. This could be a motion controller with eight motor instances or a motion controller with additional I/O functionality.
List of abbreviations
CAN | Controller area network |
EMCY | Emergency object |
ID | Identifier |
I/O | Input/output |
LSS | Layer setting services |
NMT | Network management |
PDO | Process data object |
SDO | Service data object |
SYNC | Synchronization object |
TIME | Network time object |