USDO – Universal Service Data Object

The Universal Service Data Object

The USDO Service in CANopen-FD is the replacement for the SDO service in CANopen.
Transferring configuration and diagnostic data is the primary purpose of this protocol.
By using CAN-FD the telegrams can reach a length of up to 64 data bytes.
Due to the longer telegrams and the higher data bit-rates up to 5 Mbit/s, significantly faster data transfer is being provided.
You can find a short demonstration about the speed advantages of CANopen-FD over classic CANopen here.
The transmission can be done by using the expedited, segmented or bulk protocol.
Data can be transmitted either in unicast or broadcast mode.
For transfers between networks a dedicated remote service is also provided.

USDO Unicast

As SDO did before, USDO allows the direct connection from one client to exactly one server.
Furthermore it can handle multiple sessions between the client and the server at the same time.
Besides that, multiple clients can access the object dictionary of the server simultaneously, access to the same object at the same time has to be rejected.
In case of too many requests at once, the server can reject them by sending „USDO Server Busy“.

USDO Broadcast

Additionally USDO supports broadcast connections from one client to all available servers.
If one of the servers rejects the connection, for example because it has too many active connections pending, it informs the client by a unicast abort.

USDO Remote Service

The remote service allows to send telegrams to other, not directly attached CAN networks, by using a transparent CANopen-FD router.
In the first segment additional protocol data is being transmitted.
For example source- and destination network as well as source- and destination node ID.

USDO Expedited Protocol Type

USDO Expedited Transfer
USDO Expedited Transfer

The expedited transfer is a confirmed transmission with a maximum of 56 bytes of data.
The other 8 bytes are used for protocol data like destination address, index or subindex.
Frame Example: Unicast Expedited Upload with 56 bytes of data:

USDO Segmented Protocol Type

USDO Segmented Transfer
USDO Segmented Transfer

The segmented transfer is a confirmed transmission, with a maximum of about 4.29 Gigabyte of definable data length, or undefined length by streaming.
If requested the segmented transfer has to be done, although expedited transfer would be more efficient.
In the first segment, protocol data like destination address, data type or data length are transmitted.
The transmission of the application data begins with the second segment.
Every segment is confirmed by the counterpart.
Frame Example: Unicast Segmented Upload with 64 bytes of data:

USDO Bulk Protocol Type

As the equivalent to the block transfer in CANopen, the bulk transfer in CANopen-FD is a confirmed transmission, with a maximum of about 4.29 Gigabyte of definable data length, or undefined length by streaming.
As with the segmented transfer, the first segment contains protocol data like destination address, session ID or the gap between two segments which is defined by the server.
Starting from the second segment, the transmission of the application data begins.
Unlike with segmented transfer in bulk transfer only the first and the last segment is being confirmed.

USDO Bulk Transfer
USDO Bulk Transfer

Frame Example: Unicast Bulk Download with 172 bytes of data:

USDO Stream

Segmented and bulk transfer both support transmission of data with undefined data length as stream.
Therefore the data length of the transmission is set to value 0xFFFFFFFF.
The transmission is kept alive as long as either the USDO client finishes it or the server is sending an abort.