Prozessdatenobjekte (PDO)
Wie bei CANopen kann bei Modbus ein Prozessimage für Eingangs- und Ausgangsgrößen konfiguriert werden. Dieses Image beinhaltet nur noch Datenwerte einer oder mehrerer Objekte ohne Zusatzinformation wie Länge, Index oder Subindex. Damit lassen sich mittels einer Nachricht gleich mehrere Objekte lesen oder schreiben.
Konfiguration
- 3502h für das Modbus Rx (Master → Slave) PDO-Mapping
- 3602h für das Modbus Tx (Slave → Master) PDO-Mapping
Die Objekte 3502h und 3602h lassen sich mit Nachrichten mit dem Modbus-Funktionscode 2Bh beschreiben.
Übertragung
Die Daten werden aufeinander folgend ohne Lücke und Ausrichtung in die Nachricht geschrieben.
Wird ein Alignment (z.B. 16-Bit-Alignment) benötigt, kann man zusätzliche "Dummy-Objekte" mit in die Nachricht einbauen. Dummy-Objekte werden immer mit den Datenwert "0" übertragen. Diese Objekte sind in der nachfolgenden Tabelle abgedruckt.
Index | Datentyp |
---|---|
0002h | Vorzeichenbehaftete Ganzzahl (8 Bit) |
0003h | Vorzeichenbehaftete Ganzzahl (16 Bit) |
0004h | Vorzeichenbehaftete Ganzzahl (32 Bit) |
0005h | Vorzeichenlose Ganzzahl (8 Bit) |
0006h | Vorzeichenlose Ganzzahl (16 Bit) |
0007h | Vorzeichenlose Ganzzahl (32 Bit) |
Das Mapping ist wie folgt:
- Das PDO RX Image fängt an der Modbus-Register-Adresse 6000d (1770h) an.
- Das PDO TX Image fängt an der Modbus-Register-Adresse 5000d (1388h) an.
Um das Mapping ändern zu können, müssen Sie es zuerst deaktivieren, indem Sie den entsprechenden Subindex 0h auf "0" setzen.
Nach dem Schreiben der Objekte in die jeweiligen Subindizes, tragen Sie die Anzahl der gemappten Objekte in den Subindex 0h ein.
Beispiel
- 3602h:00h = "0h" (Mapping wird deaktiviert)
- 3602h:01h = "60410010h" (das Objekt 6041h:00h, Länge 16 Bit wird gemappt)
- 3602h:02h = "00050008h" (das Dummy-Objekt 0005h:00h, Länge 8 Bit wird gemappt)
- 3602h:03h = "60610008h" (das Objekt 6061h:00h, Länge 8 Bit wird gemappt)
- 3602h:04h = "60640020h" (das Objekt 6064h:00h, Länge 32 Bit wird gemappt)
- 3602h:05h = "60440010h" (das Objekt 6044h:00h, Länge 16 Bit wird gemappt)
- 3602h:06h = "60FD0020h" (das Objekt 60FDh:00h, Länge 32 Bit wird gemappt)
- 3602h:00h = "6h" (6 Werte werden gemappt)
Nach dem Mapping für das Objekt 6061h:00h wird ein Dummy-Objekt eingefügt, damit das nachfolgende Objekt 6064h:00h auf 32 Bit ausgerichtet wird.
RX Nachricht: Der Master schickt an den Slave folgende Nachricht:
TX Nachricht: Der Slave schickt an den Master folgende Antwort: