• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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. По тому так и вышло в конфиге... Типа "не стандарт"
 
Сверху Снизу