ControlValve — клапан с аналоговым управлением
ControlValve управляет клапаном, положение которого задаётся числом — например, от 0 до 100 %. В автоматическом режиме положение задаёт программа, в ручном — оператор. Компонент переводит это число в сигнал аналогового выхода и учитывает аварии.
Выберите ControlValve, если нужное положение клапана уже рассчитывается в программе. Для поддержания температуры или давления самим клапаном есть готовый PidCtrlValveUnit с ПИД-регулятором. Если у привода две команды «Открыть» и «Закрыть», используйте Valve.
Состав и связи
Положение рассчитывается в программе и поступает в ControlValve готовым числом. Внутри находятся два блока управления и функция пересчёта шкалы.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.
Рассмотрим регулирующий клапан подпитки CV101. Алгоритм проекта задаёт требуемое положение от 0 до 100 %. Оператору нужно выбирать ручной режим и вводить положение самостоятельно.
1. Укажите команду, положение и выход
| Сигнал | Назначение |
|---|---|
bMakeupDemand |
TRUE — подпитка нужна, FALSE — передать положение при выключении |
fMakeupPosition |
Требуемое положение в автоматическом режиме, % |
AO_CV101 |
Переменная REAL для записи задания в кодах аналогового канала |
Связь со шкафом обеспечивает CabinetController: от него приходят питание, экстренный останов и сбросы. AO_CV101 — переменная для задания аналоговому выходу; подключите её к нужному каналу модуля.
2. Заполните основные параметры
| Параметр | Значение для примера |
|---|---|
CtrlValId |
CV101 |
CtrlValComment |
Клапан подпитки |
CtrlValParent |
CabinetController_Inst |
CtrlValStartCmd |
bMakeupDemand |
CtrlValValue |
fMakeupPosition |
OutRaw |
AO_CV101 |
Остальные параметры оставьте по умолчанию. Дистанционное управление будет разрешено; местный режим и дополнительная внешняя авария пока не подключены.
3. Проверьте диапазон задания и выходную шкалу
| Настройка | Значение для примера |
|---|---|
Conf.CV101_ControlValue_fYMin |
0.0 % |
Conf.CV101_ControlValue_fYMax |
100.0 % |
Conf.CV101_ControlValue_fOffValue |
0.0 % |
Conf.CV101_OUT_fRawMin |
Код аналогового канала для 0 % |
Conf.CV101_OUT_fRawMax |
Код аналогового канала для 100 % |
OutRawMin и OutRawMax задают начальные границы аналогового канала. По умолчанию используются ADC_4_IN_0_20 и ADC_MAX_VALUE. Укажите значения, которые соответствуют настройке вашего модуля.
В этом примере 0 % закрывает клапан, поэтому значение при выключении fOffValue равно 0. Для другого привода укажите число, которое переводит его в требуемое положение при останове.
4. Как это будет работать
При исправном приводе и наличии питания:
- В автоматическом режиме
bMakeupDemand = TRUEразрешает передачуfMakeupPositionна выход. - Задание ограничивается диапазоном 0–100 % и преобразуется в код аналогового канала.
- При снятии
bMakeupDemandна выход передаётсяfOffValue. - В ручном режиме положение задаёт оператор, независимо от
bMakeupDemand.
Например, значение 35 % занимает 35 % выходной шкалы от её нижней границы. При внешней аварии, экстренном останове или отсутствии питания на аналоговый выход принудительно передаётся fOffValue, в том числе в ручном режиме.
Режимы управления
| Режим | Как выбирается | Как формируется задание |
|---|---|---|
| Отключён | CtrlValLocal = FALSE, CtrlValRemote = FALSE |
Используется fOffValue |
| Местный | CtrlValLocal = TRUE |
На выходе компонента — fOffValue; местное управление обеспечивается электрической схемой привода |
| Ручной | Дистанционное управление; оператор выбрал 2 |
Используется ручное задание оператора |
| Автоматический | Дистанционное управление; оператор выбрал 3 |
При CtrlValStartCmd = TRUE используется CtrlValValue, иначе — fOffValue |
Местный режим имеет приоритет над дистанционным. В ручном режиме компонент автоматически разрешает ввод положения: отдельная команда пуска от оператора не требуется.
При переходе в ручной режим оператор видит текущее задание клапана и может изменить его. При возврате в автоматический режим сразу используется положение из CtrlValValue; отдельного плавного перехода нет.
Аварии и отключение
| Условие | Автоматический режим | Ручной режим |
|---|---|---|
Снята команда CtrlValStartCmd |
На выход передаётся fOffValue |
Продолжает действовать ручное задание |
| Экстренный останов родительского компонента | На выход принудительно передаётся fOffValue |
На выход принудительно передаётся fOffValue |
| Нет питания по сигналу родительского компонента | На выход принудительно передаётся fOffValue |
На выход принудительно передаётся fOffValue |
CtrlValEStopExtra = TRUE |
На выход принудительно передаётся fOffValue |
На выход принудительно передаётся fOffValue |
Зафиксирована внешняя авария CtrlValExtFault |
На выход принудительно передаётся fOffValue до сброса аварии |
На выход принудительно передаётся fOffValue до сброса аварии |
При внешней аварии клапан получает значение fOffValue и сохраняет его до сброса. Для закрытия клапана это значение должно соответствовать закрытому положению привода. Исчезновения аварийного сигнала недостаточно: после устранения причины нужен сброс. Если причина осталась, авария возникнет снова. Экстренный останов и потеря питания сами по себе не запоминаются как внешняя авария.
При аварии или экстренном останове в поле ручного задания может остаться прежнее число. На аналоговый выход в это время всё равно передаётся fOffValue, пересчитанное в шкалу канала.
Параметры компонента — Params
Обозначение и управление
| Параметр | По умолчанию | Назначение |
|---|---|---|
$CtrlVal |
Регулирующий клапан |
Название группы параметров |
CtrlValId |
_ID_ |
ID клапана. Для CV101 создаются экземпляры CV101_CtrlValve_Inst и CV101_ControlValue_Inst |
CtrlValComment |
Комментарий |
Название оборудования |
CtrlValParent |
CabinetController_Inst |
Родительский компонент: наличие питания, экстренный останов, сброс аварий и наработки |
CtrlValStartCmd |
false |
Логическое разрешение работы в автоматическом режиме |
CtrlValValue |
0.0 |
Автоматическое задание REAL в единицах управляющего воздействия |
CtrlValEStopExtra |
false |
Дополнительный экстренный останов, логический сигнал или выражение |
CtrlValLocal |
false |
Выбор местного режима |
CtrlValRemote |
true |
Выбор дистанционного управления |
CtrlValExtFault |
false |
Внешняя авария привода или процесса |
Родительский компонент должен предоставлять out_bPowerControl, out_bEmergencyStop, out_bFaultReset и out_bWorktimeReset.
Задание положения
| Параметр | По умолчанию | Назначение |
|---|---|---|
$CtrlValue |
Управляющее воздействие |
Название группы параметров задания |
CtrlValueConf |
Пусто | ID набора настроек задания. Если пусто, используется CtrlValId |
CtrlValueConfComment |
Пусто | Название набора настроек. Если пусто, комментарий составляется из CtrlValComment и $CtrlValue |
Аналоговый выход
| Параметр | По умолчанию | Назначение |
|---|---|---|
$Out |
Аналоговый выход |
Название группы параметров выхода |
OutConf |
Пусто | ID набора настроек шкалы выхода. Если пусто, используется CtrlValId |
OutConfComment |
Пусто | Название настроек выхода. Если пусто, комментарий составляется из CtrlValComment и $Out |
OutRaw |
_AO_ |
Переменная REAL для записи задания в кодах аналогового канала |
OutRawMin |
ADC_4_IN_0_20 |
Начальное значение нижней границы шкалы аналогового канала |
OutRawMax |
ADC_MAX_VALUE |
Начальное значение верхней границы шкалы аналогового канала |
Настройки во время работы — Conf
Полные имена приведены для CtrlValId = CV101, пустых CtrlValueConf и OutConf.
| Настройка | Тип | Начальное значение | Назначение |
|---|---|---|---|
Conf.CV101_ControlValue_fYMin |
REAL |
0.0 |
Нижняя граница задания |
Conf.CV101_ControlValue_fYMax |
REAL |
100.0 |
Верхняя граница задания |
Conf.CV101_ControlValue_fOffValue |
REAL |
0.0 |
Задание в выключенном состоянии, при внешней аварии и экстренном останове |
Conf.CV101_OUT_fRawMin |
REAL |
Из OutRawMin |
Код аналогового канала для нижней границы задания |
Conf.CV101_OUT_fRawMax |
REAL |
Из OutRawMax |
Код аналогового канала для верхней границы задания |
Автоматическое и ручное задания ограничиваются диапазоном fYMin…fYMax. Нижнюю границу задавайте меньше верхней, значение останова выбирайте внутри этого диапазона.
Для общих настроек нескольких клапанов задайте одинаковый CtrlValueConf; для общей шкалы выхода — одинаковый OutConf. Например, при CtrlValueConf = Makeup и OutConf = AO420 значение останова называется Conf.Makeup_ControlValue_fOffValue, нижняя граница канала — Conf.AO420_OUT_fRawMin. Ручные задания клапанов остаются отдельными.
Команды оператора — View
| Переменная | Тип | Действие |
|---|---|---|
View.CV101_CtrlValve_Inst_inout_iRemoteMode |
INT |
Выбор режима: 2 — ручной, 3 — автоматический |
View.CV101_ControlValue_Inst_inout_fYManual |
REAL |
Ручное задание в единицах управляющего воздействия |
View.CV101_CtrlValve_Inst_inout_bFaultReset |
BOOL |
Установить TRUE для сброса внешней аварии; компонент снимает команду после обработки |
View.CV101_CtrlValve_Inst_inout_bWorktimeReset |
BOOL |
Установить TRUE для сброса наработки; компонент снимает команду после обработки |
Значение дистанционного режима, отличное от 2 и 3, заменяется на автоматический режим. Выбор действует при CtrlValRemote = TRUE и CtrlValLocal = FALSE.
Следующие поля компонент формирует самостоятельно:
| Переменная | Тип | Назначение |
|---|---|---|
View.CV101_CtrlValve_Inst_inout_bStart |
BOOL |
Разрешение работы в ручном режиме, связанное с выбором режима |
View.CV101_ControlValue_Inst_inout_bYManual |
BOOL |
Выбор ручного задания, связанный с ручным режимом клапана |
Для оператора достаточно выбора режима и ввода ручного значения. Записанные извне значения этих двух служебных полей будут обновлены логикой компонента.
Выходы компонента
| Результат для примера | Тип | Назначение |
|---|---|---|
CV101_CtrlValve_Inst.out_iMode |
INT |
0 — отключён, 1 — местный, 2 — ручной, 3 — автоматический |
CV101_CtrlValve_Inst.out_bState |
BOOL |
Состояние клапана: включён или выключен |
CV101_CtrlValve_Inst.out_bStart |
BOOL |
Внутреннее разрешение работы; совпадает с out_bState |
CV101_CtrlValve_Inst.out_bExternalFault |
BOOL |
Зафиксирована внешняя авария |
CV101_CtrlValve_Inst.out_bBlocked |
BOOL |
Есть внешняя авария или экстренный останов |
CV101_CtrlValve_Inst.out_bEnableAutoControl |
BOOL |
Выбран автоматический режим и нет блокировок |
CV101_CtrlValve_Inst.out_diWorktime |
DINT |
Время включённого состояния, в целых часах |
CV101_ControlValue_Inst.out_fY |
REAL |
Выбранное автоматическое или ручное задание до принудительной подстановки значения при внешней аварии или экстренном останове |
AO_CV101 |
REAL |
Итоговое задание в кодах аналогового канала, с учётом внешней аварии и экстренного останова |
Входы экземпляра CV101_CtrlValve_Inst.in_bStateOpen и CV101_CtrlValve_Inst.in_bStateClose не участвуют в алгоритме этого компонента. Для них нет параметров подключения концевых выключателей в Params.
Перед генерацией
Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.
Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:
| Компонент MetaLab | Файл в архиве MetaKit |
|---|---|
ControlValve |
MetaLab/Lib Scenarios/ControlValve.yaml |
Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.
При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.