FB_MBReadCoils (Modbus-Funktion 1)

Diese Funktion wird zum Lesen von 1 bis 2048 digitalen Ausgängen (Coils) benutzt. Ein digitaler Ausgang entspricht einem Bit der gelesenen Datenbytes.
Eingänge
VAR_INPUT
sIPAddr : STRING(15);
nTCPPort : UINT:= MODBUS_TCP_PORT;
nUnitID : BYTE:=16#FF;
nQuantity : WORD;
nMBAddr : WORD;
cbLength : UDINT;
pDestAddr : 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. |
nQuantity | WORD | Anzahl der zu lesenden digitalen Eingänge (Datenbits). Der Wert Null ist unzulässig. |
nMBAddr | WORD | Startadresse der zu lesenden digitalen Eingänge (Bitoffset). |
cbLength | UDINT | Enthält die max. verfügbare Bytegröße des Zielpuffers, in den die Daten gelesen werden sollen. Der Puffer muss mindestens die Bytegröße: (nQuantity + 7) / 8 besitzen. |
pDestAdd | 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. |
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
fbReadCoils : FB_MBReadCoils;
bReadCoils : BOOL;
bReadCoilsBusy : BOOL;
bReadCoilsError : BOOL;
nReadCoilsErrorId : UDINT;
nReadCoilsCount : UDINT;
nQuantity. : WORD := 10;
nMBAddr. : WORD := 5;
arrData. : ARRAY [1..2] OF BYTE;
END_VAR

Nach steigender Flanke von "bExecute" und erfolgreicher Ausführung des ReadCoils-Befehls, wird der Inhalt der digitalen Ausgänge 6 - 15 in das Array arrData geschrieben:
Digitale Ausgänge | Array-Offset | Status |
---|---|---|
6-13 | 1 | 0x54 Status des Ausgangs 13 ist das MSB dieses Bytes (ganz links) |
14-15 | 2 | 0x02 da nur 10 Ausgänge gelesen werden sollen, werden die restlichen Bits (3-8) auf 0 gesetzt. |
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.0.0 |
PC or CX (x86) |
Tc2_ModbusSrv |