EngineUnit — готовый узел управления механизмом с электродвигателем
EngineUnit запускает и останавливает двигатель, контролирует его запуск и обрабатывает аварии. Вы подключаете команду работы, подтверждение от двигателя и выход пуска. Ручное управление, наработка и связь с общим управлением шкафом уже предусмотрены.
Выбирайте его для механизмов с командой «пуск/стоп», таких как насосы и вентиляторы. Если нужно поддерживать давление изменением частоты, подойдёт PidEngineUnit; если достаточно включать и выключать по температуре — TwoStepEngineUnit.
Как устроен узел
Все части внутри рамки уже входят в узел. Общие сигналы подключите через Parent. Сброс аварий и наработки выполняйте только через встроенный CascadeUnit.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.
Насос K31 должен работать, пока нужна циркуляция. Сигнал bCirculationDemand означает «циркуляция нужна», bK31Running приходит от контактора, а qK31Start управляет пуском. Это переменные вашего проекта; замените их своими именами.
1. Подключите насос
| Параметр | Значение для примера | Назначение |
|---|---|---|
Id |
K31 |
ID насоса |
Comment |
Циркуляционный насос 1 |
Название |
Parent |
CabinetController_Inst |
Общее управление шкафом |
StartCmd |
bCirculationDemand |
Когда насос должен работать |
EngState |
bK31Running |
Подтверждение работы |
EngStartOut |
qK31Start |
Команда контактору |
EngLocal |
false |
Местное управление в примере не используется |
EngRemote |
true |
Разрешено управление из ПЛК |
Неиспользуемые аварийные и предупредительные каналы отключите пустыми ID. Если есть, например, авария ПЧ, добавьте её в аварийный канал по таблице ниже.
2. Настройте контроль запуска
| Настройка | Значение для примера | Что получится |
|---|---|---|
Conf.K31_Engine_bStateControlBypass |
false |
Подтверждение работы проверяется |
Conf.K31_Engine_diStateControlTime |
5 |
На запуск отведено 5 с |
Conf.K31_Engine_diStateConfirmTime |
3 |
Сигнал работы должен присутствовать 3 с для подтверждения запуска |
Conf.K31_Engine_diStartDelayTime |
0 |
Без дополнительной задержки пуска |
Conf.K31_Engine_diStopDelayTime |
0 |
Без дополнительной задержки останова |
3. Как это будет работать
В автоматическом режиме насос включится по bCirculationDemand. Если сигнал работы отсутствует 5 секунд, команда пуска снимется и будет записана авария. Для подтверждения успешного запуска сигнал должен непрерывно присутствовать 3 секунды. Когда потребность в циркуляции исчезнет, насос остановится.
В ручном режиме оператор запускает и останавливает насос с панели. Автоматическая команда на него не действует, но аварии и экстренный останов продолжают действовать.
Останов и восстановление работы
Внешняя авария, неподтверждённый запуск или длительная потеря подтверждения останавливают насос. После устранения причины выполните сброс узла. При оставшейся автоматической команде насос сможет запуститься снова.
Экстренный останов, дополнительный EStopExtra и отсутствие питания шкафа снимают команду без штатной задержки останова. Они сами не записываются как внешняя авария Engine. После снятия запрета автоматическая работа разрешается снова, если нет других аварий.
В местном режиме при EngLocalControlByPLC = false компонент следует за фактической работой по EngState и повторяет её на выходе пуска. При true Engine использует команды пуска и останова, но отдельные местные кнопки готовый узел не подключает. Одного переключения этого параметра для местного поста через ПЛК недостаточно; схема разобрана в Engine.
Подключение к группе насосов
EngineUnit может работать самостоятельно или участвовать в Cascade. Для первого насоса группы K3 укажите в Cascade CasUnitId1 = K31, а здесь StartCmd = K3_Cascade_Inst.out_Unit1_bCmd. Отдельно добавлять CascadeUnit не нужно.
Группа получает готовность, состояние, аварию и часы работы насоса. Power заполняйте, только если группе нужна нагрузка или частота для выбора числа работающих насосов.
Состав узла
Эти части уже соединены внутри компонента; добавлять их повторно не нужно.
| Экземпляр для примера | Описание части | Для чего нужен |
|---|---|---|
K31_Flts_SgnlsFltr_Inst |
SignalsFilter | Обрабатывает аварийные причины. |
K31_Wrns_SgnlsFltr_Inst |
SignalsFilter | Обрабатывает предупреждения. |
K31_CascadeUnit_Inst |
CascadeUnit | Связывает механизм с группой и передаёт сбросы. |
K31_Engine_Inst |
Engine | Управляет двигателем и проверяет запуск. |
Аварии и предупреждения
Узел может обработать до восьми аварий и до восьми предупреждений. Для каждой причины есть свой канал. Аварии передаются в управление механизмом; предупреждения только сообщают о состоянии и сами его не останавливают.
Для каждого нужного канала укажите обозначение, понятное название и сигнал неисправности. Выберите, когда проверять сигнал и нужен ли сброс оператором. 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 = K31, FltId1 = VFD_FAULT и WrnId1 = SERVICE создаются:
| Настройка | Тип | Начальное значение | Назначение |
|---|---|---|---|
Conf.K31_Flts_SgnlsFltr_VFD_FAULT_diDelay |
DINT |
0 |
Задержка срабатывания, с |
Conf.K31_Flts_SgnlsFltr_VFD_FAULT_bBypass |
BOOL |
false |
TRUE — шунт канала |
Conf.K31_Wrns_SgnlsFltr_SERVICE_diDelay |
DINT |
0 |
Задержка срабатывания, с |
Conf.K31_Wrns_SgnlsFltr_SERVICE_bBypass |
BOOL |
false |
TRUE — шунт канала |
У всех объявленных каналов создаётся такая пара настроек. В имени Conf используется ID причины, а в имени результата — номер места: например, K31_Flts_SgnlsFltr_Inst.out_Signal1_bQ. Один выход фильтра можно использовать в нескольких компонентах. Подробности — в SignalsFilter.
Индивидуальные и общие настройки
Чтобы у механизма были свои настройки, оставьте поля выбора общего набора пустыми. Если нескольким механизмам нужны одинаковые настройки, укажите в этих полях одно имя, например Common. Изменение общей настройки будет действовать на каждый из них. В таблице показано, какие настройки можно объединить.
| Поле Params | Раздел | Пример при пустом поле | Пример при значении Common |
|---|---|---|---|
EngConf |
Engine | Conf.K31_Engine_diStateControlTime |
Conf.Common_Engine_diStateControlTime |
Шунт подтверждения двигателя всегда индивидуальный: Conf.K31_Engine_bStateControlBypass. Его имя и комментарий относятся к конкретному двигателю, даже при общем EngConf.
Настройки каналов аварий и предупреждений, ручные команды и состояния также остаются у каждого узла свои.
Параметры компонента — Params
Поля аварийных и предупредительных каналов приведены в разделе «Аварии и предупреждения».
| Параметр | По умолчанию | Назначение |
|---|---|---|
Id |
_ID_ |
ID узла. По нему создаются имена его состояний, команд и индивидуальных настроек. |
Comment |
Комментарий |
Название конкретного насоса, клапана или группы. |
Parent |
CabinetController_Inst |
Компонент общего управления шкафом. Передаёт питание, экстренный останов и сбросы. |
StartCmd |
false |
Команда автоматической работы узла: TRUE — работать, FALSE — остановить. Смысл для данного узла показан в примере выше. |
EStopExtra |
false |
Дополнительный экстренный останов этого двигателя; TRUE запрещает работу. |
$CasUnit |
Элемент каскада |
Название раздела параметров; также используется в комментариях. |
Power |
0.0 |
Мощность или частота для каскада. Если контроль нагрузки не нужен, оставьте 0.0. |
$Eng |
Двигатель |
Название раздела параметров; также используется в комментариях. |
EngConf |
Пусто | ID набора настроек этого раздела. Пусто — использовать Id узла; одинаковый ID — общие настройки. |
EngConfComment |
Пусто | Название набора настроек. При пустом поле используется название узла и, где предусмотрено, раздела. |
EngLocal |
false |
Признак местного управления двигателем. Имеет приоритет над дистанционным. |
EngLocalControlByPLC |
false |
FALSE — в местном режиме Engine следует за фактической работой. TRUE — использует команды пуска и останова; отдельные местные кнопки в Units не подключены. |
EngRemote |
true |
Разрешение дистанционного управления. При TRUE доступны автоматический и ручной режимы. |
EngState |
false |
Подтверждение работы двигателя от контактора или ПЧ. |
EngStartOut |
_DO_ |
Выход команды пуска двигателя. |
$Flts |
Аварии |
Название раздела параметров; также используется в комментариях. |
FltComment |
аварии |
Общее название группы аварий в комментариях каналов. |
$Wrns |
Предупреждения |
Название раздела параметров; также используется в комментариях. |
WrnComment |
предупреждения |
Общее название группы предупреждений в комментариях каналов. |
Настройки во время работы — Conf
Полные имена приведены для Id = K31 и пустых полей выбора общих настроек. В таблице указаны начальные значения. Для примера выше задайте значения из шагов подключения.
| Настройка | Тип | Начальное значение | Единицы | Назначение |
|---|---|---|---|---|
Conf.K31_Engine_diStateControlTime |
DINT |
1 |
с | Допустимое отсутствие сигнала работы при запуске, во время работы и задержки останова. |
Conf.K31_Engine_diStateConfirmTime |
DINT |
3 |
с | Сколько должен непрерывно присутствовать сигнал работы для подтверждения запуска. 0 отключает это ожидание. |
Conf.K31_Engine_diStartDelayTime |
DINT |
1 |
с | Пауза перед пуском в автоматическом режиме. |
Conf.K31_Engine_diStopDelayTime |
DINT |
1 |
с | Пауза перед штатным остановом в автоматическом режиме. |
Conf.K31_Engine_bStateControlBypass |
BOOL |
true |
— | TRUE — не проверять подтверждение работы. Настройка индивидуальная. |
Команды оператора — View
| Тег | Тип | Действие |
|---|---|---|
View.K31_CascadeUnit_Inst_inout_bFaultReset |
BOOL |
Сброс аварий всего узла, включая фильтры: установить TRUE. |
View.K31_CascadeUnit_Inst_inout_bWorktimeReset |
BOOL |
Сброс наработки: установить TRUE; команда сбрасывается после обработки. |
View.K31_Engine_Inst_inout_iRemoteMode |
INT |
Выбор режима: 2 — ручной, 3 — автоматический. |
View.K31_Engine_Inst_inout_bStart |
BOOL |
Ручной пуск: установить TRUE. |
View.K31_Engine_Inst_inout_bStop |
BOOL |
Ручной останов: установить TRUE. |
Состояния и результаты для программы
| Поле экземпляра | Тип | Назначение |
|---|---|---|
K31_Engine_Inst.out_iMode |
INT |
Режим: 0 — отключён, 1 — местный, 2 — ручной, 3 — автоматический. |
K31_Engine_Inst.out_bEnableAutoControl |
BOOL |
Механизм доступен для автоматического управления. |
K31_Engine_Inst.out_bBlocked |
BOOL |
Обычное управление заблокировано. |
K31_Engine_Inst.out_bFault |
BOOL |
Зафиксированная авария механизма. |
K31_Engine_Inst.out_diWorktime |
DINT |
Наработка, ч. |
K31_Engine_Inst.out_bState |
BOOL |
Работа двигателя; при включённом шунте определяется без обратной связи. |
K31_CascadeUnit_Inst.out_bEnable |
BOOL |
Узел доступен группе. |
K31_CascadeUnit_Inst.out_bState |
BOOL |
Состояние работы, передаваемое группе; смысл описан выше. |
K31_Flts_SgnlsFltr_Inst.out_bQ |
BOOL |
Есть хотя бы одна сработавшая аварийная причина. |
K31_Wrns_SgnlsFltr_Inst.out_bQ |
BOOL |
Есть хотя бы одно предупреждение. |
K31_Flts_SgnlsFltr_Inst.out_Signal1_bQ |
BOOL |
Результат аварийного канала 1; для других каналов Signal2 … Signal8. |
K31_Wrns_SgnlsFltr_Inst.out_Signal1_bQ |
BOOL |
Результат предупредительного канала 1; для других каналов Signal2 … Signal8. |
Перед генерацией
Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.
Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:
| Компонент MetaLab | Файл в архиве MetaKit |
|---|---|
EngineUnit |
MetaLab/Units Scenarios/EngineUnit.yaml |
Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.
При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.