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

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
 
Последнее редактирование:
Сверху Снизу