CANopen SDO Overview#
1. Introduction#
SDOs (Service Data Objects) in CANopen provide a request/response mechanism to access and configure any object in the Object Dictionary.
Unlike PDOs, SDOs are slower but allow reading/writing large or complex data structures.
2. SDO Communication Concept#
SDO communication is always between a client and a server.
The client initiates the transfer (read or write), and the server responds.
SDOs can transfer data up to 4 GB using segmented communication if needed.
3. SDO Message Structure#
SDO messages are carried using CAN-ID 0x600 + Node-ID for client → server, and 0x580 + Node-ID for server → client.
Field |
Description |
---|---|
CAN-ID |
0x600 + Node-ID for requests, 0x580 + Node-ID for responses |
Command Specifier (CS) |
Defines the type of operation: upload, download, segment, abort |
Index / Subindex |
Identifies the object in the Object Dictionary |
Data |
Up to 4 bytes (or segmented for longer data) |
4. SDO Commands (Command Specifiers)#
Command |
Hex Value |
Description |
---|---|---|
Initiate Download (Expedited) |
0x2x |
Write up to 4 bytes in one message |
Initiate Upload (Expedited) |
0x4x |
Read up to 4 bytes in one message |
Initiate Download (Segmented) |
0x2x |
Start writing more than 4 bytes |
Initiate Upload (Segmented) |
0x60 |
Start reading more than 4 bytes |
Segment Download / Upload |
0x00 / 0x01 |
Transfer next 7 bytes segment |
Abort Transfer |
0x80 |
Stop current transfer in case of error |
Note: x => second bytes depend on the length of the data
Note: Expedited SDO is used for small data (≤ 4 bytes), segmented SDO is used for larger data (> 4 bytes).
5. Example of SDO Transfer#
Write 16-bit value 0x1234 to object 0x6040:00 (Controlword) on node 0x05:
CAN-ID |
CS |
Index |
Subindex |
Data |
---|---|---|---|---|
0x605 |
0x23 |
0x40 0x60 |
0x00 |
0x34 0x12 |
Read the same object:
CAN-ID |
CS |
Index |
Subindex |
Data |
---|---|---|---|---|
0x605 |
0x40 |
0x40 0x60 |
0x00 |
– |
0x585 |
0x43 |
0x40 0x60 |
0x00 |
0x34 0x12 |
Warning: The index and the data must be send in little-endian
6. Advantages of SDO#
Access any object in the Object Dictionary
Supports large data transfers with segmentation
Ensures reliable request/response communication
Essential for configuration, diagnostics, and parameterization
7. Conclusion#
SDOs complement PDOs in CANopen by allowing flexible and reliable data access, especially for configuration and larger or less time-critical data.
✅ Use SDOs for reading/writing configuration parameters
✅ Use PDOs for real-time process data
✅ Combine both for a fully functional CANopen system