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)