Lua - скриптовый язык программирования.
Используется версия 5.3.5.
Поддерживаются стандартные библиотеки Lua: math, bit32, table, string.
Используется 32-битный тип данных для чисел, вместо 64-битного типа по умолчанию.
Книга: Роберту Иерузалимски. Программирование на языке Lua.
Функция определяет новую переменную:
VAR(строка_тип_переменной,строка_имя_переменной,таблица_опций)
строка_тип_переменной - тип переменной, может иметь значения:
строка_имя_переменной - строка с названием переменной, например, 'Diff_press_filter'.
таблица_опции - необязательный параметр, в котором можно задать не обязательные опции:
Также time_const для фильтра можно задать отдельной функцией:
FilterAI(var_name, time_const)
-- Например, чтобы выключить фильтр для отладки программы:
FilterAI('Т_нар_воздуха', 0)
VAR('DS','Diff_press_fan')
VAR('DS','Thermostat',{start_value="1"})
VAR('AN','Т_нар_воздуха')
VAR('AN','SP_prit',{backup=true,start_value="22"})
VAR('AL','АВАРИЯ_ТЕРМОСТАТА')
В программе Lua необходимо определить функцию вызова на каждом цикле:
function cycle()
end
Функция cycle() вызывается системой один раз в секунду.
Специальная таблица v обеспечивает чтение и запись переменных.
--Если определена переменная:
VAR('DS','Переменная')
--тогда чтение переменной:
local s = v['Переменная']
--или запись переменной:
v['Переменная'] = true
Для дискретных 'DS' переменных и аварий 'AL' используется тип Lua boolean, а именно значения true или false. Например:
v['ЗИМА'] = true
v['АВАРИЯ_ЗАСЛОНКИ'] = false
Для аналоговых переменных 'AN' используется тип Lua number, т.е число например:
v['КЛАПАН_ВОДЫ'] = 30.5
require - стандартная Lua функция для загрузки модулей. Список загруженных модулей появляется в редакторе-отладчике Lua. Модуль можно отлаживать также, как основную программу.
Обычно в модуле определяются (см. пример Lua программы в загрузках):
В программе определяются:
Несколько программ могут использовать одни и те же модули.
С помощью функций Bind* можно выполнить привязку переменной к терминалу модулей ввода вывода или переменной другой FBD или Lua программы, в том числе, и из другого контроллера.
Таблицу переменных модулей ввода вывода можно посмотреть в FBD меню: «Таблица переменных modbus.»
Для функций BindIn и BindInNV автоматически выполняется подписка на привязываемую удаленную переменную и при ее изменении, приходит новое значение.
Для функций BindOut, BindOutNV при изменении самой переменной в Lua программе автоматически происходит отправка в привязанную удаленную переменную.
При привязке указывается имя системы и имя переменной.
BindInNV(var_name,remote_system,remote_var_name)
BindOutNV(var_name,remote_system,remote_var_name)
--Примеры:
BindInNV('Т_нар_воздуха','П2', 'Т_нар')
BindOutNV('ВЫТ_ВЕНТ','В1','УДАЛЕННЫЙ_ПУСК')
BindIn(var_name, module_type, module_num, terminal)
BindOut(var_name, module_type, module_num, terminal)
--Примеры:
BindIn('Т_нар_воздуха','RKT-302', 1, 'AI3')
BindOut('ВЕНТИЛЯТОР','RKT-302', 1, 'DO1')
BindIn('Т_нар_воздуха','RKT-242', 1, 'AI1')
BindOut('ВЕНТИЛЯТОР','RKT-222', 2, 'DO1')
В результате формируется привязка к сетевым переменным:
Для модулей ввода-вывода:
Для RKT-302:
TransformAI(var_name, x1, x2, y1, y2)
Для модуля RKT-252:
Например:
--Для датчика температуры 0-160 градусов, 0-10 В:
TransformAI('Т_отопления', 0, 10000, 0, 160)
--Для датчика давления 0-6 атм, 4-20 мА:
TransformAI('Т_отопления', 2000, 10000, 0, 6)
set_mnemo(имя_файла)
-- Пример:
set_mnemo('pritok_3D.svg')
Copyright © 2023 | Москва | ООО «АОВ инженеры» | rktcontr.ru | тел. +7(985)681-58-00 | info@enaov.ru