Supported platforms: CODESYS 2.3, CODESYS 3.5
The SDO communication is point-to-point communication; every SDO request (from client SDO) needs a response (from server SDO). When the SDO request is erroneous or the device isn’t able to provide the requested data, an abort message will be given as a response.
The abort message includes the OD index to which the failed SDO transfer refers and four bytes long abort code. The abort code describes the reason of the error. Abort code leads to immediate termination of the SDO transmission.
The following example describes the abort code structure:
|
COB-ID |
DLC |
Command byte |
OD index |
OD index |
OD sub-index |
Abort code |
Abort code |
Abort code |
Abort code |
SDO read request (index 2201h sub-index 1) |
601 |
8 |
40 |
01 |
22 |
01 |
00 |
00 |
00 |
00 |
SDO response (object does not exist) |
581 |
8 |
80 |
01 |
22 |
01 |
00 |
00 |
02 |
06 |
The CiA Draft Standard 301 (also known as DS301) defines 29 abort codes. It is not possible to use own, non-defined abort codes. The following table lists CANopen SDO abort codes, the most common are highlighted.
Abort code |
Description |
0503 0000h |
Toggle bit not alternated. |
0504 0000h |
SDO protocol timed out. |
0504 0001h |
Client/server command specifier not valid or unknown. |
0504 0002h |
Invalid block size (block mode only). |
0504 0003h |
Invalid sequence number (block mode only). |
0504 0004h |
CRC error (block mode only). |
0504 0005h |
Out of memory. |
0601 0000h |
Unsupported access to an object. |
0601 0001h |
Attempt to read a write only object. |
0601 0002h |
Attempt to write a read only object. |
0602 0000h |
Object does not exist in the object dictionary. |
0604 0041h |
Object cannot be mapped to the PDO. |
0604 0042h |
The number and length of the objects to be mapped would exceed PDO length. |
0604 0043h |
General parameter incompatibility reason. |
0604 0047h |
General internal incompatibility in the device. |
0606 0000h |
Access failed due to a hardware error. |
0607 0010h |
Data type does not match; length of service parameter does not match. |
0607 0012h |
Data type does not match; length of service parameter too high. |
0607 0013h |
Data type does not match; length of service parameter too low. |
0609 0011h |
Sub-index does not exist. |
0609 0030h |
Value range of parameter exceeded (only for write access). |
0609 0031h |
Value of parameter written too high. |
0609 0032h |
Value of parameter written too low. |
0609 0036h |
Maximum value is less than minimum value. |
0800 0000h |
General error. |
0800 0020h |
Data cannot be transferred or stored to the application. |
0800 0021h |
Data cannot be transferred or stored to the application because of local control. |
0800 0022h |
Data cannot be transferred or stored to the application because of the present device state. |
0800 0023h |
Object dictionary dynamic generation fails or no object dictionary is present (e.g. object dictionary is generated from file and generation fails because of a file error). |
CANopen Application Layer and Communication Profile, CiA Draft Standard 301
CANopen Device and Application Profile Specifications, CiA 4XX
Source file topic000850.htm
Last updated 21-Feb-2025