Для описания алгоритмов проверки значений тегов в правилах контроля процесса могут использоваться скрипты на языке программирования Lua. Lua-скрипты предоставляют возможности не только для проверки значений тегов, но и для добавления различных сведений в регистрируемые события и журналы работы процессов.
Lua-скрипт должен состоять из одной или нескольких функций. Имена функций должны быть уникальны среди всех правил с Lua-скриптами. Функция, с помощью которой отслеживаются значения тегов, называется триггерной функцией. Для регистрации события триггерная функция должна возвращать значение true
.
Если в скрипте указана переменная, она должна быть инициализирована либо в самом скрипте (для применения только в этом скрипте), либо в отдельном глобальном скрипте (для применения во всех правилах с Lua-скриптами). Глобальный скрипт также может содержать вспомогательные функции, которые можно использовать в правилах с Lua-скриптами.
Триггерная функция вызывается при изменении значения какого-либо тега, используемого в функции. Впервые функция вызывается при получении всех значений тегов, используемых в функции.
Для получения значений тега в коде функции используется запись вида:
tag'
основные_параметры_тега
[:
имя_поля
][@
модификатор
]'[.
направление_передачи
]
где:
основные_параметры_тега
– обязательные параметры, идентифицирующие тег в программе. Параметры разделяются двоеточием. Основные параметры представлены следующими параметрами из таблицы тегов:имя_поля
– имя поля в структуре полей тега, представленной параметром Структурные значения в таблице тегов. Если поле является вложенным в другие поля, его имя указывается вместе с именами всех родительских полей, разделенных двоеточием. Если параметр имя_поля
не указан, проверяется значение, которое является основным в структуре полей тега.модификатор
– определяет режим представления полученного значения. Предусмотрены следующие модификаторы:str
– полученное значение преобразуется в строковый тип.type
– в качестве значения передается название типа данных от полученного значения.loc
– в качестве значения передается закрепленное локализованное название для полученного значения (если локализованное название отсутствует, полученное значение преобразуется в строковый тип).Если модификатор не указан, передается само полученное значение. При этом тип данных значения не меняется.
направление_передачи
– задает направление передачи полученного значения. Направление передачи может быть задано одним из следующих параметров:R
– значение получено при чтении из устройства.W
– значение получено при записи в устройство.RW
– любое направление полученного значения. Если направление передачи не задано, то передается значение, полученное с любого направления.
Записи для получения значений тегов могут использоваться в составе выражений (например, присвоение значений переменным или сравнение значений).
Для выполнения различных действий с помощью Lua-скрипта вы можете использовать вспомогательные функции, поддерживаемые Сервером. Имена вспомогательных функций начинаются с символа подчеркивания _
.
Основные вспомогательные функции для добавления сведений через Lua-скрипты:
_AddEventParam('
имя_параметра
',
значение_параметра
)
Имя и значение параметра могут быть заданы произвольно. Для использования параметра и его значения в событиях этот параметр должен быть указан в параметрах типа события в виде $extra.<
имя_параметра
>
.
Filter
). В журнал вносится запись, заданная аргументом функции (переменной или константой):_WriteErrorLog(
аргумент_функции
)
_WriteWarningLog(
аргумент_функции
)
_WriteInfoLog(
аргумент_функции
)
_WriteDebugLog(
аргумент_функции
)
print(
аргумент_функции1
,
аргумент_функции2
,…)
Переменные или константы, заданные аргументами функции, разделяются в записи журнала символом табуляции.
Записи в журнале не создаются, если уровень записи ниже уровня ведения журнала, установленного для процесса.