Поправил скрипт, поправил неточности в библиотеке

This commit is contained in:
2026-07-31 11:20:45 +03:00
parent d3da512178
commit 3d52fdec57
44 changed files with 1956 additions and 51 deletions
+72
View File
@@ -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