Witaj,
Oto kod:
Blok Funkcyny RoletyPRG:
FUNCTION_BLOCK RoletyPRG
VAR_INPUT
WejscieSterujace :BOOL;
ZmiennaPodnoszenieVis :BOOL;
ZmiennaOpuszczanieVis :BOOL;
ZmiennaLamelkiVis :BOOL;
PozycjaLameli :BYTE;
CzasOtwarcia: TIME;
CzasZamkniecia: TIME;
MaxCzasDzialania :TIME;
ZamykanieWszystkieVIS: BOOL;
OtwieranieWszystkieVIS: BOOL;
END_VAR
VAR_OUTPUT
WyjsciePodnoszenie :BOOL;
WyjscieOpuszczanie :BOOL;
RoletaZamknieta :BOOL;
RoletaOtwarta: BOOL;
Pozycja:BYTE;
END_VAR
VAR
Wejscie1 : Fb_ShortLong:=(uiTS_10tel_s:=1, uiTL_10tel_s:=1, uiT_10tel_s :=5); (* Przycisk w garazu*)
Wejscie2 : Fb_ShortLong:=(uiTS_10tel_s:=1, uiTL_10tel_s:=1, uiT_10tel_s :=5);
END_VAR
VAR RETAIN PERSISTENT
Input_B_Roleta4 :BLIND_INPUT;
(*Shade_B_Roleta4 :BLIND_SHADE_S:=(HORZ1:=70, HORZ2:=150, SHADE_POS:=150, SHADE_DELAY:=T#60s);*)
Control_B_Roleta4 :BLIND_CONTROL_S;
END_VAR
FB:
Wejscie1(xSwitch:=WejscieSterujace);
Input_B_Roleta4(
S1:=Wejscie1.xShort OR ZmiennaPodnoszenieVis OR OtwieranieWszystkieVIS,
S2:=Wejscie1.xLong OR ZmiennaOpuszczanieVis OR ZamykanieWszystkieVIS,
IN:=ZmiennaLamelkiVis,
PI:=PozycjaLameli,
MAX_RUNTIME:= MaxCzasDzialania,
MANUAL_TIMEOUT:=T#60m,
MASTER_MODE:=FALSE,
POS:=Control_B_Roleta4.POS
);
(*Shade_B_Roleta4(
UP:=Input_B_Roleta4.QU,
DN:=Input_B_Roleta4.QD,
S_IN:=Input_B_Roleta4.STATUS,
pi:=Input_B_Roleta4.PO,
ENABLE:=ShadeFlag_B_1S,
SUN:=SunSignal_1S,
CX:=ReadClock.Calendar
);*)
Control_B_Roleta4(
T_UP:= CzasOtwarcia,
T_DN:= CzasZamkniecia,
UP:=Input_B_Roleta4.QU,
DN:=Input_B_Roleta4.QD,
S_IN:=Input_B_Roleta4.STATUS,
pi:=Input_B_Roleta4.PO
);
WyjsciePodnoszenie:=Control_B_Roleta4.MU;
WyjscieOpuszczanie:=Control_B_Roleta4.MD;
Pozycja:=Control_B_Roleta4.POS;
IF (Control_B_Roleta4.POS <= 255 AND Control_B_Roleta4.POS >= 1) THEN RoletaOtwarta:=TRUE;
ELSE RoletaOtwarta:=FALSE;
END_IF;
IF (Control_B_Roleta4.POS = 0) THEN RoletaZamknieta:=TRUE;
ELSE RoletaZamknieta:=FALSE;
END_IF;
(* Koniec ROLETA4*)
I sam bloczek wykonawczy.