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

Прошивка TCP2UART переходника с настройкой по Web

pvvx

Активный участник сообщества
Единственный вопрос - как отключить встроенный в прошивку "MODBUS-TCP Example" , чтобы освободить 502-й порт ?
Пока, в той версии, закомментировать в esp8266web\include\user_config.h строку
[inline][HASHTAG]#define[/HASHTAG] USE_MODBUS // включить пример Modbus TCP[/inline] и странслировать проект. :) Потом будет управление...
 
Последнее редактирование:

Dmitry P

New member
Добрый день! Отличная вещь! но в одном месте случился "затык", не пойму пока баг это или я торможу. ESP прошита TCP2UART последней версии.
Роутер TP-LINK 3020, перешитый Openwrt (Barrier Bracker). На роутере поднят DHCP, на ESP - и точка доступа и станция. остальные настройки - по умолчанию. Подключается нормально, работает тоже. Проблемы начинаются, когда в роутере ставишь постоянную аренду в DHCP с mac адресом ESP. После передергивания питания на ESP - она перестает подключаться к роутеру. После 4-5 перезагрузки, через 2-3 минуты - подключается, в списке станций wifi роутера - видится, но не пингуется. После того, как убираю постоянную аренду - всё нормализуется.
 

pvvx

Активный участник сообщества
Проблемы начинаются, когда в роутере ставишь постоянную аренду в DHCP с mac адресом ESP.
У меня нет таких проблем. Что по MAC в роутере, что фиксированный IP при отключении DHCP в модуле. Разница только на время соединения при старте - это где-то до 0.7 сек, пока договорятся DHCP, если IP не фиксирован и соединение модуля происходит с AP тоже на модуле ESP8266. У данной прошивки при фиксированном IP время полного соединения TCP2UART после подачи питания или deep-sleep 450..500ms Последнюю версию 0.5.0 на это ещё не тестировал, там были изменения...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Вообще не планировал их использовать. Управление потоком не не нужно.

Добавил строчку, сделал WEBFiles.bin, залил - не помогло
Надо было flow включить.
Теперь в версии 0.5.1 добавлено:
SWAP_UART0.gif
Диаграмма на ножках, как модуль в режиме ST после deep-sleep соединяется c другим модулем ESP8266 в режиме AP. Через 417 ms уже приняты данные с rx TCP2UART модуля в режиме AP и передаются в tx (GPIO15) тестируемого модуля.
 

Прапор

New member
"Освободил" 502-й порт (в исходниках), откомпилировал, прошил. Нашел прогу под андроид, которая умеет посылать MODBUS-RTU запросы по ТСР (с контрольной суммой и т.д.). COM-порт ESP подключил к эмулятору Modbus-Slave устройства - всё работает! Если нужно опрашивать с компа, то TIBBO с виртуальным СОМ-портом + любая программа Modbus-Master. Но для реализации опроса по RS-485 нужен сигнал управления микросхемой MAX485 ("приём/передача"). Как решить эту проблему, господа? Уровень "знаний" С++ и Эклипса не позволяет мне вникнуть в алгоритм передачи посылок в СОМ-порт... Куда (в какую часть кода) можно вставить управление свободным выходом и как реализовать задержку возврата в режим приём ? Хотя, можно и без задержки...
 
Последнее редактирование:

pvvx

Активный участник сообщества
"Освободил" 502-й порт (в исходниках), откомпилировал, прошил.
Ну и зря.
Нашел прогу под андроид, которая умеет посылать MODBUS-RTU запросы по ТСР (с контрольной суммой и т.д.)..
По TCP контрольная сумма не передается, да и формат у Modbus по TCP содержит дополнительный заголовок. Для TCP существует спецификация Modbus TCP. В данном случае вам нужен Modbus TCP бридж.
COM-порт ESP подключил к эмулятору Modbus-Slave устройства - всё работает!
Что работает? Глюко Modbus TCP ? :)
Но для реализации опроса по RS-485 нужен сигнал управления микросхемой MAX485 ("приём/передача").
Будет, но не скоро. Пока смотреть там ModBus RTU (RS-485)
 

Прапор

New member
Почему?

По TCP контрольная сумма не передается, да и формат у Modbus по TCP содержит дополнительный заголовок. Для TCP существует спецификация Modbus TCP. В данном случае вам нужен Modbus TCP бридж.
Прога посылает именно MODBUS-RTU пакеты по TCP-соединению и никакие "брижды" уже не нужны ;)

Что работает? Глюко Modbus TCP ?
Почему "глюко" ??? Оставлял включенной всю эту "сборку" на пару часов - потерянных пакетов (в смысле ошибок в программе Modbus-RTU-Master) не более 5 процентов. Т.е. для некоммерческого применения очень даже поразительная надёжность :)
 

pvvx

Активный участник сообщества
Почему "глюко" ???
По тому, что не соответствует стандартам.
Оставлял включенной всю эту "сборку" на пару часов - потерянных пакетов (в смысле ошибок в программе Modbus-RTU-Master) не более 5 процентов. Т.е. для некоммерческого применения очень даже поразительная надёжность :)
Оставлял на сутки с нормальным Modbus TCP бриджем в rs485 - нуль потерянных пакетов при работе со специальным тестовым ПО для Modbus. Но это дело пока не вошло в web-свалку - мне лень переделывать HTM файлы из TCP2UART в Modbus. Занят пока другим.
Основная причина отсутствия полноценного Modbus TCP бриджа в том, что стандартный изуродованный, к примеру Микрософтом стек TCP не может подтверждать прием одиночных пакетов быстрее 200 ms. Спецификация ModbusTCP требует передачи одного фрейма в одном пакете TCP и использовать объединение нескольких запросов-ответов в одном пакете TCP нельзя. Как итог, при стандартном обращении к LwIP выходит скорость до 5-ти пакетов ModbusTCP в секунду. Для большего кол-ва требуется мучить LwIP– создавать передачу двух пакетов в одном окне стека TCP. Тут и вопрос – как это красивее замучить LwIP для этого?
 
Последнее редактирование:

Прапор

New member
Как итог, при стандартном обращении к LwIP выходит скорость до 5-ти пакетов ModbusTCP в секунду
Кстати, примерно так и получилось - не более 4-5 "запрос-ответов" в секунду. Но я думал , что дело в эмуляторе Modbus-Slave, Андроиде или виртуальном СОМ-порте )) В принципе , и такой "производительности" вполне хватает.
 

pvvx

Активный участник сообщества
Кстати, примерно так и получилось - не более 4-5 "запрос-ответов" в секунду. Но я думал , что дело в эмуляторе Modbus-Slave, Андроиде или виртуальном СОМ-порте ))
Пишите в Микрософт и прочим аборигенам - это их выдумка и ограничение. Но в своем Internet Explorer они этого ограничения не делают :p Наверно чтобы другие эксплореры и прочее ПО не от них было тормозом. Борьба с конкурентами :).
 
Последнее редактирование:

Прапор

New member
pvvx, а какая версия на данный момент самая стабильная? Где меньше всего китайского "быдлокода" ? ))
 
Последнее редактирование:

Dmitry P

New member
Уважаемый pvvx, планируется ли имплементирование в прошивку RS485 полудуплекса, (не обязательно модбаса) ? Уж очень хочется прозрачный 485 мост :)
 

Elik

New member
Залил в ESP-01,

1) короче работает хорошо, но только в режиме AP, в режиме клиента почему то ужасно медленно работает, просто ужасно! соединялся как через основной модем, так и через репитеры,
2) во вкладке GPIO как управлять единственно доступными выводами GPIO0 и GPIO2 не понял, щёлкаю, точечки появляются, но светодиоды как были включены (почему то) так и остаются, кто нить расскажет как эта магия работает мне тупому :)
3) почему не обезопасить при соединении к точке доступа, для чего всплывающее окно запрашивающее пароль, где пароль уже прописам на главной страничке, логика где?

Еще кто нибудь может рассказать либо поделиться веб мордой для управления ардуинкой? либо тьюториал как самому сделать дополнительные странички?


Благодарю за ответы
 

pvvx

Активный участник сообщества
1) короче работает хорошо, но только в режиме AP, в режиме клиента почему то ужасно медленно работает, просто ужасно! соединялся как через основной модем, так и через репитеры,
А у меня такого нет. Скажите, что нужно для это сделать? Может я что-то делаю не так?
2) во вкладке GPIO как управлять единственно доступными выводами GPIO0 и GPIO2 не понял, щёлкаю, точечки появляются, но светодиоды как были включены (почему то) так и остаются, кто нить расскажет как эта магия работает мне тупому :)
GPIO2 по умолчанию работает как выход TX для вывода отладочных сообщений и после отключения данной функции в меню конфигурации переходит в режим i/o.
3) почему не обезопасить при соединении к точке доступа, для чего всплывающее окно запрашивающее пароль, где пароль уже прописам на главной страничке, логика где?
Логика в том,что это демо страницы, а нормальные, для своего устройства, должны написать вы сами.
Еще кто нибудь может рассказать либо поделиться веб мордой для управления ардуинкой? либо тьюториал как самому сделать дополнительные странички?
Присоединяюсь к вопросу.
Могу оказать помощь в размещении "тьюториала" вместе с прошивкой...
 
Последнее редактирование:

Elik

New member
А у меня такого нет. Скажите, что нужно для это сделать? Может я что-то делаю не так?
GPIO2 по умолчанию работает как выход TX для вывода отладочных сообщений и после отключения данной функции в меню конфигурации переходит в режим i/o.
Логика в том,что это демо страницы, а нормальные, для своего устройства, должны написать вы сами.
Присоединяюсь к вопросу.

С GPIO разобрался, в настройках System Setup надо было снять галочку с GPIO2 debug UART TX enable:, далее на вкладке GPIO поставить точечки (лучше все же их поменять на кнопочки, либо галочки, точечки в таких больших гнездышках как то по детски выглядят...) на Dir, далее если хотим включить на Out, либо убрать соотвественно выключить...

Чего у вас нет? ну понятно, что демо, то есть все это чудо не вы делали для модуля? и все же что то не получилось залить вебморду как описано в ридми файле, после заливки вебморда вообще исчезает, пришлось пересшивать модуль заново...это баг или я что то не так сделал?
 

pvvx

Активный участник сообщества
С GPIO разобрался, в настройках System Setup надо было снять галочку с GPIO2 debug UART TX enable:, далее на вкладке GPIO поставить точечки (лучше все же их поменять на кнопочки, либо галочки, точечки в таких больших гнездышках как то по детски выглядят...) на Dir, далее если хотим включить на Out, либо убрать соотвественно выключить...
А можно было прочитать "10leds_ru.txt" и сделать выводы. Ну или нарисовать какие вам нравятся кнопки в редакторе web страниц и залить в модуль.

и все же что то не получилось залить вебморду как описано в ридми файле, после заливки вебморда вообще исчезает, пришлось пересшивать модуль заново...это баг или я что то не так сделал?
В "ReadMe.txt", вложенном в архив к прошивке ничего про заливку "вебморды" не говорится. Это баг или я что то не так сделал?
 
Сверху Снизу