menu
dopisz swój adres do listy:
kontakt CoDeSys.pl:
e-mail: news@codesys.pl
Telefon: 048 331 20 57
Fax: 048 331 25 36

www.codesys.pl
wyszukaj w codesys.pl
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:


SEMA


codesys.pl