FB_MBReadInputs (Modbus-Funktion 2)

FB_MBReadInputs (Modbus-Funktion 2) 1:

Diese Funktion wird zum Lesen von 1 bis 2048 digitalen Eingängen benutzt. Ein digitaler Eingang entspricht einem Bit der gelesenen Datenbytes.

FB_MBReadInputs (Modbus-Funktion 2) 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 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.

FB_MBReadInputs (Modbus-Funktion 2) 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
    fbReadInputs       : FB_MBReadInputs;
    bReadInputs        : BOOL;
    bReadInputsBusy    : BOOL;
    bReadInputsError   : BOOL;
    nReadInputsErrorId : UDINT;
    nReadInputsCount   : UDINT;
    nQuantity          : WORD := 20;
    nMBAddr            : WORD := 29;
    arrData            : ARRAY [1..3] OF BYTE;
END_VAR
FB_MBReadInputs (Modbus-Funktion 2) 4:

Nach steigender Flanke von "bExecute" und erfolgreicher Ausführung des ReadInputs-Befehls, wird der Inhalt der digitalen Eingänge 30 - 49 in das Array arrData geschrieben:

Digitale Ausgänge

Array-Offset

Status

29-36

1

0x34 Status des Eingangs 36 ist das MSB dieses Bytes (ganz links)
Status des Eingangs 29 ist das LSB dieses Bytes (ganz rechts)

37-44

2

0x56 Status des Eingangs 44 ist das MSB dieses Bytes (ganz links)
Status des Eingangs 37 ist das LSB dieses Bytes (ganz rechts)

45-49

3

0x07 da nur 20 Eingänge gelesen werden sollen, werden die restlichen Bits (5-8) auf 0 gesetzt.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.0.0

PC or CX (x86)

Tc2_ModbusSrv