PiddValveUnit — регулирование клапаном «открыть/закрыть»
PiddValveUnit поддерживает температуру или давление короткими командами открытия и закрытия клапана. Чем сильнее измерение отклоняется от уставки, тем дольше команда в каждом периоде. Между командами привод стоит, сохраняя положение.
Выбирайте его для привода с двумя дискретными выходами. Аналоговое задание этому узлу не требуется. Для привода с входом 0–10 В или 4–20 мА подойдёт PidCtrlValveUnit.
Как устроен узел
Все части внутри рамки уже входят в узел. Общие сигналы подключите через Parent. Сброс аварий и наработки выполняйте только через встроенный CascadeUnit. Sensor добавляется отдельно; укажите его ID в SensId.
PIDD определяет направление и длительность импульсов. Valve выполняет движение с учётом режима, концевых выключателей и защит. Предупредительный фильтр только сообщает о состоянии; его выход сам клапан не останавливает.
В ручном режиме направление выбирает оператор. При штатном отключении автоматической работы клапан переходит в положение, заданное bNO. Питание, экстренный останов и аварии обрабатываются так, как описано ниже.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Клапан V101 регулирует подачу горячей воды по TE101. Открытие повышает температуру, требуемая температура — 60 °C. Добавьте Sensor TE101 и настройте измерение в °C.
1. Подключите привод и датчик
| Параметр | Значение для примера |
|---|---|
Id |
V101 |
Comment |
Клапан регулирования температуры |
Parent |
CabinetController_Inst |
StartCmd |
bHeatingDemand |
SensId |
TE101 |
ValveStateOpen |
bV101Open |
ValveStateClose |
bV101Closed |
ValveOpenOut |
qV101Open |
ValveCloseOut |
qV101Close |
bHeatingDemand — запрос нагрева; остальные переменные связываются с концевыми выключателями и выходами привода. Подставьте имена своего проекта. Для дистанционного управления оставьте ValveLocal = false, ValveRemote = true.
Оставьте канал 8 для ошибки датчика. У неиспользуемых остальных каналов аварий и предупреждений очистите ID.
2. Настройте температуру и движение
| Настройка | Значение для примера | Назначение |
|---|---|---|
Conf.V101_PIDD_fSP |
60.0 |
Уставка, °C |
Conf.V101_PIDD_fDB |
2.0 |
Зона без корректирующих команд около уставки |
Conf.V101_PIDD_fSR |
3.0 |
Период расчёта и импульсов, с |
Conf.V101_Valve_diChangeStateDelay |
1 |
Пауза реверса, с |
Conf.V101_Valve_diFullTime |
70 |
Допустимое время полного хода, с |
Conf.V101_Valve_bFullTimeCtrlBypass |
false |
Включить контроль полного хода |
Conf.V101_Valve_bEnableCheckState |
true |
Использовать концевые выключатели |
Conf.V101_Valve_bNO |
false |
При штатном останове закрыть клапан |
70 секунд — пример для привода с ходом 60 секунд. Подберите время для своего привода. Kp, Ti и Td настраиваются по реакции процесса; подробности — в PIDD. Пауза реверса Valve влияет на короткие импульсы: привод не меняет направление мгновенно.
3. Как это будет работать
В автоматическом режиме при запросе нагрева узел открывает или прикрывает клапан, приближая температуру к уставке. При положительном Kp низкая температура вызывает открытие, высокая — закрытие. Внутри зоны нечувствительности новые корректирующие команды не нужны.
При снятии StartCmd клапан идёт в нормальное положение: при bNO = false закрывается, при bNO = true открывается. Он не остаётся в промежуточном положении только потому, что регулятор перестал выдавать импульсы.
Ручное управление и защиты
Вручную оператор подаёт команды открытия и закрытия независимо от StartCmd. Чтобы двигать клапан только пока нажата кнопка, команда должна быть TRUE при нажатии и FALSE при отпускании.
При ошибке датчика срабатывает аварийный канал 8, регулирование отключается и фиксируется авария клапана. При bEnableFaultCtrl = false команды движения снимаются. При true клапан переводится по bNO, если есть питание и режим не «Отключен». После устранения причины нужен сброс всего узла.
Экстренный останов и отсутствие питания снимают обе команды. В этот момент привод не получает команду закрытия или открытия.
Контроль положения
Если используются концевые выключатели, команда снимается при достижении нужного края. Без них отключите bEnableCheckState и укажите false вместо обоих входов состояния. В таком случае включённый контроль полного хода не сможет получить подтверждение конца движения; оставьте его шунтированным, если подтверждения нет.
Признак работы в CascadeUnit показывает разрешённую автоматическую работу узла по StartCmd. Текущее крайнее положение смотрите в V101_Valve_Inst.out_iState.
Состав узла
Эти части уже соединены внутри компонента; добавлять их повторно не нужно.
| Экземпляр для примера | Описание части | Для чего нужен |
|---|---|---|
V101_Flts_SgnlsFltr_Inst |
SignalsFilter | Обрабатывает аварийные причины. |
V101_Wrns_SgnlsFltr_Inst |
SignalsFilter | Обрабатывает предупреждения. |
V101_CascadeUnit_Inst |
CascadeUnit | Связывает механизм с группой и передаёт сбросы. |
V101_PIDD_Inst |
PIDD | Рассчитывает импульсы увеличения и уменьшения. |
V101_Valve_Inst |
Valve | Управляет движением клапана и проверяет полный ход. |
Аварии и предупреждения
Узел может обработать до восьми аварий и до восьми предупреждений. Для каждой причины есть свой канал. Аварии передаются в управление механизмом; предупреждения только сообщают о состоянии и сами его не останавливают.
Для каждого нужного канала укажите обозначение, понятное название и сигнал неисправности. Выберите, когда проверять сигнал и нужен ли сброс оператором. 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 |
|---|---|---|---|
ValveConf |
Valve | Conf.V101_Valve_diFullTime |
Conf.Common_Valve_diFullTime |
PIDDConf |
PIDD | Conf.V101_PIDD_fSP |
Conf.Common_PIDD_fSP |
Шунт полного хода всегда индивидуальный: Conf.V101_Valve_bFullTimeCtrlBypass. Его имя и комментарий относятся к конкретному клапану, даже при общем ValveConf.
Настройки каналов аварий и предупреждений, ручные команды и состояния также остаются у каждого узла свои.
Параметры компонента — Params
Поля аварийных и предупредительных каналов приведены в разделе «Аварии и предупреждения».
| Параметр | По умолчанию | Назначение |
|---|---|---|
Id |
_ID_ |
ID узла. По нему создаются имена его состояний, команд и индивидуальных настроек. |
Comment |
Комментарий |
Название конкретного насоса, клапана или группы. |
Parent |
CabinetController_Inst |
Компонент общего управления шкафом. Передаёт питание, экстренный останов и сбросы. |
StartCmd |
false |
Команда автоматической работы узла: TRUE — работать, FALSE — остановить. Смысл для данного узла показан в примере выше. |
$CasUnit |
Элемент каскада |
Название раздела параметров; также используется в комментариях. |
Power |
0.0 |
Мощность или частота для каскада. Если контроль нагрузки не нужен, оставьте 0.0. |
$PIDD |
Регулятор |
Название раздела параметров; также используется в комментариях. |
PIDDConf |
Пусто | ID набора настроек этого раздела. Пусто — использовать Id узла; одинаковый ID — общие настройки. |
PIDDConfComment |
Пусто | Название набора настроек. При пустом поле используется название узла и, где предусмотрено, раздела. |
SensId |
_ID_ |
ID компонента Sensor. Его измерение используется регулятором, а ошибка — аварийным каналом 8. |
$Valve |
Клапан |
Название раздела параметров; также используется в комментариях. |
ValveConf |
Пусто | ID набора настроек этого раздела. Пусто — использовать Id узла; одинаковый ID — общие настройки. |
ValveConfComment |
Пусто | Название набора настроек. При пустом поле используется название узла и, где предусмотрено, раздела. |
ValveLocal |
false |
Признак местного управления клапаном. Имеет приоритет над дистанционным. |
ValveRemote |
true |
Разрешение дистанционного управления клапаном. |
ValveStateOpen |
_DI_ |
Концевой выключатель: TRUE — клапан полностью открыт. |
ValveStateClose |
_DI_ |
Концевой выключатель: TRUE — клапан полностью закрыт. |
ValveOpenOut |
_DO_OPEN_ |
Дискретный выход открытия клапана. |
ValveCloseOut |
_DO_CLOSE_ |
Дискретный выход закрытия клапана. |
$Flts |
Аварии |
Название раздела параметров; также используется в комментариях. |
FltComment |
аварии |
Общее название группы аварий в комментариях каналов. |
$Wrns |
Предупреждения |
Название раздела параметров; также используется в комментариях. |
WrnComment |
предупреждения |
Общее название группы предупреждений в комментариях каналов. |
Настройки во время работы — Conf
Полные имена приведены для Id = V101 и пустых полей выбора общих настроек. В таблице указаны начальные значения. Для примера выше задайте значения из шагов подключения.
| Настройка | Тип | Начальное значение | Единицы | Назначение |
|---|---|---|---|---|
Conf.V101_PIDD_fSP |
REAL |
0.0 |
ед. измерения | Значение, которое нужно поддерживать. |
Conf.V101_PIDD_fDB |
REAL |
0.0 |
ед. измерения | Полная ширина зоны около уставки, внутри которой регулятор не меняет задание. |
Conf.V101_PIDD_fSR |
REAL |
3.0 |
с | Период расчёта и повторения импульсов, с; должен быть больше нуля. |
Conf.V101_PIDD_fKp |
REAL |
1.0 |
— | Сила реакции регулятора на отклонение. Знак определяет направление регулирования. |
Conf.V101_PIDD_fTi |
REAL |
0.0 |
с | Параметр усиления реакции на сохраняющееся отклонение. 0 отключает эту составляющую. |
Conf.V101_PIDD_fTd |
REAL |
0.0 |
с | Реакция на изменение отклонения. 0 отключает эту составляющую. |
Conf.V101_Valve_bNO |
BOOL |
false |
— | Нормальное положение: FALSE — закрыт, TRUE — открыт. Применение при останове описано выше. |
Conf.V101_Valve_bEnableFaultCtrl |
BOOL |
false |
— | TRUE — при аварии двигаться в нормальное положение; FALSE — снять обе команды движения. |
Conf.V101_Valve_bEnableCheckState |
BOOL |
true |
— | TRUE — учитывать концевые выключатели крайних положений. |
Conf.V101_Valve_diChangeStateDelay |
DINT |
1 |
с | Пауза перед сменой направления движения. |
Conf.V101_Valve_diFullTime |
DINT |
1 |
с | Допустимое время полного хода клапана. |
Conf.V101_Valve_bFullTimeCtrlBypass |
BOOL |
true |
— | TRUE — отключить проверку времени полного хода. Настройка индивидуальная. |
Команды оператора — View
| Тег | Тип | Действие |
|---|---|---|
View.V101_CascadeUnit_Inst_inout_bFaultReset |
BOOL |
Сброс аварий всего узла, включая фильтры: установить TRUE. |
View.V101_CascadeUnit_Inst_inout_bWorktimeReset |
BOOL |
Сброс наработки: установить TRUE; команда сбрасывается после обработки. |
View.V101_Valve_Inst_inout_iRemoteMode |
INT |
Выбор режима: 2 — ручной, 3 — автоматический. |
View.V101_Valve_Inst_inout_bOpen |
BOOL |
Открытие: TRUE — команда есть, FALSE — команда снята. |
View.V101_Valve_Inst_inout_bClose |
BOOL |
Закрытие: TRUE — команда есть, FALSE — команда снята. |
Состояния и результаты для программы
| Поле экземпляра | Тип | Назначение |
|---|---|---|
V101_Valve_Inst.out_iMode |
INT |
Режим: 0 — отключён, 1 — местный, 2 — ручной, 3 — автоматический. |
V101_Valve_Inst.out_bEnableAutoControl |
BOOL |
Механизм доступен для автоматического управления. |
V101_Valve_Inst.out_bBlocked |
BOOL |
Обычное управление заблокировано. |
V101_Valve_Inst.out_bFault |
BOOL |
Зафиксированная авария механизма. |
V101_Valve_Inst.out_diWorktime |
DINT |
Наработка, ч. |
V101_Valve_Inst.out_iState |
INT |
Состояние клапана; расшифровка и крайние положения — в описании Valve. |
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_PIDD_Inst.out_bUp |
BOOL |
Импульс увеличения / открытия. |
V101_PIDD_Inst.out_bDown |
BOOL |
Импульс уменьшения / закрытия. |