Пример 1: ТРМ101 - управление бойлером(на основе универсального базового компонента)
Задача: Реализовать систему авт. управления(САУ) накопительным электро-бойлером, с парой ТЕН(слабой и мощной).
В качестве основы САУ можно было-бы использовать ТРМ101 имеющий один аналоговый(датчик температуры), один дискретный вход(датчик протока) и два дискретных выхода(ТЭНы).
В качестве базового компонента - "простой регулятор температуры с таймером" содержащий:
Параметры:
sensor_type - тип датчика
filter_passband - полоса пропускания фильтра
additional_screen_mode - режим дополнительного индикатора
... и т.д.
timeout - параметр таймера
Входы-выходы:
temperature - значение датчика температуры
set_temperature - заданная пользователем температура
switch closed/open - дискретный вход
on/off Q1 - первый дискретный выход
on/off Q2 - втрой дискретный выход
Дополнительные функции:
start/stop timer - управление таймером.
time_is_up - событие: "время вышло"
Программа выглядела бы примерно так:
Код:simple_temperature_controller_with_timer //Заглавие Parametrs: sensor_type = THK timeout = 60 min //Задержка до перехода в режим ожыдания In-Out: temperature: boilerT set_temperature: setT switch: flow_sensor Q1: powerfulHE Q2: faintHE Definitions: mode = stand-by/work //Переменная off_all() = off faintHE and off powerfulHE //Функция Program: //Управление режимом ожедание/работа mode := work and stop timer if flow_sensor has closed //Прейти в режим "работа" и остановить таймер если датчик протока замкнулся. start timer if flow_sensor has open //Запустить таймер если датчик протока разомкнулся. mode := stand-by if time_is_up //Перейти в режим "ожидание" если время вышло. //Управление ТЕНами on faintHE if mode = work and boilerT < (setT - 1) //Включить слабую ТЭНу если режим - работа и температура в бойлере меньше на градус чем заданная. off faintHE if mode = work and boilerT > (setT + 2) //Отключить слабую ТЭНу если режим - работа и температура в бойлере превысила на два градуса заданную. on powerfulHE if mode = work and boilerT < (setT - 3) //Включить сильную ТЭНу если режим - работа и температура в бойлере меньше на три градуса чем заданная. off powerfulHE if mode = work and boilerT > setT //Отключить сильную ТЭНу если режим - работа и температура в бойлере больше заданной. off_all if mode has stand-by //Отключить обе ТЭНы если был выполнен переход в спящий режим.
Пример 2: программируемое реле(ПР) - управление деаэратором(на основе специализированого базового компонента)
(!)На ПР нету аналоговых входов, но здесь допустим что есть(лично я надеюсь когда ни будь появятся).
Задача: Реализовать САУ управления деаэратором с аварийной сигнализацией(деаэратор это такая бочка с водой хитрой конструкции, где нужно поддерживать температуру 102-107*С и уровень 80-90%). Д. подогревается паром и, обычно давление пара используют для регулирования температуры, т.к. эти параметры взаимозависимы, но стабильное давление поддерживать проще(ввиду малой инерции параметра).
В качестве основы САУ можно было-бы использовать ПР имеющий три аналоговых входа(температура, давление пара и уровень), один дискретный(кнопка сброса аварии) и пять дискретных выходов(открыть-закрыть регулятор подачи воды, открыть-закрыть для пара и сигнал "авария").
В качестве базового компонента - "контроллер деаэратора". Этот компонент уже содержит измеритель температуры и пару ПИД-регуляторов заточенных для управления деаэратором, остаётся только задать параметры и реализовать логику аварийной сигнализации:
Так как у ПР(в отличии от локальных регуляторов) входы-выходы не специализированы, дополнительно(в OWEN Logic) нужно будет связать их с входами-выходами готового компонента(программы).Код:deaerator_cottroller //Заглавие Parametrs: level_sensor_type = 4_20 pressure_sensor_type = 4_20 tank_volume = 3 level_valve_stroke_time = 60 pressure_valve_stroke_time = 90 level_increase_speed = 0.03 pressure_increase_speed = 0.2 In-Out: reset closed/open //Добавление одного дискретного входа on/of alarm //и одного д. вызода. Program: on alarm if temperature < 102 or temperature > 107 or level < 80 or level > 90 //Включить тревожный выход если какой-то параметр вне допустимого диапазона. off alarm if reset has closed //Выключить если был замкнут вход "сброс".
PS
Идея очень сырая, но надеюсь, общий смысл будет понятен, если нет спрашивайте.
Как вы(коллеги и разработчики ОВЕН) считаете, нужна ли подобная фича? Если нет/да почему?
Спасибо.




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