Beispiel: Digitaler IO Zugriff (Lauflicht)

Dieses Beispiel verdeutlicht, wie Sie per Modbus auf die Echtzeitumgebung eines TwinCAT Systems zugreifen können.

Das Standard-Mapping des ModbusServers mappt die digitalen Ausgänge (Coils) auf das Prozessabbild der physikalischen Ausg nge der SPS.

PROGRAM MAIN
VAR
    Q00 AT%QX0.0            : BOOL;
    Q01 AT%QX0.1            : BOOL;
    Q02 AT%QX0.2            : BOOL;
    Q03 AT%QX0.3            : BOOL;
    Q04 AT%QX0.4            : BOOL;
    Q05 AT%QX0.5            : BOOL;
    Q06 AT%QX0.6            : BOOL;
    Q07 AT%QX0.7            : BOOL;

    fbWriteCoils            : FB_MBWriteCoils;
    bWrite                  : BOOL;
    nValue                  : INT;
END_VAR
IF NOT bWrite THEN
    nValue := nValue + 1;
    bWrite := TRUE;
    fbWriteCoils.nQuantity := 8;
    fbWriteCoils.cbLength := SIZEOF(nValue);
    fbWriteCoils.pSrcAddr := ADR(nValue);
    fbWriteCoils.tTimeout := T#5s;
    fbWriteCoils(bExecute:=TRUE);
ELSE
    IF NOT fbWriteCoils.bBUSY THEN
        bWrite :=FALSE;
    END_IF
    fbWriteCoils(bExecute:=FALSE);
END_IF

Nach steigender Flanke an bWrite, wird das Lauflicht in den Bereich der physikalischen Ausgänge der SPS geschrieben (Q00-Q07).

Die Bitorder wird wie folgt gesetzt:

Bit

8 MSB

7

6

5

4

3

2

1

LSB

Output

7

6

5

4

3

2

1

0

MSB = Most significant bit (Höchstwertiges Bit)

LSB = Least significant bit (Niederwertiges Bit)

Download Sample