Продолжу свои изыскания по прототипу аналогового кондуктометрического уровнемера на базе ПР200х8 и ДС.ПВТ.4.
В принципе результат работы формулы компенсации меня полностью устроил. Решил опробовать на железе. Подготовил небольшой функциональный блок на ST для ПР200х8. Ситуацию немного усложнил тот факт что у меня кондуктометрические ячейки подключены к КосМастер с жесткой логикой и я не могу в нем что-то делать, хотя без проблем пользовался входом CI4 через системный регистр, но вся логика у меня построена в SCADA(это кстати тоже нормальный вариант если необходимо просто мониторить уровень в емкости). Поэтому свой функциональный блок поместим в отдельный ПР200х8, а значения электропроводности будем получать через сетевые переменные. Думал и включением наполнения управлять по сетевой переменной (по битовой маске 14 бит 516 регистр) но тут выяснился казус что КосМастер переходит в полный режим СТОП и блокируется периодический слив с емкости, а меня это не устраивает. Поэтому будем управлять через релейный выход ПР200х8 подавая сигнал на дискретный вход "уровня наполнения" в КосМастере. Но заодно проверим как себя поведет ПР200х8 как кондуктометрический модуль расширения по RS485 Модбас и можно ли такой связке поручить управление уровнем в емкости используя кондуктометрический уровнемер...
Вот такая схемка пока получается...потом мы все же уровнемер если он приживётся оснастим своей личной ячейкой электропроводности пермеата чтобы не зависеть от КосМастера...а может оставим обе схемы для тестирования в долгую....Код:function_block functionblock1 //функциональный блок с компенсацией значения уровня в емкости в зависимости от изменения электропроводности воды //и функция включения и выключения установки обратного осмоса в зависимости от соответствующих уставок с учетом компенсированного значения //уровня воды в емкости. var_input //объявление входных переменных CI3 : real; //УЭП пермеата в емкости CI4 : real; //Уровень в емкости не компенсированный CI3_calibr : real; //Электропроводность в момент калибровки a_constant : real; //Поправочный коэффицент пересчета на каждый % уровня в емкости U_start : real; //Уровень наполнения % U_stop : real; //Уровень остановки % end_var var_output //объявление выходных переменных U : bool; // вкл/выкл наполнения для управления обратным осмосом function1: real; //Уровень в емкости c компенсацией для дальнейшей передачи в SCADA end_var function1 := CI4/(1+a_constant*(CI3-CI3_calibr));//Функция компенсации уровня в зависимости от изменения электропроводности воды if function1 <= U_start then U:= true; end_if;//Запуск наполнения по уставке % if function1 >= U_stop then U:= false; end_if;//Остановка наполнения по уставке % end_function_block
2024-05-12_21-37-26.png
И в эмуляторе ОЛ тестируем изменяя уровень воды CI4 и электропроводность пермеата по входу СI3 и получаем приемлемый результат.
2024-05-12_21-44-02.png+2024-05-12_21-44-32.png+2024-05-12_21-45-02.png+2024-05-12_21-45-29.png
Осталось вывести переменные уставок на экран чтобы можно было по месту быстро настроить необходимый уровень и провести калибровку если необходимо и настроить сетевой обмен. У нас две линии RS485 ...и можно тестировать в полях.




Ответить с цитированием