CPB Modbus TCP Technisches Handbuch

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

Die Konfiguration des Image wird als "Mapping" bezeichnet und in folgenden Objekten geschrieben:
  • 3502h für das Modbus Rx (Master → Slave) PDO-Mapping
  • 3602h für das Modbus Tx (Slave → Master) PDO-Mapping
Beide Objekte beinhalten einen Array mit jeweils 16 Einträge. Der Subindex 00 gibt dabei die Anzahl der gültigen Einträge an.

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.
Der Zugriff kann mit Funktionscode 17h lesend/schreibend gleichzeitig erfolgen oder mit den Kommandos 03h, 04h, 06h, 10h auf die jeweiligen RX/TX Images.
Anmerkung:

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

In dem Mapping sollen folgende Objekte eingestellt werden:
  • 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:

▶   weiter

Inhalt