Специальные системы mb*, которые не объявляются в net.cfg, а определяются в файле имя_щита.mb_cfg.
Эти системы не видны в веб-диспетчеризации и доступны обычным системам только из этого же контроллера.
Предназначены для выполнения modbus rtu, modbus tcp запросов.
Пример программы Lua с ПЧ Danfoss VLT FC 51.
Первая mb система зарезервированна для опроса модулей ввода-вывода RKT с помощью встроенного интерфейса RS-485. Исходный код первой системы.
Модули добавляются в RKT-soft, раздел Modbus cfg.
Первую систему можно отключить, чтобы использовать встроенный интерфейс RS-485 для других mb систем (не запускать систему).
Если включить: доп. устройства (программа), то можно подключить добавочные устройства для запуска вместе с модулями RKT на встроенном интерфейсе RS-485 "internal" в певой mb системе. См. подключение дополнительных устройств к первой системе модулей RKT.
Функция определяет новую переменную:
VAR(строка_тип_переменной,строка_имя_переменной,таблица_опций)
строка_тип_переменной - тип переменной, может иметь значения:
строка_имя_переменной - строка с названием переменной, например, 'DI1.module1'.
таблица_опции - необязательный параметр, в котором можно задать не обязательные опции:
Сначала, на верхнем уровне программы надо определить все переменные с помощью VAR().
Далее необходимо определить функцию run(), которая вызывается один раз:
function run()
end
В функции run() необходимо организовать бесконечный цикл для выполнения запросов modbus.
Бесконечный цикл функции run() должен прерываться для сетевого взаимодействия с другими системами, для обмена переменными, с помощью функции:
wait_from_net_and_sleep(pause_ms)
pause_ms - время задержки в миллисекундах.
Только с помощью этой функции нужно организовывать задержки между запросами.
Специальная таблица v обеспечивает чтение и запись переменных.
--Если определена переменная:
VAR('DS','Переменная')
--тогда чтение переменной:
local s = v['Переменная']
--или запись переменной:
v['Переменная'] = true
Как для обычных систем Lua.
Предназначена для отладки. Выводит сообщение в нижнее окно RKT-soft.
Предназначена для получения времени в миллисекундах с начала работы контроллера. Используется для замеров например полного цикла опроса.
В библиотеке Lua-modbus вместо функции new_rtu надо вызывать глобальную функцию:
Создать контекст Modbus/RTU — глобальная функция
rkt_new_rtu (device, baud, parity, databits, stopbits)
Параметры:
device - устройство (обязательно) - "internal" - для встроенного в контроллер RS-485
baud - Скорость передачи данных (бод) , по умолчанию 19200.
parity - По умолчанию четность равна ЧЕТНОМУ значению
По умолчанию databits равно 8.
По умолчанию значение stopbits равно 1.
Возвращает:
Контекст Modbus, готовый к использованию.
Пример:
local ctx = rkt_new_rtu("internal", 9600, 'N', 8, 1) -- укажите свой порт и настройки
-- Подключение к устройству
local ok, err = ctx:connect()
if not ok then
modbus.close(ctx)
error("Ошибка подключения к устройству")
end
rkt_log("Подключение к преобразователю частоты успешно")
К контроллеру RKT-202 или RKT-302 можно подключить только один USB-RS485 преобразователь.
Если нужно подключить несколько USB-RS485 преобразователей, надо использовать активный USB HUB.
Чтобы определить параметр device для функции rkt_new_rtu для USB-RS485 преобразователей, надо нажать кнопку
Поиск RS485 интерфейсов в RKT-soft, редактор mb_cfg.
Не использовать mb.new_rtu (device, baud, parity, databits, stopbits),
а использовать глобальную функцию rkt_new_rtu(device, baud, parity, databits, stopbits).
Реализовано на основе:
https://github.com/etactica/lua-libmodbus
Сначала, на верхнем уровне программы надо определить все переменные с помощью VAR(), они будут добавлены к переменным модулей RKT.
Далее необходимо определить функцию add_run(ctx), которая вызывается из mb системы модулей RKT в цикле:
function add_run(ctx)
end
Внути функции add_run выполнять необходимые modbus запросы.
После modbus запроса необходимо вызвать функцию wait_from_net_and_sleep(pause_ms) с pause_ms > 4 мс,
рекомендуется 20мс.
Copyright © 2023 | Москва | ООО «АОВ инженеры» | rktcontr.ru | тел. +7(985)681-58-00 | info@enaov.ru