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