Engine — управление двигателем
Engine управляет двигателями механизмов, таких как насосы и вентиляторы. Компонент поддерживает автоматический и ручной режимы управления, контролирует запуск двигателя, сообщает об авариях и считает часы работы.
Для подключения одного двигателя используйте Engine. Если вместе с ним нужны каналы аварий и подключение к группе оборудования, выберите готовый EngineUnit.
Состав и связи
Engine управляет одним двигателем. Если нужны готовые каналы аварий и связь с каскадом, используйте EngineUnit.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.
Подключим циркуляционный насос K31. Он должен включаться, когда установке нужна циркуляция, и останавливаться, когда она не нужна. Оператор также сможет включать и останавливать насос вручную.
Для примера используются три сигнала:
| Сигнал | Назначение |
|---|---|
bCirculationDemand |
TRUE — циркуляция нужна, FALSE — насос нужно остановить |
DI_K31_bState |
Подтверждение работы от пускателя или преобразователя частоты |
DQ_K31_bStart |
Команда пуска двигателя |
Добавьте в проект CabinetController, если его ещё нет. Он связывает насос с кнопкой экстренного останова шкафа, контролем питания и общими сбросами. В параметре EngParent укажем его имя — CabinetController_Inst.
1. Добавьте Engine и заполните основные параметры
| Параметр | Значение для примера |
|---|---|
EngId |
K31 |
EngComment |
Насос циркуляционный |
EngParent |
CabinetController_Inst |
EngState |
DI_K31_bState |
EngStartOut |
DQ_K31_bStart |
EngStartCmd |
bCirculationDemand |
EngStopCmd |
NOT bCirculationDemand |
Остальные параметры для этого примера оставьте по умолчанию. Дистанционное управление будет разрешено; местное управление и дополнительные внешние защиты пока не подключены.
Для работы насоса нужны две команды. EngStartCmd включает насос, EngStopCmd останавливает. В примере bCirculationDemand = TRUE означает, что циркуляция нужна. Когда это значение станет FALSE, выражение NOT bCirculationDemand подаст команду останова. Одного исчезновения команды пуска для остановки недостаточно.
2. Проверьте времена
После генерации насос получит следующие начальные настройки:
| Настройка | Значение |
|---|---|
| Задержка автоматического пуска | 1 с |
| Допустимое время отсутствия сигнала работы | 1 с |
| Время подтверждения устойчивого сигнала работы | 3 с |
| Задержка автоматического останова | 1 с |
Подберите время контроля состояния с учётом запуска конкретного двигателя или преобразователя частоты.
3. Как это будет работать
В автоматическом режиме при наличии запроса циркуляции и отсутствии блокировок:
- Engine выдерживает задержку пуска.
- Выдаёт
DQ_K31_bStart. - Контролирует появление
DI_K31_bState. - После устойчивого подтверждения переходит в состояние «Работа».
При снятии запроса компонент выдерживает задержку останова и снимает команду пуска.
Если насос получил команду пуска, но подтверждение работы не появилось за допустимое время, Engine сообщит об аварии и остановит насос. Так же он поступит, если подтверждение пропадёт во время работы.
Режимы управления
| Режим | Как выбирается | Как работает |
|---|---|---|
| Отключён | EngLocal = FALSE, EngRemote = FALSE |
Дистанционные команды не управляют двигателем |
| Местный | EngLocal = TRUE |
При настройках по умолчанию двигателем управляет местная электрическая схема, а компонент отслеживает работу |
| Ручной | EngRemote = TRUE, EngLocal = FALSE; выбран ручной дистанционный режим |
Пуск и останов задаёт оператор |
| Автоматический | EngRemote = TRUE, EngLocal = FALSE; выбран автоматический дистанционный режим |
Пуск и останов определяются EngStartCmd и EngStopCmd |
Местный режим имеет приоритет над дистанционным.
При ручном пуске и останове Engine не ждёт автоматические задержки. Проверка запуска и защиты двигателя продолжают работать.
Переключение режимов
В местном режиме с EngLocalControlByPLC = FALSE, а также в отключённом режиме компонент отслеживает работающий двигатель по EngState. При наличии этого сигнала он показывает работу и повторяет её на выходе команды пуска.
Это позволяет подхватить уже работающий механизм при переходе к дистанционному управлению. Положение «Отключён» в компоненте не следует использовать как единственное средство отключения электрической цепи двигателя.
Аварии и блокировки
В дистанционных режимах команду пуска снимают без задержки обычного останова:
- внешняя авария
EngExtFault; - авария контроля состояния;
- дополнительный экстренный останов
EngEStopExtra; - экстренный останов родительского компонента;
- отсутствие питания по сигналу родительского компонента.
После внешней аварии или ошибки подтверждения работы нужно устранить причину и выполнить сброс. Если внешняя неисправность осталась, после сброса авария появится снова.
Сам экстренный останов не запоминается в Engine как отдельная авария. Если его причину нужно сохранять до сброса оператором, это настраивается в компоненте, который передаёт данный сигнал.
В автоматическом режиме после снятия блокировки или сброса аварии возможен повторный пуск, если условие EngStartCmd остаётся активным.
Параметры компонента — Params
Обозначение и общие связи
| Параметр | По умолчанию | Назначение |
|---|---|---|
$Eng |
Двигатель |
Название группы параметров |
EngId |
_ID_ |
ID двигателя. Для K31 создаётся экземпляр K31_Engine_Inst |
EngComment |
Комментарий |
Название оборудования в комментариях и сообщениях |
EngParent |
CabinetController_Inst |
Родительский компонент: источник питания, экстренного останова, сброса аварий и наработки |
EngConf |
Пусто | ID общего набора временных настроек. Если пусто, используется EngId |
EngConfComment |
Пусто | Название набора настроек. Если пусто, используется EngComment |
Родительский компонент должен предоставлять выходы out_bPowerControl, out_bEmergencyStop, out_bFaultReset и out_bWorktimeReset.
Команды и защиты
Параметры этой группы принимают логический сигнал или выражение.
| Параметр | По умолчанию | Назначение |
|---|---|---|
EngStartCmd |
FALSE |
Условие пуска в автоматическом режиме |
EngStopCmd |
FALSE |
Условие останова в автоматическом режиме. При одновременных командах пуска и останова приоритет имеет останов |
EngEStopExtra |
FALSE |
Дополнительное условие экстренного останова. Например, запрет работы от компонента контроля сухого хода |
EngExtFault |
FALSE |
Внешняя авария двигателя или привода. Фиксируется до сброса |
Если причина уже обработана фильтром аварий, используйте выход соответствующего канала. Повторно подключать исходный дискретный вход к Engine не требуется.
Режимы и сигналы двигателя
| Параметр | По умолчанию | Назначение |
|---|---|---|
EngLocal |
FALSE |
Выбор местного режима |
EngRemote |
TRUE |
Разрешение дистанционного управления |
EngLocalControlByPLC |
FALSE |
Способ местного управления: вне ПЛК или через ПЛК |
EngState |
FALSE |
Сигнал фактической работы двигателя |
EngStartOut |
_DO_ |
Имя логической выходной переменной, в которую записывается команда пуска |
Если установлен переключатель «Местное / Отключено / Дистанционное», подключите его сигналы к EngLocal и EngRemote.
Особенность EngLocalControlByPLC: текущий компонент не содержит отдельных параметров местных кнопок. Одного значения TRUE недостаточно для организации местного поста через ПЛК — потребуется отдельно подключить его команды в коде компонента.
Настройки во время работы — Conf
Настройки создаются в Conf. Ниже приведены полные имена для двигателя K31 при пустом EngConf.
| Параметр | Тип | Начальное значение | Действие |
|---|---|---|---|
Conf.K31_Engine_diStartDelayTime |
DINT |
1 с | Задержка перед выдачей команды автоматического пуска |
Conf.K31_Engine_diStopDelayTime |
DINT |
1 с | Задержка перед снятием команды при обычном автоматическом останове |
Conf.K31_Engine_diStateControlTime |
DINT |
1 с | Допустимая продолжительность отсутствия сигнала работы, когда двигатель должен работать |
Conf.K31_Engine_diStateConfirmTime |
DINT |
3 с | Время устойчивого сигнала работы перед подтверждением запуска |
Conf.K31_Engine_bStateControlBypass |
BOOL |
FALSE |
Отключение контроля сигнала работы |
Чем отличаются времена
Задержка пуска отсчитывается перед выдачей команды двигателю.
Время контроля состояния определяет, как долго можно ожидать отсутствующий сигнал работы. Контроль действует при запуске, во время работы и в период задержки останова.
Время подтверждения состояния определяет, сколько должен непрерывно присутствовать сигнал работы для подтверждения запуска. Значение 0 отключает ожидание подтверждения; контроль отсутствия сигнала при этом остаётся отдельной функцией.
bStateControlBypass = TRUE отключает проверку подтверждения работы. Engine больше не выдаёт аварию из-за отсутствия этого сигнала и показывает «Работа», не дожидаясь его.
Общие настройки нескольких двигателей
Для двигателей K31 и K32 можно указать одинаковый EngConf, например HeatingPumps. Тогда оба будут использовать четыре общих времени:
Conf.HeatingPumps_Engine_diStartDelayTime;Conf.HeatingPumps_Engine_diStopDelayTime;Conf.HeatingPumps_Engine_diStateControlTime;Conf.HeatingPumps_Engine_diStateConfirmTime.
Отключение контроля состояния остаётся индивидуальным:
Conf.K31_Engine_bStateControlBypass;Conf.K32_Engine_bStateControlBypass.
Команды оператора — View
Для двигателя K31 создаются следующие переменные View.
| Переменная | Назначение |
|---|---|
View.K31_Engine_Inst_inout_iRemoteMode |
Выбор дистанционного режима: 2 — ручной, 3 — автоматический |
View.K31_Engine_Inst_inout_bStart |
Ручной пуск: установить TRUE |
View.K31_Engine_Inst_inout_bStop |
Ручной останов: установить TRUE |
View.K31_Engine_Inst_inout_bFaultReset |
Сброс аварий двигателя: установить TRUE |
View.K31_Engine_Inst_inout_bWorktimeReset |
Сброс наработки: установить TRUE |
Команды пуска и останова взаимно снимаются компонентом. Команды сброса после обработки возвращаются в FALSE.
Сброс аварий и сброс наработки также могут поступать от родительского компонента.
Выходы компонента
Выходы доступны в экземпляре двигателя. Например: K31_Engine_Inst.out_bState.
| Выход | Тип | Что показывает |
|---|---|---|
out_iMode |
INT |
Режим: 0 — отключён, 1 — местный, 2 — ручной, 3 — автоматический |
out_iState |
INT |
Этап работы: остановлен, пуск, работа или останов |
out_bStart |
BOOL |
Итоговая команда пуска |
out_bState |
BOOL |
Состояние «Работа», определённое компонентом |
out_bExternalFault |
BOOL |
Зафиксированная внешняя авария |
out_bStateFault |
BOOL |
Зафиксированная авария контроля состояния |
out_bFault |
BOOL |
Общая авария: внешняя авария или авария контроля состояния |
out_bBlocked |
BOOL |
Блокировка из-за аварии или экстренного останова |
out_bEnableAutoControl |
BOOL |
Выбран автоматический режим и отсутствует блокировка |
out_diWorktime |
DINT |
Наработка в целых часах |
Часы работы считаются, пока Engine показывает «Работа». Если проверка подтверждения выключена, такой подсчёт не доказывает, что двигатель действительно вращался.
Перед генерацией
Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.
Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:
| Компонент MetaLab | Файл в архиве MetaKit |
|---|---|
Engine |
MetaLab/Lib Scenarios/Engine.yaml |
Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.
При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.