SEMA

SEMA 1:

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