WiFi-шлюз для опроса MODBUS RTU устройств

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

THK
Сообщения: 1
Зарегистрирован: Пт май 12, 2017 12:52 pm
Благодарил (а): 0
Поблагодарили: 0

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение THK » Пт май 12, 2017 1:10 pm

Добрый день!
Спасибо за отличную идею. Второй день занимаюсь с Вашим скриптом, сделал некоторые доработки, также появился один вопрос. Как побороть ошибку

Код: Выделить всё

PANIC: unprotected error in call to Lua API (init.lua:173: address in use) 
Вот эта строка:

Код: Выделить всё

MBserver:listen(MODBUS_ServerPort, function(c) 
Возникает не часто и в основном после перезаливки скрипта в ESP. Гугл побороть проблему не помог...
ElectronicsInFocus писал(а):integer или float - без разницы
Нужна прошивка с поддержкой float, иначе возникает ошибка в строке

Код: Выделить всё

elseif (RS485_StopBits == uart.STOPBITS_1_5) then Bits = Bits + 1.5
init.rar
(2.08 КБ) 273 скачивания
ElectronicsInFocus
Сообщения: 38
Зарегистрирован: Пт апр 22, 2016 6:15 pm
Откуда: Уфа / Россия
Благодарил (а): 5 раз
Поблагодарили: 6 раз
Контактная информация:

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение ElectronicsInFocus » Ср май 17, 2017 11:57 am

THK писал(а):

Код: Выделить всё

PANIC: unprotected error in call to Lua API (init.lua:173: address in use)
Вот эта строка:

Код: Выделить всё

MBserver:listen(MODBUS_ServerPort, function(c)
Возникает не часто и в основном после перезаливки скрипта в ESP. Гугл побороть проблему не помог...
Видимо если сервер уже был запущен (при прошлом запуске скрипта), то при новом запуске выдаётся эта ошибка, т.к. этот порт уже прослушивается
THK писал(а):
ElectronicsInFocus писал(а):integer или float - без разницы
Нужна прошивка с поддержкой float, иначе возникает ошибка в строке

Код: Выделить всё

elseif (RS485_StopBits == uart.STOPBITS_1_5) then Bits = Bits + 1.5
init.rar
Согласен
Vasily7
Сообщения: 18
Зарегистрирован: Ср ноя 16, 2016 8:07 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение Vasily7 » Пн янв 08, 2018 9:11 pm

Собрал сборку с float
(модули bit file GPIO net node timer UART WiFi). Залил скрипт. Пробовал оба ElectronicsInFocus и THK
В обоих вариантах выдает ошибку на строке
wifi.sta.config(WIFI_SSID, WIFI_PASS)

WIFI_SSID, WIFI_PASS забил свои

WIFI_SSID = "Vvv"
WIFI_PASS = "Togetho2388217"

init.lua:33: bad argument #1 to 'config' (config table not found!)
stack traceback:
[C]: in function 'config'
init.lua:33: in main chunk
[C]: in function 'dofile'
stdin:1: in main chunk

Библиотечная фунция поменялась? Про NodeMCU узнал 2 дня назад.
Как правильно?
ElectronicsInFocus
Сообщения: 38
Зарегистрирован: Пт апр 22, 2016 6:15 pm
Откуда: Уфа / Россия
Благодарил (а): 5 раз
Поблагодарили: 6 раз
Контактная информация:

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение ElectronicsInFocus » Вт янв 09, 2018 1:40 pm

Vasily7 писал(а):Собрал сборку с float
(модули bit file GPIO net node timer UART WiFi). Залил скрипт. Пробовал оба ElectronicsInFocus и THK
В обоих вариантах выдает ошибку на строке
wifi.sta.config(WIFI_SSID, WIFI_PASS)

WIFI_SSID, WIFI_PASS забил свои

WIFI_SSID = "Vvv"
WIFI_PASS = "Togetho2388217"

init.lua:33: bad argument #1 to 'config' (config table not found!)
stack traceback:
[C]: in function 'config'
init.lua:33: in main chunk
[C]: in function 'dofile'
stdin:1: in main chunk

Библиотечная фунция поменялась? Про NodeMCU узнал 2 дня назад.
Как правильно?
Да, в nodemcu поменяли API
В документации есть пример как теперь инициализировать wifi: https://nodemcu.readthedocs.io/en/maste ... ules/wifi/
См. примеры к команде wifi.sta.config()
Anton
Сообщения: 24
Зарегистрирован: Вс дек 27, 2015 9:53 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение Anton » Вс июн 24, 2018 11:50 pm

Вылетает ошибка на строчке

local rtu_body = string.sub(paket, 7, #paket)

что необходимо поправить???
ElectronicsInFocus
Сообщения: 38
Зарегистрирован: Пт апр 22, 2016 6:15 pm
Откуда: Уфа / Россия
Благодарил (а): 5 раз
Поблагодарили: 6 раз
Контактная информация:

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение ElectronicsInFocus » Пн июн 25, 2018 8:12 am

Anton писал(а):
Вс июн 24, 2018 11:50 pm
Вылетает ошибка на строчке

local rtu_body = string.sub(paket, 7, #paket)

что необходимо поправить???
Текст ошибки можете привести?
Vasily7
Сообщения: 18
Зарегистрирован: Ср ноя 16, 2016 8:07 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение Vasily7 » Вс июл 01, 2018 3:09 pm

Сборка на SDK 2.2.1(cfd48f3). В версии с float.
при загрузке
tmr0 255 255 с интервалом в 5 сек
видимо срабатывает строка tmr.alarm(0, 5000, tmr.ALARM_AUTO, function()
Точка присутствует пароль проверял несколько раз.Пробовалось на двух esp результаты аналогичны.
Скрипт https://cloud.mail.ru/public/4kec/heqQxWEfi
Что не так делаю?
ElectronicsInFocus
Сообщения: 38
Зарегистрирован: Пт апр 22, 2016 6:15 pm
Откуда: Уфа / Россия
Благодарил (а): 5 раз
Поблагодарили: 6 раз
Контактная информация:

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение ElectronicsInFocus » Вс июл 01, 2018 4:30 pm

Vasily7 писал(а):
Вс июл 01, 2018 3:09 pm
Сборка на SDK 2.2.1(cfd48f3). В версии с float.
при загрузке
tmr0 255 255 с интервалом в 5 сек
видимо срабатывает строка tmr.alarm(0, 5000, tmr.ALARM_AUTO, function()
Точка присутствует пароль проверял несколько раз.Пробовалось на двух esp результаты аналогичны.
Скрипт https://cloud.mail.ru/public/4kec/heqQxWEfi
Что не так делаю?
код 255, который возвращает wifi.sta.status() означает, что WiFi в статусе "Not in STATION mode"
wifi.setmode(wifi.STATION) не забыли?
Vasily7
Сообщения: 18
Зарегистрирован: Ср ноя 16, 2016 8:07 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение Vasily7 » Пн июл 02, 2018 10:39 am

Действительно, вставил
wifi.setmode(wifi.STATION)
esp подключился. На пинг отвечает.
Но почему-то, ответ от слейва ошибочный.
Конвертер подключен к слейву через драйвер rs485. На ногах драйвера импульсы нормальные. Управление приемом-передачей драйвера присутствует.
Использую 3,4 функцию для опроса устройства. Запрос верный, (смотрю в буфере микроконтроллера из под отладчика) слейв отвечает, но ответ через конвертер приходит неверный. Хотя параллельно сниффером на rs485 смотрю - ответ слейвом формируется верный. По RS485 (без конвертера) на таких же запросах (адреса и количество регистров идентичны) слейв нормально опрашивается. Пробовал на двух esp.
лог
мастер (MODBUS-TCP) 0a 31 00 00 00 06 01 03 00 00 00 01
ответ 0a 0a 00 00 00 05 и не меняется.
При выключении слейва ответа нет .
Пробовал менять задержки между приемом запроса и выдачей ответа у слейва. Результат аналогичный. Пробовал на скоростях 2400 и 9600.
Последний раз редактировалось Vasily7 Пн июл 02, 2018 1:46 pm, всего редактировалось 1 раз.
Vasily7
Сообщения: 18
Зарегистрирован: Ср ноя 16, 2016 8:07 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: WiFi-шлюз для опроса MODBUS RTU устройств

Сообщение Vasily7 » Пн июл 02, 2018 10:42 am

На каких функциях модбаса тестировалось?
Ответить