Добавил комментарии к блокам

This commit is contained in:
2026-07-31 12:20:05 +03:00
parent 9627b0abb9
commit a62be1c4bd
41 changed files with 190 additions and 213 deletions
-1
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : ALARM_1
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
-1
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : ALARM_2
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
-1
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : ALARM_3
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
+2 -3
View File
@@ -5,13 +5,12 @@
Path : Общие
Name : BLINK_LMP
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK BLINK_LMP
(*
Мигание лампами в завистмости от статуса
Мигание лампами в завистмости от статуса
*)
VAR_INPUT
State: WORD:=0; (* 0 - выключено; 1 - включено; 2 - мигание с частотой 1; 3 - мигание с частотой 2; 4 - мигание с частотой 3; *)
@@ -20,7 +19,7 @@ VAR_INPUT
Inp_BL_3: BOOL := FALSE; (* Пульсар миганич с частотой 3 *)
END_VAR
VAR_OUTPUT
LMP: BOOL;
LMP: BOOL; (* Управляющий сигнал на лампу *)
END_VAR
VAR
END_VAR
+2 -3
View File
@@ -5,13 +5,12 @@
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; *)
@@ -23,7 +22,7 @@ VAR_INPUT
T_PermanentOFF: TIME := T#10S; (* Время удержания кнопки отключения звука для перманентного отключения *)
END_VAR
VAR_OUTPUT
BUZZER: BOOL;
BUZZER: BOOL; (* Управляющий сигнал на звонок/зуммер *)
END_VAR
VAR
R_TRIG_0: R_TRIG;
@@ -5,7 +5,6 @@
Path : Общие
Name : Button_acceleration
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
-1
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : CONFIRMATION
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
+9 -7
View File
@@ -5,21 +5,23 @@
Path : Общие
Name : HYST
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK HYST
(*
Гистерезисный компаратор с зоной нечувствительности между ON и OFF.
Поддерживает как прямую (ON >= OFF), так и обратную (ON < OFF) логику переключения.
*)
VAR_INPUT
In : REAL;
ON : REAL;
OFF : REAL;
In : REAL; (* Входное контролируемое значение *)
ON : REAL; (* Порог включения (срабатывания) *)
OFF : REAL; (* Порог выключения (возврата) *)
END_VAR
VAR_OUTPUT
Q : BOOL;
win : BOOL;
Q : BOOL; (* Выходное состояние компаратора *)
win : BOOL; (* Флаг: входное значение находится в зоне гистерезиса *)
END_VAR
(*----- IMPLEMENTATION -----*)
IF ON >= OFF THEN
IF IN < OFF THEN
+5 -7
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : Norm_real
Type : FUNCTION
Exported : 2026-07-31 11:16:16
===============================================================================
*)
@@ -14,13 +13,12 @@ FUNCTION Norm_real : REAL
Нормирует значение аналогового входа X по двум заданным граничным точкам нормировки (X1,Y1) (X2,Y2)
*)
VAR_INPUT
X: REAL;
X1: REAL;
Y1: REAL;
X2: REAL;
Y2: REAL;
X: REAL; (* Входное (ненормированное) значение *)
X1: REAL; (* Первая точка нормировки, вход *)
Y1: REAL; (* Первая точка нормировки, выход *)
X2: REAL; (* Вторая точка нормировки, вход *)
Y2: REAL; (* Вторая точка нормировки, выход *)
END_VAR
(*----- IMPLEMENTATION -----*)
IF (X2-X1 = 0) THEN Norm_real:=Y1; RETURN; END_IF;
Norm_real:=(X-X1)*(Y2-Y1)/(X2-X1)+Y1;
-1
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : PIDcontrol
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
+10 -8
View File
@@ -5,24 +5,26 @@
Path : Общие
Name : Pulse_Switch
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK Pulse_Switch
(*
Формирует импульсы (500 мс) по переднему и заднему фронту управляющего сигнала.
*)
VAR_INPUT
Switch_ctrl: BOOL; (* Управляющий сигнал *)
END_VAR
VAR_OUTPUT
Switch_on: BOOL; (* Импульс 500 мс при переходе Switch_ctrl 0->1 *)
Switch_off: BOOL; (* Импульс 500 мс при переходе Switch_ctrl 1->0 *)
END_VAR
VAR
R_tr_1: R_TRIG;
F_tr_1: F_TRIG;
tp_on: TP:=(PT:=t#500ms);
tp_off: TP:=(PT:=t#500ms);
END_VAR
VAR_INPUT
Switch_ctrl: BOOL;
END_VAR
VAR_OUTPUT
Switch_on: BOOL;
Switch_off: BOOL;
END_VAR
(*----- IMPLEMENTATION -----*)
R_tr_1(CLK:=Switch_ctrl);
tp_on(IN:=R_tr_1.Q, Q=>Switch_on);
+11 -10
View File
@@ -5,23 +5,24 @@
Path : Общие
Name : STACK_I16
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK STACK_I16
(* стек на 16 элементов типа INT*)
(*
Стек на 16 элементов типа INT
*)
VAR_INPUT
Din : INT; (* Переменная для записи в стек *)
E : BOOL := TRUE;(* Включение стека *)
POP : BOOL; (* Извлечение из стека *)
PUSH : BOOL; (* Запись в стек *)
RST : BOOL; (* Обнуление стека *)
Din : INT; (* Переменная для записи в стек *)
E : BOOL := TRUE; (* Включение стека *)
POP : BOOL; (* Извлечение из стека *)
PUSH : BOOL; (* Запись в стек *)
RST : BOOL; (* Обнуление стека *)
END_VAR
VAR_OUTPUT
Dout : INT;
EMPTY : BOOL := TRUE;
FULL : BOOL;
Dout : INT; (* Значение, извлеченное из стека при POP *)
EMPTY : BOOL := TRUE; (* Флаг "стек пуст" *)
FULL : BOOL; (* Флаг "стек заполнен" (достигнут предел n) *)
END_VAR
VAR
stack: ARRAY[0..n] OF INT;
+24 -25
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : STATUS_ANALOG_M
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
@@ -13,7 +12,7 @@ FUNCTION_BLOCK STATUS_ANALOG_M
(*
Модуль формирования статуса
Гистерезис по отключению и задержка по включению, вход типа REAL
-1 - нет связи с датчиком
0 - не определено
1 - норма
@@ -23,31 +22,31 @@ FUNCTION_BLOCK STATUS_ANALOG_M
5 - аварийный по верхнему уровню
*)
VAR_INPUT
Input: REAL;
fail_hi: REAL:=3.402823466E+38;
delta_fail_hi: REAL := 0;
time_fail_hi: TIME :=t#0s;
warn_hi: REAL:=3.402823466E+38;
delta_warn_hi: REAL := 0;
time_warn_hi: TIME :=t#0s;
warn_low: REAL:=-3.402823466E+38;
delta_warn_low: REAL := 0;
time_warn_low: TIME :=t#0s;
fail_low: REAL:=-3.402823466E+38;
delta_fail_low: REAL := 0;
time_fail_low: TIME :=t#0s;
no_signal: REAL:=-3.402823466E+38;
delta_no_signal: REAL := 0;
time_no_signal: TIME :=T#0S;
In_fail_hi: BOOL := FALSE;
In_warn_hi: BOOL := FALSE;
In_warn_low: BOOL := FALSE;
In_fail_low: BOOL := FALSE;
In_no_signal: BOOL := FALSE;
Input: REAL; (* Контролируемое значение *)
fail_hi: REAL:=3.402823466E+38; (* Порог аварии по верхнему уровню *)
delta_fail_hi: REAL := 0; (* Гистерезис возврата из fail_hi (снятие при Input < fail_hi - delta_fail_hi) *)
time_fail_hi: TIME :=t#0s; (* Выдержка времени на срабатывание fail_hi *)
warn_hi: REAL:=3.402823466E+38; (* Порог предупреждения по верхнему уровню *)
delta_warn_hi: REAL := 0; (* Гистерезис возврата из warn_hi *)
time_warn_hi: TIME :=t#0s; (* Выдержка времени на срабатывание warn_hi *)
warn_low: REAL:=-3.402823466E+38; (* Порог предупреждения по нижнему уровню *)
delta_warn_low: REAL := 0; (* Гистерезис возврата из warn_low *)
time_warn_low: TIME :=t#0s; (* Выдержка времени на срабатывание warn_low *)
fail_low: REAL:=-3.402823466E+38; (* Порог аварии по нижнему уровню *)
delta_fail_low: REAL := 0; (* Гистерезис возврата из fail_low *)
time_fail_low: TIME :=t#0s; (* Выдержка времени на срабатывание fail_low *)
no_signal: REAL:=-3.402823466E+38; (* Порог отсутствия связи с датчиком *)
delta_no_signal: REAL := 0; (* Гистерезис возврата из no_signal *)
time_no_signal: TIME :=T#0S; (* Выдержка времени на срабатывание no_signal *)
In_fail_hi: BOOL := FALSE; (* Принудительная установка статуса fail_hi извне *)
In_warn_hi: BOOL := FALSE; (* Принудительная установка статуса warn_hi извне *)
In_warn_low: BOOL := FALSE; (* Принудительная установка статуса warn_low извне *)
In_fail_low: BOOL := FALSE; (* Принудительная установка статуса fail_low извне *)
In_no_signal: BOOL := FALSE; (* Принудительная установка статуса no_signal извне *)
END_VAR
VAR_OUTPUT
Status: AnalogValueState;
Status: AnalogValueState; (* Итоговый статус аналогового значения *)
END_VAR
VAR
fail_hi_st: BOOL;
+23 -27
View File
@@ -5,7 +5,6 @@
Path : Общие
Name : STATUS_ANALOG_M_I
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
@@ -23,42 +22,39 @@ FUNCTION_BLOCK STATUS_ANALOG_M_I
5 - аварийный по верхнему уровню
*)
VAR_INPUT
Input: INT;
fail_hi: INT:=32767;
delta_fail_hi: INT := 0;
time_fail_hi: TIME :=t#0s;
warn_hi: INT:=32767;
delta_warn_hi: INT := 0;
time_warn_hi: TIME :=t#0s;
warn_low: INT:=-32768;
delta_warn_low: INT := 0;
time_warn_low: TIME :=t#0s;
fail_low: INT:=-32768;
delta_fail_low: INT := 0;
time_fail_low: TIME :=t#0s;
no_signal: INT:=-32768;
delta_no_signal: INT := 0;
time_no_signal: TIME :=T#0S;
In_fail_hi: BOOL := FALSE;
In_warn_hi: BOOL := FALSE;
In_warn_low: BOOL := FALSE;
In_fail_low: BOOL := FALSE;
In_no_signal: BOOL := FALSE;
Input: INT; (* Контролируемое значение *)
fail_hi: INT:=32767; (* Порог аварии по верхнему уровню *)
delta_fail_hi: INT := 0; (* Гистерезис возврата из fail_hi (снятие при Input < fail_hi - delta_fail_hi) *)
time_fail_hi: TIME :=t#0s; (* Выдержка времени на срабатывание fail_hi *)
warn_hi: INT:=32767; (* Порог предупреждения по верхнему уровню *)
delta_warn_hi: INT := 0; (* Гистерезис возврата из warn_hi *)
time_warn_hi: TIME :=t#0s; (* Выдержка времени на срабатывание warn_hi *)
warn_low: INT:=-32768; (* Порог предупреждения по нижнему уровню *)
delta_warn_low: INT := 0; (* Гистерезис возврата из warn_low *)
time_warn_low: TIME :=t#0s; (* Выдержка времени на срабатывание warn_low *)
fail_low: INT:=-32768; (* Порог аварии по нижнему уровню *)
delta_fail_low: INT := 0; (* Гистерезис возврата из fail_low *)
time_fail_low: TIME :=t#0s; (* Выдержка времени на срабатывание fail_low *)
no_signal: INT:=-32768; (* Порог отсутствия связи с датчиком *)
delta_no_signal: INT := 0; (* Гистерезис возврата из no_signal *)
time_no_signal: TIME :=T#0S; (* Выдержка времени на срабатывание no_signal *)
In_fail_hi: BOOL := FALSE; (* Принудительная установка статуса fail_hi извне *)
In_warn_hi: BOOL := FALSE; (* Принудительная установка статуса warn_hi извне *)
In_warn_low: BOOL := FALSE; (* Принудительная установка статуса warn_low извне *)
In_fail_low: BOOL := FALSE; (* Принудительная установка статуса fail_low извне *)
In_no_signal: BOOL := FALSE; (* Принудительная установка статуса no_signal извне *)
END_VAR
VAR_OUTPUT
Status: AnalogValueState;
Status: AnalogValueState; (* Итоговый статус аналогового значения *)
END_VAR
VAR
(* !!! ВНУТРЕННИЕ ВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
fail_hi_st: BOOL;
warn_hi_st: BOOL;
normal_st: BOOL;
warn_low_st: BOOL;
fail_low_st: BOOL;
no_signal_st: BOOL;
(* !!! ВНУТРЕННИЕ НЕВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
TON_fail_hi: TON;
TON_warn_hi: TON;
TON_warn_low: TON;
@@ -5,19 +5,20 @@
Path : Общие
Name : Status_Connect_Counter
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK Status_Connect_Counter
(* Статус связи с СВУ по счетчику*)
(*
Статус связи с СВУ по счетчику
*)
VAR_INPUT
Counter: WORD;
T_Error: TIME; (* время для диагностирования ошибки*)
Counter: WORD; (* Счетчик, инкрементируемый удаленным устройством (СВУ) *)
T_Error: TIME; (* Время отсутствия изменений счетчика для диагностики обрыва связи *)
END_VAR
VAR_OUTPUT
CounterIsChanged: BOOL;
ERROR_CONNECT: BOOL;
CounterIsChanged: BOOL; (* Флаг: счетчик изменился в текущем цикле *)
ERROR_CONNECT: BOOL; (* Флаг ошибки связи: счетчик не менялся дольше T_Error *)
END_VAR
VAR
CounterOld: WORD;
+6 -5
View File
@@ -5,18 +5,19 @@
Path : Общие
Name : Status_SU_Connect
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK Status_SU_Connect
(* Статус связи с СВУ по серцебиению*)
(*
Статус связи с СВУ по серцебиению
*)
VAR_INPUT
HeartBit: BOOL;
T_Pulse: TIME;
HeartBit: BOOL; (* Сигнал "сердцебиения" от СВУ *)
T_Pulse: TIME; (* Максимально допустимая длительность одного состояния HeartBit *)
END_VAR
VAR_OUTPUT
ERROR_CONNECT: BOOL;
ERROR_CONNECT: BOOL; (* Флаг ошибки связи: HeartBit не меняется дольше T_Pulse *)
END_VAR
VAR
TON_SU_1: TON;
+5 -1
View File
@@ -5,11 +5,15 @@
Path : Общие
Name : TOF_RST
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK TOF_RST
(*
Таймер выключения (TOF) с возможностью принудительного сброса RST.
При снятии IN выход Q остается TRUE еще в течение PT.
RST немедленно сбрасывает выход и таймер вне зависимости от IN.
*)
VAR_INPUT
IN: BOOL; // Управляющий сигнал
PT: TIME; // Время задержки выключения
+6 -7
View File
@@ -5,22 +5,21 @@
Path : Общие
Name : TONOF
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK TONOF
(*
TONOF генерирует TON и TOF задержки для переменной IN
Задержка на вход T_ON, задержка на выход T_OFF
TONOF генерирует TON и TOF задержки для переменной IN
Задержка на вход T_ON, задержка на выход T_OFF
*)
VAR_INPUT
IN : BOOL;
T_ON : TIME := T#0s; (* Задержка на вход *)
T_OFF : TIME := T#0s; (* Задержка на выход *)
IN : BOOL; (* Входной сигнал *)
T_ON : TIME := T#0S; (* Задержка на вход *)
T_OFF : TIME := T#0S; (* Задержка на выход *)
END_VAR
VAR_OUTPUT
Q : BOOL;
Q : BOOL; (* Выходной сигнал с учетом задержек включения/выключения *)
END_VAR
VAR
X : TON;
+5 -1
View File
@@ -5,11 +5,15 @@
Path : Общие
Name : TP_RST
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK TP_RST
(*
Формирователь одиночного импульса (TP) длительностью PT с возможностью принудительного сброса RST.
Повторный передний фронт IN во время выполнения импульса игнорируется.
RST немедленно прерывает выполняющийся импульс.
*)
VAR_INPUT
IN: BOOL; // Управляющий сигнал
PT: TIME; // Длительность импульса