SEMA
Ein Software-Semaphor (unterbrechbar von einer anderen höherprioren Task!).
VAR_INPUT
VAR_INPUT
CLAIM : BOOL;
RELEASE : BOOL;
END_VAR
VAR_OUTPUT
VAR_OUTPUT
BUSY : BOOL;
END_VAR
Wenn SEMA aufgerufen wird und BUSY ist TRUE, dann bedeutet das, dass SEMA bereits vorher belegt wurde (SEMA wurde mit CLAIM = TRUE aufgerufen). Wenn BUSY FALSE ist, dann wurde SEMA noch nicht aufgerufen, oder es wurde freigegeben (Aufruf mit RELEASE = TRUE).
Interne Implementierung des FB's:
BUSY := X;
IF CLAIM THEN
X:=TRUE;
ELSIF RELEASE
THEN
BUSY := FALSE;
X:= FALSE;
END_IF
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT Version >= 2.6.0 | PC or CX (x86) | Standard.Lib |
TwinCAT Version >= 2.6.0 | BC (165) | Standard.Lb6 |
TwinCAT Version >= 2.9.0 | BCxx50 or BX | Standard.lbx |
TwinCAT Version >= 2.10.0 Build >= 1301 | CX (ARM) | Standard.lib |