Service Data Objects#

SDO transfers are the request and response mechanism for reading and writing the object dictionary. Every configuration task uses them. They are confirmed, so the drive answers each request with either an acknowledgement or an abort carrying a reason code.

Direction

COB-ID

Master to drive

0x600 + node ID

Drive to master

0x580 + node ID

The drive implements the default server SDO only. There is no client SDO and no configurable second server. Requests must be exactly 8 data bytes; anything shorter or longer is discarded without a reply.

Expedited transfer#

Objects of 4 bytes or fewer are transferred expedited, with the value carried in the same frame as the request. This covers almost everything in the dictionary: all setpoints, all limits, all gains and all status registers.

Before the drive applies an expedited write it first reads the target object to learn its real size. Two consequences follow. Writing to an index or sub-index that does not exist is rejected before any value is touched, and a write whose declared size does not match the object is rejected rather than truncated.

Segmented transfer#

Objects larger than 4 bytes use segmented transfer. In this dictionary that means the string objects: Motor Name 0x2000:6, the commit hashes in 0x2021, and the identification strings in 0x1008, 0x1009 and 0x2020.

The drive stages segmented transfers in a single 32 byte buffer, so only one segmented transfer can be in progress at a time and no object larger than 32 bytes can be transferred. Starting a second one while the first is open aborts the first.

An idle segmented transfer is abandoned after 1000 ms. The drive sends an abort with code 0x05040000 and frees the buffer.

Note

Attempting an expedited write to a string object is rejected with 0x06070013 rather than silently writing four characters. Use segmented transfer for anything longer than 4 bytes.

Abort codes#

When the drive cannot serve a request it answers with an abort frame carrying one of the codes below. The abort always echoes the index and sub-index that caused it, except for a segment request arriving with no transfer open, where both are reported as zero.

Code

Meaning

Typical cause on an MD drive

0x05030000

Toggle bit not alternated

A segmented transfer went out of sequence

0x05040000

SDO protocol timed out

A segmented transfer stalled for more than one second

0x05040001

Invalid command specifier

A segment was sent with no transfer open, or a reserved command was used

0x05040005

Out of memory

The object is larger than the 32 byte staging buffer

0x06010000

Unsupported access to an object

A PDO mapping entry was written while the mapping was still enabled

0x06010002

Attempt to write a read-only object

The object is measurement or identification data

0x06020000

Object does not exist

The index is not in the dictionary

0x06040041

Object cannot be mapped to the PDO

The object is not PDO mappable, or the mapped size does not match it

0x06040042

Mapped objects exceed PDO length

The mapping adds up to more than 64 bits

0x06070012

Data type does not match, length too high

More bytes were supplied than the object holds

0x06070013

Data type does not match, length too low

Fewer bytes were supplied than the object needs, including expedited writes to strings

0x06090011

Sub-index does not exist

The index exists but the sub-index does not

0x06090030

Value range of parameter exceeded

The value is outside the range the firmware accepts, see the object dictionary

0x08000020

Data cannot be transferred or stored

A per-mille torque or current object was accessed while its rated value is still zero, or 0x1010 or 0x1011 was written with the wrong signature

Important

0x06090030 is the code you will meet most often during commissioning. The ranges the firmware enforces are narrower than the data type suggests, and for some objects they are narrower than the EDS declares. The per-object ranges are listed in the object dictionary.

Availability#

SDO access follows the NMT state. It works in Pre-operational and Operational, and is refused in Stopped, where the drive does not answer at all. See Network Management.