Доброго всем дня. Решил выделить тему уровнемера из топика посвященного измерениям электропроводности.
Предлагаю в данном топике осветить возможности ПР200х8 как уровнемера. Нас больше интересуют аналоговые варианты с дискретностью уровня порядка 0.01%. Для обсуждения дискретного варианта а-ля САУ/БКК лучше открыть отдельный топик, чтобы не путать разные подходы и не смущать не подготовленных пользователей. Начну с базовых принципов ПР200х8. Прошу прощения если кому то это покажется лишним. Это я и для себя и для моих юных коллег проговариваю основы преподаваемые в альма-матер...повторение мать учения но через призму ПР200х8.
ПР200х8 это в некотором смысле кондуктометр у которого 4 кондуктометрических входа на борту. Отличие данных входов от стандартного аналогового в том что это мостовая схема входного тракта в котором происходит два процесса:
1. Генерация переменного напряжения частотой 1400гц на электродах кондуктометрической ячейки
2. Измерение тока в одном из плеч мостовой схемы с дальнейшим преобразованием по закону Ома в сопротивление
2025-01-25_10-24-11.png Упрощенная схема моста Уитстона для наглядности подключения генератора
Ну а для тех кому тема электропроводности нова, скажу что электропроводность (W) является обратным значением сопротивления (R) то есть W=1/R... и обратно R=1/W. Вот таким нехитрым способом по нынешним меркам мы получаем значение электропроводности. И если дальше погружаться в тему кондуктометрии то в одном из плеч моста(вместо одного из сопротивлений) размещается наша кондуктометрическая ячейка в виде как правило двух электродов. Для измерения качества воды было введено понятие удельной электропроводности "УЭП" это электропроводность известных растворов при геометрии ячейки 1см.кв и на расстоянии 1 см...кратко УЭП будет завесить от геометрических размеров, расстояния между электродами и электропроводности воды.
Сразу скажу... а то коллеги начнут поправлять...для чего применяется генератор переменного напряжения, а не классический измеритель сопротивления с постоянным напряжением. В водных растворах при приложенном постоянном напряжении на электроды происходит явление "поляризации" ионов воды, когда возле соответствующей полярности электрода скапливаются ионы противоположного заряда...и получается между электродами создается в толще воды зона полярных областей(отсюда и название) и такое разделение существенно влияет на измерение электропроводности, искажая ее действительную величину. Поэтому придумали подавать переменное напряжение...почему частота 1400герц это отдельная тема....есть кондуктометры с различными частотами, но это как говорится уже не наша тема. И тут ответ на часто задаваемый вопрос...можно ли аналоговым входом в режиме измерения сопротивления измерять электропроводность....хотел написать "нельзя" ....но напишу...попробуем
что из этого получится...
Вот так в свое время изобразил в ПР200х8 разность подходов измерении качества воды и измерения уровня.
Сравнение методов 3.jpg
И вот наша тема это возможность измерения уровня в ёмкости. При котором мы условно в моменте считаем электропроводность воды константой(с возможностью сезонной коррекции УЭП), а изменяемая величина это геометрия кондуктометрической ячейки, так как величина ее погружение в воду переменна и это будет нашим % уровня. Вроде все просто.
Особенностью данного принципа в том, что необходимо только два одинаковых электрода. Вот такой в свое время демонстрировал наш электрод в емкости пермеата.
Безымянный.png_____1709874711115.jpg_____1719081333618.jpg______1719081333581.jpg
Для емкости с исходной городской водой мы применили отдельно расположенные электроды с учетом отзыва пользователей что применение изоляторов при их осушении приводит к образованию соленых мостиков которые существенно влияют на значение уровня. Поэтому и в электроде для емкости пермеата мы применили один изолятор на самом конце электродов. Эта часть постоянно погружена в воду и не дает ложных срабатываний, но дала жесткости всей конструкции. Для емкости воды исходной (буду называть ее емкость ХВО) не нашлось кондуктометрических наконечников от компании, поэтому тут применен наш экспромт из клемников Wago и стержни(тоже экспромт) для сварки 316 стали...они тоньше чем 3мм......да простят нас представители компании Овен
ну не так просто купить их продукцию в наших монгольских степях...
2024-12-30_13-55-36.png_____2024-12-30_13-54-46.png
Опять немного теории. Формула электропроводности:
Электропроводность W=L/S(C*E)
Где С-концентрация ионов; Е-подвижность ионов; L- расстояние между электродами; S-площадь электродов и электропроводность водного раствора обратно пропорциональна расстоянию L между электродами кондуктометрической ячейки и прямо пропорциональна площади S самих электродов
Входной тракт кондуктометрического канала ПР200х8 имеет определенный диапазон измерения сопротивления 1 МОм....500 Ом /1мкСм....2000мкСм (по факту диапазон более широкий, но пока не суть). У пользователей однозначно могут быть разные условия... разная длинна/диаметр электродов, разная электропроводность и температура исходной воды. Соответственно чтобы весь диапазон уровня с его электропроводностью попадал в диапазон входного измерительного тракта, должна быть возможность как-то это регулировать. Одна из возможностей - увеличивать расстояние L между электродами. Вторая возможность это снижать их сечение(площадь) то есть S вплоть до перехода на струну (это кстати интересно попробовать... может пригодится для высоких емкостей, где струной-тросиком на порядок удобнее работать ...водонапорной башни к сожалению у нас нет, но 14 кубовые резервуары с высотой уровня 5 меров есть... там и попробуем)
В нашем двухканальном уровнемере для каждой емкости используется два канала электропроводности(но потом рассмотрим и другой вариант). Первый канал нам кондуктометрической ячейкой показывает электропроводность и температуру воды в емкости. На фото ниже электропроводность в емкости ХВО - 1189 мкСм и второй канал это значение электропроводности с электродов уровнемера без всякой обработки 27 720 мкСм. При этом емкость наполнена на 90%.
1737793016197.jpg Фото значений УЭП 24.01.2025 (не вдень калибровки)
В чем замысел аналогового уровнемера. Мы электропроводность поступаемую с электродов уровнемера преобразуем в % уровня путем математического деления, тем самым масштабируем значение электропроводности уровнемера в диапазоне 0...27720 мкСм в процент уровня 0...90%. Тут все просто как в начальной школе. Берем значение 27720 и делим на 90 и получаем 308 это наш делитель. Он естественно у каждого будет разный в день калибровки уровнемера, так как будет разная электропроводность на электродах в зависимости от размеров(длинна/толщина), расстояния между электродами и электропроводности воды ... но принцип один.
2025-01-25_13-43-51.png Вот для примера рассчитанный мной делитель в декабре 2024г.
Этот коэффициент подбирается в момент калибровки. То есть пользователь зафиксировал что этому значению электропроводности через коэффициент такой то уровень. То есть не обязательно набирать емкость 100% если вы потом всё-таки набрали 100% и у вас что-то не сошлось значит вы не верно определили ваш промежуточный уровень например как у меня 90....
При первых тестах уровнемера в емкости пермеата в качестве делителя мы использовали штатный параметр Константа кондуктометрической ячейки являющейся программным делителем. То есть в день калибровки мы изменяли параметр константа на кондуктометрическом канале CI, куда у нас подключены стержни уровнемера, до тех пор пока значение электропроводности не становилось 90. И вуаля... все прекрасно работает уже на протяжении более года. Но вот с исходной водой так не получилось, не хватает значений делителя(почему то производитель по непонятным причинам ограничил изменение последнего знака после запятой). И благодаря этому мы перенесли функцию деления в наш макрос и процесс калибровки получился в разы быстрее и удобнее (а так приходилось многочисленное количество раз "бегать" по системному меню, пока не получим заветное значение 90мкСм=90% уровня)
И все бы работало прекрасно если бы не пресловутые мешающие факторы...В кондуктометрии это температура воды и содержание солей эти две величины не постоянны и они влияют на электропроводность. Опять вернемся к теории и нашей формуле электропроводности:
Электропроводность W=L/S(C*E)
В нашей формуле температура это Е-подвижность ионов и содержание солей С-концентрация ионов. С компенсацией температурной нестабильности воды в ПР200х8 борется штатно реализованная функция температурной компенсации. Принцип ее следующий - все изменения выше или ниже опорной температуры 25(20) градусов компенсируются. Соответственно если температура повысилась на 1 градус то из значение электропроводности отнимается поправочный коэффициент по умолчанию 2%(коэффициент может манятся пользователем в системном меню) и если температура снизилась на 1 градус то к значению электропроводности прибавляется 2%. Поправочный коэффициент 2% общепринятый но он не всегда будет оптимальный, но в нашем процессе измерения уровня такой точности не требуется но при необходимости если мы заметим существенный дрейф уровня в зависимости от температуры воды им можно поиграться... Как вариант функцию температурной компенсации можно так же перенести в наш макрос а в самом ПР200х8 ее отключить. И мы получим возможность удаленно корректировать поправочный температурный коэффициент 2% в нужном +/- диапазоне.
А как быть если концентрация солей изменилась в воде в следствии сезонных колебаний или других причин. У нас например летом вода исходная городская для ХВО на уровне 600 мкСм а зимой электропроводность достигает 1200 мкСм и выше. Соответственно если не корректировать % уровня в емкости изменившиеся значение электропроводности воды из-за повысившейся концентрации солей приведет к росту % уровня в емкости, так как для приведения к нашим 90% уже придется применять другой делитель.
Соответственно возникла идея компенсировать % уровня по аналогии температурной компенсации, взяв на вооружение классическую формулу температурной компенсации и заменив в ней меняющуюся температуру на меняющуюся электропроводность и приводить значения % уровня к значению в день калибровки уровнемера, так как электропроводность в тот день признается опорной(эталон). И по аналогии с формулой температурной компенсации получаем при увеличении исходной электропроводности на 1 мкСм (не с электродов а с кондуктометрической ячейки) значение уровня будет уменьшено на поправочный коэффициент (на данный момент он у нас 0.001) и если электропроводность снизится на 1 мкСм от опорной то к проценту уровня будет добавлен поправочный коэффициент. Все просто. Ниже преобразованная формула компенсации по УЭП:
X(опорн)=X(факт) / (1+aУЭП(УЭП(факт)-УЭП(опорн)))
где:
X(опорн) - уровень в емкости скомпенсированный к опорному уровню в день калибровки;
X(факт) - уровень фактический без пересчета на изменившуюся электропроводность;
УЭП(факт) - фактическая электропроводность снимаемая с кондуктометрического входа ПР200х8 где у нас классическая кондуктометрическая ячейка естественно 100% постоянно погруженная своими электродами в воду.
αУЭП - высчитанный поправочный коэффициент коррекции уровня в зависимости от электропроводности
УЭП(опорн) - опорная электропроводность в момент калибровки
Вот так схематично отображал работу нашего уровнемера.
2025-01-15_14-04-59.png
То есть в нем две основополагающие вещи это пара электродов по длине рабочего уровня в емкости и кондуктометрическая ячейка для доставки в нашу формулу значений температуры и электропроводности для работы функций температурной компенсации и компенсации по электропроводности.
На протяжении года тестировался макрос реализованный в SCADA СИМП лайт и SCADA MS3.13 (можно почитать тут) и в декабре 2024 мы перенесли макрос на ПР200х8 подключив уровнемер в емкости ХВО.
2025-01-14_21-17-10.png Вот наши два макроса для двух каналов уровнемеров
И ниже содержание самого макроса на ST с функцией компенсации уровня от УЭП и три выбранных уровня. Уровень перелива, уровень сухого хода и уровень включения/выключения установки обратного осмоса. При необходимости можно добавить n- количество дополнительных уровней если требует техпроцесс ...
Код:
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
Так как остаются свободные дискретные и частично аналоговые входа можно их использовать по своему усмотрению. В данной реализации мы будем отслеживать этапы регенерации колон ХВО и считать кубатуру с импульсного счетчика воды с дискретностью 1 имп./1 литр. Тут как говорится ...надо смотреть по обстановке....
Ниже исходник для ПР200х8 в Owen Logic.