MetaKit Руководство по компонентам

PidCtrlValveUnit — регулирование аналоговым клапаном

PidCtrlValveUnit поддерживает температуру, давление или другую величину, меняя положение клапана. Узел получает измерение от Sensor, сравнивает его с уставкой и выдаёт аналоговое задание приводу. Оператор может перейти на ручное положение.

Выбирайте этот узел для привода с числовым заданием. Для клапана с дискретными командами «открыть/закрыть» используйте PiddValveUnit. Если положение уже рассчитано в программе, достаточно CtrlValveUnit.

Как устроен узел

PidCtrlValveUnit: Все части внутри рамки уже входят в узел. Общие сигналы подключите через Parent. Сброс аварий и наработки выполняйте только через встроенный CascadeUnit. Sensor добавляется отдельно; укажите его ID в SensId.
В рамке — состав компонента, снаружи — подключения проекта. Нажмите на схему, чтобы открыть её крупнее.

Все части внутри рамки уже входят в узел. Общие сигналы подключите через Parent. Сброс аварий и наработки выполняйте только через встроенный CascadeUnit. Sensor добавляется отдельно; укажите его ID в SensId.

Первое подключение

Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.

Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.

Клапан V101 подаёт горячую воду; его открытие повышает температуру. Нужно поддерживать 60 °C по датчику TE101. Sensor TE101 уже должен быть добавлен и настроен в градусах Цельсия.

1. Подключите клапан и датчик

Параметр Значение для примера
Id V101
Comment Клапан регулирования температуры
Parent CabinetController_Inst
StartCmd bHeatingDemand
SensId TE101
OutRaw qV101Position
OutRawMin 0.0
OutRawMax 27648.0

bHeatingDemand — команда «нагрев нужен», qV101Position — аналоговый выход вашего проекта. Границы 0–27648 замените шкалой своего модуля. Для простого дистанционного управления оставьте CtrlValveLocal = false, CtrlValveRemote = true.

Неиспользуемые обычные каналы аварий и предупреждений отключите пустыми ID. Канал 8 ошибки датчика оставьте: измерение и ошибка TE101 подключаются по SensId автоматически.

2. Задайте уставку и пределы

Настройка Значение для примера
Conf.V101_PID_fSP 60.0
Conf.V101_PID_fDB 2.0
Conf.V101_PID_fYMin / Conf.V101_PID_fYMax 0.0 / 100.0
Conf.V101_PID_fYLoLimit / Conf.V101_PID_fYHiLimit 0.0 / 100.0
Conf.V101_PID_fOffValue 0.0
Conf.V101_PID_fSR 3.0

При положительном Kp регулятор увеличивает открытие, если температура ниже уставки. Коэффициенты Kp, Ti и Td подбираются для конкретного объекта; начальные значения шаблона не являются готовой настройкой отопления. Порядок настройки и примеры приведены в PID.

3. Как это будет работать

При включённом bHeatingDemand регулятор меняет положение клапана, приближая температуру к 60 °C. Внутри зоны 59–61 °C он перестаёт добавлять изменение к текущему положению. Положение может остаться промежуточным — клапан не обязан закрываться при достижении уставки.

При отключении нагрева в автоматическом режиме выдаётся fOffValue. В примере это закрытое положение.

Ручной режим и аварии

В ручном режиме оператор задаёт положение через View.V101_PID_Inst_inout_fYManual. Оно ограничивается диапазоном fYMin–fYMax. Режим PID автоматически следует за режимом клапана; отдельный переключатель PID не нужен.

Экстренный останов, отсутствие питания или зафиксированная внешняя авария принудительно выбирают fOffValue перед аналоговым выходом. Это действует и в ручном режиме. В примере клапан закрывается. Для другого привода проверьте, какое значение соответствует его закрытию.

Ошибка TE101 проходит через аварийный канал 8. В автоматическом режиме она останавливает регулирование и фиксирует аварию клапана. После исправления датчика нужен сброс всего узла. Переход в ручной режим сам записанную аварию не снимает.

Что задаётся совместно, а что отдельно

У нескольких клапанов может быть общий набор PID, включая уставку и пределы, через PIDConf. Настройки выходного модуля выбираются отдельно через OutConf. Режим, ручное положение, аварии и наработка каждого клапана остаются собственными.

Состав узла

Эти части уже соединены внутри компонента; добавлять их повторно не нужно.

Экземпляр для примера Описание части Для чего нужен
V101_Flts_SgnlsFltr_Inst SignalsFilter Обрабатывает аварийные причины.
V101_Wrns_SgnlsFltr_Inst SignalsFilter Обрабатывает предупреждения.
V101_CascadeUnit_Inst CascadeUnit Связывает механизм с группой и передаёт сбросы.
V101_CtrlValve_Inst ControlValve Обрабатывает режим, включение и аварию клапана.
V101_PID_Inst PID Рассчитывает числовое задание по измерению.

Аварии и предупреждения

Узел может обработать до восьми аварий и до восьми предупреждений. Для каждой причины есть свой канал. Аварии передаются в управление механизмом; предупреждения только сообщают о состоянии и сами его не останавливают.

Для каждого нужного канала укажите обозначение, понятное название и сигнал неисправности. Выберите, когда проверять сигнал и нужен ли сброс оператором. 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. Остальные обычные каналы пустые; при добавлении заполните все пять полей.

Канал 8 — ошибка датчика регулирования

Восьмой аварийный канал уже выделен для ошибки Sensor, указанного в SensId. Оставьте его для этой задачи: от него также зависит работа регулятора. Для остальных аварий используйте места 1–7.

Параметр По умолчанию Назначение
FltId8 REG_SENSOR_ERROR ID ошибки датчика. Пустой ID отключает этот канал.
FltComment8 Ошибка датчика регулирования Название ошибки.
FltIn8 Пусто Пусто — автоматически взять SensId_Sensor_Inst.out_bError. Можно указать другой сигнал ошибки.
FltEnable8 Пусто Пусто — проверять в автоматическом режиме механизма. Можно задать другое условие.
FltAutoReset8 false По умолчанию ошибка сохраняется до сброса.

Переход в ручной режим запрещает новое срабатывание этого канала при стандартном разрешении. Уже записанную аварию он не снимает: нужен сброс.

Задержка, шунт и сброс

Задержка отсекает кратковременный сигнал. Шунт исключает отдельный канал из проверки и сразу снимает его срабатывание. Сам механизм при этом может сохранять свою аварию до сброса.

При 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
PIDConf PID Conf.V101_PID_fSP Conf.Common_PID_fSP
OutConf OUT Conf.V101_OUT_fRawMin Conf.Common_OUT_fRawMin

Настройки каналов аварий и предупреждений, ручные команды и состояния также остаются у каждого узла свои.

Параметры компонента — Params

Поля аварийных и предупредительных каналов приведены в разделе «Аварии и предупреждения».

Параметр По умолчанию Назначение
Id _ID_ ID узла. По нему создаются имена его состояний, команд и индивидуальных настроек.
Comment Комментарий Название конкретного насоса, клапана или группы.
Parent CabinetController_Inst Компонент общего управления шкафом. Передаёт питание, экстренный останов и сбросы.
StartCmd false Команда автоматической работы узла: TRUE — работать, FALSE — остановить. Смысл для данного узла показан в примере выше.
$CasUnit Элемент каскада Название раздела параметров; также используется в комментариях.
Power 0.0 Мощность или частота для каскада. Если контроль нагрузки не нужен, оставьте 0.0.
$CtrlValve Регулирующий клапан Название раздела параметров; также используется в комментариях.
CtrlValveLocal false Признак местного управления аналоговым приводом.
CtrlValveRemote true Разрешение дистанционного управления аналоговым приводом.
$PID Регулятор Название раздела параметров; также используется в комментариях.
PIDConf Пусто ID набора настроек этого раздела. Пусто — использовать Id узла; одинаковый ID — общие настройки.
PIDConfComment Пусто Название набора настроек. При пустом поле используется название узла и, где предусмотрено, раздела.
SensId _ID_ ID компонента Sensor. Его измерение используется регулятором, а ошибка — аварийным каналом 8.
$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_PID_fSP REAL 0.0 ед. измерения Значение, которое нужно поддерживать.
Conf.V101_PID_fDB REAL 0.0 ед. измерения Полная ширина зоны около уставки, внутри которой регулятор не меняет задание.
Conf.V101_PID_fSR REAL 3.0 с Период расчёта, с; должен быть больше нуля.
Conf.V101_PID_fKp REAL 1.0 — Сила реакции регулятора на отклонение. Знак определяет направление регулирования.
Conf.V101_PID_fTi REAL 0.0 с Параметр усиления реакции на сохраняющееся отклонение. 0 отключает эту составляющую.
Conf.V101_PID_fTd REAL 0.0 с Реакция на изменение отклонения. 0 отключает эту составляющую.
Conf.V101_PID_fYMin REAL 0.0 ед. задания Нижняя граница задания; соответствует нижней границе аналогового выхода.
Conf.V101_PID_fYMax REAL 100.0 ед. задания Верхняя граница задания; соответствует верхней границе аналогового выхода.
Conf.V101_PID_fYLoLimit REAL 0.0 ед. задания Нижний предел задания при автоматическом регулировании.
Conf.V101_PID_fYHiLimit REAL 100.0 ед. задания Верхний предел задания при автоматическом регулировании.
Conf.V101_PID_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_PID_Inst_inout_bYManual BOOL Заполняется узлом по режиму механизма; отдельно не переключать.
View.V101_PID_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_PID_Inst.out_fYS REAL Итоговое задание PID в единицах выхода.
V101_PID_Inst.out_fY REAL Отдельный результат расчёта коррекции; для задания оборудованию используется out_fYS.

Перед генерацией

Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.

Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:

Компонент MetaLab Файл в архиве MetaKit
PidCtrlValveUnit MetaLab/Units Scenarios/PidCtrlValveUnit.yaml

Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.

При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.