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:
|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|
|LSS||Layer setting services|
|PDO||Process data object|
|USDO||Universal service data object|
|TIME||Network time object|