Пример 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%). Д. подогревается паром и, обычно давление пара используют для регулирования температуры, т.к. эти параметры взаимозависимы, но стабильное давление поддерживать проще(ввиду малой инерции параметра).
В качестве основы САУ можно было-бы использовать ПР имеющий три аналоговых входа(температура, давление пара и уровень), один дискретный(кнопка сброса аварии) и пять дискретных выходов(открыть-закрыть регулятор подачи воды, открыть-закрыть для пара и сигнал "авария").
В качестве базового компонента - "контроллер деаэратора". Этот компонент уже содержит измеритель температуры и пару ПИД-регуляторов заточенных для управления деаэратором, остаётся только задать параметры и реализовать логику аварийной сигнализации:
Код:
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 //Выключить если был замкнут вход "сброс".
Так как у ПР(в отличии от локальных регуляторов) входы-выходы не специализированы, дополнительно(в OWEN Logic) нужно будет связать их с входами-выходами готового компонента(программы).
PS
Идея очень сырая, но надеюсь, общий смысл будет понятен, если нет спрашивайте.
Как вы(коллеги и разработчики ОВЕН) считаете, нужна ли подобная фича? Если нет/да почему?
Спасибо.