FB_MBReadRegs (Modbus-Funktion 3)

FB_MBReadRegs (Modbus-Funktion 3) 1:

Diese Funktion wird zum Lesen von 1 bis 128 Ausgangs-Registern (16 Bit) benutzt. Das erste Byte enthält die unteren acht Bits und das zweite Byte die oberen acht Bits.

FB_MBReadRegs (Modbus-Funktion 3) 2: 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 Ausgangs-Register (Datenworte). Der Wert Null ist unzulässig.

nMBAddr

WORD

Startadresse der zu lesenden Ausgangsregister (Wordoffset).

cbLength

UDINT

Enthält die max. verfügbare Bytegröße des Zielpuffers für die zu lesenden Registerwerte. Der Puffer muss mindestens die Bytegröße: nQuantity * 2 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.

FB_MBReadRegs (Modbus-Funktion 3) 3: 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
    fbReadRegs         : FB_MBReadRegs;
    bReadRegs          : BOOL;
    bReadRegsBusy      : BOOL;
    bReadRegsError     : BOOL;
    nReadRegsErrorId   : UDINT;
    nReadRegsCount     : UDINT;
    nQuantity          : WORD:=2;
    nMBAddr            : WORD:=24;
    arrData            : ARRAY [1..2] OF WORD;
END_VAR
FB_MBReadRegs (Modbus-Funktion 3) 4:

Nach steigender Flanke von "bExecute" und erfolgreicher Ausführung des ReadRegs-Befehls, befindet sich der Inhalt der Register 25 und 26 in dem Array arrData:

Register

Array-Offset

Status

25

1

0x1234 ( als Byte 0x34 0x12)

26

2

0x5563 ( als Byte 0x63 0x55)

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.0.0

PC or CX (x86)

Tc2_ModbusSrv