diff --git a/PLC_Library.library b/PLC_Library.library index 6693558..6a696e0 100644 Binary files a/PLC_Library.library and b/PLC_Library.library differ diff --git a/plc_src/DUT/Structs/AnalogValueState.st b/plc_src/DUT/Structs/AnalogValueState.st index 835aba8..a3dd04b 100644 --- a/plc_src/DUT/Structs/AnalogValueState.st +++ b/plc_src/DUT/Structs/AnalogValueState.st @@ -5,7 +5,6 @@ Path : Structs Name : AnalogValueState Type : DUT - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Fastwel/AIM721_AI.st b/plc_src/POU/Fastwel/AIM721_AI.st index 9859a7f..9a2b14e 100644 --- a/plc_src/POU/Fastwel/AIM721_AI.st +++ b/plc_src/POU/Fastwel/AIM721_AI.st @@ -5,16 +5,15 @@ Path : Fastwel Name : AIM721_AI Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM721_AI : REAL (* -Перевод значений входов модуля AIM721 из единиц АЦП в 0..20 мА + Перевод значений входов модуля AIM721 из единиц АЦП в 0..20 мА *) VAR_INPUT - ADC: DINT; + ADC : DINT; (* Единицы АЦП *) END_VAR (*----- IMPLEMENTATION -----*) diff --git a/plc_src/POU/Fastwel/AIM722_AI.st b/plc_src/POU/Fastwel/AIM722_AI.st index 322ac87..40e32da 100644 --- a/plc_src/POU/Fastwel/AIM722_AI.st +++ b/plc_src/POU/Fastwel/AIM722_AI.st @@ -5,16 +5,15 @@ Path : Fastwel Name : AIM722_AI Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM722_AI : REAL (* -Перевод значений входов модуля AIM722 из единиц АЦП в 0..20 мА + Перевод значений входов модуля AIM722 из единиц АЦП в 0..20 мА *) VAR_INPUT - ADC: DINT; + ADC : DINT; (* Единицы АЦП *) END_VAR (*----- IMPLEMENTATION -----*) diff --git a/plc_src/POU/Fastwel/AIM723_AI.st b/plc_src/POU/Fastwel/AIM723_AI.st index 0422d25..09709c7 100644 --- a/plc_src/POU/Fastwel/AIM723_AI.st +++ b/plc_src/POU/Fastwel/AIM723_AI.st @@ -5,16 +5,15 @@ Path : Fastwel Name : AIM723_AI Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM723_AI : REAL (* -Перевод значений входов модуля AIM723 из единиц АЦП в 4..20 мА + Перевод значений входов модуля AIM723 из единиц АЦП в 4..20 мА *) VAR_INPUT - ADC: DINT; + ADC : DINT; (* Единицы АЦП *) END_VAR (*----- IMPLEMENTATION -----*) diff --git a/plc_src/POU/Fastwel/AIM725_Status.st b/plc_src/POU/Fastwel/AIM725_Status.st index 8402521..ec8a50e 100644 --- a/plc_src/POU/Fastwel/AIM725_Status.st +++ b/plc_src/POU/Fastwel/AIM725_Status.st @@ -5,50 +5,48 @@ Path : Fastwel Name : AIM725_Status Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION_BLOCK AIM725_Status (* -Модуль формирования статуса -Гистерезис по отключению и задержка по включению --1 - нет связи с датчиком - 0 - не определено - 1 - норма - 2 - предупредительный по нижнему уровню - 3 - аварийный по нижнему уровню - 4 - предупредительный по верхнему уровню, - 5 - аварийный по верхнему уровню + Модуль формирования статуса + Гистерезис по отключению и задержка по включению + + -1 - нет связи с датчиком + 0 - не определено + 1 - норма + 2 - предупредительный по нижнему уровню + 3 - аварийный по нижнему уровню + 4 - предупредительный по верхнему уровню, + 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; - Modul_status: BYTE; - Chanel_num: BYTE; + Input: REAL; (* Контролируемое значение *) + fail_hi: REAL:=3.402823466E+38; (* Порог аварии по верхнему уровню *) + delta_fail_hi: REAL := 0; (* Гистерезис возврата из 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 *) + Modul_status: BYTE; (* Байт статуса модуля АЦП (биты диагностики по каналам) *) + Chanel_num: BYTE; (* Номер канала модуля (1 или 2), определяет какие биты Modul_status проверяются *) END_VAR VAR_OUTPUT - Status: INT; - T_mod: INT; + Status: AnalogValueState; (* Итоговый статус аналогового значения *) + T_mod: INT; (* Значение Input, приведенное к INT; -500 при отсутствии связи (no_signal) *) END_VAR VAR -(* !!! ВНУТРЕННИЕ НЕВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *) TON_fail_hi: TON; TON_warn_hi: TON; TON_warn_low: TON; TON_fail_low: TON; -(* !!! ВНУТРЕННИЕ ВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *) fail_hi_st: BOOL; warn_hi_st: BOOL; normal_st: BOOL; @@ -75,18 +73,18 @@ IF TON_warn_hi.Q THEN warn_hi_st := TRUE; ELSIF (Input < warn_hi - delta_warn_hi normal_st := (NOT(no_signal_st) AND NOT(fail_low_st) AND NOT(warn_low_st) AND NOT(warn_hi_st) AND NOT(fail_hi_st)); IF no_signal_st THEN - Status := - INT#1; + Status := AnalogValueState.no_signal; ELSIF fail_hi_st THEN - Status := INT#5; + Status := AnalogValueState.fail_hi; ELSIF fail_low_st THEN - Status := INT#3; + Status := AnalogValueState.fail_low; ELSIF warn_hi_st THEN - Status := INT#4; + Status := AnalogValueState.warn_hi; ELSIF warn_low_st THEN - Status := INT#2; + Status := AnalogValueState.warn_low; ELSIF normal_st THEN - Status := INT#1; + Status := AnalogValueState.normal; ELSE - Status := INT#0; + Status := AnalogValueState.undefined; END_IF; END_FUNCTION_BLOCK diff --git a/plc_src/POU/Fastwel/AIM726_AI.st b/plc_src/POU/Fastwel/AIM726_AI.st index 00e2c34..61e7e43 100644 --- a/plc_src/POU/Fastwel/AIM726_AI.st +++ b/plc_src/POU/Fastwel/AIM726_AI.st @@ -5,16 +5,15 @@ Path : Fastwel Name : AIM726_AI Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM726_AI : REAL (* -Перевод значений входов модуля AIM726 из единиц АЦП в 0..40 В + Перевод значений входов модуля AIM726 из единиц АЦП в 0..40 В *) VAR_INPUT - ADC : DWORD; (*Единицы АЦП*) + ADC : DWORD; (* Единицы АЦП *) END_VAR (*----- IMPLEMENTATION -----*) AIM726_AI := DWORD_TO_REAL(ADC) * REAL#4.768372E-006; diff --git a/plc_src/POU/Fastwel/AIM727_AI.st b/plc_src/POU/Fastwel/AIM727_AI.st index 427b298..3bea68a 100644 --- a/plc_src/POU/Fastwel/AIM727_AI.st +++ b/plc_src/POU/Fastwel/AIM727_AI.st @@ -5,13 +5,12 @@ Path : Fastwel Name : AIM727_AI Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM727_AI : REAL (* -Перевод значений входов модуля AIM727 из единиц АЦП в 0..40 V + Перевод значений входов модуля AIM727 из единиц АЦП в 0..40 V *) VAR_INPUT ADC: DINT; (*Единицы АЦП*) diff --git a/plc_src/POU/Fastwel/AIM730_AO.st b/plc_src/POU/Fastwel/AIM730_AO.st index f72c2d4..421c575 100644 --- a/plc_src/POU/Fastwel/AIM730_AO.st +++ b/plc_src/POU/Fastwel/AIM730_AO.st @@ -5,20 +5,16 @@ Path : Fastwel Name : AIM730_AO Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM730_AO : WORD (* -Перевод значений 0..20 мА или 4..20 мА в единицы АЦП выходов модуля AIM730 -Диапазон: -RANGE = 0 - 0..20 мА -RANGE = 1 - 4..20 мА + Перевод значений 0..20 мА или 4..20 мА в единицы АЦП выходов модуля AIM730 *) VAR_INPUT DAC : REAL; (*Миллиамперы*) - RANGE : BYTE; (*Диапазон: 0..20 мА - 0; 4..20 мА - 1 *) + RANGE : BYTE; (*Диапазон: 0 - 0..20 мА; 1 - 4..20 мА *) END_VAR (*----- IMPLEMENTATION -----*) IF (RANGE = 1) AND (DAC < 4) THEN AIM730_AO := WORD#4; RETURN;END_IF; diff --git a/plc_src/POU/Fastwel/AIM731_AO.st b/plc_src/POU/Fastwel/AIM731_AO.st index 9a96e48..5c506a3 100644 --- a/plc_src/POU/Fastwel/AIM731_AO.st +++ b/plc_src/POU/Fastwel/AIM731_AO.st @@ -5,20 +5,16 @@ Path : Fastwel Name : AIM731_AO Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM731_AO : WORD (* -Перевод значений -10..+10 В или 0..+10 В в единицы АЦП выходов модуля AIM731 -Диапазон: -RANGE = 0 - -10..+10 В -RANGE = 1 - 0..+10 В + Перевод значений -10..+10 В или 0..+10 В в единицы АЦП выходов модуля AIM731 *) VAR_INPUT DAC : REAL; (*Вольты*) - RANGE : BYTE; (*Диапазон -10..+10 В - 0; 0..+10 В - 1 *) + RANGE : BYTE; (*Диапазон: 0 - -10..+10 В; 1 - 0..+10 В *) END_VAR (*----- IMPLEMENTATION -----*) CASE RANGE OF diff --git a/plc_src/POU/Fastwel/AIM791_AI.st b/plc_src/POU/Fastwel/AIM791_AI.st index ec3321d..75c4e20 100644 --- a/plc_src/POU/Fastwel/AIM791_AI.st +++ b/plc_src/POU/Fastwel/AIM791_AI.st @@ -5,23 +5,17 @@ Path : Fastwel Name : AIM791_AI Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION AIM791_AI : REAL (* -Перевод значений входов модуля AIM791 из единиц АЦП в 0..5 мА / 0..20 мА / 4..20 мА -Диапазон: -RANGE = 0 - 0..5 мА -RANGE = 1 - 0..20 мА -RANGE = 2 - 4..20 мА + Перевод значений входов модуля AIM791 из единиц АЦП в 0..5 мА / 0..20 мА / 4..20 мА *) VAR_INPUT - ADC: WORD; - RANGE: BYTE := 0; + ADC: WORD; (* Значение АЦП *) + RANGE: BYTE := 0; (* Диапазон: 0 - 0..5 мА; 1 - 0..20 мА; 2 - 4..20 мА *) END_VAR - (*----- IMPLEMENTATION -----*) CASE RANGE OF 0 : AIM791_AI := WORD_TO_REAL(ADC) * REAL#7.820248722E-005; diff --git a/plc_src/POU/Fastwel/DIM764_DI.st b/plc_src/POU/Fastwel/DIM764_DI.st index 35ae85f..0694f57 100644 --- a/plc_src/POU/Fastwel/DIM764_DI.st +++ b/plc_src/POU/Fastwel/DIM764_DI.st @@ -5,14 +5,15 @@ Path : Fastwel Name : DIM764_DI Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION DIM764_DI : REAL -(*На выходе - Частота в Гц*) +(* + На выходе - Частота в Гц +*) VAR_INPUT - IN: DWORD; + IN: DWORD; (* Значение периода/интервала с модуля, единицы АЦП *) RANGE: BYTE; (* 0-Period; 1-Interval; *) END_VAR (*----- IMPLEMENTATION -----*) diff --git a/plc_src/POU/Filters/ExpRunAverage.st b/plc_src/POU/Filters/ExpRunAverage.st index a3d9605..f2fc966 100644 --- a/plc_src/POU/Filters/ExpRunAverage.st +++ b/plc_src/POU/Filters/ExpRunAverage.st @@ -5,7 +5,6 @@ Path : Filters Name : ExpRunAverage Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Filters/ExpRunAverageAdaptive.st b/plc_src/POU/Filters/ExpRunAverageAdaptive.st index a11723d..eaaef00 100644 --- a/plc_src/POU/Filters/ExpRunAverageAdaptive.st +++ b/plc_src/POU/Filters/ExpRunAverageAdaptive.st @@ -5,7 +5,6 @@ Path : Filters Name : ExpRunAverageAdaptive Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Filters/MultipleClick.st b/plc_src/POU/Filters/MultipleClick.st index 6025162..be06bf3 100644 --- a/plc_src/POU/Filters/MultipleClick.st +++ b/plc_src/POU/Filters/MultipleClick.st @@ -5,11 +5,15 @@ Path : Filters Name : MultipleClick Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION_BLOCK MultipleClick +(* + Детектор серии кликов кнопки (одиночный/двойной/тройной клик). + Считает нажатия, пока пауза между ними не превысит TimeToWait, затем фиксирует + результат на выходах Click1/Click2/Click3 на время TimeRelease. +*) VAR_INPUT In: BOOL;(* Вход кнопки *) TimeToWait: TIME:=T#500MS; (* Максимальное время между нажатиями *) diff --git a/plc_src/POU/Filters/RunMiddleArifm.st b/plc_src/POU/Filters/RunMiddleArifm.st index 0e74371..ddb69b6 100644 --- a/plc_src/POU/Filters/RunMiddleArifm.st +++ b/plc_src/POU/Filters/RunMiddleArifm.st @@ -5,19 +5,20 @@ Path : Filters Name : RunMiddleArifm Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION_BLOCK RunMiddleArifm -(* Скользящая средняя *) +(* +Скользящая средняя +*) VAR_INPUT - In : REAL; + In : REAL; (* Входное значение *) N : INT:=32; (* Размер выборки 0...32 *) - RST : BOOL; + RST : BOOL; (* Сброс/переинициализация буфера текущим значением In *) END_VAR VAR_OUTPUT - Y : REAL; + Y : REAL; (* Значение скользящей средней *) END_VAR VAR init: BOOL; diff --git a/plc_src/POU/Иное/DFS.st b/plc_src/POU/Иное/DFS.st index ab33010..1362368 100644 --- a/plc_src/POU/Иное/DFS.st +++ b/plc_src/POU/Иное/DFS.st @@ -5,7 +5,6 @@ Path : Иное Name : DFS Type : PROGRAM - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Общие/ALARM_1.st b/plc_src/POU/Общие/ALARM_1.st index 5a601d6..461f1b2 100644 --- a/plc_src/POU/Общие/ALARM_1.st +++ b/plc_src/POU/Общие/ALARM_1.st @@ -5,7 +5,6 @@ Path : Общие Name : ALARM_1 Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Общие/ALARM_2.st b/plc_src/POU/Общие/ALARM_2.st index c7e70f4..ae065b6 100644 --- a/plc_src/POU/Общие/ALARM_2.st +++ b/plc_src/POU/Общие/ALARM_2.st @@ -5,7 +5,6 @@ Path : Общие Name : ALARM_2 Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Общие/ALARM_3.st b/plc_src/POU/Общие/ALARM_3.st index fbc1dd4..086b0ba 100644 --- a/plc_src/POU/Общие/ALARM_3.st +++ b/plc_src/POU/Общие/ALARM_3.st @@ -5,7 +5,6 @@ Path : Общие Name : ALARM_3 Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Общие/BLINK_LMP.st b/plc_src/POU/Общие/BLINK_LMP.st index fa6a7e2..9aba310 100644 --- a/plc_src/POU/Общие/BLINK_LMP.st +++ b/plc_src/POU/Общие/BLINK_LMP.st @@ -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 diff --git a/plc_src/POU/Общие/BUZZER_CTRL.st b/plc_src/POU/Общие/BUZZER_CTRL.st index 373d017..567df75 100644 --- a/plc_src/POU/Общие/BUZZER_CTRL.st +++ b/plc_src/POU/Общие/BUZZER_CTRL.st @@ -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; diff --git a/plc_src/POU/Общие/Button_acceleration.st b/plc_src/POU/Общие/Button_acceleration.st index 653dda1..7a8bc26 100644 --- a/plc_src/POU/Общие/Button_acceleration.st +++ b/plc_src/POU/Общие/Button_acceleration.st @@ -5,7 +5,6 @@ Path : Общие Name : Button_acceleration Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Общие/CONFIRMATION.st b/plc_src/POU/Общие/CONFIRMATION.st index aed234c..77af99f 100644 --- a/plc_src/POU/Общие/CONFIRMATION.st +++ b/plc_src/POU/Общие/CONFIRMATION.st @@ -5,7 +5,6 @@ Path : Общие Name : CONFIRMATION Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Общие/HYST.st b/plc_src/POU/Общие/HYST.st index e5eaca2..a163f7e 100644 --- a/plc_src/POU/Общие/HYST.st +++ b/plc_src/POU/Общие/HYST.st @@ -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 diff --git a/plc_src/POU/Общие/Norm_real.st b/plc_src/POU/Общие/Norm_real.st index b623a64..a5118d7 100644 --- a/plc_src/POU/Общие/Norm_real.st +++ b/plc_src/POU/Общие/Norm_real.st @@ -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; diff --git a/plc_src/POU/Общие/PIDcontrol.st b/plc_src/POU/Общие/PIDcontrol.st index d1dc81f..ab27f6e 100644 --- a/plc_src/POU/Общие/PIDcontrol.st +++ b/plc_src/POU/Общие/PIDcontrol.st @@ -5,7 +5,6 @@ Path : Общие Name : PIDcontrol Type : FUNCTION_BLOCK - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Общие/Pulse_Switch.st b/plc_src/POU/Общие/Pulse_Switch.st index 962040d..12a78f0 100644 --- a/plc_src/POU/Общие/Pulse_Switch.st +++ b/plc_src/POU/Общие/Pulse_Switch.st @@ -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); diff --git a/plc_src/POU/Общие/STACK_I16.st b/plc_src/POU/Общие/STACK_I16.st index e4e0f0e..fb963c4 100644 --- a/plc_src/POU/Общие/STACK_I16.st +++ b/plc_src/POU/Общие/STACK_I16.st @@ -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; diff --git a/plc_src/POU/Общие/STATUS_ANALOG_M.st b/plc_src/POU/Общие/STATUS_ANALOG_M.st index beaa0cd..67b5993 100644 --- a/plc_src/POU/Общие/STATUS_ANALOG_M.st +++ b/plc_src/POU/Общие/STATUS_ANALOG_M.st @@ -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; diff --git a/plc_src/POU/Общие/STATUS_ANALOG_M_I.st b/plc_src/POU/Общие/STATUS_ANALOG_M_I.st index d02d9a5..7bb9afc 100644 --- a/plc_src/POU/Общие/STATUS_ANALOG_M_I.st +++ b/plc_src/POU/Общие/STATUS_ANALOG_M_I.st @@ -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; diff --git a/plc_src/POU/Общие/Status_Connect_Counter.st b/plc_src/POU/Общие/Status_Connect_Counter.st index 5792421..0571742 100644 --- a/plc_src/POU/Общие/Status_Connect_Counter.st +++ b/plc_src/POU/Общие/Status_Connect_Counter.st @@ -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; diff --git a/plc_src/POU/Общие/Status_SU_Connect.st b/plc_src/POU/Общие/Status_SU_Connect.st index 82670ab..0f332d6 100644 --- a/plc_src/POU/Общие/Status_SU_Connect.st +++ b/plc_src/POU/Общие/Status_SU_Connect.st @@ -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; diff --git a/plc_src/POU/Общие/TOF_RST.st b/plc_src/POU/Общие/TOF_RST.st index 59cd0b2..55b15b7 100644 --- a/plc_src/POU/Общие/TOF_RST.st +++ b/plc_src/POU/Общие/TOF_RST.st @@ -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; // Время задержки выключения diff --git a/plc_src/POU/Общие/TONOF.st b/plc_src/POU/Общие/TONOF.st index ef73766..70d63f4 100644 --- a/plc_src/POU/Общие/TONOF.st +++ b/plc_src/POU/Общие/TONOF.st @@ -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; diff --git a/plc_src/POU/Общие/TP_RST.st b/plc_src/POU/Общие/TP_RST.st index 1153e43..24b1c3d 100644 --- a/plc_src/POU/Общие/TP_RST.st +++ b/plc_src/POU/Общие/TP_RST.st @@ -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; // Длительность импульса diff --git a/plc_src/POU/Преобразование значений/DWORD_OF_2WORD.st b/plc_src/POU/Преобразование значений/DWORD_OF_2WORD.st index 70221f4..c34fc3a 100644 --- a/plc_src/POU/Преобразование значений/DWORD_OF_2WORD.st +++ b/plc_src/POU/Преобразование значений/DWORD_OF_2WORD.st @@ -5,16 +5,15 @@ Path : Преобразование значений Name : DWORD_OF_2WORD Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION DWORD_OF_2WORD : DWORD +(* Сборка DWORD из двух WORD *) VAR_INPUT - W1 : WORD; - W0 : WORD; + W1 : WORD; (* Старшее слово (биты 16..31 результата) *) + W0 : WORD; (* Младшее слово (биты 0..15 результата) *) END_VAR - (*----- IMPLEMENTATION -----*) DWORD_OF_2WORD := SHL(WORD_TO_DWORD(W1),16) OR WORD_TO_DWORD(W0); END_FUNCTION diff --git a/plc_src/POU/Преобразование значений/DW_TO_REAL.st b/plc_src/POU/Преобразование значений/DW_TO_REAL.st index f4c4004..f03885d 100644 --- a/plc_src/POU/Преобразование значений/DW_TO_REAL.st +++ b/plc_src/POU/Преобразование значений/DW_TO_REAL.st @@ -5,13 +5,13 @@ Path : Преобразование значений Name : DW_TO_REAL Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION DW_TO_REAL : REAL +(* Побитовое переинтерпретирование DWORD как REAL (без преобразования значения) *) VAR_INPUT - X : DWORD; + X : DWORD; (* Значение для переинтерпретации *) END_VAR VAR pt : POINTER TO REAL; diff --git a/plc_src/POU/Преобразование значений/NTC_termistor_T.st b/plc_src/POU/Преобразование значений/NTC_termistor_T.st index 85ca553..3999ba1 100644 --- a/plc_src/POU/Преобразование значений/NTC_termistor_T.st +++ b/plc_src/POU/Преобразование значений/NTC_termistor_T.st @@ -5,7 +5,6 @@ Path : Преобразование значений Name : NTC_termistor_T Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) diff --git a/plc_src/POU/Преобразование значений/REAL_TO_DW.st b/plc_src/POU/Преобразование значений/REAL_TO_DW.st index 8da5ae1..674690b 100644 --- a/plc_src/POU/Преобразование значений/REAL_TO_DW.st +++ b/plc_src/POU/Преобразование значений/REAL_TO_DW.st @@ -5,13 +5,13 @@ Path : Преобразование значений Name : REAL_TO_DW Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION REAL_TO_DW : DWORD +(* Побитовое переинтерпретирование REAL как DWORD (без преобразования значения) *) VAR_INPUT - X : REAL; + X : REAL; (* Значение для переинтерпретации *) END_VAR VAR pt : POINTER TO DWORD; diff --git a/plc_src/POU/Преобразование значений/WORD_OF_DWORD.st b/plc_src/POU/Преобразование значений/WORD_OF_DWORD.st index b9bb732..1f1aa91 100644 --- a/plc_src/POU/Преобразование значений/WORD_OF_DWORD.st +++ b/plc_src/POU/Преобразование значений/WORD_OF_DWORD.st @@ -5,16 +5,15 @@ Path : Преобразование значений Name : WORD_OF_DWORD Type : FUNCTION - Exported : 2026-07-31 11:16:16 =============================================================================== *) FUNCTION WORD_OF_DWORD : WORD +(* Извлечение одного из двух 16-битных слов DWORD *) VAR_INPUT - in : DWORD; - N : BYTE; + in : DWORD; (* Исходное значение *) + N : BYTE; (* Номер извлекаемого слова: 0 - младшее (биты 0..15), 1 - старшее (биты 16..31) *) END_VAR - (*----- IMPLEMENTATION -----*) WORD_OF_DWORD := DWORD_TO_WORD(SHR(in,SHL(n,4))); END_FUNCTION