_
Codesys için kullanılabilir bir Fonksiyon Bloğu
//////
FUNCTION_BLOCK YidizUcgenIG_FB
VAR_INPUT
xAcilStop:BOOL;
xTermikAriza:BOOL;
END_VAR
VAR_OUTPUT
xAnaKontaktorIleri:BOOL;
xAnaKontaktorGeri:BOOL;
xUcgenKontaktor:BOOL;
xYildizKontaktor:BOOL;
END_VAR
VAR
xintStarDelta_Case10: BOOL;
xintStarDelta_Case20: BOOL;
T_xYildizKontaktor: TON;
T_xintStarDelta_Case20: TON;
intStarDelta: INT;
END_VAR
VAR_IN_OUT
ixStartIleri: BOOL;
ixStartGeri:BOOL;
END_VAR
//////////
IF (NOT (ixStartIleri XOR ixStartGeri)) OR (NOT (xAnaKontaktorIleri XOR xAnaKontaktorGeri)) OR NOT xAcilStop OR NOT xTermikAriza OR(xYildizKontaktor AND xUcgenKontaktor) THEN xAnaKontaktorIleri := FALSE; xAnaKontaktorGeri := FALSE; xYildizKontaktor := FALSE; xUcgenKontaktor := FALSE; xintStarDelta_Case10:= FALSE; xintStarDelta_Case20:= FALSE; intStarDelta:=0; END_IF IF NOT xAcilStop OR NOT xTermikAriza OR(xYildizKontaktor AND xUcgenKontaktor) THEN ixStartIleri := FALSE; ixStartGeri := FALSE; intStarDelta:=0; END_IF T_xYildizKontaktor(IN:=xYildizKontaktor,PT:=T#10S); T_xintStarDelta_Case20(IN:=xintStarDelta_Case20,PT:=T#100MS); CASE intStarDelta OF 0: IF ixStartIleri XOR ixStartGeri THEN IF ixStartIleri AND NOT ixStartGeri THEN xAnaKontaktorIleri :=TRUE; xAnaKontaktorGeri :=FALSE; END_IF IF ixStartGeri AND NOT ixStartIleri THEN xAnaKontaktorGeri :=TRUE; xAnaKontaktorIleri :=FALSE; END_IF IF xAnaKontaktorIleri XOR xAnaKontaktorGeri THEN xYildizKontaktor := TRUE; intStarDelta := 10; END_IF ELSE xAnaKontaktorIleri :=FALSE; xAnaKontaktorGeri :=FALSE; xYildizKontaktor :=FALSE; xUcgenKontaktor := FALSE; xintStarDelta_Case10:= FALSE; xintStarDelta_Case20:= FALSE; END_IF 10: IF T_xYildizKontaktor.Q THEN xintStarDelta_Case10 :=TRUE; intStarDelta := 20; END_IF 20: IF xintStarDelta_Case10 THEN xYildizKontaktor:=FALSE; xintStarDelta_Case20:=TRUE; xintStarDelta_Case10:=FALSE; intStarDelta := 30; END_IF 30: IF T_xintStarDelta_Case20.Q THEN xUcgenKontaktor := TRUE; xintStarDelta_Case20:=FALSE; END_IF END_CASE
Yorumlar
Yorum Gönder