MetaPlatform — разработка собственного компонента
Напишем обработку одного измерения, а затем превратим её в шаблон для нескольких каналов. Добавим настройки, ручное задание и счётчик переключений. На каждом шаге посмотрим, какой код создала MetaPlatform и где находятся его данные.
Руководство рассчитано на программиста, знакомого с основами ST. Объявления переменных и вызовы блоков здесь не разбираем. Учимся собирать собственный проектный компонент MetaGen — задавать алгоритм один раз и получать программу для нужного количества однотипных устройств.
Если вы ещё не работали в MetaPlatform, начните с «Быстрого старта». Здесь подробнее разберём то, что происходит за таблицами и шаблоном.
Что будем делать
Наш первый компонент прибавляет поправку к температуре: 20 + 2 = 22. Затем появятся второй канал, собственный функциональный блок и ручная подстановка результата.
Это небольшой пример того же подхода, который применяется к оборудованию: описали один насос или клапан, заполнили строки параметров для остальных — получили отдельные экземпляры, настройки и вызовы. Чтобы изменить общий алгоритм, достаточно поправить шаблон.
Где будем смотреть результат
MetaCore — софт-ПЛК для проверки и отладки программы на компьютере перед загрузкой в реальную среду TIA Portal или CODESYS. Он входит в MetaPlatform Runtime, сокращённо RT. Здесь можно выполнить программу и увидеть значения прямо рядом со ST-кодом.
После первого рабочего компонента загрузим результат генерации в RT. Дальше будем изменять шаблон, генерировать заново и смотреть, что получилось. Дополнительная библиотека MetaLib в этих упражнениях не нужна: функциональный блок напишем сами.
Для переноса программы выберите в MetaPlatform другую целевую платформу и повторите генерацию. Полученные файлы импортируйте в TIA Portal или CODESYS. MetaPlatform формирует нужные объявления и вызовы автоматически; поддерживаемый алгоритм остаётся тем же. Подключение реальных входов и выходов выполняется в проекте целевого ПЛК.
Из чего складывается проект
| Что создаём в MetaPlatform | Для чего | Что появляется в программе ПЛК |
|---|---|---|
Глобальную таблицу Signals |
Хранить исходные измерения | Глобальные переменные |
Проектный компонент MetaGen Correction |
Описать обработку и повторить её по строкам параметров | Функциональный блок Correction и его экземпляр Correction_Inst |
ST-блок COffset |
Вынести обработку одного канала в отдельный блок | Тип блока и экземпляры, указанные в таблице Instances |
Экземпляры в MetaCore и CODESYS создаются в Inst. Тип блока описывает алгоритм, а экземпляр хранит данные конкретного канала. У двух одинаковых насосов были бы два экземпляра с собственными состояниями; в нашем примере так будут устроены два измерения.
Conf, View и makeView
Conf — настройки оператора или наладчика. Например, уставка температуры, задержка пуска или поправка нашего измерения. В программе будем обращаться к ней как к Conf.Offset_1.
View — команды оператора и значения для отображения. Здесь находятся результаты измерений, состояния, ручные задания и команды. К этим данным подключается визуализация.
makeView() обновляет значения для отображения после выполнения алгоритма. Например, копирует результат из выхода блока в View. Поля ручных команд, которые блок использует непосредственно из View, не перезаписываются этим копированием.
| Объект | MetaCore и CODESYS | Siemens TIA Portal |
|---|---|---|
Conf |
Глобальная структура в GVL MetaGen |
Блок данных Conf |
View |
Глобальная структура в GVL MetaGen |
Блок данных View |
| Экземпляры блоков | Объявления в GVL Inst |
Экземплярные блоки данных |
makeView |
Функция обновления данных | Функция обновления данных |
В упражнениях выбрана MetaCore. Поэтому имена файлов и примеры сгенерированного кода приведены для неё.
Как устроено руководство
Мы последовательно разрабатываем один проект: сначала программу, затем визуализацию и сценарии проверки. После наладки в MetaPlatform переносим программу и данные визуализации на целевые платформы.
| Часть | Что делаем | Результат |
|---|---|---|
| I. Разработка программы — MetaGen | Описываем данные, компоненты, алгоритм и сигнализацию | Программа учебного проекта готова |
| II. Визуализация и наладка в MetaPlatform | Создаём MetaView и MetaLab, проверяем вместе с MetaCore | Проект разработан и проверен; можно скачать финальный исходник |
| III. Перенос программы в целевой ПЛК | Загружаем код, получаем адреса, подключаем средства наладки | Программа работает в целевом софт-ПЛК или аппаратном контроллере |
| IV. Подключение HMI-панели и SCADA | Готовим профили и импортируем данные в WinCC или Weintek | Целевая визуализация связана с программой ПЛК |
I. Разработка программы — MetaGen
| Глава | Что получится |
|---|---|
| 1. Проект и глобальная таблица | Объявим исходное измерение |
| 2. Первый компонент: Conf и View | Прибавим поправку и разберём результат генерации |
| 3. Один шаблон — несколько каналов | Получим обработку двух каналов |
| 4. Собственный функциональный блок | Создадим по экземпляру блока на канал |
| 5. Mode — какой режим выбрать | Разберём global, val, ref, inout, static |
| 6. Встроенный интерпретатор | Используем подстановки и выражения |
| 7. Выбор настроек и строк | Зададим условия генерации |
| 8. Ошибки генерации | Найдём и исправим ошибки в проекте |
| 9. Аварии и предупреждения | Разберём сигнализацию в программе ПЛК |
Главы 6–9 дополняют учебный проект короткими примерами. Переносить каждый пример в основной компонент не требуется.
II. Визуализация и наладка в MetaPlatform
| Глава | Что получится |
|---|---|
| 10. MetaView — визуализация и управление | Карточки двух каналов, ввод поправки и ручное управление |
| 11. MetaLab — изменяющийся сигнал | Проверка алгоритма на имитируемом входе |
| 12. MetaLab — один шаблон для каналов | Автоматическое создание имитаторов и совместный запуск |
| Итог разработки и финальный проект | Готовый исходный проект для скачивания и сверки |
Здесь заканчивается разработка и проверка проекта в MetaPlatform. В следующих частях переносим полученный результат в целевые платформы.
III. Перенос программы в целевой ПЛК
| Глава | Что делаем |
|---|---|
| 13. Siemens — TIA Portal и PLCSIM Advanced | Импорт кода, загрузка программы и XML OPC UA |
| 14. CODESYS 3.5 — свой ПЛК или CODESYS Control | Импорт кода, символьная конфигурация, загрузка и XML |
| 15. MetaLab — подключение к целевому ПЛК | Привязываем прежние сценарии к адресам выбранного ПЛК |
| 16. MetaView Runtime — подключение к целевому ПЛК | Подключаем готовую визуализацию по OPC UA |
Главы 13 и 14 — альтернативы. Выберите среду своего ПЛК. Имитация и визуализация работают по уже знакомому порядку; меняются адреса и endpoint.
IV. Подключение HMI-панели и SCADA
| Глава | Что делаем |
|---|---|
| 17. MetaView — данные для HMI-панели и SCADA | Выбираем подключение, профили и получаем файлы |
| 18. WinCC Professional | Переносим теги, тревоги и тренды; подключаем скрипт |
| 19. Weintek и EasyBuilder Pro | Импортируем адреса и настраиваем подключение HMI-панели |
Выберите редактор своей визуализации. В главах о Weintek и WinCC берём файлы из результата генерации собственного проекта.
В таблицах руководства тире означает пустую ячейку, 1 в столбце Publish — включённый флажок. Имена параметров и теги выделены как код; их можно копировать в проект.