CANopen FD application layer basics

The CANopen FD application layer is specified in CiA 1301. This document describes the basic communication services and protocols mapped to the CAN FD data link layer.

The specified communication services and the related protocols (given in brackets) comprise:

  • Network management (NMT and Heartbeat)
  • Device configuration (USDO)
  • Real-time transmission of process data (PDO)
  • Node synchronization (SYNC and TIME)
  • Diagnostics (EMCY and USDO)

These protocols are mapped by default to CAN data frames in FBFF (FD Base Frame Format). This frame format use the 11-bit CAN-ID and provides a payload (data field) of up to 64 byte. The use of 29-bit CAN-IDs is optional (FEFF). The extended payload length compared with the Classical CAN data frames in CBFF (Classical Base Frame Format) and CEFF (Classical Extended Frame Format) is used to improve the protocol functions, especially for USDO and EMCY. Of course, also the PDOs benefit from the longer data field and can transport now up to 64 byte of process data.

CANopen FD requires the implementation of an object dictionary. This is a list of all parameters representing the CANopen FD 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. By the way, the CANopen FD object dictionary is nearly the same as the Classic CANopen object dictionary. Just the error history is new.

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 FD object dictionary supports up to eight logical devices meaning you can implement multiple device profiles in a single CANopen FD device. This could be a motion controller with eight motor instances or a motion controller with additional I/O functionality.

List of abbreviations

CAN FD Controller area network with flexible data rate
CBFF Classical Base Frame Format
CEFF Classical Extended Frame Format
FBFF FD Base Frame Format
FEFF FD Extended Frame Format
ID Identifier
I/O Input/output
LSS Layer setting services
NMT Network management
PDO Process data object
USDO Universal service data object
SYNC Synchronization object
TIME Network time object