5 — SDO COMMUNICATIONS
pg. 23
Return to TOC Curtis 1353 CANopen Expansion Module Manual – June 2017
5 — SDO COMMUNICATIONS
CANopen uses Service Data Objects (SDOs) to change and view all internal parameters, or “objects.”
e SDO is an 8-byte packet that contains the address and sub-address of the parameter in question,
whether to read or write the parameter, and the parameter data (if it is a write command). SDOs are
sent infrequently and have a low priority on the CANbus.
SDOs are designed for sporadic and occasional use during normal runtime operation. ere are
two types of SDOs: expedited and block transfer. e 1353 does not support large le uploads or
downloads (using the block transfer), so all the SDOs used by the 1353 are expedited SDOs.
e SDOs in the 1353 are used to set up and parameterize the module. ey are also used to retrieve
basic module information (such as version or manufacture date), review the fault log, and monitor
a few key internal variables (mostly for system debug purposes).
SDO Master Request (SDO-MOSI)
An SDO transfer always starts with a request message from the master. Each SDO request message
consists of one control byte, a two-byte CAN Object index, a one-byte CAN Object sub-index, and
up to 4 bytes of valid data. is format is CANopen compliant.
SDO-MOSI (received from the system master)
Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8
Control CAN Object
Index
Sub-index Data Data Data Data
e rst data byte contains R/W message control information.
Action Byte 1 Value
Read 0x4x
Write 0x2x
e next two data bytes hold the CAN Object index. e LSB of the index appears rst, in byte 2,
and the MSB appears in byte 3. For example, if the index is 0x3021, byte 2 holds the 0x21 and byte
3 holds the 0x30.
Data byte 4 holds the CAN Object sub-index. When there is only one instance of a parameter or
value type, this value is 0. If there are several related parameters or values, the sub-index is used.
e last four data bytes hold the data that is to be transferred. In the case of a single-byte transfer,
the data is placed into data byte 5, with bytes 6 through 8 being undened (set to 0). In the case of a
16-bit transfer, the lower 8 bits appear in data byte 5 and the upper 8 bits appear in data byte 6; bytes
7 and 8 are undened (set to 0). e case of a 32-bit transfer follows the same strategy, with the least
signicant byte placed in data byte 5 and the most signicant byte placed in data byte 8.