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 Modbus Servers 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);

ELSIF NOT fbWriteCoils.bBUSY THEN
    bWrite := FALSE;
END_IF
  fbWriteCoils(bExecute:=FALSE);


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)

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.0.0

PC or CX (x86)

Tc2_ModbusSrv