• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Modbus TCP / RTU RS-485 + WEB server

Dito85

New member
@pvvx, спасибо за Ваш труд! Отличный проект! RTC память проверил, все работает, данные сохраняются. Тестируем дальше
 

pvvx

Активный участник сообщества
RTC память проверил, все работает, данные сохраняются. Тестируем дальше
Скоро в web добавится websocket... Начал дописывать его. Можно будет обновлять данные на web страницах проще и быстрее, ну и другое...
Повесил один модуль на тест "вечного соединения" - http://esp8266.ru/forum/threads/modbus-rtu-rs-485.529/page-3#post-14584
Сейчас уже таймер (64 бита аппаратный MacTimer) 0x0017D2B2D92C/60000000/60=28.421996 часов с включения питания модуля.
100729 чтений Modbus pull (1 раз в секунду), 6 ошибок так и стоят (поймало где-то :)). Это 28 часов ТСР соединения без разрыва...

MacTimer будет в modbus переменных в следующей версии...
 
Последнее редактирование:

Dito85

New member
@pvvx, маленький вопросик. В настройках ModBus при выборе скорости 19200, скорость устанавливается 19203. Из за чего такое происходит?
 

pvvx

Активный участник сообщества
@pvvx, маленький вопросик. В настройках ModBus при выборе скорости 19200, скорость устанавливается 19203. Из за чего такое происходит?
Показывает точную скорость при делении частоты 80MHz подаваемую на UART. 80000000/4166 = 19203.072492. Чтобы было известно отклонение от желаемой.
 

Dito85

New member
@pvvx, а в качестве modbus slave, для тестирования, какой программой пользуетесь? Или железку какую то опрашиваете?
 

pvvx

Активный участник сообщества
@pvvx, а в качестве modbus slave, для тестирования, какой программой пользуетесь? Или железку какую то опрашиваете?
Железку, свою и пром.образцы... Разное короче. Мои железки дают ответ через 3.5 символа - т.е. скоростные... Промышленные - всегда тормозят и часто нарушают стандарты Modbus (относится ко всем брендам).
Бесплатных программ теста нет. Есть временно бесплатные - их и привожу. http://www.modbustools.com/index.html
В ней тоже не всё хорошо. Но, как говорят, "с пивом потянет" :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Добавлен websocket, и 64-х битный аппаратный MacTimer в таблицу переменных modbus.
TstWebSocket.gif
Все переменные работают и через websocket.
Доступ к websocket-у осуществляется через запрос файла web.cgi. Пример адреса на картинке. Таймауты соединения в меню "System setup", если хотите тестировать запросы вручную на одном соединении (они там по умолчанию = 5 сек!) или делайте ping...
 
Последнее редактирование:

MagISTRa

New member
@pvvx Взял заново проект, поменял SDK Вручную. Компилятор выдает :

collect2.exe: error: ld returned 1 exit status

../Makefile:289: recipe for target '.output/eagle/image/eagle.app.v6.out' failed

mingw32-make[1]: *** [.output/eagle/image/eagle.app.v6.out] Error 1

mingw32-make[1]: Leaving directory 'C:/Users/Admin/workspace/esp8266rs485/app'

C:/Users/Admin/workspace/esp8266rs485/Makefile:238: recipe for target '.subdirs' failed

mingw32-make.exe: *** [.subdirs] Error 2

Где я скосячил ?
 

MagISTRa

New member
@pvvx
Тут отключил внешний пакет - оставил как у Вас -
[HASHTAG]#PATH[/HASHTAG] := $(XTENSA_TOOLS_ROOT);$(PATH)
# base directory of the ESP8266 SDK package, absolute
#SDK_BASE?= c:/Espressif/ESP8266_SDK

Получаю при сборке -
(.irom0.text+0xd6f): undefined reference to `aes_wrap'
collect2.exe: error: ld returned 1 exit status
../Makefile:289: recipe for target '.output/eagle/image/eagle.app.v6.out' failed
mingw32-make[1]: Leaving directory 'C:/Users/Admin/workspace/esp8266rs485/app'
mingw32-make[1]: *** [.output/eagle/image/eagle.app.v6.out] Error 1
C:/Users/Admin/workspace/esp8266rs485/Makefile:238: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2
 

pvvx

Активный участник сообщества
@pvvx
Тут отключил внешний пакет - оставил как у Вас -
[HASHTAG]#PATH[/HASHTAG] := $(XTENSA_TOOLS_ROOT);$(PATH)
# base directory of the ESP8266 SDK package, absolute
#SDK_BASE?= c:/Espressif/ESP8266_SDK
SDK_BASE? - не нужна вообще.
Получаю при сборке -
undefined reference to `aes_wrap'
Только что скорпировал zip. - какая-то раз-синхронизация в файле esp8266rs485\app\sdklib\Makefile Что-то его никак не обновить в Git :) Счас пробьем...
 

pvvx

Активный участник сообщества
Спасибо.. буду пробовать
Отвалилась esp8266rs485\lib\libcrypto.a.
На месте уже - в git.
Коды, и всё кроме файла user_config.h в esp8266web и esp8266rs485 одинаковы.
Различие в названии и описании, ну и htm разные... В esp8266web больше хламу - можно было скопировать и от туда, заменив user_config.h. :)
 

pvvx

Активный участник сообщества
Вот думаю - может их слить и сделать два каталога WEBFilesTCP2UART и WEBFilesMDBRS-485 типа... А то надоело копировать - постоянно что теряю...

И как-бы предупреждение - с SDK 1.5.2 тестов вообще ещё не производилось. Пишите что криво будет, быстрее настрою. Websocket тоже пока в неокончательном варианте. Bin никуда не прикручен и т.д. Пока не придумал как его лучше слить с остальным - т.е. всё в процессе.
 
Последнее редактирование:

Dito85

New member
Постоянно сыпятся в транзактор ошибки при опросе. Сначала грешил на max485 он у меня 5 вольтовый был. Заказал ADM-ку на 3,3. Сегодня поставил и начал тестить. Ничего не изменилось (. Только процентов 15 ответов приходит от slave-а. В роли slave пробовал и программу ModSim32 и контроллеры GE-IP и еще пару устройств попавшихся под руку. Снифером вижу, что запрос на Slave приходит, вижу корректный ответ, но ESP его не воспринимает.(
 

pvvx

Активный участник сообщества
Постоянно сыпятся в транзактор ошибки при опросе. Сначала грешил на max485 он у меня 5 вольтовый был. Заказал ADM-ку на 3,3. Сегодня поставил и начал тестить. Ничего не изменилось (. Только процентов 15 ответов приходит от slave-а. В роли slave пробовал и программу ModSim32 и контроллеры GE-IP и еще пару устройств попавшихся под руку. Снифером вижу, что запрос на Slave приходит, вижу корректный ответ, но ESP его не воспринимает.(
Установите правильные параметры соединения - задержки, тип/кол-во стоп бит...
---
Нашлась ошибка - не на тот порт скорость устанавливалась... Скоро исправлю прошивки. Исходники уже поправил. Но не думаю что это у вас связано с данным делом. Оно дает ошибку в прошивке TCP2UART.
 
Последнее редактирование:

Dito85

New member
Разобрался в чем дело. Сбило с толку настройка четности (parity) у меня стоит none, а перечитав ветку понял, что при такой четности 2 стоп бита. Обычно стоп биты настраиваются отдельно. Поставил на slave-е 2 стоп бита и всё пошло. Оставлю на пару суток тестироваться. Спасибо!
 

pvvx

Активный участник сообщества
Разобрался в чем дело. Сбило с толку настройка четности (parity) у меня стоит none, а перечитав ветку понял, что при такой четности 2 стоп бита. Обычно стоп биты настраиваются отдельно. Поставил на slave-е 2 стоп бита и всё пошло. Оставлю на пару суток тестироваться. Спасибо!
По стандарту Modbus всегда 11 бит символ. При отключенном parity, должно быть 2 стоп бита. Но все пользуются 1 стоп бит без parity. По тому так и вышло в конфиге... Типа "не стандарт"
 
Сверху Снизу