WRITE_READ_VAR: Lesen und Schreiben interner Register in einem Modbus-Gerät

Beschreibung der Funktion

Diese Funktion liest und schreibt interne Register (nur vom Typ MW) in einem externen Gerät im Modbus-Protokoll. Die Lese- und Schreiboperationen finden im Rahmen derselben Transaktion statt.

Die Schreiboperation wird zuerst durchgeführt. Anschließend kann die Funktion WRITE_READ_VAR folgende Aufgaben ausführen:

  • Aufeinander folgende interne Register schreiben und deren Werte zur Überprüfung sofort zurücklesen

  • Einige aufeinander folgende interne Register schreiben und andere lesen – beides in einem einzigen, eindeutigen Request

Grafische Darstellung

Beschreibung der WRITE_READ_VAR-spezifischen Parameter

Eingang

Typ

Kommentar

ObjType

ObjectType

ObjType ist der zu schreibende und zu lesende Objekttyp (nur MW).

FirstWriteObj

DINT

FirstWriteObj ist der Index des ersten zu schreibenden Objekts.

WriteQuantity

UINT

WriteQuantity ist die Anzahl der zu schreibenden Objekte:

  • 1 bis 121: Register (Typ MW)

WriteBuffer

POINTER TO BYTE

Adresse des Zeigers zu dem Array mit den Daten, die in das Zielgerät geschrieben werden sollen. Das Array muss mindestens der Größe der zu schreibenden Daten entsprechen. Sie müssen die ADR-Funktion heranziehen, um die Adresse des ersten Bytes des Arrays zu übergeben (siehe das CFC-Diagramm im Beispiel).

FirstReadObj

DINT

ReadFirstObj ist der Index des ersten zu lesenden Objekts.

ReadQuantity

UINT

ReadQuantity ist die Anzahl der zu lesenden Objekte:

  • 1 bis 125: Register (Typ MW)

ReadBuffer

POINTER TO BYTE

Adresse des Zeigers zu dem Array, in dem die empfangenen, aus dem Zielgerät ausgelesenen Daten enthalten sind. Das Array muss mindestens der Größe der zu lesenden Daten entsprechen. Sie müssen die ADR-Funktion heranziehen, um die Adresse des ersten Bytes des Arrays zu übergeben (siehe das CFC-Diagramm im Beispiel).

HINWEIS: Um eine Zugriffsverletzung aufgrund eines ungültigen Zeigerzugriffs (außerhalb der Grenzen) auf den Speicher zu verhindern, müssen Sie sicherstellen, dass die Größe des mit dem Eingang Buffer verknüpften Arrays mindestens dem Umfang der Daten entspricht, die in das Zielgerät geschrieben bzw. vom Zielgerät empfangen werden sollen. Es hat sich als vorteilhaft erwiesen, die definierte Menge (Quantity) der schreibenden bzw. zu lesenden Daten mit der Pufferdeklaration zu verknüpfen, wie in nachstehendem Beispiel gezeigt.

Die Eingangs- und Ausgangsparameter, die für alle Funktionsbausteine der PLCCommunication-Bibliothek gelten, werden an anderer Stelle beschrieben.

Beispiel

Das Beispiel zeigt die Implementierung des Funktionsbausteins WRITE_READ_VAR in Verbindung mit dem Funktionsbaustein ADDM zum Schreiben von zwei Registern ab Adresse 11 und zum Lesen von zwei Registern ab Adresse 1 eines Modbus-Slaves. Der Modbus-Slave wird mit Adresse 8 angegeben und muss über die serielle Leitungsschnittstelle 1 erreichbar sein. Voraussetzung ist die Konfiguration des Modbus Manager als Master unter der seriellen Leitungsschnittstelle 1.