dopisz swój adres do listy:
biblioteki standardowe - standard.lib (funkcje bistabilne)
SEMA
Semafor software (do przerwania) (standard.lib):
BUSY = SEMA(CLAIM, RELEASE) oznacza:
BUSY := X;
IF CLAIM THEN X:=TRUE;
ELSIF RELEASE THEN BUSY := FALSE; X:= FALSE;
END_IF
X to wewnętrzna zmienna boolean, zainicjalizowana za pomocą FALSE.
Wejścia CLAIM i RELEASE oraz wyjście BUSY są typu BOOL.
Jeśli wywołano SEMA i BUSY jest TRUE, oznacza to, że SEMA zostało już wcześniej zajęte (SEMA zostało wywołane za pomocą CLAIM = TRUE). Jeśli BUSY jest FALSE, SEMA nie zostało jeszcze wywołane, lub zostało zwolnione (wywołanie za pomocą RELEASE = TRUE).
Przykład deklaracji:
SEMAInst : SEMA;
Przykład w IL:
CAL SEMAInst(CLAIM:=VarBOOL1,RELEASE:=VarBOOL2)
LD SEMAInst.BUSY
ST VarBOOL3
Przykład w ST:
SEMAInst(CLAIM:= VarBOOL1 , RELEASE:=VarBOOL2 );
VarBOOL3 := SEMAInst.BUSY;
Przykład w FBD:

codesys.pl