FB_MBReadWriteRegs (Modbus-Funktion 23)

Diese Funktion liest zuerst 1 bis 128 Ausgangs-Register (16 bit) und beschreibt danach 1 bis 128 Ausgangs-Register (16 Bit).
Eingänge
VAR_INPUT
sIPAddr : STRING(15);
nTCPPort : UINT:= MODBUS_TCP_PORT;
nUnitID : BYTE:=16#FF;
nReadQuantity : WORD;
nMBReadAddr : WORD;
nWriteQuantity: WORD;
nMBWriteAddr : WORD;
cbDestLength : UDINT;
pDestAddr : POINTER OF BYTE;
cbSrcLength : UDINT;
pSrcAddr : POINTER OF BYTE;
bExecute : BOOL;
tTimeout : TIME;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
sIPAddr |
STRING (15) |
Ist ein String, der die IP-Adresse des Zielgerätes enthält. |
nTCPPort |
UINT |
Portnummer des Zielgerätes. |
nUnitID |
BYTE |
Identifizierungsnummer eines Gerätes eines seriellen Sub-Netzwerkes. Wenn ein Gerät direkt über TCP/IP angesprochen wird, muss dieser Wert 16#FF entsprechen. |
nReadQuantity |
WORD |
Anzahl der zu lesenden Ausgangs-Register (Datenworte). Der Wert Null ist nicht zulässig. |
nMBReadAddr |
WORD |
Startadresse der zu lesenden Ausgangs-Register (Wortoffset). |
nWriteQuantity |
WORD |
Anzahl der zu schreibenden Ausgangs-Register (Datenworte). Der Wert Null ist nicht zulässig. |
nMBWriteAddr |
WORD |
Startadresse der zu schreibenden Ausgangs-Register (Wortoffset). |
cbDestLength |
UDINT |
Enthält die max. verfügbare Bytegröße des Zielpuffers für die zu lesenden Registerwerte. Der Puffer muss mindestens die Bytegröße: nReadQuantity * 2 besitzen. |
pDestAddr |
POINTER OF BYTE |
Enthält die Adresse des Zielpuffers, in den die Daten gelesen werden sollen. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse mit dem ADR - Operator ermittelt werden kann. |
cbSrcLength | UDINT | Enthält die max. verfügbare Bytegröße des Quellpuffers der die zu schreibenden Registerwerte enthält. Der Puffer muss mindestens die Bytegröße: nQuantity * 2 besitzen. |
pSrcAddr | POINTER OF BYTE | Enthält die Adresse des Quellpuffers, der die zu schreibenden Daten enthält. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse mit dem ADR - Operator ermittelt werden kann. |
bExecute | BOOL | Durch eine steigende Flanke an diesem Eingang wird der Funktionsbaustein aktiviert. |
tTimeout | TIME | Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf. |
Ausgänge
VAR_OUTPUT
bBUSY : BOOL;
bError : BOOL;
nErrId : UDINT;
cbRead : UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bBusy | BOOL | Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt. |
bError | BOOL | Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde. |
nErrId | UDINT | Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer. |
cbRead | UDINT | Enthält die Anzahl der aktuell gelesenen Bytes. |
Beispiel für den Aufruf des Bausteins in FBD
PROGRAM Test
VAR
fbReadWriteRegs : FB_MBReadWriteRegs;
bReadWriteRegs : BOOL;
bReadWriteRegsBusy : BOOL;
bReadWriteRegsError : BOOL;
nReadWriteRegsErrorId : UDINT;
nReadWriteRegsCount : UDINT;
nRdQuantity : WORD;
nRdMBAddr : WORD;
nWrQuantity : WORD;
nWrMBAddr : WORD;
arrRdData : ARRAY [1..9] OF WORD;
arrWrData : ARRAY [1..9] OF WORD;
END_VAR

Nach steigender Flanke von "bExecute" und erfolgreicher Ausführung des ReadWriteRegs-Befehls, befinden sich in arrRdData die gelesenen Daten der Register und die Daten aus arrWrData werden in die Register geschrieben.
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.0.0 |
PC or CX (x86) |
Tc2_ModbusSrv |