Время работы: Пн-Чт 9:00-18:00, Пт 9:00-17:00

Ваш список сравнения:

Сравнить Закрыть
+


Звонок    Закрыть
Корзина


Оформить     Очистить
1 USD = 77.5104 РУБ
Отобразить цены в РУБ
 
Кол-во:

OK   Отмена


Сообщение
body

Справочник по макросам в EasyBuilder Pro на русском

15.12.2020

Макросы обеспечивают дополнительную функциональность, которая может понадобиться вашему приложению.

Макросы - это автоматизированные последовательности команд, которые выполняются во время выполнения. Макросы позволяют выполнять такие задачи, как сложные операции масштабирования, обработка строк и взаимодействие пользователя с проектом. Здесь описываются синтаксис, использование и методы программирования макрокоманд.

В этом окне макросы можно:

  • создавать макросы;
  • удалять макросы;
  • редактировать/править макросы;
  • делать импорт/экспорт макросов в файл *.ebm;
  • вызвать окно Библиотеки макросов;
  • защитить макросы от декомпиляции паролем;
  • задать формат адреса переменных для доступа к шестнадцатеричной части адреса (DDDDh вместо DDDDdd).

Редактор макросов

Окно редактора макросов.


Синтаксис макросов

Константы

Константы являются фиксированными значениями и могут быть записаны непосредственно в операторы. Формат следующий:

Тип константы

Пример

Примечание

десятичное целое число

345, -234, 0, 23456

шестнадцатеричный

0x3b, 0xffff,

Должна начинаться 0x

ASCII

‘a’, “data”, “name”

символ должен быть заключен в одинарные кавычки, а строки в двойные

Булев, логический

true, false

Пример некоторых операторов с использованием констант:

macro_command main()

short A, B // Объявление переменных типа  short  A и B.

A = 1234

B = 0x12 // 1234 и 0x12 – константы

char st1[11] = "qwerty"  // qwerty – это строка-константа

char st2[11] = {'q','w','e','r','t','y'}    // константа qwerty задана как массив символов

char vb22    = 'w'   // w – это символ-константа

end macro_command

Переменные

Переменные - это имена, которые представляют информацию. Информация может быть изменена при изменении переменной с помощью операторов.

Правила именования переменных:

  • имя переменной должно начинаться с буквы;
  • имена переменных длиннее 32 символов не допускаются;
  • зарезервированные слова не могут использоваться в качестве имен переменных.

Существует 8 различных типов переменных, 5 типов данных со знаком и 3 для беззнаковых типов данных:

Тип переменной

Описание

Диапазон допустимых значений

Bool

1 бит (1 бит)

0 или 1

Char

8 бит (1 байт)

от -128 до 127

Short

16 бит (1 слово)

от -3276 8 до 32767

Int

32 бит (двойной слово)

от ?2 147 483 648 до 2 147 483 647

Float

32 бит (двойное слово)

Unsigned Char

8 бит (1 байт)

от 0 до 255

Unsigned Short

16 бит (1 слово)

от 0 до 65535

Unsigned Int

32 бита (двойное слово)

от 0 до 4 294 967 295

Объявление переменных

Перед использованием переменные должны быть объявлены. Чтобы объявить переменную, укажите тип перед именем переменной.

Объявление массивов

Макросы поддерживают одномерные массивы (отсчитываемый от нуля индекс). Чтобы объявить массив переменных, укажите тип и имя переменной, а затем число переменных в массиве, заключенное в скобки «[]». Массивы имеют длину от 1 до 4096 переменных. (Макрос поддерживает только до 4096 переменных).

Пример:
int a[10]

short b[20], switch[30]

float pressure[15]

Минимальный индекса массива равен 0, а максимальный индекс массива равен (размер массива - 1).

Пример:

char data[100] // Размер массива равен 100

Следовательно: минимальный индекс массива - «data[0]», а максимальный индекс массива - «data[99]», 100 - 1 = 99.

Инициализация переменных и массивов

Есть два способа инициализации переменных:

  • в теле функции после объявления, используя оператора присваивания (=)

int a

float b[3]

a = 10

b[0] = 1

  • сразу при объявлении

char a = '5', b = 9

Объявление массивов - особый случай. Весь массив можно инициализировать во время объявления, заключив значения, разделенные запятыми, в фигурные скобки «{}».

Пример:

float data[4] = {11, 22, 33, 44} // Следовательно, data[0] = 11, data[1] = 22….


Мастер добавления функции в макрос

Мастер позволяет:

  • добавлять встроенные функции;
  • добавлять функции из пользовательской библиотеки;
  • задать параметры функции с помощью выпадающих меню;
  • получить краткую справку по встроенной функции и пример ее использования.

Встроенные функции


EasyBuilder Pro имеет набор встроенных функций для поиска и передачи данных в ПЛК, управления данными и математических функций.

Описание функций можно прочитать в Руководстве пользователя Easy Builder Pro в главе 18.7 или во встроенной справке в Мастере добвления функций (в момент вставки функции Мастером).

Математические

Преобразованеи данных

Манипулирование данными

Преобразование битов

Связь

Операции со строками

Работа с рецептами

Разное

ACOS

ASCII2DEC

FILL

GETBIT

ADDSUM

StringBin2DecAsc

StringIncluding

RecipeGetData

ASYNC_TRIG_MACRO

ASIN

ASCII2FLOAT

HIBYTE

INVBIT

CRC

StringBin2HexAsc

StringInsert

RecipeQuery

Beep

ATAN

ASCII2HEX

HIWORD

SETBITOFF

DELAY

StringCat

StringLength

RecipeQueryGetData

FindDataSamplingDate

COS

BCD2BIN

LOBYTE

SETBITON

GetCTS

StringCompare

StringMid

RecipeQueryGetRecordID

FindDataSamplingIndex

COT

BIN2BCD

LOWORD

GetData

StringCompareNoCase

StringReverseFind

FindEventLogDate

CSC

DEC2ASCII

SWAPB

GetDataEx

StringCopy

StringSet

FindEventLogIndex

CUBERT

FLOAT2ASCII

SWAPW

GetError

StringDecAsc2Bin

StringSetEx

SYNC_TRIG_MACRO

LOG

HEX2ASCII

INPORT

StringDecAsc2Float

StringToLower

TRACE

LOG10

INPORT2

StringExcluding

StringToReverse

POW

OUTPORT

StringFind

StringToUpper

RAND

PURGE

StringFindOneOf

StringTrimLeft

SEC

SetData

StringFloat2DecAsc

StringTrimRight

SIN

SetDataEx

StringGet

SQRT

SetRTS

StringGetEx

TAN

XORSUM

StringHexAsc2Bin


Функции

Функции полезны для уменьшения повторяющегося кода. Функция должна быть определена перед использованием и поддерживает любые переменные и типы операторов.

Функция вызывается путем помещения ее имени, за которым следуют параметры в круглых скобках, в основной макро-функции.

После выполнения функции она возвращает значение в главную функцию, где оно используется в качестве присвоения или условия. Тип возвращаемого значения не обязателен при определении функции, а это означает, что функция не обязана возвращать какое-либо значение.

Параметры также могут отсутствовать в определении функции, в то время как функции не нужно брать какие-либо параметры из основной функции.

Определение функции, возвращающей значение:

sub тип <имя> [(параметры)]

Объявление локальных переменных

[тело функции]

[return [значение]]

end sub

Пример:

sub int Add(int x, int y)

int result

result = x + y

return result

end sub

macro_command main()

int a = 10, b = 20, sum

sum = Add(a, b)

end macro_command

Или:

sub int Add()

int result, x = 10, y = 20

result = x + y

return result

end sub

macro_command main()

int sum

sum = Add()

end macro_command

— Определение функции, не возвращающей никакого значения:

sub <имя> [(параметры)]

Объявлене локальных переменных

[тело функции]

end sub

Пример:

sub Add(int x, int y)

int result

result = x + y

end sub

macro_command main()

int a = 10, b = 20

Add(a, b)

end macro_command

Или:

sub Add()

int result, x = 10, y = 20

result = x + y

end sub

macro_command main()

Add()

end macro_command

Описание синтаксиса ?

  • sub -> Должен использоваться для начала функционального блока.
  • тип -> Необязательно. Это тип данных значения, возвращаемого функцией. Функциональный блок не всегда необходим для возврата значения.
  • (параметры) -> Необязательны. Параметры содержат значения, которые передаются функции основным макросом. Переданные параметры должны иметь свой тип, объявленный в поле параметра и присвоенные имени переменной.

Пример: sub int MyFunction (int x, int y). x и y будут целыми числами, переданными функции основным макросом. Эта функция вызывается оператором, который выглядит примерно так:

ret = MyFunction (456, pressure), где «pressure» должно быть целым числом в соответствии с определением функции.

Обратите внимание, что вызывающая инструкция может передавать функции жестко закодированные значения или переменные. После выполнения этой функции целочисленные значения возвращаются в «ret».

Объявление локальных переменных -> Переменные, которые используются в функциональном блоке, должны быть объявлены первыми. Это в дополнение к переданным параметрам. В приведенном выше примере x и y - переменные, которые может использовать функция. Глобальные переменные также доступны для использования в функциональном блоке.

[тело функции] -> список операторов, код.

[return [значение]] -> Необязательно. Используется для возврата значения вызывающей инструкции. Значение может быть константой или переменной. Return также завершает выполнение функционального блока. Функциональный блок не всегда необходим для возврата значения, но, когда тип возврата определяется в начале определения функции, необходима команда возврата.

end sub -> Должен использоваться для завершения функционального блока.


Библиотека макросов

Откройте проект в программном обеспечении для программирования, файл библиотеки функций по-умолчанию будет считан автоматически и информация о функции будет загружена в него.

В этот момент, если вызывается пользовательская функция, сначала необходимо импортировать соответствующий файл *.mlb.

— Имя файла библиотеки функций по умолчанию: MacroLibrary (без расширения имени файла)

— Каталог библиотеки функций: каталог_установки_программного_обеспечения EasyBuilder\ library (папка)

\library (папка) содержит два типа файлов библиотеки функций:

  • файл без расширения: MacroLibrary, Библиотека Функций по-умолчанию для программного обеспечения, которое следует читать в начале.
  • файл с расширением (* .mlb): например, «math.mlb». Файлы для чтения/записи при импорте/экспорте пользователями. Эти файлы переносимы и могут быть вызваны из папки при необходимости.


Как выполнить макрос
_______________________________________________________________________________________________________________________________

Есть несколько способов выполнить макрос:

С помощью объекта Управления ПЛК

1. Откройте объект Управления ПЛК и установите для атрибута значение «Выполнить макропрограмму».

2. Выберите макрос по имени. Выберите бит и выберите условие запуска для запуска макроса. Макрос будет повторно запускаться, пока выполняется условие. Чтобы гарантировать, что макрос будет запускаться только один раз, рассмотрите возможность фиксации бита триггера, а затем сброса условия триггера в макросе.

С помощью объекта Битовый переключатель

1. На вкладке «Общие» диалогового окна «Битовый переключатель» выберите параметр «Выполнить макрос».

2. Выберите макрос для выполнения. Макрос будет выполнен один раз при нажатии кнопки.

С помощью объекта Функциональная кнопка

1. На вкладке «Общие» диалогового окна «Функциональная кнопка» выберите параметр «Выполнить макрос».

2. Выберите макрос для выполнения. Макрос будет выполнен один раз при нажатии кнопки.

Механизм выполнения макросов

Последовательное выполнение нескольких макросов.

Макросы выполняются в разных потоках, чтобы избежать влияния. Но если разные макросы читают или записывают один и тот же адрес в одно и то же время (например, с помощью команд GetData(), SetData()), макрос с меньшим порядковым номером будет выполнен первым.

Последовательность нескольких сигналов запуска одного и того же макроса.

После запуска макроса любым другим сигналам запуска этого же макроса будет отказано. Следовательно, макрос не будет запускаться повторно.

Последовательность сигналов запуска макроса от Функциональной кнопки и Бита уведомления.

[Запуск от Функциональной кнопки] Непосредственно отправляет команду на выполнения макроса.

[Запуск по Биту уведомления] Только когда состояние бита уведомления соответствует условию запуска, HMI отправляет команду на выполнение макроса.

Как будет реагировать выполняемый макрос, когда запускаются другие макросы?

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


Некоторые примечания об использовании макроса

Максимальный объем хранения локальных переменных в макросе составляет 4 Кбайт. Итак, максимальный размер массива для разных типов переменных следующий:

  • Char var 1 [4096]
  • bool var 2 [4096]
  • short var 3 [2048]
  • int var 4 [1024]
  • float var5 [1024]

  • В проекте можно использовать не более 255 макросов.
  • Макрос может вызвать блокировку HMI. Возможные причины:
    • макрос содержит бесконечный цикл без связи с ПЛК;
    • размер массива превышает размер памяти макроса.
  • Из-за задержек по связи с ПЛК макрос может выполняться медленнее, чем ожидалось. Кроме того, слишком много макросов может замедлить обмен данными с ПЛК.

Как отлаживать с помощью функции TRACE

С помощью макро функции TRACE и EasyDiagnoser можно проверить содержание варианта.

Следующие шаги демонстрируют, как использовать функцию TRACE.

Шаг 1. Создайте функцию TRACE, как показано ниже:

macro_command main()

short a

GetData(a, "Local HMI", LW, 0, 1)

a = a + 1

SetData(a, "Local HMI", LW, 0, 1)

TRACE("LW0 = %d", a)

end macro_command

Шаг 2. Создайте объект числового дисплея (LW-0) и объект функциональной клавиши (выполнить макрос) в проекте.

Шаг 3. Скомпилируйте проект и загрузите проект в HMI или запустите моделирование на ПК.

Шаг 4. Если запустить моделирование на ПК, в окне моделирования щелкните правой кнопкой мыши и выберите «Запустить EasyDiagnoser».

Если вы загрузили проект в HMI, запустите EasyDiagnoser.exe и выберите HMI.

Шаг 5. Когда EasyDiagnoser успешно подключит HMI, выполнение макроса обнаружит диалоговое окно [Вывод], в котором отображается результат выполнения функции TRACE.

Примечание. Системный регистр LB-9059 используется для отключения функции TRACE. Когда этот регистр установлен в положение ON, функция TRACE не выводит данные в EasyDiagnoser.