
3 Protocol description
15-04-2016 14 7000.05052
Command codes
Command code
Name
Function
0x00
Boot up
Boot-up message / Reset Node (Receive / Request)
0x01
SDO Read
Read the object dictionary entry (Request / Response)
0x02
SDO Write
Write an object dictionary entry (Request / Response)
0x03
SDO Error
SDO error (abort request / error response)
0x04
Controlword
Writing the controlword (request / response)
0x05
Statusword
Reception of the statusword (receive)
0x06
Trace Log
Trace Request for Trace Logger (Request / Response)
0x07
EMCY
Reception of an emergency message (receive)
0x08
SDO Block Read Init
Initialisation of the segmented SDO block upload (request /
response)
0x09
SDO Block Read Upload
Execution of the segmented SDO block upload (request /
response / acknowledge)
0x0A
SDO Block Read End
End of the segmented SDO block upload (request /
acknowledge)
0x0B
SDO Block Write Init
Initialisation of the segmented SDO block download
(request / response)
0x0C
SDO Block Write
Download
Execution of the segmented SDO block download (request /
response)
0x0D
SDO Block Write End
End of the segmented SDO block download (request /
response)
Data
The data format is based on the CANopen data format. The data transmission always
starts with the lowest value byte.
CRC (Cyclic Redundancy Check)
For the check sum calculation, the following algorithm is applied to all the bytes (except
for SOF/EOF) of the telegram to be processed:
#define polynomial 0xD5
uint8_t CalcCRCByte(uint8_t u8Byte, uint8_t u8CRC)
{
uint8_t i;
u8CRC = u8CRC ^ u8Byte;
for (i = 0; i < 8; i++) {
if (u8CRC & 0x01) {
u8CRC = (u8CRC >> 1) ^ polynomial;
}
else {
u8CRC >>= 1;
}
}
return u8CRC;
}
0xFF is used as the start value for the CRC8.