READ_VAR: Lesen von Daten aus einem Modbus-Gerät
Der Funktionsbaustein READ_VAR liest Daten aus einem externen Gerät mit dem Modbus-Protokoll.
Beschreibung der READ_VAR-spezifischen Parameter
Eingang |
Typ |
Kommentar |
---|---|---|
ObjType |
ObjectType |
ObjType ist der Typ des zu lesenden Objekts (MW, I, IW, Q). |
FirstObj |
DINT |
FirstObj ist der Index des ersten zu lesenden Objekts. |
Quantity |
UINT |
Quantity ist die Anzahl der zu lesenden Objekte: o1 bis 125: Register (Typen MW und IW) o1 bis 2000: Bits (Typen I und Q) |
Buffer |
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. Beispiel: Für die zu lesenden Werte von 4 Registern ist ein Array von 4 Wörtern, für die zu lesenden Werte von 32 Bits ein Array von 2 Wörtern oder 4 Bytes erforderlich, wobei jedes Bit auf den entsprechenden Wert des dezentralen Geräts gesetzt wird. 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 vom Zielgerät empfangen werden sollen. Es hat sich als vorteilhaft erwiesen, die definierte Menge (Quantity) der zu lesenden Daten mit der Pufferdeklaration zu verknüpfen, wie in nachstehendem Beispiel gezeigt.
Dieses Beispiel zeigt die Implementierung des Funktionsbausteins READ_VAR in Verbindung mit dem Funktionsbaustein ADDM zum Lesen von zwei Registern ab Adresse 1 in einem Modbus-Slave. Der Modbus-Slave wird mit Adresse 8 angegeben und muss über die serielle Leitungsschnittstelle 1 erreichbar sein. Vorbedingung ist die Konfiguration des Modbus Manager s als Master unter der seriellen Leitungsschnittstelle 1.
Diese Abbildung zeigt die Deklaration und Verwendung der Funktion READ_VAR: