An Overview of CANopen SDO

SDO is primarily used for reading and writing parameters of slave devices by the CANopen master. The most significant feature of SDO is the service confirmation, which produces a response for each message, ensuring the accuracy of data transmission.

SDO communication is based on the client-server model, with the CANopen master node typically acting as the client, and the slave node serving as the SDO server. The SDO request and response messages contain 8 bytes of data. Its communication principle is very straightforward: the client sends a message with a COB-ID of 600 + Node-ID, where Node-ID is the address of the server node, and the data length is 8 bytes; after the server successfully receives it, it responds with a message having a COB-ID of 580 + Node-ID.

There are two transfer mechanisms for SDO:

Expedited transfer: Up to 4 bytes of data can be transmitted.

Segmented transfer: Used for transmitting data greater than 4 bytes.

Below, we focus on the common expedited SDO protocol:

An Overview of CANopen SDO

Taking the Schneider ATV71 frequency converter as an example, with a node address of 4, the acceleration ramp time (ACC) address is 16#203C:16#02. Sending a read ACC request returns the value 1000(16#03E8):

An Overview of CANopen SDO

Sending a write ACC request, with the value written as 16#03E8, returns the command symbol 16#60, indicating a successful response.

An Overview of CANopen SDO

Note that in CANopen messages, the low byte comes first, and the high byte follows.

If the returned command symbol is 80H, then bytes 4 to 7 contain a 32-bit abort code, with specific meanings as shown in the table below:An Overview of CANopen SDO

For ordinary users, mastering how to access the object dictionary of slave devices through the CANopen master station is sufficient. In Schneider Unity Pro and Somachine platforms, the configuration of service data objects in hardware configuration and the SDO_Read, SDO_Write, and PLCopen function blocks in programs are essentially part of SDO communication.

Below, we provide an example of sending SDO messages via USB-CAN host software to control the Schneider Lexium 32 servo to operate in speed mode, facilitating a deeper understanding of the SDO message structure.

An Overview of CANopen SDO

16#6060:00 Control Mode 8 bits

16#6083:00 Acceleration Time 32 bits

16#6084:00 Deceleration Time 32 bits

16#6040:00 Control Word 16 bits

16#60FF:00 Target Speed 32 bits

Leave a Comment