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

ModBus RTU (RS-485)

pvvx

Активный участник сообщества
сколько реально получилось пакетов в секунду, на скорости 115200 к примеру ?
Сколько написано, столько и получите.
Время приема/передачи пакета по Modbus RTU: 0.00175 сек пауза + (кол-во байт в пакете)*11/115200 сек.
и какая была топология, если дошло до реализации ? PC-WiFiроутер- ESP8266-RTUslave ?
ESP8266 как slave или master на шине Modbus RTU (RS-485) с возможностью внешних запросов к переменным Modbus в ESP8266 по WiFi через Modbus TCP порт как клиент или сервер. Т.е. почти ПЛК. К примеру задаем сканирование блока переменных на шине Modbus RTU (RS-485) и читаем это по TCP. Так-же и другие комбинации. Все варианты описывать долго.
 

Dmitry P

New member
прошивка "зависает" на второй-третий день. И эта и TCP-UART.
1. 485 прошивка просто залита в ESP-07 с минимальной обвязкой, читаю через TCP 1100 регистры. на второй-третий день нет ни линка, нет информации по debug порту, нет точки доступа.
Поставил еще раз, через часа четыре отпал modbus. Сделал скрины
2 TCP-UART при работе с контроллером по rs-232 зависает тоже на вторые сутки.
как можно подробнее посмотреть, что получается?
 

Вложения

  • 158.4 KB Просмотры: 78
  • 237.1 KB Просмотры: 75

pvvx

Активный участник сообщества
прошивка "зависает" на второй-третий день. И эта и TCP-UART.
1. 485 прошивка просто залита в ESP-07 с минимальной обвязкой, читаю через TCP 1100 регистры. на второй-третий день нет ни линка, нет информации по debug порту, нет точки доступа.
Поставил еще раз, через часа четыре отпал modbus. Сделал скрины.
По скрину у вас переполнение буфера опроса и heap исчерпан. Несоответствие параметров ожидания у ESP и у внешнего запрашивающего. Происходит накопление запросов без ответов, а запрашивающий дает новые запросы...
Стабильность работы самого SDK в части WiFi-китай кода "желает лучшего" :) Модуль без обвязки обычно не работает, если нет всех правильных внешних цепей. Например малой емкости на RESET (10nF..0.1uF) и ADC вход болтается (не притянут к GND резистором), ну и т.д.
Лог выдается в TX2/GPIO2. Ставьте его скорость в 3 000 000 baud, иначе будет мешать и тормозить. И тема про конкретную прошивку тут: Modbus TCP / RTU RS-485 + WEB server и Прошивка TCP2UART переходника с настройкой по Web
 

Dmitry P

New member
Вопрос из-за чего может буфер переполняется на второй день... Из-за отсутствия емкости на Reset?
Попробую загрузить прошивку на контроллер, который под Arduino IDE работает несколько дней без сбоев. На Arduino IDE есть китай-код?
 

pvvx

Активный участник сообщества
Вопрос из-за чего может буфер переполняется на второй день... Из-за отсутствия емкости на Reset?
Написал же - несоответствие задержек. Скорость передачи данных по TCP у ESP превышает 1 мегабайт в секунду, а RS-485 ...
Попробую загрузить прошивку на контроллер, который под Arduino IDE работает несколько дней без сбоев. На Arduino IDE есть китай-код?
Только он там и есть.
 

Dmitry P

New member
Написал же - несоответствие задержек. Скорость передачи данных по TCP у ESP превышает 1 мегабайт в секунду, а RS-485 ...
так данные забираются с внутреESP modbus устройства. И раз в секунду всего 20 регистров. внешний RS не участвует.
Буфер переполняется медленно
 

pvvx

Активный участник сообщества
так данные забираются с внутреESP modbus устройства. И раз в секунду всего 20 регистров. внешний RS не участвует.
Буфер переполняется медленно
У вас на картинке счетчик всего 62 запроса - т.е. 62 секунды.
Мои модули, что ESP-01, что ESP-12, ESP-12E работают - ничего не переполняется.
Придется вам описывать все условия, как сделать вашу ошибку: переполнение или отваливание WiFi.
---
Вот поставил на тест, когда писал первую часть этого соо, прошло более 18 часов непрерывного соединения:
MdbTst1.gif
(на картинке помечено время со старта модуля 64 бита в мксек считываемое по modbus)
Пустой модуль (из коробки) ESP12E DevKit (типа NodeMCU).
Набрал пока 6 ошибок за указанные в счетчике секунды. Это проблема ПО на компе и данной программы, а не от модуля (стоит задержка ответа 200 мсек).
Модуль по WiFi включен к роутеру и роутер бывает перегружен (там и IP-TV дети смотрят и пару WiFi камер транслируется, да весь инет 100Mb/s с фиксированным IP по проводу с несколькими портами в мою 1Gb/s местную сеть :) ), да комп переходит в "грин" и я на нем ещё работаю...
Одновременно с модуля опрашивается график Heap уже через комп-WiFi USB свисток на AP модуля (модуль в режиме AP+ST). Ничего не падает и удивляет что так мало ошибок по трафику через WiFi в сети, т.к. тут всегда не менее десятка чужих AP в ближней зоне, а активных девайсов с WiFi за сотню в час проходит:
MdbTst2.gif
(pr_request.xml - отслеживание rssi на последние 64 устройства, на модуле всегда забивается сразу)
Погляжу, сколько выдержит Микросовт винда без требования перезагрузки на обновления :) Жалко, что модуль питается от простой сети, не через мою местную на десяток кВт с бесперебойником...
---
Счет уже за 28 часов непрерывного опроса по Web и "безразрывного" соединения по modbus TCP...
---
Теперь уже 49 часов. Полет в норме. Научился делать ошибки в ModbusPoll: включаем второй модуль ESP8266 рядом с роутером и переключаем его в режим программирования или делаем другие зависоны ему. Иногда, как выйдет, раз-на раз не приходится, он глушит всю сеть WiFi, пока его не пустить в нормальную программу :)
На тестируемом память не утекает, болтается +- пол кило:
MdbTst3.gif MdbTst4.gif
Счетчик в us от включения уже 0x0000002919E8662F. Ошибки все сделаны вторым модулем - глушилкой WiFi :)
Как итог Dmitry P всё выдумал, для пропаганды АрДурины и доверять ему не стоит - возможно далек от техники и не умеет ею пользоваться.
---
Сегодня, уже проходят третьи сутки непрерывного соединения Modbus TCP Connection: 192.168.1.2:6064 модуля c компом . Полет в норме.
Буду перегружать комп - соединение в Modbus Pooll придется разорвать.
---
Прервал тест на 307563 посекундном запросе (если точнее - её паузе в 1 сек между приемами и новыми запросами) Modbus Pooll (надо перезагрузить комп и ПО для модуля уже обновилось...). Счетчик времени работы модуля на тот момент от включения питания в микросекундах: 0x00000048A3B1FB58 (86.662221 часа). Сам модуль ещё работает, а так-же его STSTION и SOFTAP c Web. 'Heap' со старта не изменился.
 
Последнее редактирование:

Dmitry P

New member
Счетчик в us от включения уже 0x0000002919E8662F. Ошибки все сделаны вторым модулем - глушилкой WiFi :)
Как итог Dmitry P всё выдумал, для пропаганды АрДурины и доверять ему не стоит - возможно далек от техники и не умеет ею пользоваться.
Ага, и скриншоты в фотошопе нарисовал.
 

pvvx

Активный участник сообщества
Ага, и скриншоты в фотошопе нарисовал.
Ну дык. А модуль сбрасывал командой web ...?sys_restart=12345 и подобными. В маркетинге по продаже мало кто что понимает в технике, т.ч. не расстраивайтесь :)

А модуль ещё работает и не перезагружался... Программу Modbus Pull в компе только перезагрузил.
Вот уже HTM файлы на нем обновил на новую версию - теперь показывает время последнего включения/старта питания/сброса или перезагрузки:
MdbTst5.gif
 
Последнее редактирование:

Dmitry P

New member
Ну дык. А модуль сбрасывал командой web ...?sys_restart=12345 и подобными.
А HEAP какой командой "сжирался" ? :)

В маркетинге по продаже мало кто что понимает в технике, т.ч. не расстраивайтесь :)
Так вроде нечего расстраиваться. Я не в маркетинге и не в продажах :)
И уж тем более - не пропагандирую Arduino IDE, как панацею от всего. Каждый инструмент хорош для своих задач и возможностей.
Мне нужны устойчиво работающие wifi удлинители RS-232 и RS-485, а не холивары :)
А модуль ещё работает и не перезагружался... Программу Modbus Pull в компе только перезагрузил.
Вот уже HTM файлы на нем обновил на новую версию - теперь показывает время последнего включения/старта питания/сброса или перезагрузки: Посмотреть вложение 1390
Можно только позавидовать, что в Ваших условиях все работает стабильно. У меня пока так не получилось. Отличия от рекомендуемых схем у меня - отсутствие обвязки Reset и ADC, всё остальное подтянуто по рекомендациям. буду пытаться воспроизвести ошибки еще раз.
Собственно, так и работает тестирование, не так ли?
 

pvvx

Активный участник сообщества
А HEAP какой командой "сжирался" ? :)
Я описывал уже вам - скорость UART меньше чем Wifi... Mobus можно перезагрузит по запросам к UART-RS-485 и то на время. По мере их обработки он очистится. В первой версии кода, при неправильных внешних запросах можно было застопорить это дело. Но это было описано, что это для теста и в логе на TX2 было отображено.
Можно только позавидовать, что в Ваших условиях все работает стабильно.
Условия самые что смог взять наихудшие.
Собственно, так и работает тестирование, не так ли?
Не - не так. Вы так и не привели причину и условия. Просто сказали, что не работает.
Ныне тестируем код на кусках от SDK 1.5.2. Там ещё не всё отлажено со стабильностью по Wifi. На 1.4.1 баги известны (беда с долгими подключениями ST из-за нарушений её режима у китайцев) и они непоправимы, на 1.5.2 их вроде нет, но есть другие... Например у меня она лучше работает если убавить уровень отдачи Wifi (на Web это число RF Tx Power: 82).
PS: тот модуль так и показывает StartTime: 02.02.2016 12:53:06, Heap в режиме графика 39 кило... Ныне он имеет выход ещё и в глобальный инет и к нему поступают всякие левые запросы... Но людей с целями сбросить на него не приходит - там же всё написано и пароль и т.д. и все команды управления открыты. Т.е. по нему лазают в основном роботы-поисковики и утерянные пакеты и запросы (по логу) :) Дурина и Lua от них давно бы померли.
 
Последнее редактирование:

Dmitry P

New member
Я описывал уже вам - скорость UART меньше чем Wifi... Mobus можно перезагрузит по запросам к UART-RS-485 и то на время. По мере их обработки он очистится. В первой версии кода, при неправильных внешних запросах можно было застопорить это дело. Но это было описано, что это для теста и в логе на TX2 было отображено.
Проблема возникла не с внешним устройством, подключенным по 485, а с внутренним modbus slave. Как могла повлиять скорость UART?
Условия самые что смог взять наихудшие.
Не - не так. Вы так и не привели причину и условия. Просто сказали, что не работает.
Причину я и сам бы хотел понять. А условия простые - залил прошивку в ESP-07 и стал опрашивать внутренний slave modbus pollом по 503 TCP порту. 20 регистров с интервалом в 1 сек.
Ныне тестируем код на кусках от SDK 1.5.2. Там ещё не всё отлажено со стабильностью по Wifi. На 1.4.1 баги известны (беда с долгими подключениями ST из-за нарушений её режима у китайцев) и они непоправимы, на 1.5.2 их вроде нет, но есть другие... Например у меня она лучше работает если убавить уровень отдачи Wifi (на Web это число RF Tx Power: 82).
PS: тот модуль так и показывает StartTime: 02.02.2016 12:53:06, Heap в режиме графика 39 кило...
Сейчас начну по второму кругу смотреть..
 

pvvx

Активный участник сообщества
Проблема возникла не с внешним устройством, подключенным по 485, а с внутренним modbus slave. Как могла повлиять скорость UART?
Запрос по другому номеру устройства.
И учтите, готовых прошивок в git нет. Там старая и кривая. Транслируйте из кода.
Когда проверю, будет типа стабильная версия, то кину в прошивки.
И всё - тут тема RS-485, а не прошивке с web. Тема Web/Modbus с прошивкой тут Modbus TCP / RTU RS-485 + WEB server.
Что-то не так в коде работы с RS-485?
-------
Модуль тот так и работает:
StartTime: 02.02.2016 12:53:02
Heap Size: 39488 bytes
<mactime>0x0000009551d4a712</mactime>
, выпадений из сети нет.
-------
Ныне на модуле <mactime>0x000000f96b35a881</mactime>... 12 дней непрерывной активности соединения при доступе из глобального инет (через роутер ASUS RT-N56U) без перезагрузки...
 
Последнее редактирование:

A_D

Active member
Offtopic:
У китайцев новый аукцион щедрости!
Everything ESP8266 - Rules

Попробую туда отослать свой проект платы ESP-RS-485, может у кого есть свои - тоже поучаствуйте!! Интересно посмотреть на результаты, ну и вдруг неожиданно чего нибудь даже выиграть :)
pvvx: Вы как раз можете попробовать со Своими прошивками поучаствовать )
 

pvvx

Активный участник сообщества
Offtopic:
У китайцев новый аукцион щедрости!
Everything ESP8266 - Rules

Попробую туда отослать свой проект платы ESP-RS-485, может у кого есть свои - тоже поучаствуйте!! Интересно посмотреть на результаты, ну и вдруг неожиданно чего нибудь даже выиграть :)
pvvx: Вы как раз можете попробовать со Своими прошивками поучаствовать )
Я в них не верю. Это всё обман. Им много раз пересылали ошибки по их баунти - в итоге нифига - ничего не дали, только бесполезная трата времени на объяснения и их "спасиба что проявили интерес". На первый раз они перечислили на этот сайт, а потом всё - наверно стали списывать бабки на своих, по типу - вы делаете всё за них, а они получают. :) От этого у них такая щедрость. :D
 
Последнее редактирование:
Сверху Снизу