Добавил комментарии к блокам
This commit is contained in:
Binary file not shown.
@@ -5,7 +5,6 @@
|
|||||||
Path : Structs
|
Path : Structs
|
||||||
Name : AnalogValueState
|
Name : AnalogValueState
|
||||||
Type : DUT
|
Type : DUT
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,16 +5,15 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM721_AI
|
Name : AIM721_AI
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM721_AI : REAL
|
FUNCTION AIM721_AI : REAL
|
||||||
(*
|
(*
|
||||||
Перевод значений входов модуля AIM721 из единиц АЦП в 0..20 мА
|
Перевод значений входов модуля AIM721 из единиц АЦП в 0..20 мА
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
ADC: DINT;
|
ADC : DINT; (* Единицы АЦП *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
|
|||||||
@@ -5,16 +5,15 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM722_AI
|
Name : AIM722_AI
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM722_AI : REAL
|
FUNCTION AIM722_AI : REAL
|
||||||
(*
|
(*
|
||||||
Перевод значений входов модуля AIM722 из единиц АЦП в 0..20 мА
|
Перевод значений входов модуля AIM722 из единиц АЦП в 0..20 мА
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
ADC: DINT;
|
ADC : DINT; (* Единицы АЦП *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
|
|||||||
@@ -5,16 +5,15 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM723_AI
|
Name : AIM723_AI
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM723_AI : REAL
|
FUNCTION AIM723_AI : REAL
|
||||||
(*
|
(*
|
||||||
Перевод значений входов модуля AIM723 из единиц АЦП в 4..20 мА
|
Перевод значений входов модуля AIM723 из единиц АЦП в 4..20 мА
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
ADC: DINT;
|
ADC : DINT; (* Единицы АЦП *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
|
|||||||
@@ -5,15 +5,15 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM725_Status
|
Name : AIM725_Status
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK AIM725_Status
|
FUNCTION_BLOCK AIM725_Status
|
||||||
(*
|
(*
|
||||||
Модуль формирования статуса
|
Модуль формирования статуса
|
||||||
Гистерезис по отключению и задержка по включению
|
Гистерезис по отключению и задержка по включению
|
||||||
-1 - нет связи с датчиком
|
|
||||||
|
-1 - нет связи с датчиком
|
||||||
0 - не определено
|
0 - не определено
|
||||||
1 - норма
|
1 - норма
|
||||||
2 - предупредительный по нижнему уровню
|
2 - предупредительный по нижнему уровню
|
||||||
@@ -22,33 +22,31 @@ FUNCTION_BLOCK AIM725_Status
|
|||||||
5 - аварийный по верхнему уровню
|
5 - аварийный по верхнему уровню
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
Input: REAL;
|
Input: REAL; (* Контролируемое значение *)
|
||||||
fail_hi: REAL:=3.402823466E+38;
|
fail_hi: REAL:=3.402823466E+38; (* Порог аварии по верхнему уровню *)
|
||||||
delta_fail_hi: REAL := 0;
|
delta_fail_hi: REAL := 0; (* Гистерезис возврата из fail_hi *)
|
||||||
time_fail_hi: TIME :=t#0s;
|
time_fail_hi: TIME :=t#0s; (* Выдержка времени на срабатывание fail_hi *)
|
||||||
warn_hi: REAL:=3.402823466E+38;
|
warn_hi: REAL:=3.402823466E+38; (* Порог предупреждения по верхнему уровню *)
|
||||||
delta_warn_hi: REAL := 0;
|
delta_warn_hi: REAL := 0; (* Гистерезис возврата из warn_hi *)
|
||||||
time_warn_hi: TIME :=t#0s;
|
time_warn_hi: TIME :=t#0s; (* Выдержка времени на срабатывание warn_hi *)
|
||||||
warn_low: REAL:=-3.402823466E+38;
|
warn_low: REAL:=-3.402823466E+38; (* Порог предупреждения по нижнему уровню *)
|
||||||
delta_warn_low: REAL := 0;
|
delta_warn_low: REAL := 0; (* Гистерезис возврата из warn_low *)
|
||||||
time_warn_low: TIME :=t#0s;
|
time_warn_low: TIME :=t#0s; (* Выдержка времени на срабатывание warn_low *)
|
||||||
fail_low: REAL:=-3.402823466E+38;
|
fail_low: REAL:=-3.402823466E+38; (* Порог аварии по нижнему уровню *)
|
||||||
delta_fail_low: REAL := 0;
|
delta_fail_low: REAL := 0; (* Гистерезис возврата из fail_low *)
|
||||||
time_fail_low: TIME :=t#0s;
|
time_fail_low: TIME :=t#0s; (* Выдержка времени на срабатывание fail_low *)
|
||||||
Modul_status: BYTE;
|
Modul_status: BYTE; (* Байт статуса модуля АЦП (биты диагностики по каналам) *)
|
||||||
Chanel_num: BYTE;
|
Chanel_num: BYTE; (* Номер канала модуля (1 или 2), определяет какие биты Modul_status проверяются *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
Status: INT;
|
Status: AnalogValueState; (* Итоговый статус аналогового значения *)
|
||||||
T_mod: INT;
|
T_mod: INT; (* Значение Input, приведенное к INT; -500 при отсутствии связи (no_signal) *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
(* !!! ВНУТРЕННИЕ НЕВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
|
|
||||||
TON_fail_hi: TON;
|
TON_fail_hi: TON;
|
||||||
TON_warn_hi: TON;
|
TON_warn_hi: TON;
|
||||||
TON_warn_low: TON;
|
TON_warn_low: TON;
|
||||||
TON_fail_low: TON;
|
TON_fail_low: TON;
|
||||||
(* !!! ВНУТРЕННИЕ ВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
|
|
||||||
fail_hi_st: BOOL;
|
fail_hi_st: BOOL;
|
||||||
warn_hi_st: BOOL;
|
warn_hi_st: BOOL;
|
||||||
normal_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));
|
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
|
IF no_signal_st THEN
|
||||||
Status := - INT#1;
|
Status := AnalogValueState.no_signal;
|
||||||
ELSIF fail_hi_st THEN
|
ELSIF fail_hi_st THEN
|
||||||
Status := INT#5;
|
Status := AnalogValueState.fail_hi;
|
||||||
ELSIF fail_low_st THEN
|
ELSIF fail_low_st THEN
|
||||||
Status := INT#3;
|
Status := AnalogValueState.fail_low;
|
||||||
ELSIF warn_hi_st THEN
|
ELSIF warn_hi_st THEN
|
||||||
Status := INT#4;
|
Status := AnalogValueState.warn_hi;
|
||||||
ELSIF warn_low_st THEN
|
ELSIF warn_low_st THEN
|
||||||
Status := INT#2;
|
Status := AnalogValueState.warn_low;
|
||||||
ELSIF normal_st THEN
|
ELSIF normal_st THEN
|
||||||
Status := INT#1;
|
Status := AnalogValueState.normal;
|
||||||
ELSE
|
ELSE
|
||||||
Status := INT#0;
|
Status := AnalogValueState.undefined;
|
||||||
END_IF;
|
END_IF;
|
||||||
END_FUNCTION_BLOCK
|
END_FUNCTION_BLOCK
|
||||||
|
|||||||
@@ -5,16 +5,15 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM726_AI
|
Name : AIM726_AI
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM726_AI : REAL
|
FUNCTION AIM726_AI : REAL
|
||||||
(*
|
(*
|
||||||
Перевод значений входов модуля AIM726 из единиц АЦП в 0..40 В
|
Перевод значений входов модуля AIM726 из единиц АЦП в 0..40 В
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
ADC : DWORD; (*Единицы АЦП*)
|
ADC : DWORD; (* Единицы АЦП *)
|
||||||
END_VAR
|
END_VAR
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
AIM726_AI := DWORD_TO_REAL(ADC) * REAL#4.768372E-006;
|
AIM726_AI := DWORD_TO_REAL(ADC) * REAL#4.768372E-006;
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM727_AI
|
Name : AIM727_AI
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM727_AI : REAL
|
FUNCTION AIM727_AI : REAL
|
||||||
(*
|
(*
|
||||||
Перевод значений входов модуля AIM727 из единиц АЦП в 0..40 V
|
Перевод значений входов модуля AIM727 из единиц АЦП в 0..40 V
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
ADC: DINT; (*Единицы АЦП*)
|
ADC: DINT; (*Единицы АЦП*)
|
||||||
|
|||||||
@@ -5,20 +5,16 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM730_AO
|
Name : AIM730_AO
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM730_AO : WORD
|
FUNCTION AIM730_AO : WORD
|
||||||
(*
|
(*
|
||||||
Перевод значений 0..20 мА или 4..20 мА в единицы АЦП выходов модуля AIM730
|
Перевод значений 0..20 мА или 4..20 мА в единицы АЦП выходов модуля AIM730
|
||||||
Диапазон:
|
|
||||||
RANGE = 0 - 0..20 мА
|
|
||||||
RANGE = 1 - 4..20 мА
|
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
DAC : REAL; (*Миллиамперы*)
|
DAC : REAL; (*Миллиамперы*)
|
||||||
RANGE : BYTE; (*Диапазон: 0..20 мА - 0; 4..20 мА - 1 *)
|
RANGE : BYTE; (*Диапазон: 0 - 0..20 мА; 1 - 4..20 мА *)
|
||||||
END_VAR
|
END_VAR
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
IF (RANGE = 1) AND (DAC < 4) THEN AIM730_AO := WORD#4; RETURN;END_IF;
|
IF (RANGE = 1) AND (DAC < 4) THEN AIM730_AO := WORD#4; RETURN;END_IF;
|
||||||
|
|||||||
@@ -5,20 +5,16 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM731_AO
|
Name : AIM731_AO
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM731_AO : WORD
|
FUNCTION AIM731_AO : WORD
|
||||||
(*
|
(*
|
||||||
Перевод значений -10..+10 В или 0..+10 В в единицы АЦП выходов модуля AIM731
|
Перевод значений -10..+10 В или 0..+10 В в единицы АЦП выходов модуля AIM731
|
||||||
Диапазон:
|
|
||||||
RANGE = 0 - -10..+10 В
|
|
||||||
RANGE = 1 - 0..+10 В
|
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
DAC : REAL; (*Вольты*)
|
DAC : REAL; (*Вольты*)
|
||||||
RANGE : BYTE; (*Диапазон -10..+10 В - 0; 0..+10 В - 1 *)
|
RANGE : BYTE; (*Диапазон: 0 - -10..+10 В; 1 - 0..+10 В *)
|
||||||
END_VAR
|
END_VAR
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
CASE RANGE OF
|
CASE RANGE OF
|
||||||
|
|||||||
@@ -5,23 +5,17 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : AIM791_AI
|
Name : AIM791_AI
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION AIM791_AI : REAL
|
FUNCTION AIM791_AI : REAL
|
||||||
(*
|
(*
|
||||||
Перевод значений входов модуля AIM791 из единиц АЦП в 0..5 мА / 0..20 мА / 4..20 мА
|
Перевод значений входов модуля AIM791 из единиц АЦП в 0..5 мА / 0..20 мА / 4..20 мА
|
||||||
Диапазон:
|
|
||||||
RANGE = 0 - 0..5 мА
|
|
||||||
RANGE = 1 - 0..20 мА
|
|
||||||
RANGE = 2 - 4..20 мА
|
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
ADC: WORD;
|
ADC: WORD; (* Значение АЦП *)
|
||||||
RANGE: BYTE := 0;
|
RANGE: BYTE := 0; (* Диапазон: 0 - 0..5 мА; 1 - 0..20 мА; 2 - 4..20 мА *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
CASE RANGE OF
|
CASE RANGE OF
|
||||||
0 : AIM791_AI := WORD_TO_REAL(ADC) * REAL#7.820248722E-005;
|
0 : AIM791_AI := WORD_TO_REAL(ADC) * REAL#7.820248722E-005;
|
||||||
|
|||||||
@@ -5,14 +5,15 @@
|
|||||||
Path : Fastwel
|
Path : Fastwel
|
||||||
Name : DIM764_DI
|
Name : DIM764_DI
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION DIM764_DI : REAL
|
FUNCTION DIM764_DI : REAL
|
||||||
(*На выходе - Частота в Гц*)
|
(*
|
||||||
|
На выходе - Частота в Гц
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
IN: DWORD;
|
IN: DWORD; (* Значение периода/интервала с модуля, единицы АЦП *)
|
||||||
RANGE: BYTE; (* 0-Period; 1-Interval; *)
|
RANGE: BYTE; (* 0-Period; 1-Interval; *)
|
||||||
END_VAR
|
END_VAR
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Filters
|
Path : Filters
|
||||||
Name : ExpRunAverage
|
Name : ExpRunAverage
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Filters
|
Path : Filters
|
||||||
Name : ExpRunAverageAdaptive
|
Name : ExpRunAverageAdaptive
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,15 @@
|
|||||||
Path : Filters
|
Path : Filters
|
||||||
Name : MultipleClick
|
Name : MultipleClick
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK MultipleClick
|
FUNCTION_BLOCK MultipleClick
|
||||||
|
(*
|
||||||
|
Детектор серии кликов кнопки (одиночный/двойной/тройной клик).
|
||||||
|
Считает нажатия, пока пауза между ними не превысит TimeToWait, затем фиксирует
|
||||||
|
результат на выходах Click1/Click2/Click3 на время TimeRelease.
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
In: BOOL;(* Вход кнопки *)
|
In: BOOL;(* Вход кнопки *)
|
||||||
TimeToWait: TIME:=T#500MS; (* Максимальное время между нажатиями *)
|
TimeToWait: TIME:=T#500MS; (* Максимальное время между нажатиями *)
|
||||||
|
|||||||
@@ -5,19 +5,20 @@
|
|||||||
Path : Filters
|
Path : Filters
|
||||||
Name : RunMiddleArifm
|
Name : RunMiddleArifm
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK RunMiddleArifm
|
FUNCTION_BLOCK RunMiddleArifm
|
||||||
(* Скользящая средняя *)
|
(*
|
||||||
|
Скользящая средняя
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
In : REAL;
|
In : REAL; (* Входное значение *)
|
||||||
N : INT:=32; (* Размер выборки 0...32 *)
|
N : INT:=32; (* Размер выборки 0...32 *)
|
||||||
RST : BOOL;
|
RST : BOOL; (* Сброс/переинициализация буфера текущим значением In *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
Y : REAL;
|
Y : REAL; (* Значение скользящей средней *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
init: BOOL;
|
init: BOOL;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Иное
|
Path : Иное
|
||||||
Name : DFS
|
Name : DFS
|
||||||
Type : PROGRAM
|
Type : PROGRAM
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : ALARM_1
|
Name : ALARM_1
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : ALARM_2
|
Name : ALARM_2
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : ALARM_3
|
Name : ALARM_3
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : BLINK_LMP
|
Name : BLINK_LMP
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK BLINK_LMP
|
FUNCTION_BLOCK BLINK_LMP
|
||||||
(*
|
(*
|
||||||
Мигание лампами в завистмости от статуса
|
Мигание лампами в завистмости от статуса
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
State: WORD:=0; (* 0 - выключено; 1 - включено; 2 - мигание с частотой 1; 3 - мигание с частотой 2; 4 - мигание с частотой 3; *)
|
State: WORD:=0; (* 0 - выключено; 1 - включено; 2 - мигание с частотой 1; 3 - мигание с частотой 2; 4 - мигание с частотой 3; *)
|
||||||
@@ -20,7 +19,7 @@ VAR_INPUT
|
|||||||
Inp_BL_3: BOOL := FALSE; (* Пульсар миганич с частотой 3 *)
|
Inp_BL_3: BOOL := FALSE; (* Пульсар миганич с частотой 3 *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
LMP: BOOL;
|
LMP: BOOL; (* Управляющий сигнал на лампу *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : BUZZER_CTRL
|
Name : BUZZER_CTRL
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK BUZZER_CTRL
|
FUNCTION_BLOCK BUZZER_CTRL
|
||||||
(*
|
(*
|
||||||
Звучание звонком лампами в завистмости от статуса с возможностью отключения звука
|
Упрвелние звонком лампами в завистмости от статуса с возможностью отключения звука
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
State: WORD:=0; (* 0 - выключено; 1 - включено; 2 - мигание с частотой 1; 3 - мигание с частотой 2; 4 - мигание с частотой 3; *)
|
State: WORD:=0; (* 0 - выключено; 1 - включено; 2 - мигание с частотой 1; 3 - мигание с частотой 2; 4 - мигание с частотой 3; *)
|
||||||
@@ -23,7 +22,7 @@ VAR_INPUT
|
|||||||
T_PermanentOFF: TIME := T#10S; (* Время удержания кнопки отключения звука для перманентного отключения *)
|
T_PermanentOFF: TIME := T#10S; (* Время удержания кнопки отключения звука для перманентного отключения *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
BUZZER: BOOL;
|
BUZZER: BOOL; (* Управляющий сигнал на звонок/зуммер *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
R_TRIG_0: R_TRIG;
|
R_TRIG_0: R_TRIG;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : Button_acceleration
|
Name : Button_acceleration
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : CONFIRMATION
|
Name : CONFIRMATION
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,21 +5,23 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : HYST
|
Name : HYST
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK HYST
|
FUNCTION_BLOCK HYST
|
||||||
|
(*
|
||||||
|
Гистерезисный компаратор с зоной нечувствительности между ON и OFF.
|
||||||
|
Поддерживает как прямую (ON >= OFF), так и обратную (ON < OFF) логику переключения.
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
In : REAL;
|
In : REAL; (* Входное контролируемое значение *)
|
||||||
ON : REAL;
|
ON : REAL; (* Порог включения (срабатывания) *)
|
||||||
OFF : REAL;
|
OFF : REAL; (* Порог выключения (возврата) *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
Q : BOOL;
|
Q : BOOL; (* Выходное состояние компаратора *)
|
||||||
win : BOOL;
|
win : BOOL; (* Флаг: входное значение находится в зоне гистерезиса *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
IF ON >= OFF THEN
|
IF ON >= OFF THEN
|
||||||
IF IN < OFF THEN
|
IF IN < OFF THEN
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : Norm_real
|
Name : Norm_real
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
@@ -14,13 +13,12 @@ FUNCTION Norm_real : REAL
|
|||||||
Нормирует значение аналогового входа X по двум заданным граничным точкам нормировки (X1,Y1) (X2,Y2)
|
Нормирует значение аналогового входа X по двум заданным граничным точкам нормировки (X1,Y1) (X2,Y2)
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
X: REAL;
|
X: REAL; (* Входное (ненормированное) значение *)
|
||||||
X1: REAL;
|
X1: REAL; (* Первая точка нормировки, вход *)
|
||||||
Y1: REAL;
|
Y1: REAL; (* Первая точка нормировки, выход *)
|
||||||
X2: REAL;
|
X2: REAL; (* Вторая точка нормировки, вход *)
|
||||||
Y2: REAL;
|
Y2: REAL; (* Вторая точка нормировки, выход *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
IF (X2-X1 = 0) THEN Norm_real:=Y1; RETURN; END_IF;
|
IF (X2-X1 = 0) THEN Norm_real:=Y1; RETURN; END_IF;
|
||||||
Norm_real:=(X-X1)*(Y2-Y1)/(X2-X1)+Y1;
|
Norm_real:=(X-X1)*(Y2-Y1)/(X2-X1)+Y1;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : PIDcontrol
|
Name : PIDcontrol
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,24 +5,26 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : Pulse_Switch
|
Name : Pulse_Switch
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK Pulse_Switch
|
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
|
VAR
|
||||||
R_tr_1: R_TRIG;
|
R_tr_1: R_TRIG;
|
||||||
F_tr_1: F_TRIG;
|
F_tr_1: F_TRIG;
|
||||||
tp_on: TP:=(PT:=t#500ms);
|
tp_on: TP:=(PT:=t#500ms);
|
||||||
tp_off: TP:=(PT:=t#500ms);
|
tp_off: TP:=(PT:=t#500ms);
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_INPUT
|
|
||||||
Switch_ctrl: BOOL;
|
|
||||||
END_VAR
|
|
||||||
VAR_OUTPUT
|
|
||||||
Switch_on: BOOL;
|
|
||||||
Switch_off: BOOL;
|
|
||||||
END_VAR
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
R_tr_1(CLK:=Switch_ctrl);
|
R_tr_1(CLK:=Switch_ctrl);
|
||||||
tp_on(IN:=R_tr_1.Q, Q=>Switch_on);
|
tp_on(IN:=R_tr_1.Q, Q=>Switch_on);
|
||||||
|
|||||||
@@ -5,23 +5,24 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : STACK_I16
|
Name : STACK_I16
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK STACK_I16
|
FUNCTION_BLOCK STACK_I16
|
||||||
(* стек на 16 элементов типа INT*)
|
(*
|
||||||
|
Стек на 16 элементов типа INT
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
Din : INT; (* Переменная для записи в стек *)
|
Din : INT; (* Переменная для записи в стек *)
|
||||||
E : BOOL := TRUE;(* Включение стека *)
|
E : BOOL := TRUE; (* Включение стека *)
|
||||||
POP : BOOL; (* Извлечение из стека *)
|
POP : BOOL; (* Извлечение из стека *)
|
||||||
PUSH : BOOL; (* Запись в стек *)
|
PUSH : BOOL; (* Запись в стек *)
|
||||||
RST : BOOL; (* Обнуление стека *)
|
RST : BOOL; (* Обнуление стека *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
Dout : INT;
|
Dout : INT; (* Значение, извлеченное из стека при POP *)
|
||||||
EMPTY : BOOL := TRUE;
|
EMPTY : BOOL := TRUE; (* Флаг "стек пуст" *)
|
||||||
FULL : BOOL;
|
FULL : BOOL; (* Флаг "стек заполнен" (достигнут предел n) *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
stack: ARRAY[0..n] OF INT;
|
stack: ARRAY[0..n] OF INT;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : STATUS_ANALOG_M
|
Name : STATUS_ANALOG_M
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
@@ -23,31 +22,31 @@ FUNCTION_BLOCK STATUS_ANALOG_M
|
|||||||
5 - аварийный по верхнему уровню
|
5 - аварийный по верхнему уровню
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
Input: REAL;
|
Input: REAL; (* Контролируемое значение *)
|
||||||
fail_hi: REAL:=3.402823466E+38;
|
fail_hi: REAL:=3.402823466E+38; (* Порог аварии по верхнему уровню *)
|
||||||
delta_fail_hi: REAL := 0;
|
delta_fail_hi: REAL := 0; (* Гистерезис возврата из fail_hi (снятие при Input < fail_hi - delta_fail_hi) *)
|
||||||
time_fail_hi: TIME :=t#0s;
|
time_fail_hi: TIME :=t#0s; (* Выдержка времени на срабатывание fail_hi *)
|
||||||
warn_hi: REAL:=3.402823466E+38;
|
warn_hi: REAL:=3.402823466E+38; (* Порог предупреждения по верхнему уровню *)
|
||||||
delta_warn_hi: REAL := 0;
|
delta_warn_hi: REAL := 0; (* Гистерезис возврата из warn_hi *)
|
||||||
time_warn_hi: TIME :=t#0s;
|
time_warn_hi: TIME :=t#0s; (* Выдержка времени на срабатывание warn_hi *)
|
||||||
warn_low: REAL:=-3.402823466E+38;
|
warn_low: REAL:=-3.402823466E+38; (* Порог предупреждения по нижнему уровню *)
|
||||||
delta_warn_low: REAL := 0;
|
delta_warn_low: REAL := 0; (* Гистерезис возврата из warn_low *)
|
||||||
time_warn_low: TIME :=t#0s;
|
time_warn_low: TIME :=t#0s; (* Выдержка времени на срабатывание warn_low *)
|
||||||
fail_low: REAL:=-3.402823466E+38;
|
fail_low: REAL:=-3.402823466E+38; (* Порог аварии по нижнему уровню *)
|
||||||
delta_fail_low: REAL := 0;
|
delta_fail_low: REAL := 0; (* Гистерезис возврата из fail_low *)
|
||||||
time_fail_low: TIME :=t#0s;
|
time_fail_low: TIME :=t#0s; (* Выдержка времени на срабатывание fail_low *)
|
||||||
no_signal: REAL:=-3.402823466E+38;
|
no_signal: REAL:=-3.402823466E+38; (* Порог отсутствия связи с датчиком *)
|
||||||
delta_no_signal: REAL := 0;
|
delta_no_signal: REAL := 0; (* Гистерезис возврата из no_signal *)
|
||||||
time_no_signal: TIME :=T#0S;
|
time_no_signal: TIME :=T#0S; (* Выдержка времени на срабатывание no_signal *)
|
||||||
|
|
||||||
In_fail_hi: BOOL := FALSE;
|
In_fail_hi: BOOL := FALSE; (* Принудительная установка статуса fail_hi извне *)
|
||||||
In_warn_hi: BOOL := FALSE;
|
In_warn_hi: BOOL := FALSE; (* Принудительная установка статуса warn_hi извне *)
|
||||||
In_warn_low: BOOL := FALSE;
|
In_warn_low: BOOL := FALSE; (* Принудительная установка статуса warn_low извне *)
|
||||||
In_fail_low: BOOL := FALSE;
|
In_fail_low: BOOL := FALSE; (* Принудительная установка статуса fail_low извне *)
|
||||||
In_no_signal: BOOL := FALSE;
|
In_no_signal: BOOL := FALSE; (* Принудительная установка статуса no_signal извне *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
Status: AnalogValueState;
|
Status: AnalogValueState; (* Итоговый статус аналогового значения *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
fail_hi_st: BOOL;
|
fail_hi_st: BOOL;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : STATUS_ANALOG_M_I
|
Name : STATUS_ANALOG_M_I
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
@@ -23,42 +22,39 @@ FUNCTION_BLOCK STATUS_ANALOG_M_I
|
|||||||
5 - аварийный по верхнему уровню
|
5 - аварийный по верхнему уровню
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
Input: INT;
|
Input: INT; (* Контролируемое значение *)
|
||||||
fail_hi: INT:=32767;
|
fail_hi: INT:=32767; (* Порог аварии по верхнему уровню *)
|
||||||
delta_fail_hi: INT := 0;
|
delta_fail_hi: INT := 0; (* Гистерезис возврата из fail_hi (снятие при Input < fail_hi - delta_fail_hi) *)
|
||||||
time_fail_hi: TIME :=t#0s;
|
time_fail_hi: TIME :=t#0s; (* Выдержка времени на срабатывание fail_hi *)
|
||||||
warn_hi: INT:=32767;
|
warn_hi: INT:=32767; (* Порог предупреждения по верхнему уровню *)
|
||||||
delta_warn_hi: INT := 0;
|
delta_warn_hi: INT := 0; (* Гистерезис возврата из warn_hi *)
|
||||||
time_warn_hi: TIME :=t#0s;
|
time_warn_hi: TIME :=t#0s; (* Выдержка времени на срабатывание warn_hi *)
|
||||||
warn_low: INT:=-32768;
|
warn_low: INT:=-32768; (* Порог предупреждения по нижнему уровню *)
|
||||||
delta_warn_low: INT := 0;
|
delta_warn_low: INT := 0; (* Гистерезис возврата из warn_low *)
|
||||||
time_warn_low: TIME :=t#0s;
|
time_warn_low: TIME :=t#0s; (* Выдержка времени на срабатывание warn_low *)
|
||||||
fail_low: INT:=-32768;
|
fail_low: INT:=-32768; (* Порог аварии по нижнему уровню *)
|
||||||
delta_fail_low: INT := 0;
|
delta_fail_low: INT := 0; (* Гистерезис возврата из fail_low *)
|
||||||
time_fail_low: TIME :=t#0s;
|
time_fail_low: TIME :=t#0s; (* Выдержка времени на срабатывание fail_low *)
|
||||||
no_signal: INT:=-32768;
|
no_signal: INT:=-32768; (* Порог отсутствия связи с датчиком *)
|
||||||
delta_no_signal: INT := 0;
|
delta_no_signal: INT := 0; (* Гистерезис возврата из no_signal *)
|
||||||
time_no_signal: TIME :=T#0S;
|
time_no_signal: TIME :=T#0S; (* Выдержка времени на срабатывание no_signal *)
|
||||||
|
|
||||||
In_fail_hi: BOOL := FALSE;
|
In_fail_hi: BOOL := FALSE; (* Принудительная установка статуса fail_hi извне *)
|
||||||
In_warn_hi: BOOL := FALSE;
|
In_warn_hi: BOOL := FALSE; (* Принудительная установка статуса warn_hi извне *)
|
||||||
In_warn_low: BOOL := FALSE;
|
In_warn_low: BOOL := FALSE; (* Принудительная установка статуса warn_low извне *)
|
||||||
In_fail_low: BOOL := FALSE;
|
In_fail_low: BOOL := FALSE; (* Принудительная установка статуса fail_low извне *)
|
||||||
In_no_signal: BOOL := FALSE;
|
In_no_signal: BOOL := FALSE; (* Принудительная установка статуса no_signal извне *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
Status: AnalogValueState;
|
Status: AnalogValueState; (* Итоговый статус аналогового значения *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
(* !!! ВНУТРЕННИЕ ВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
|
|
||||||
fail_hi_st: BOOL;
|
fail_hi_st: BOOL;
|
||||||
warn_hi_st: BOOL;
|
warn_hi_st: BOOL;
|
||||||
normal_st: BOOL;
|
normal_st: BOOL;
|
||||||
warn_low_st: BOOL;
|
warn_low_st: BOOL;
|
||||||
fail_low_st: BOOL;
|
fail_low_st: BOOL;
|
||||||
no_signal_st: BOOL;
|
no_signal_st: BOOL;
|
||||||
|
|
||||||
(* !!! ВНУТРЕННИЕ НЕВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
|
|
||||||
TON_fail_hi: TON;
|
TON_fail_hi: TON;
|
||||||
TON_warn_hi: TON;
|
TON_warn_hi: TON;
|
||||||
TON_warn_low: TON;
|
TON_warn_low: TON;
|
||||||
|
|||||||
@@ -5,19 +5,20 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : Status_Connect_Counter
|
Name : Status_Connect_Counter
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK Status_Connect_Counter
|
FUNCTION_BLOCK Status_Connect_Counter
|
||||||
(* Статус связи с СВУ по счетчику*)
|
(*
|
||||||
|
Статус связи с СВУ по счетчику
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
Counter: WORD;
|
Counter: WORD; (* Счетчик, инкрементируемый удаленным устройством (СВУ) *)
|
||||||
T_Error: TIME; (* время для диагностирования ошибки*)
|
T_Error: TIME; (* Время отсутствия изменений счетчика для диагностики обрыва связи *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
CounterIsChanged: BOOL;
|
CounterIsChanged: BOOL; (* Флаг: счетчик изменился в текущем цикле *)
|
||||||
ERROR_CONNECT: BOOL;
|
ERROR_CONNECT: BOOL; (* Флаг ошибки связи: счетчик не менялся дольше T_Error *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
CounterOld: WORD;
|
CounterOld: WORD;
|
||||||
|
|||||||
@@ -5,18 +5,19 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : Status_SU_Connect
|
Name : Status_SU_Connect
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK Status_SU_Connect
|
FUNCTION_BLOCK Status_SU_Connect
|
||||||
(* Статус связи с СВУ по серцебиению*)
|
(*
|
||||||
|
Статус связи с СВУ по серцебиению
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
HeartBit: BOOL;
|
HeartBit: BOOL; (* Сигнал "сердцебиения" от СВУ *)
|
||||||
T_Pulse: TIME;
|
T_Pulse: TIME; (* Максимально допустимая длительность одного состояния HeartBit *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
ERROR_CONNECT: BOOL;
|
ERROR_CONNECT: BOOL; (* Флаг ошибки связи: HeartBit не меняется дольше T_Pulse *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
TON_SU_1: TON;
|
TON_SU_1: TON;
|
||||||
|
|||||||
@@ -5,11 +5,15 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : TOF_RST
|
Name : TOF_RST
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK TOF_RST
|
FUNCTION_BLOCK TOF_RST
|
||||||
|
(*
|
||||||
|
Таймер выключения (TOF) с возможностью принудительного сброса RST.
|
||||||
|
При снятии IN выход Q остается TRUE еще в течение PT.
|
||||||
|
RST немедленно сбрасывает выход и таймер вне зависимости от IN.
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
IN: BOOL; // Управляющий сигнал
|
IN: BOOL; // Управляющий сигнал
|
||||||
PT: TIME; // Время задержки выключения
|
PT: TIME; // Время задержки выключения
|
||||||
|
|||||||
@@ -5,22 +5,21 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : TONOF
|
Name : TONOF
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK TONOF
|
FUNCTION_BLOCK TONOF
|
||||||
(*
|
(*
|
||||||
TONOF генерирует TON и TOF задержки для переменной IN
|
TONOF генерирует TON и TOF задержки для переменной IN
|
||||||
Задержка на вход T_ON, задержка на выход T_OFF
|
Задержка на вход T_ON, задержка на выход T_OFF
|
||||||
*)
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
IN : BOOL;
|
IN : BOOL; (* Входной сигнал *)
|
||||||
T_ON : TIME := T#0s; (* Задержка на вход *)
|
T_ON : TIME := T#0S; (* Задержка на вход *)
|
||||||
T_OFF : TIME := T#0s; (* Задержка на выход *)
|
T_OFF : TIME := T#0S; (* Задержка на выход *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
Q : BOOL;
|
Q : BOOL; (* Выходной сигнал с учетом задержек включения/выключения *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
X : TON;
|
X : TON;
|
||||||
|
|||||||
@@ -5,11 +5,15 @@
|
|||||||
Path : Общие
|
Path : Общие
|
||||||
Name : TP_RST
|
Name : TP_RST
|
||||||
Type : FUNCTION_BLOCK
|
Type : FUNCTION_BLOCK
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION_BLOCK TP_RST
|
FUNCTION_BLOCK TP_RST
|
||||||
|
(*
|
||||||
|
Формирователь одиночного импульса (TP) длительностью PT с возможностью принудительного сброса RST.
|
||||||
|
Повторный передний фронт IN во время выполнения импульса игнорируется.
|
||||||
|
RST немедленно прерывает выполняющийся импульс.
|
||||||
|
*)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
IN: BOOL; // Управляющий сигнал
|
IN: BOOL; // Управляющий сигнал
|
||||||
PT: TIME; // Длительность импульса
|
PT: TIME; // Длительность импульса
|
||||||
|
|||||||
@@ -5,16 +5,15 @@
|
|||||||
Path : Преобразование значений
|
Path : Преобразование значений
|
||||||
Name : DWORD_OF_2WORD
|
Name : DWORD_OF_2WORD
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION DWORD_OF_2WORD : DWORD
|
FUNCTION DWORD_OF_2WORD : DWORD
|
||||||
|
(* Сборка DWORD из двух WORD *)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
W1 : WORD;
|
W1 : WORD; (* Старшее слово (биты 16..31 результата) *)
|
||||||
W0 : WORD;
|
W0 : WORD; (* Младшее слово (биты 0..15 результата) *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
DWORD_OF_2WORD := SHL(WORD_TO_DWORD(W1),16) OR WORD_TO_DWORD(W0);
|
DWORD_OF_2WORD := SHL(WORD_TO_DWORD(W1),16) OR WORD_TO_DWORD(W0);
|
||||||
END_FUNCTION
|
END_FUNCTION
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
Path : Преобразование значений
|
Path : Преобразование значений
|
||||||
Name : DW_TO_REAL
|
Name : DW_TO_REAL
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION DW_TO_REAL : REAL
|
FUNCTION DW_TO_REAL : REAL
|
||||||
|
(* Побитовое переинтерпретирование DWORD как REAL (без преобразования значения) *)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
X : DWORD;
|
X : DWORD; (* Значение для переинтерпретации *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
pt : POINTER TO REAL;
|
pt : POINTER TO REAL;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
Path : Преобразование значений
|
Path : Преобразование значений
|
||||||
Name : NTC_termistor_T
|
Name : NTC_termistor_T
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
Path : Преобразование значений
|
Path : Преобразование значений
|
||||||
Name : REAL_TO_DW
|
Name : REAL_TO_DW
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION REAL_TO_DW : DWORD
|
FUNCTION REAL_TO_DW : DWORD
|
||||||
|
(* Побитовое переинтерпретирование REAL как DWORD (без преобразования значения) *)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
X : REAL;
|
X : REAL; (* Значение для переинтерпретации *)
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
pt : POINTER TO DWORD;
|
pt : POINTER TO DWORD;
|
||||||
|
|||||||
@@ -5,16 +5,15 @@
|
|||||||
Path : Преобразование значений
|
Path : Преобразование значений
|
||||||
Name : WORD_OF_DWORD
|
Name : WORD_OF_DWORD
|
||||||
Type : FUNCTION
|
Type : FUNCTION
|
||||||
Exported : 2026-07-31 11:16:16
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FUNCTION WORD_OF_DWORD : WORD
|
FUNCTION WORD_OF_DWORD : WORD
|
||||||
|
(* Извлечение одного из двух 16-битных слов DWORD *)
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
in : DWORD;
|
in : DWORD; (* Исходное значение *)
|
||||||
N : BYTE;
|
N : BYTE; (* Номер извлекаемого слова: 0 - младшее (биты 0..15), 1 - старшее (биты 16..31) *)
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
(*----- IMPLEMENTATION -----*)
|
(*----- IMPLEMENTATION -----*)
|
||||||
WORD_OF_DWORD := DWORD_TO_WORD(SHR(in,SHL(n,4)));
|
WORD_OF_DWORD := DWORD_TO_WORD(SHR(in,SHL(n,4)));
|
||||||
END_FUNCTION
|
END_FUNCTION
|
||||||
|
|||||||
Reference in New Issue
Block a user