CtrlValveUnit — клапан с заданием положения
CtrlValveUnit управляет клапаном, положение которого задаётся числом, например от 0 до 100 %. В автоматическом режиме число приходит из программы, в ручном его вводит оператор. При отключении узел выдаёт настроенное положение останова.
Здесь нет собственного регулятора температуры или давления. Если положение должно рассчитываться по датчику, используйте PidCtrlValveUnit. Если привод принимает отдельные команды открытия и закрытия, нужен ValveUnit или PiddValveUnit.
Как устроен узел
Все части внутри рамки уже входят в узел. Общие сигналы подключите через Parent. Сброс аварий и наработки выполняйте только через встроенный CascadeUnit.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.
Программа задаёт клапану V101 положение через fValvePosition, а bValveDemand разрешает автоматическую работу. Значение 0 % соответствует закрытому клапану, 100 % — открытому. qV101Position — переменная аналогового выхода вашего проекта.
1. Подключите команду и задание
| Параметр | Значение для примера |
|---|---|
Id |
V101 |
Comment |
Регулирующий клапан подачи воды |
Parent |
CabinetController_Inst |
StartCmd |
bValveDemand |
CtrlValveValue |
fValvePosition |
CtrlValveLocal |
false |
CtrlValveRemote |
true |
OutRaw |
qV101Position |
OutRawMin |
0.0 |
OutRawMax |
27648.0 |
Шкала 0–27648 подходит только для модуля, настроенного именно на такую шкалу. Подставьте границы своего выходного канала. Неиспользуемые аварийные и предупредительные каналы отключите пустыми ID.
2. Настройте диапазон положения
| Настройка | Значение для примера |
|---|---|
Conf.V101_ControlValue_fYMin |
0.0 |
Conf.V101_ControlValue_fYMax |
100.0 |
Conf.V101_ControlValue_fOffValue |
0.0 |
При разрешённой работе и задании 50 % выход будет 13824. При снятии команды в автоматическом режиме задание станет 0 %.
3. Ручное управление
Переключите узел в ручной режим и задайте положение через View.V101_ControlValue_Inst_inout_fYManual. При переходе из автоматического режима ручное значение следует за текущим заданием. Отдельно нажимать «Пуск» для ручного задания здесь не требуется.
Поле inout_bYManual заполняется самим узлом по выбранному режиму. Управлять им независимо от режима клапана не нужно. Снятие StartCmd не отменяет ручное задание.
Отключение и аварии
| Событие | Что поступает на аналоговый выход |
|---|---|
Нет StartCmd в автоматическом режиме |
fOffValue |
| Ручной режим без аварий | Ручное положение оператора |
| Экстренный останов или нет питания шкафа | fOffValue, включая ручной режим |
| Зафиксирована внешняя авария | fOffValue до сброса, включая ручной режим |
Чтобы клапан закрывался при аварии, fOffValue должно соответствовать закрытому положению именно вашего привода. Итоговое значение пересчитывается в шкалу выходного канала и ограничивается её границами.
После исчезновения внешней причины сбросьте аварию всего узла через CascadeUnit. При снятии экстренного останова без записанной аварии обычное управление восстанавливается.
Внешнее аварийное переключение выполняется перед аналоговым выходом. Поэтому поле ручного задания или внутренний выход ControlValue может сохранять другое число; фактическая команда в этот момент соответствует fOffValue.
Связь с группой
Встроенный CascadeUnit сообщает группе о режиме, включении, аварии и наработке клапана. Если каскад не нужен, оставьте обычную команду программы в StartCmd. Подробности обработки положения — в ControlValve.
Состав узла
Эти части уже соединены внутри компонента; добавлять их повторно не нужно.
| Экземпляр для примера | Описание части | Для чего нужен |
|---|---|---|
V101_Flts_SgnlsFltr_Inst |
SignalsFilter | Обрабатывает аварийные причины. |
V101_Wrns_SgnlsFltr_Inst |
SignalsFilter | Обрабатывает предупреждения. |
V101_CascadeUnit_Inst |
CascadeUnit | Связывает механизм с группой и передаёт сбросы. |
V101_CtrlValve_Inst |
ControlValve | Обрабатывает режим, включение и аварию клапана. |
V101_ControlValue_Inst |
ControlValve | Выбирает автоматическое или ручное положение. |
Аварии и предупреждения
Узел может обработать до восьми аварий и до восьми предупреждений. Для каждой причины есть свой канал. Аварии передаются в управление механизмом; предупреждения только сообщают о состоянии и сами его не останавливают.
Для каждого нужного канала укажите обозначение, понятное название и сигнал неисправности. Выберите, когда проверять сигнал и нужен ли сброс оператором. TRUE на входе означает неисправность; если контакт работает наоборот, используйте NOT. У ненужных каналов оставьте ID пустым. Если первый канал тоже не нужен, удалите его заготовки _ID_ и _DI_.
| Поля канала | Что указать |
|---|---|
FltIdN, WrnIdN |
ID причины: например, VFD_FAULT или SERVICE |
FltCommentN, WrnCommentN |
Понятное название причины |
FltInN, WrnInN |
Сигнал причины: TRUE — авария или предупреждение присутствует |
FltEnableN, WrnEnableN |
Когда проверять канал; для постоянного контроля — true |
FltAutoResetN, WrnAutoResetN |
false — сохранить до сброса; true — снять после исчезновения причины |
N — номер от 1 до 8. У обычного первого аварийного канала начальные значения: _ID_, авария, _DI_, true, false. У первого предупредительного: _ID_, предупреждение, _DI_, true, true. Остальные обычные каналы пустые; при добавлении заполните все пять полей.
Задержка, шунт и сброс
Задержка отсекает кратковременный сигнал. Шунт исключает отдельный канал из проверки и сразу снимает его срабатывание. Сам механизм при этом может сохранять свою аварию до сброса.
При AutoReset = false сообщение остаётся после исчезновения неисправности. Оператор должен выполнить сброс. Он сработает, когда неисправность устранена или проверка канала запрещена. Одного снятия разрешения проверки для очистки такого сообщения недостаточно.
Сброс аварий выполняйте только через встроенный CascadeUnit: команда передаётся и фильтрам, и механизму. Через него же выполняется сброс наработки всего узла.
Например, для Id = V101, FltId1 = VFD_FAULT и WrnId1 = SERVICE создаются:
| Настройка | Тип | Начальное значение | Назначение |
|---|---|---|---|
Conf.V101_Flts_SgnlsFltr_VFD_FAULT_diDelay |
DINT |
0 |
Задержка срабатывания, с |
Conf.V101_Flts_SgnlsFltr_VFD_FAULT_bBypass |
BOOL |
false |
TRUE — шунт канала |
Conf.V101_Wrns_SgnlsFltr_SERVICE_diDelay |
DINT |
0 |
Задержка срабатывания, с |
Conf.V101_Wrns_SgnlsFltr_SERVICE_bBypass |
BOOL |
false |
TRUE — шунт канала |
У всех объявленных каналов создаётся такая пара настроек. В имени Conf используется ID причины, а в имени результата — номер места: например, V101_Flts_SgnlsFltr_Inst.out_Signal1_bQ. Один выход фильтра можно использовать в нескольких компонентах. Подробности — в SignalsFilter.
Индивидуальные и общие настройки
Чтобы у механизма были свои настройки, оставьте поля выбора общего набора пустыми. Если нескольким механизмам нужны одинаковые настройки, укажите в этих полях одно имя, например Common. Изменение общей настройки будет действовать на каждый из них. В таблице показано, какие настройки можно объединить.
| Поле Params | Раздел | Пример при пустом поле | Пример при значении Common |
|---|---|---|---|
CtrlValueConf |
ControlValue | Conf.V101_ControlValue_fOffValue |
Conf.Common_ControlValue_fOffValue |
OutConf |
OUT | Conf.V101_OUT_fRawMin |
Conf.Common_OUT_fRawMin |
Настройки каналов аварий и предупреждений, ручные команды и состояния также остаются у каждого узла свои.
Параметры компонента — Params
Поля аварийных и предупредительных каналов приведены в разделе «Аварии и предупреждения».
| Параметр | По умолчанию | Назначение |
|---|---|---|
Id |
_ID_ |
ID узла. По нему создаются имена его состояний, команд и индивидуальных настроек. |
Comment |
Комментарий |
Название конкретного насоса, клапана или группы. |
Parent |
CabinetController_Inst |
Компонент общего управления шкафом. Передаёт питание, экстренный останов и сбросы. |
StartCmd |
false |
Команда автоматической работы узла: TRUE — работать, FALSE — остановить. Смысл для данного узла показан в примере выше. |
CtrlValveValue |
0.0 |
Положение клапана, которое задаёт программа в автоматическом режиме; например, 0–100 %. |
$CasUnit |
Элемент каскада |
Название раздела параметров; также используется в комментариях. |
Power |
0.0 |
Мощность или частота для каскада. Если контроль нагрузки не нужен, оставьте 0.0. |
$CtrlValve |
Регулирующий клапан |
Название раздела параметров; также используется в комментариях. |
CtrlValveLocal |
false |
Признак местного управления аналоговым приводом. |
CtrlValveRemote |
true |
Разрешение дистанционного управления аналоговым приводом. |
$CtrlValue |
Управляющее воздействие |
Название раздела параметров; также используется в комментариях. |
CtrlValueConf |
Пусто | ID набора настроек этого раздела. Пусто — использовать Id узла; одинаковый ID — общие настройки. |
CtrlValueConfComment |
Пусто | Название набора настроек. При пустом поле используется название узла и, где предусмотрено, раздела. |
$Out |
Аналоговый выход |
Название раздела параметров; также используется в комментариях. |
OutConf |
Пусто | ID набора настроек этого раздела. Пусто — использовать Id узла; одинаковый ID — общие настройки. |
OutConfComment |
Пусто | Название набора настроек. При пустом поле используется название узла и, где предусмотрено, раздела. |
OutRaw |
_AO_ |
Переменная аналогового выхода, куда записывается задание после пересчёта шкалы. |
OutRawMin |
ADC_4_IN_0_20 |
Начальное значение нижней границы шкалы аналогового выхода. Задайте по настройке модуля. |
OutRawMax |
ADC_MAX_VALUE |
Начальное значение верхней границы шкалы аналогового выхода. Задайте по настройке модуля. |
$Flts |
Аварии |
Название раздела параметров; также используется в комментариях. |
FltComment |
аварии |
Общее название группы аварий в комментариях каналов. |
$Wrns |
Предупреждения |
Название раздела параметров; также используется в комментариях. |
WrnComment |
предупреждения |
Общее название группы предупреждений в комментариях каналов. |
Настройки во время работы — Conf
Полные имена приведены для Id = V101 и пустых полей выбора общих настроек. В таблице указаны начальные значения. Для примера выше задайте значения из шагов подключения.
| Настройка | Тип | Начальное значение | Единицы | Назначение |
|---|---|---|---|---|
Conf.V101_ControlValue_fYMin |
REAL |
0.0 |
ед. задания | Нижняя граница задания; соответствует нижней границе аналогового выхода. |
Conf.V101_ControlValue_fYMax |
REAL |
100.0 |
ед. задания | Верхняя граница задания; соответствует верхней границе аналогового выхода. |
Conf.V101_ControlValue_fOffValue |
REAL |
0.0 |
ед. задания | Задание при отключённом автоматическом регулировании. Особенности ручного режима описаны выше. |
Conf.V101_OUT_fRawMin |
REAL |
ADC_4_IN_0_20 |
raw | Значение выходного модуля для минимального задания. |
Conf.V101_OUT_fRawMax |
REAL |
ADC_MAX_VALUE |
raw | Значение выходного модуля для максимального задания. |
Команды оператора — View
| Тег | Тип | Действие |
|---|---|---|
View.V101_CascadeUnit_Inst_inout_bFaultReset |
BOOL |
Сброс аварий всего узла, включая фильтры: установить TRUE. |
View.V101_CascadeUnit_Inst_inout_bWorktimeReset |
BOOL |
Сброс наработки: установить TRUE; команда сбрасывается после обработки. |
View.V101_CtrlValve_Inst_inout_iRemoteMode |
INT |
Выбор режима: 2 — ручной, 3 — автоматический. |
View.V101_CtrlValve_Inst_inout_bStart |
BOOL |
Узел сам включает это поле при ручном режиме. Отдельная кнопка пуска не требуется. |
View.V101_ControlValue_Inst_inout_bYManual |
BOOL |
Заполняется узлом по режиму механизма; отдельно не переключать. |
View.V101_ControlValue_Inst_inout_fYManual |
REAL |
Задание оператора в единицах выхода: например, % или Гц. |
Состояния и результаты для программы
| Поле экземпляра | Тип | Назначение |
|---|---|---|
V101_CtrlValve_Inst.out_iMode |
INT |
Режим: 0 — отключён, 1 — местный, 2 — ручной, 3 — автоматический. |
V101_CtrlValve_Inst.out_bEnableAutoControl |
BOOL |
Механизм доступен для автоматического управления. |
V101_CtrlValve_Inst.out_bBlocked |
BOOL |
Обычное управление заблокировано. |
V101_CtrlValve_Inst.out_bExternalFault |
BOOL |
Зафиксированная авария механизма. |
V101_CtrlValve_Inst.out_diWorktime |
DINT |
Наработка, ч. |
V101_CtrlValve_Inst.out_bState |
BOOL |
Клапан включён. |
V101_CascadeUnit_Inst.out_bEnable |
BOOL |
Узел доступен группе. |
V101_CascadeUnit_Inst.out_bState |
BOOL |
Состояние работы, передаваемое группе; смысл описан выше. |
V101_Flts_SgnlsFltr_Inst.out_bQ |
BOOL |
Есть хотя бы одна сработавшая аварийная причина. |
V101_Wrns_SgnlsFltr_Inst.out_bQ |
BOOL |
Есть хотя бы одно предупреждение. |
V101_Flts_SgnlsFltr_Inst.out_Signal1_bQ |
BOOL |
Результат аварийного канала 1; для других каналов Signal2 … Signal8. |
V101_Wrns_SgnlsFltr_Inst.out_Signal1_bQ |
BOOL |
Результат предупредительного канала 1; для других каналов Signal2 … Signal8. |
V101_ControlValue_Inst.out_fY |
REAL |
Выбранное положение до аварийного переключения перед выходом. |
Перед генерацией
Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.
Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:
| Компонент MetaLab | Файл в архиве MetaKit |
|---|---|
CtrlValveUnit |
MetaLab/Units Scenarios/CtrlValveUnit.yaml |
Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.
При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.