Проблемы с Modbus TCP через ESP 8266-01

Контроллеры на основе ESP8266
Ответить
tronik1
Рядовой
Сообщения: 63
Зарегистрирован: 05.10.2017{, 12:34}
Репутация: 2
Имя: Сергей

Проблемы с Modbus TCP через ESP 8266-01

#1

Сообщение tronik1 » 20.02.2022{, 20:06}

Здравствуйте уважаемое сообщество. Есть вот такие устройства, где один мастер modbus TCP остальные slave TCP. На борту каждой платы стоит нано, которое собирает дискретные данные из датчиков и передает их по modbus rtu на ESP8266 - 01. ESP8266 - 01 Передает по modbus TCP на точно такой же modbus TCP master ESP8266 - 01 который на своей плате передает своей же нано по modbus rtu данные, где написана какая то логика и есть выход на включения скважины. Суть проекта в том, что в одном сарае есть скважин, а на удаленных сараях стоят емкости с датчиками по которым должна выключаться эта скважина. На каждой такой плате напаян ватчдог на ne555 для защиты от зависания нано. На ESP8266 - 01 gpio-2 запрограмированы импульсы через 500 мс и нано их принимает. Если импульсов нет то нано ресетит ESP8266, внутри ESP8266 также написано условие перезагружаться если нет коннекта через 8 секунд. Так вот теперь вопрос- слейв передает состояние датчика не более 10 минут затем перестает передавать. Нано и есп работает, но данные на мостер тср не идут пока не перезагружу. Почему подвисает сам протокол modbus TCP через ESP8266 - 01 по WI-FI?
Вложения
IMG_20220220_183131.jpg

costy1957
Сержант
Сообщения: 252
Зарегистрирован: 05.08.2018{, 08:37}
Репутация: 44
Имя: Константин

Проблемы с Modbus TCP через ESP 8266-01

#2

Сообщение costy1957 » 20.02.2022{, 20:17}

Понял работаете без скады, надо бы подключить и пустить отдельным каналом какую либо переменную, если передачи не будет только тогда можно утверждать что виснет modbus tcp

tronik1
Рядовой
Сообщения: 63
Зарегистрирован: 05.10.2017{, 12:34}
Репутация: 2
Имя: Сергей

Проблемы с Modbus TCP через ESP 8266-01

#3

Сообщение tronik1 » 20.02.2022{, 20:27}

costy1957 писал(а):
20.02.2022{, 20:17}
Понял работаете без скады, надо бы подключить и пустить отдельным каналом какую либо переменную, если передачи не будет только тогда можно утверждать что виснет modbus tcp
ESP8266 - 01 слейва в сети пингуется. Нано на слейве не висит, а состояние датчика уже через 10-15 мин. не передается пока не перезагружу слейв. Скаду тоже пробовал поэтому чере нее и увидел что висит протокол modbus TCP.

costy1957
Сержант
Сообщения: 252
Зарегистрирован: 05.08.2018{, 08:37}
Репутация: 44
Имя: Константин

Проблемы с Modbus TCP через ESP 8266-01

#4

Сообщение costy1957 » 20.02.2022{, 21:33}

Думаю увидели, что не передаются показания датчика, добавьте Random и посмотрите, до сих пор тср модбас ни у кого ни вис, от вас первого слышу.

tronik1
Рядовой
Сообщения: 63
Зарегистрирован: 05.10.2017{, 12:34}
Репутация: 2
Имя: Сергей

Проблемы с Modbus TCP через ESP 8266-01

#5

Сообщение tronik1 » 20.02.2022{, 21:40}

costy1957 писал(а):
20.02.2022{, 21:33}
Думаю увидели, что не передаются показания датчика, добавьте Random и посмотрите, до сих пор тср модбас ни у кого ни вис, от вас первого слышу.
Принудительно изменял состояние датчика и смотрел скадой по tcp ip. Только перезагрузка помогала. Датчик дискретный.

costy1957
Сержант
Сообщения: 252
Зарегистрирован: 05.08.2018{, 08:37}
Репутация: 44
Имя: Константин

Проблемы с Modbus TCP через ESP 8266-01

#6

Сообщение costy1957 » 20.02.2022{, 22:34}

Какое растояние между мастером и слэйвом, и роутером, может где то сигнал вайфай слабоват и нужно ставить репитер. Подключайте скаду, создавайте изменяемые переменные, и гоняйте их между мастером и слэйвом, вплоть до входов выходов нано

Отправлено спустя 12 минут 9 секунд:
попробуйте создать точку доступа на мастере и слэйв подключите к этой точке доступа

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Проблемы с Modbus TCP через ESP 8266-01

#7

Сообщение Ingwar » 20.02.2022{, 23:44}

Схемы питания не видно. Возможно перегревается стаб...
Попробуйте повесить емкость прям на ноги питания есп (100мк+)
Надеюсь 3.3В Вы берете не с ардуинки?
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

tronik1
Рядовой
Сообщения: 63
Зарегистрирован: 05.10.2017{, 12:34}
Репутация: 2
Имя: Сергей

Проблемы с Modbus TCP через ESP 8266-01

#8

Сообщение tronik1 » 21.02.2022{, 06:09}

Ingwar писал(а):
20.02.2022{, 23:44}
Схемы питания не видно. Возможно перегревается стаб...
Попробуйте повесить емкость прям на ноги питания есп (100мк+)
Надеюсь 3.3В Вы берете не с ардуинки?
На плате видно импульсный блок питания 220/5/3.3. Напряжение 3.3В включено параллельно блока питания и ардуинки.

Отправлено спустя 3 минуты 30 секунд:
costy1957 писал(а):
20.02.2022{, 22:47}
Какое растояние между мастером и слэйвом, и роутером, может где то сигнал вайфай слабоват и нужно ставить репитер. Подключайте скаду, создавайте изменяемые переменные, и гоняйте их между мастером и слэйвом, вплоть до входов выходов нано

Отправлено спустя 12 минут 9 секунд:
попробуйте создать точку доступа на мастере и слэйв подключите к этой точке доступа
Эти сараи размещены далеко друг от диуга. Вайфай не достанет. Поэтому используется локальная сеть видеонаблюднния на которой по проводам все вайфай роутеры обьеденены в одну подсеть.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Проблемы с Modbus TCP через ESP 8266-01

#9

Сообщение Ingwar » 21.02.2022{, 06:30}

tronik1 писал(а):
21.02.2022{, 06:12}
Напряжение 3.3В включено параллельно блока питания и ардуинки.
Если Вы про стаб, распаянный на блоке 220/5, то не вижу конденсаторов после него. И проверьте его на температуру после нескольких минут работы.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

tronik1
Рядовой
Сообщения: 63
Зарегистрирован: 05.10.2017{, 12:34}
Репутация: 2
Имя: Сергей

Проблемы с Modbus TCP через ESP 8266-01

#10

Сообщение tronik1 » 21.02.2022{, 09:40}

Ingwar писал(а):
21.02.2022{, 06:30}
tronik1 писал(а):
21.02.2022{, 06:12}
Если Вы про стаб, распаянный на блоке 220/5, то не вижу конденсаторов после него. И проверьте его на температуру после нескольких минут работы.
Напряжение 3.3В включено параллельно блока питания и ардуинки.
Сама плата построяна так что нано смотрит за ESP8266 и если не будет импульсов с ноги gpio 2 то ресетнет ее. За наной смотрит ватчдог на ne555. Внутри самой ESP8266 есть часть программы которая смотрит за статусом вайфай соединения и в случае его потери перезагружает сама себя. Вся эта система работает но не более 10-15 минут, после чего перестают передаватьсся измененные данные. При осмотре видно что ESP8266 в сети пингуется и ее синий светодиод который привязан к gpio 2 мигает, что означает она не висит. Нано также работает. Но изменения состояния датчика уже не передается. ESP8266 с нано общается по аппаратному уарту по modbus RTU. Внутри самой ESP8266 происходит состветственно проброс между modbus rtu на modbus TCP. Всё работает 10-15минут а дальше нет реакции на изменение датчика

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Проблемы с Modbus TCP через ESP 8266-01

#11

Сообщение Ingwar » 21.02.2022{, 10:00}

tronik1 писал(а):
21.02.2022{, 09:40}
ESP8266 с нано общается по аппаратному уарту по modbus RTU
У Вас есть ослик посмотреть обмен (Rx/Tx)? Согласование уровней через делитель?
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

tronik1
Рядовой
Сообщения: 63
Зарегистрирован: 05.10.2017{, 12:34}
Репутация: 2
Имя: Сергей

Проблемы с Modbus TCP через ESP 8266-01

#12

Сообщение tronik1 » 21.02.2022{, 10:27}

Ingwar писал(а):
21.02.2022{, 10:00}
tronik1 писал(а):
21.02.2022{, 09:40}
ESP8266 с нано общается по аппаратному уарту по modbus RTU
У Вас есть ослик посмотреть обмен (Rx/Tx)? Согласование уровней через делитель?
Да. Через делитель.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Проблемы с Modbus TCP через ESP 8266-01

#13

Сообщение Ingwar » 21.02.2022{, 10:37}

Осликом/анализатором (или на крайняк светодиодами) смотрите запросы/ответы и можете увидеть кто является "слабым звеном".

Отправлено спустя 4 минуты 50 секунд:
Попробуйте опрашивать мастером с компа через соответствующие программы. В них более гибко можно настраивать тайминги запросов, ожидания ответов и т.д.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Проблемы с Modbus TCP через ESP 8266-01

#14

Сообщение Sancho » 21.02.2022{, 11:49}

tronik1 писал(а):
21.02.2022{, 09:40}
ESP8266 с нано общается по аппаратному уарту по modbus RTU. Внутри самой ESP8266 происходит состветственно проброс между modbus rtu на modbus TCP.
Ох, опять эти секретные проекты...
Как происходит проброс - через регистры или целиком пакет?

Отправлено спустя 3 минуты 2 секунды:
Для простого шлюза, как я это понимаю, достаточно принять пакет от тср, убрать первые шесть байт, посчитать CRC оставшихся, дописать и отправить в uart. Принять из uart пакет, убрать два последних байта, добавить спереди шесть из запроса, отправить в тср.

Отправлено спустя 2 минуты 33 секунды:
На sim800 работает без проблем. Отработанный максимальный тест - месяц. Через каскаду облако. Делалось ради
Ingwar писал(а):
21.02.2022{, 09:17}
академический интерес.
:)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

tronik1
Рядовой
Сообщения: 63
Зарегистрирован: 05.10.2017{, 12:34}
Репутация: 2
Имя: Сергей

Проблемы с Modbus TCP через ESP 8266-01

#15

Сообщение tronik1 » 22.02.2022{, 12:14}

Выяснил что проблема передачи данных возникает если выключить и включить мастер. Иногда подхватывает обмен дальше, а иногда нужно обойти все обьекты и перезагрузить слейвы. Все будет нормально работать если сначала включить мастер, а потом только слейвы, но не наоборот. Решил проблему таким образом что мастер с частотой в одну секунду изменяет в каждом слейве один контрольный бит в коилсах, а слейв соответственно на него смотрит. Если этот бит не изменяется более 5 секунд, то слейв сам себя ресетит. Ну вот пока такой костыль для полной автономности оборудования.

Ответить

Вернуться в «ESP8266»