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

Engine — управление двигателем

Engine управляет двигателями механизмов, таких как насосы и вентиляторы. Компонент поддерживает автоматический и ручной режимы управления, контролирует запуск двигателя, сообщает об авариях и считает часы работы.

Для подключения одного двигателя используйте Engine. Если вместе с ним нужны каналы аварий и подключение к группе оборудования, выберите готовый EngineUnit.

Состав и связи

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. Как это будет работать

В автоматическом режиме при наличии запроса циркуляции и отсутствии блокировок:

  1. Engine выдерживает задержку пуска.
  2. Выдаёт DQ_K31_bStart.
  3. Контролирует появление DI_K31_bState.
  4. После устойчивого подтверждения переходит в состояние «Работа».

При снятии запроса компонент выдерживает задержку останова и снимает команду пуска.

Если насос получил команду пуска, но подтверждение работы не появилось за допустимое время, 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 не создаются.