MetaKit — готовые компоненты для вашего проекта
MetaKit помогает собрать программу управления оборудованием из готовых компонентов. Вы выбираете датчик, двигатель, клапан или регулятор, указываете его сигналы и настройки в MetaPlatform — и получаете код для своего проекта.
Например, для десяти одинаковых насосов не нужно десять раз писать пуск, останов и контроль запуска. Настройте один компонент, заполните строки параметров для десяти насосов и выполните генерацию. У каждого насоса будут свои команды, состояния и аварии.
Как устроен проект
В каждом проекте ПЛК, который вы собираете на MetaKit, должен быть CabinetController. Это общая точка пуска и останова установки: сюда подключают кнопки шкафа, контроль напряжения и экстренный останов. Добавьте либо CabinetController, либо General, в который он уже входит. Вместе они не нужны.
От него управление передаётся готовым узлам Units. Каждый узел управляет своим механизмом: получает входные сигналы и выдаёт команды на выходы. Обработку аналоговых датчиков удобно собрать отдельно, например в проектном компоненте Sensors, используя Sensor. Его измерения и признаки ошибки подключаются к тем узлам, которым они нужны.
Sensors — выбранное вами имя проектного компонента MetaGen. Так же можно назвать компоненты управления насосами Pumps, а клапанами — Valves. В каждом из них один шаблон по строкам параметров создаёт код для всех нужных датчиков или механизмов.
Рядом с управлением оборудованием создаются две общие таблицы:
Conf— настройки оператора: уставки, задержки, коэффициенты регуляторов. Узлы читают их во время работы.View— команды оператора и данные для отображения: режимы, измерения, состояния и аварии. Через них панель оператора или SCADA взаимодействует с программой.
В MetaCore и CODESYS это глобальные таблицы переменных, в Siemens — блоки данных. MetaPlatform создаёт их при генерации.
Что выполняется в каждом цикле
MetaPlatform создаёт общий программный блок _MetaGen_Main. В нём вызываются проектные компоненты, затем обрабатываются сообщения Alarms и обновляются данные View. Например, для такой структуры вы получите вызовы:
General_Inst();
Sensors_Inst();
Pumps_Inst();
Valves_Inst();
Alarms_Inst(
inout_bReset := View.Alarms_Inst_inout_bReset
);
makeView();
Это пример имён и порядка: в вашем проекте они зависят от состава и расположения проектных компонентов. Компонент, который подготавливает сигнал, должен выполняться раньше того, который его использует. Поэтому обработку датчиков размещают перед регулированием по этим датчикам.
Экземпляры проектных компонентов, например Sensors_Inst, создаются в Inst. Внутри Sensors вызываются отдельные экземпляры обработки датчиков, также объявленные в Inst. Так программа связывает один общий шаблон с конкретным оборудованием.
Alarms обрабатывает сообщения, заданные в проекте: аварии, предупреждения и другие события. Он формирует их состояния и общие признаки для отображения. Останов механизма при аварии выполняет его алгоритм управления; обработка сообщения сама по себе не заменяет защиту.
makeView() обновляет опубликованные измерения и состояния. Например, состояние насоса копируется из его блока в таблицу для визуализации:
View.K31_Engine_Inst_out_bState := K31_Engine_Inst.out_bState;
Команды оператора, которые блоки используют непосредственно из View, этим копированием не заменяются. Поэтому заданный с панели режим или команда сохраняется до обработки соответствующим блоком.
С чего начать
Если нужно управлять механизмом целиком, начните с Units — готовых узлов. Например, EngineUnit уже объединяет управление двигателем, обработку его аварий и связь с общим управлением установкой. Sensor обрабатывает аналоговый датчик, а General связывает установку с кнопками и сигналами шкафа.
Компоненты Lib пригодятся, когда вы собираете собственную схему управления из отдельных частей. Например, можно соединить TwoStep с Engine, чтобы включать насос по температуре. Sys решают общие задачи установки: пуск, останов и обработку аварий.
Ниже выберите нужную задачу. В каждом описании сначала приведён пример подключения, затем объяснена работа компонента и дан полный справочник параметров.
Добавьте компонент в проект
- Скачайте MetaKit по ссылке внизу страницы и распакуйте архив. Отдельный компонент можно скачать со страницы его описания.
- В MetaPlatform импортируйте выбранный компонент в раздел MetaGen своего проекта.
- Откройте его таблицу «Параметры» (
Params). Заполните значения по примеру: обозначение оборудования, комментарий, входные сигналы и выходы. Имена переменных из примера замените именами своего проекта. - Подключите компоненты, на которые ссылается пример. Например, регулятору нужен Sensor, а двигателю — связь с общим управлением шкафом.
- Выберите, нужны ли сейчас сценарии наладки, как описано ниже, и сгенерируйте проект.
Компоненты MetaKit используют блоки библиотеки MetaLib. Для запуска в MetaCore загрузите библиотеку вместе с полученной программой. При работе в CODESYS или TIA Portal добавьте MetaLib для выбранной платформы в проект этой среды.
Где задавать параметры и смотреть результат
В руководствах встречаются три вида данных:
| Где | Что вы задаёте или получаете | Пример |
|---|---|---|
Параметры (Params) в MetaPlatform |
Подключения и исходные значения, по которым будет создан код | EngId = K31, EngState = bK31Running |
Conf в сгенерированной программе |
Настройки, которые оператор или наладчик может менять во время работы | Conf.K31_Engine_diStateControlTime — время ожидания подтверждения запуска |
View в сгенерированной программе |
Команды оператора и значения для отображения | View.K31_Engine_Inst_out_bState — насос работает |
Conf и View создаются при генерации: в MetaCore и CODESYS это глобальные таблицы переменных, в Siemens — блоки данных. Эти настройки и опубликованные параметры объявляются автоматически. Переменные, которые вы подключаете к входам и выходам компонента, должны быть объявлены в вашем проекте. В RT их можно посмотреть после загрузки программы в MetaCore; те же данные используются для подключения панели оператора или SCADA.
Например, Engine с EngId = K31 создаёт экземпляр K31_Engine_Inst в таблице Inst. Программа обращается к его выходу K31_Engine_Inst.out_bState, а для отображения используется View.K31_Engine_Inst_out_bState. Это состояние одного и того же насоса.
В примерах отдельно показаны значения, которые нужно задать для конкретной задачи. В справочных таблицах приведены начальные значения компонента. Например, для медленно запускающегося привода время ожидания подтверждения нужно увеличить, даже если начальное значение меньше.
Если нужна виртуальная наладка
Некоторые компоненты уже подготовлены для создания сценариев MetaLab. На их страницах есть раздел «Перед генерацией» с двумя вариантами:
- Пока нужна только программа. В добавленном компоненте откройте область «Экспорт MetaLab» и удалите заполненные строки. Сделайте это в своём проекте. Сценарии добавлять не нужно.
- Нужна виртуальная наладка. Сохраните строки экспорта и импортируйте перечисленные на странице компоненты в раздел MetaLab проекта. Они находятся в папке
MetaLabполного архива MetaKit.
Каждый шаблон сценария достаточно добавить один раз. По нему MetaPlatform создаст сценарии для всех указанных в параметрах механизмов. Если оставить экспорт, но не добавить нужный шаблон, генерация сообщит о его отсутствии.
Это относится к генерации для MetaCore, CODESYS 3.5 и Siemens TIA Portal. Для CODESYS 2.3 сценарии MetaLab не создаются. Если у компонента нет подготовленных сценариев, никаких дополнительных действий для него не требуется.
Один компонент — несколько механизмов
Подготовив первый механизм, заполните параметры для остальных. Для каждого задайте свой ID и свои сигналы. Один шаблон создаст нужное количество экземпляров, настроек и вызовов блоков.
Например, насосам K31 и K32 можно назначить отдельные настройки или общий набор. При общем наборе изменение задержки запуска действует на оба насоса, а команды, состояния и аварии остаются отдельными. Как выбрать общий набор и какие настройки всегда индивидуальны, показано в описании каждого компонента.
Системные компоненты — Sys
Общее управление установкой, аварии и предупреждения, контроль границ измерений.
| Компонент | Когда нужен |
|---|---|
| General | Нужна общая точка пуска и останова установки, связанная с сигналами шкафа, и группы общих аварий и предупреждений |
| FltsWrns | Нужна отдельная группа аварий и предупреждений участка; общее управление шкафом уже есть |
| SensLim | Нужно сообщать о выходе давления, температуры или другого измерения за предупредительные и аварийные границы |
Как выбрать системный компонент.
Готовые узлы оборудования — Units
Готовые сочетания компонентов для управления оборудованием, таким как насосы, вентиляторы и клапаны, и для регулирования. Связи между внутренними частями уже выполнены.
| Задача | Компонент |
|---|---|
| Запускать и останавливать механизмы с электродвигателями, такие как насосы и вентиляторы | EngineUnit |
| Включать двигатель по двум порогам температуры, давления или уровня | TwoStepEngineUnit |
| Поддерживать величину, меняя скорость двигателя аналоговым заданием | PidEngineUnit |
| Поддерживать величину командами приводу «больше/меньше» | PiddEngineUnit |
| Открывать и закрывать клапан по команде программы | ValveUnit |
| Полностью открывать и закрывать клапан по двум порогам измерения | TwoStepValveUnit |
| Регулировать клапаном, выдавая короткие команды «открыть/закрыть» | PiddValveUnit |
| Передавать клапану готовое числовое задание положения | CtrlValveUnit |
| Рассчитывать положение аналогового клапана по измерению датчика | PidCtrlValveUnit |
| Выбирать рабочие агрегаты и рассчитывать общую частоту группы | VfdGroupPidCascade |
| Управлять одним механизмом с ПЧ от общего регулятора группы | VfdGroupEngineUnit |
Отдельные компоненты — Lib
Отдельные функции управления оборудованием, обработки сигналов и регулирования. Их можно соединять в собственный алгоритм.
Управление шкафом и группой
| Компонент | Когда использовать |
|---|---|
| CabinetController | Общий пуск и останов шкафа, контроль питания, экстренный останов и команды сброса |
| Cascade | Выбирает рабочие и резервные агрегаты, такие как насосы и котлы; подключает дополнительные и заменяет неисправные |
| CascadeUnit | Связь отдельного агрегата с каскадом: состояния, команда пуска и сбросы |
Управление оборудованием
| Компонент | Когда использовать |
|---|---|
| Engine | Насос, вентилятор или другой механизм с дискретной командой пуска |
| Valve | Клапан или задвижка с отдельными командами открытия и закрытия |
| ControlValve | Клапан, положение которого задаётся числом — программой или оператором |
Регулирование
| Компонент | Как управляет |
|---|---|
| TwoStep | Переключает два состояния по нижнему и верхнему порогам; между ними сохраняет состояние |
| ThreeStep | Выдаёт команды увеличения и уменьшения; около уставки снимает обе команды |
| PID | Рассчитывает плавное аналоговое задание и преобразует его в шкалу выходного канала |
| PIDD | Короткими командами открывает или закрывает клапан, чтобы поддерживать уставку |
Датчики и обработка сигналов
| Компонент | Когда использовать |
|---|---|
| Sensor | Преобразование аналогового входа в измеряемую величину, диагностика, калибровка и сглаживание |
| SignalsFilter | Обработка до восьми аварийных или предупредительных причин с задержкой, шунтом и выбранным способом сброса |
Задержки и периодические действия
| Компонент | Как работает |
|---|---|
| Delay | Включает выход после непрерывного сохранения условия; снимает выход сразу при исчезновении условия |
| Pulse | Повторяет импульс и паузу; первый импульс начинается сразу после разрешения |
| Timer | По окончании интервала выдаёт событие на один цикл ПЛК и начинает следующий отсчёт |
Вспомогательная логика управления
| Компонент | Когда использовать |
|---|---|
| CondRecCtrl | Запрещает работу при длительной неисправности и разрешает её после восстановления с задержкой |
| SwitchCtrl | Показывает, что после включения или выключения ещё идёт заданное время ожидания |
| PulseCtrl | Сначала включает оборудование импульсами, затем оставляет включённым постоянно |
Пересчёт значений
| Компонент | Когда использовать |
|---|---|
| xyScale | Перевод значения из одной шкалы в другую, например процентов в шкалу аналогового выхода |