Макрос - последовательность команд, алгоритм действий панели оператора, который можно использовать для выполнения задач не предусмотренных основным функционалом EasyBuilder.
Примерный список задач, для которых может понадобиться использование макроса:
- Таймер обратного отсчета для запуска/остановки технологических и других процессов.
- Преобразование данных из одних единиц измерения в другие: напряжение в температуру, ток в давление, Фаренгейты в Цельсии и т.д.
- Управление пользовательским интерфейсом: рисовать графики, открывать/закрывать окна, скрывать/отображать объекты, управлять анимацией.
- Собственный протокол передачи данных, которого еще нет в библиотеке из более чем 300 драйверов EasyBuilder. Например, можно подключить GSM-модем и управлять приемом/отправкой СМС-сообщений.
- Взаимодействие с внутренней базой данных рецептов SQLite: загрузка и сохранение данных в настраиваемом формате, выборка данных по SQL-запросу. Это может быть, например, база данных рецептов приготовления блюд в кухонной печи.
- Взаимодействие с внешней базой данных MySQL, или MS SQL Server: загрузка и сохранение данных в настраиваемом формате, выборка/выгрузка данных с помощью SQL. Это может быть, например, база данных предприятия, или склада. Панель может считывать штрих-коды, QR-коды, RFID-метки и загружать их в базу данных, или делать выборку данных по считанным кодам.
После приведенных практических примеров, обобщим - какие задачи выполняют макросы:
С помощью макросов можно автоматизировать процессы передачи, преобразования, сохранения и загрузки информации. Они могут выполнять сложные алгоритмы, не уступающие, или даже превосходящие возможности ПЛК. Поэтому, при разработке проекта для панели оператора Weintek у разработчика есть возможность не нагружать ПЛК сложными алгоритмами, оставив ему роль выполнения критичных ко времени операций, а использовать возможности панели по-максимуму. Таким образом, большую часть задач системы управления можно перенести в панель оператора и использовать более простые исполнительные устройства (ПЛК), или даже непрограммируемые модули ввода-вывода.
Макрос в EasyBuilder, это не только алгоритм, это еще и инструменты обеспечивающие работу этого алгоритма. Для каждого макроса создается таймер автоматического вызова и отдельный поток, в котором будет выполняться алгоритм только этого макроса. Таким образом, объекты-макросы в EasyBuilder работают параллельно и независимо друг от друга, предоставляя разработчику основные преимущества мультизадачной операционной системы.
Размер макросов в панелях Weintek
На размер макросов нет явного ограничения. Некоторые наши клиенты используют макросы длиной в 10000 строк.
Однако, есть ограничения на размер проекта, в зависимости от серии панелей Weintek. Таким образом, размер проекта со всеми макросами не может превышать эту величину.
Количество макросов не может превышать 1000 шт.
Список макросов
Каждый проект EasyBuilder содержит собственный набор макросов. Вызвать список можно из меню на вкладке “Проект”:
Здесь можно создавать, удалять и редактировать макросы проекта. Если есть макросы, которые вы хотите использовать в нескольких проектах, функциями Импорт/Экспорт их можно сохранять/загружать через отдельные файлы.
В списке, кроме имени объекта-макроса, отображается его идентификатор [ID] и атрибуты {I,P,S}. Атрибуты макроса имеют следующее значение:
- “I” - будет вызываться каждый раз при загрузке панели.
- “P” - задействует таймер для периодического вызова.
- “S” - может блокироваться битом адресного пространства.
Чтобы создать новый макрос, или изменить имеющийся, нажмите соответствующую кнопку - “Создать”, или ”Редактировать”, откроется редактор макросов.
В редакторе макросов можно изменить всё что касается конкретного объекта-макроса: его имя, атрибуты запуска и непосредственно код. Здесь же происходит проверка кода на наличие синтаксических ошибок, после внесения изменений следует нажать кнопку “Сохранить и скомпилировать”.
Запуск макроса
Иногда бывает, что новички, знакомясь с написанием макросов в EasyBuilder, сталкиваются с тем, что макрос не выполняет никаких действий. При этом на поверку оказывается, что макрос и не был запущен, а разработчик и не подумал его запускать, решив, что достаточно создать макрос и написать код. Перед тем как писать макрос, желательно заранее понимать, как он будет использоваться проектом, то есть как и когда он будет запускаться. От этого необходимо отталкиваться при написании кода.
Рассмотрим способы вызова макроса EasyBuilder доступные разработчику. Необходимо отметить, что все эти способы можно комбинировать и использовать одновременно, но, вызов макроса может быть заблокирован в случае, если предыдущий вызов еще не завершился.
Девять способов вызова макроса:
Способ 1 - Однократный вызов при старте панели.
Это один из атрибутов объекта-макроса, выбирается в редакторе.
![]() |
Полезный вариант для макросов инициализации, если нужно что-то загрузить в ПЛК, или выгрузить из энергонезависимой памяти. Еще один пример использования - макрос с вечным циклом. Макрос, который никогда не завершается, достаточно запустить один раз.
Способ 2 - Автоматический периодический вызов.
Это один из атрибутов объекта-макроса.
Макрос будет вызываться по таймеру с заданной периодичностью. Важно учитывать, что вызываемая функция должна завершаться до ее повторного вызова, иначе вызов будет блокироваться. Удобный вариант для процессов, требующих непрерывной обработки данных.
![]() |
Используя блокировку макроса, можно запускать и приостанавливать вызовы в нужный момент. Блокировка — это еще один атрибут объекта-макроса.
Способ 3 - Функциональная кнопка.
Одной из функций объекта “Функциональная кнопка” может быть вызов макроса. Вызов будет происходить каждый раз при нажатии кнопки пользователем. В атрибутах выбираем “Выполнить макрос” и имя макроса из выпадающего списка.
Способ 4 - Комбинированная кнопка.
Может выполнять последовательность действий, в том числе вызов макросов.
Способ 5 - Битовая кнопка.
Эта кнопка используется для изменения состояния бита, но также она может вызвать макрос при срабатывании.
Срабатывать кнопка может не только от нажатия пользователем, она может быть скрытым элементом и срабатывать от других условий.
Способ 6 - Битовый переключатель.
Этот объект реагирует только на нажатие. Вызов макроса можно привязать к конкретному изменению состояния бита.
Способ 7 - Вызов по триггеру.
Часто бывает необходимо управлять вызовом макроса через адресное пространство панели. Используйте ПЛК-триггеры для вызова макроса битом регистра панели, или ПЛК.
Режим триггера “Всегда активно если ON” будет запускать макрос каждые 500 миллисекунд при высоком уровне бита.
Способ 8 - Вызов из активного экрана.
В атрибутах окна на панелях всех серий, за исключением iP-серии, можно выбрать варианты запуска макросов на случай открытия, или закрытия окна, а также для циклического запуска. Период циклического запуска макроса фиксированный - 500 миллисекунд.
На панелях iP-серии этот функционал также может быть реализован, но другим способом. Для циклического вызова можно использовать собственный таймер объекта-макроса, а для вызова при открытии/закрытии окна можно использовать битовую кнопку с соответствующим атрибутом.
Способ 9 - Вызов из другого макроса.
Существует два способа вызова макроса из другого макроса: синхронный и асинхронный. Разница в том, что при синхронном вызове вызывающий макрос будет ждать завершения вызываемого макроса, прежде чем продолжить выполнение алгоритма. При асинхронном вызове вызывающий макрос продолжит выполнение алгоритма параллельно с вызываемым. Используйте функции SYNC_TRIG_MACRO и ASYNC_TRIG_MACRO соответственно для синхронного и асинхронного вызова.
Продолжение следует...