Доброго всем вечера. По нашему уровнемеру на ПР200х8 хочу показать результат. Оптимизировал макрос. Ввёл в него делитель сигнала с уровнемера, добавил уровни сухого хода и перелива с дифференциалом +/-1%. Дифференциал пока жесткий...но можно его вывести с наружи макроса и менять с экрана энергонезависимой переменной. Подключил аварийные уровни к дискретным выходам. И вывел все аварийные уровни сухой ход и перелив на красный светодиод сделав его моргающим через блок Блинк. Хотя видится было бы удобнее для каждого канала свой светодиод.
2025-01-14_21-17-10.png
Код:
function_block function_level //функциональный блок с компенсацией значения уровня в емкости в зависимости от изменения электропроводности воды
//и функция включения и выключения установки обратного осмоса в зависимости от соответствующих уставок с учетом компенсированного значения
//уровня воды в емкости.
var_input //объявление входных переменных
CI_mS : real; //УЭП пермеата в емкости
CI_level : real; //Уровень в емкости не компенсированный
CI_calibr : real; //Электропроводность в момент калибровки (опорное значение УЭП)
a_constant : real; //Поправочный коэффицент пересчета на каждый мкСм в % уровня в емкости
div_set:real; // Делитель сигнала уровнемера
U_start : real; //Уровень наполнения %
U_stop : real; //Уровень остановки %
U_LL : real; //Аварийный уровень (сухой ход) %
U_HH : real; //Аварийный уровень (перелив) %
end_var
var_output //объявление выходных переменных
U_on_off : bool; // вкл/выкл наполнения для управления обратным осмосом
U_status : udint; // вкл/выкл наполнения для управления обратным осмосом
out_level: real; //Уровень в емкости c компенсацией для дальнейшей передачи в SCADA
CI_DIV: real;//Деленный сигнла уровнемера
U_LL_on : bool; //Уровень в емкости ниже Аварийного (сухой ход)
U_HH_on : bool; //Уровень в емкости выше Аварийного (перелив)
end_var
CI_DIV:=CI_level/div_set;
out_level := CI_DIV/(1+a_constant*(CI_mS-CI_calibr));//Функция компенсации уровня в зависимости от изменения электропроводности воды
if out_level <= U_start then U_on_off:= true; end_if;//Запуск наполнения по уставке %
if out_level >= U_stop then U_on_off:= false; end_if;//Остановка наполнения по уставке %
U_status := bool_to_udint(U_on_off);
if out_level <= U_LL-1 then U_LL_on:= true; end_if;//Аварийный уровень - дифференциал (сухой ход) %
if out_level >= U_LL+1 then U_LL_on:= false; end_if;//Аварийный уровень + дифференциал (сухой ход) %
if out_level <= U_HH-1 then U_HH_on:= false; end_if;//Перелив уровень - дифференциал (сухой ход) %
if out_level >= U_HH+1 then U_HH_on:= true; end_if;//Перелив уровень + дифференциал (сухой ход) %
end_function_block
Апробировал на объекте обновленный макрос. Работает хорошо. Так же корректно работает корректировка параметров удаленно со SCADA или OPC сервера.
Немного повозился с дополнением в виде счетчика воды считающего импульсы с герконового расходомера....как бы остаются свободные дискретные входы и можно их использовать по своему усмотрению... Входы 5-8 буду использовать для контроля времени и длительности регенерации колон ХВО. Поначалу думал добавить блок упаковки дискретных входов 5-8 в битовую маску...но она уже есть в регистре 256 и не стал делать....
Дискретные входы типа «Д» (входы DI1...DI8),кондуктометрические входы в дискретном режиме (CI1...CI4) и аналоговые входы в дискретном режиме (входы AI1...AI4)...
На SCADA процесс настройки...
2025-01-14_21-12-42.png ______2025-01-14_22-38-29.png
Сетевые переменные доступные для удаленной корректировки. Спартанский минимализм
))
2025-01-14_21-45-43.png
И наш уровнемер в работе...
1736876153232.jpg Выставленный делитель- подбираем под необходимый % уровня в правой части экрана в диапазоне 0-100%...у меня рабочий дифференциал 80-90% выставлял на постоянно заполняемой/осущаемой ёмкости...занимает больше времени но как говорится сразу проверил в работе
1736876153266.jpg Константа и УЭП в день калибровки - опорная электропроводность. Это наша наша нулевая точка....при изменении электропроводности в верх из уровня будет вычетатся поправочный коэффициент на каждый возросший микросименс электропроводности и соответственно при снижении электропроводности исходной воды к уровню будет прибавляться поправочный коэффициент на каждый микросименс снижения ...
1736876153200.jpg Уровень в емкости (второй канал)
1736876153300.jpg Новое меню уровень сухого хода и перелив...таких уровней можно сделать больше 2..4...6..n главное что сними делать потом ...можно вывести на дискретные выходы...можно отдать главному контролёру через сетевые регистры....или например на панель оператора...и т.д.
1736876153341.jpg Счетчик воды с возможностью коррекции и чтение через сеть. Тут уже можно своими хотелками дополнять начинку по потребностям...
1736876153418.jpg Показания счетчика