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

EngineUnit — готовый узел управления механизмом с электродвигателем

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

Выбирайте его для механизмов с командой «пуск/стоп», таких как насосы и вентиляторы. Если нужно поддерживать давление изменением частоты, подойдёт PidEngineUnit; если достаточно включать и выключать по температуре — TwoStepEngineUnit.

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

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

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