Verwenden von SDOs
Einführung
SDO-Telegramme dienen zum aperiodischen Zugriff auf ein beliebiges CANopen-Objekt per Anforderungsprogrammierung. Der SDO-Dienst besteht aus einem Anforderungs- und einem Antworttelegramm.
SDO-Anforderungstelegramm
Informationsanforderung vom Client an den LTMR -Controller:
COB-ID |
Byte 0 |
Byte 1 |
Byte 2 |
Byte 3 |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|---|---|---|
0x600 + Node-ID |
Anforderungscode |
Objektindex |
Objekt-Teilindex |
Anforderungsdaten |
||||
LSB |
MSB |
Bits 7–0 |
Bits 15–8 |
Bits 23–16 |
Bits 31–24 |
SDO-Antworttelegramm
Informationsanforderung vom Client an den LTMR -Controller:
COB-ID |
Byte 0 |
Byte 1 |
Byte 2 |
Byte 3 |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|---|---|---|
0x580 + Node-ID |
Antwortcode |
Objektindex |
Objekt-Teilindex |
Antwortdaten |
||||
LSB |
MSB |
Bits 7–0 |
Bits 15–8 |
Bits 23–16 |
Bits 31–24 |
Anforderung- und Antwortcodes
Je nach Anforderungs- und Antwortcode kann der Inhalt der Anforderungs- und Antwortdaten variieren. In der folgenden Tabelle sind die Anforderungsdaten für die verschiedenen Anforderungscodes aufgeführt:
Antwortcode |
Beschreibung des Befehls |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|
0x23 |
4-Byte-Daten schreiben |
Bits 7–0 |
Bits 15–8 |
Bits 23–16 |
Bits 31–24 |
0x2B |
2-Byte-Daten schreiben |
Bits 7–0 |
Bits 15–8 |
0x00 |
0x00 |
0x2F |
1-Byte-Daten schreiben |
Bits 7–0 |
0x00 |
0x00 |
0x00 |
0x40 |
Daten lesen |
0x00 |
0x00 |
0x00 |
0x00 |
0x80 |
Abbrechen des aktuellen SDO-Befehls* 1 |
Bits 7–0 |
Bits 15–8 |
Bits 23–16 |
Bits 31–24 |
In der folgenden Tabelle sind die Antwortdaten für die verschiedenen Antwortcodes aufgeführt:
Anforderungscode |
Befehlsbeschreibung |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|
0x23 |
Daten lesen: 4-Byte-Daten |
Bits 7–0 |
Bits 15–8 |
Bits 23–16 |
Bits 31–24 |
0x2B |
Daten lesen: 2-Byte-Daten |
Bits 7–0 |
Bits 15–8 |
0x00 |
0x00 |
0x2F |
Daten lesen: 1-Byte-Daten |
Bits 7–0 |
0x00 |
0x00 |
0x00 |
0x40 |
1/2/4-Byte-Datenantwort schreiben |
0x00 |
0x00 |
0x00 |
0x00 |
0x80 |
Antwort auf erkannten Fehler: Abbruchcode zurückgegeben*. |
0x00 |
0x00 |
0x00 |
0x00 |
SDO-Abbruchcodes
Folgende Abbruchcodes werden unterstützt:
Abbruchcode |
Beschreibung |
---|---|
0x 0503 0000 |
Segmentierte Übertragung: Das Umschaltbit wurde nicht geändert. |
0x 0504 0000 |
Zeitüberschreitung des SDO-Protokolls |
0x 0504 0001 |
Ungültiger oder unbekannter Anforderungscode |
0x 0601 0000 |
Beim Zugriff auf den Parameter ist eine Zugriffsauslösung aufgetreten (z. B. eine Schreibanforderung für einen schreibgeschützten Parameter). |
0x 0601 0001 |
Versuchtes Lesen eines Parameters, der nur den Schreibzugriff erlaubt. |
0x 0601 0002 |
Versuchter Schreibzugriff auf einen Parameter, der nur den Lesezugriff erlaubt. |
0x 0602 0000 |
Der mit der Anforderung gesendete Index bezieht sich auf ein Objekt, das sich nicht im Objektverzeichnis befindet. |
0x 0604 0041 |
PDO-Objekt-Zuordnung: Der Parameter kann nicht auf das PDO abgebildet werden. Dieser erkannte Fehler tritt beim Schreiben auf die Parameter 0x1600, 0x1A00, 0x1605 und 0x1A05 auf (PDO-Zuordnungen). |
0x 0604 0042 |
PDO-Objekt-Zuordnung: Die Anzahl oder Länge der abzubildenden Parameter würde die maximale PDO-Länge überschreiten. |
0x 0609 0011 |
Der mit der Anforderung gesendete Teilindex ist nicht vorhanden. |
0x 0609 0030 |
Wertebereich des Parameters überschritten (nur für Schreibzugriff). |
0x 0609 0031 |
Geschriebener Wert des Parameters zu groß. |
0x 0609 0032 |
Geschriebener Wert des Parameters zu klein. |
0x 0609 0036 |
Der Höchstwert des Parameters ist kleiner als der Mindestwert. |
0x 0800 0000 |
Ein allgemeiner erkannter Fehler ist aufgetreten |