USDO – Universal Service Data Object

Das Universal Service Data Object

Der USDO Service in CANopen-FD ist die Weiterentwicklung des SDO Service aus CANopen.
Er ist primär für Konfigurations- und Diagnosedaten konzipiert.
Durch die Verwendung von CAN-FD können Telegramme bis zu 64 Byte lang sein.
Dies und die höheren Datenbitraten von bis zu 5 MBit/s ermöglicht eine signifikant schnellere Datenübertragung.
Eine kleine Demonstration über die Geschwindigkeitsvorteile von CANopen-FD über CANopen finden Sie hier.
Für die Übertragung stehen das Expedited, Segmented und Bulk Protokoll zur Verfügung.
Daten können sowohl in Unicast als auch Broadcast gesendet werden.
Für Netzwerkübergreifende Transfers steht ein eigener Remote Service zur Verfügung.

USDO Unicast

USDO ermöglicht, wie SDO bisher auch, die Verbindungen zwischen genau einem Client und genau einem Server.
Darüber hinaus kann der Client auch mehrere Sessions zu dem gleichen Server gleichzeitig hergestellen.
Auch können mehrere Clients zur selben Zeit auf das Objektverzeichnis eines Servers zugreifen
Ein simultaner Zugriff auf das selbe Objekt ist nicht möglich und wird mit „Data transfer not possible“ abgelehnt.
Sollten zu viele gleichzeitige Anfragen einen Server erreichen, kann er diese mit „USDO Server Busy“ ablehnen.

USDO Broadcast

Ein Client kan eine Broadcast Verbindung zu allen verfügbaren Servern herstellen.
Wenn ein Server eine Verbindung ablehnen muss, z.B. wegen zu vielen offenen Verbindungen, informiert er den Clienten darüber mittels eines Aborts.

USDO Remote Service

Der USDO Remote Service implementiert das Senden von Telegrammen in andere, nicht direkt angeschlossene CAN Netzwerke, über einen transparenten CANopen-FD Router.
Hier werden im ersten Segment zusätzliche Protokolldaten mitgesendet, wie z.B. Ursprungs- und Zielnetzwerk, sowie Ursprungs- und Zielknotennummer.

USDO Expedited Protokoll Type

Der Expedited Transfer ist eine bestätigte Übertragung mit einer Nutzdatengröße von maximal 56 Byte.
Hierbei werden Protokolldaten wie z.B. Zieladresse, Session ID ect. zusammen mit den Nutzdaten übertragen.
Frame Example: Unicast Expedited Upload mit 56 Byte Daten:

USDO Expedited Transfer
USDO Expedited Transfer

USDO Segmented Protokoll Type

Der Segmented Transfer ist eine bestätigte Übertragung mit einer maximal definierbaren Datengröße von ca. 4,29 Gigabyte oder undefinierter Größe als Stream.
Selbst wenn ein Expedited Transfer für die Übertragung ausreichen würde, führt der Server diesen Transfer auch durch wenn er angefragt wurde.
Zunächst werden im ersten Segment, Protokolldaten wie z.B. Zieladresse, Datentype und Datengröße mitgeteilt, erst ab dem zweiten Segment beginnt die Übertragung der Applikationsdaten.
Hierbei wird jedes einzelne Segment vom Server bestätigt.
Frame Example: Unicast Segmented Upload mit 64 Byte Daten:

USDO Segmented Transfer
USDO Segmented Transfer

USDO Bulk Protokoll Type

Als Pendant zum Block Transfer bei CANopen, ist der Bulk Transfer in CANopen-FD eine bestätigte Übertragung.
Dieses Protokoll ermöglicht die bestätigte Übertragung von bis zu 4,29 Gigabyte.
Jedoch können auch Daten gestreamt und somit undefinierte Datengrößen übertragen.
Wie auch beim Segmented Transfer beinhaltet das erste Segment lediglich Protokolldaten wie z.B. Zieladresse, Session ID.
Außerdem überträgt der Server auch die kleinste Zeitspanne zwischen zwei Segmenten.
Dieser Wert ist für den Clienten bindend.
Ab dem zweiten Segment überträgt der Client die Applikationsdaten.
Anders als beim Segmentiertem Protokoll wird hier nur der Start und das Ende der Übertragung bestätigt.
Frame Example: Unicast Bulk Download mit 172 Byte Daten:

USDO Bulk Transfer
USDO Bulk Transfer

USDO Stream

Segmentierter als auch Bulk Transfer können genutzt werden um Datenübertragungen mit unbestimmter Länge zu realisieren.
Dazu setzt der Client die Datenlänge auf den Wert 0xFFFFFFFF.
Bis der Client oder Server die Übertragung beenden, wird die Übertragung aufrecht erhalten.