Поправил скрипт, поправил неточности в библиотеке
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Общие
|
||||
Name : BUZZER_CTRL
|
||||
Type : FUNCTION_BLOCK
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION_BLOCK BUZZER_CTRL
|
||||
(*
|
||||
Звучание звонком лампами в завистмости от статуса с возможностью отключения звука
|
||||
*)
|
||||
VAR_INPUT
|
||||
State: WORD:=0; (* 0 - выключено; 1 - включено; 2 - мигание с частотой 1; 3 - мигание с частотой 2; 4 - мигание с частотой 3; *)
|
||||
Sound_off: BOOL; (* Отключение звука *)
|
||||
Inp_BL_1: BOOL := FALSE; (* Пульсар миганич с частотой 1 *)
|
||||
Inp_BL_2: BOOL := FALSE; (* Пульсар миганич с частотой 2 *)
|
||||
Inp_BL_3: BOOL := FALSE; (* Пульсар миганич с частотой 3 *)
|
||||
PermanentOFF_Enable: BOOL := FALSE; (*Включение возможности отключить звук перманентно *)
|
||||
T_PermanentOFF: TIME := T#10S; (* Время удержания кнопки отключения звука для перманентного отключения *)
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
BUZZER: BOOL;
|
||||
END_VAR
|
||||
VAR
|
||||
R_TRIG_0: R_TRIG;
|
||||
R_TRIG_1: R_TRIG;
|
||||
R_TRIG_2: R_TRIG;
|
||||
R_TRIG_3: R_TRIG;
|
||||
R_TRIG_4: R_TRIG;
|
||||
B_ctrl: WORD;
|
||||
|
||||
T_S_OFF: TON;
|
||||
R_TRIG_S_OFF: R_TRIG;
|
||||
AlltimeOff: BOOL;
|
||||
TP1: TP:=(PT:=T#100MS);
|
||||
R_TRIG1: R_TRIG;
|
||||
F_TRIG1: F_TRIG;
|
||||
F_TRIG2: F_TRIG;
|
||||
END_VAR
|
||||
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
R_TRIG_0(CLK:=(State=0)); IF R_TRIG_0.Q THEN B_ctrl:=0; END_IF;
|
||||
R_TRIG_1(CLK:=(State=1)); IF R_TRIG_1.Q THEN B_ctrl:=1; END_IF;
|
||||
R_TRIG_2(CLK:=(State=2)); IF R_TRIG_2.Q THEN B_ctrl:=2; END_IF;
|
||||
R_TRIG_3(CLK:=(State=3)); IF R_TRIG_3.Q THEN B_ctrl:=3; END_IF;
|
||||
R_TRIG_4(CLK:=(State=4)); IF R_TRIG_4.Q THEN B_ctrl:=4; END_IF;
|
||||
|
||||
T_S_OFF(IN:=Sound_off, PT:=T_PermanentOFF);
|
||||
R_TRIG_S_OFF(CLK:=Sound_off AND PermanentOFF_Enable);
|
||||
R_TRIG1(CLK:=AlltimeOff);
|
||||
F_TRIG1(CLK:=AlltimeOff);
|
||||
TP1(IN:=R_TRIG1.Q OR F_TRIG1.Q);
|
||||
F_TRIG2(CLK:=TP1.Q);
|
||||
IF R_TRIG_S_OFF.Q THEN B_ctrl:=0; AlltimeOff:=0; END_IF
|
||||
IF T_S_OFF.Q THEN AlltimeOff:=1; END_IF
|
||||
IF AlltimeOff THEN B_ctrl:=0; END_IF;
|
||||
IF TP1.Q THEN B_ctrl:=1; END_IF;
|
||||
IF (F_TRIG2.Q OR F_TRIG1.Q) THEN B_ctrl:=0; END_IF;
|
||||
|
||||
|
||||
CASE B_ctrl OF
|
||||
0: BUZZER:=FALSE;
|
||||
1: BUZZER:=TRUE;
|
||||
2: BUZZER:=Inp_BL_1;
|
||||
3: BUZZER:=Inp_BL_2;
|
||||
4: BUZZER:=Inp_BL_3;
|
||||
END_CASE;
|
||||
END_FUNCTION_BLOCK
|
||||
Reference in New Issue
Block a user