Проблема с ModbusPoll
-
-
17.02.2023 #76720
Николай
Ключникdersuuzalah 17 фев 2023, 16:15Уважаемые коллеги!
Не уверен что выбрал правильную ветку, простите если что.
Пишу MODBUS slave, использую ModbusPoll 9.9.5. Команда 0x10 – write multiple registers – команда устройством принимается, правильные значения регистров попадают на свои места, выдается эхо, тоже правильное. ModbusPoll репортит Insufficient bytes received. В окне, где отображается трафик, я вижу что только первый байт эха правильный, остальные – нет и их меньше. При этом я путем различных экспериментов убедился что мое устройство передает именно то что должно – это ModbusPoll что-то куралесит, или я что-то делаю не так. К компу подключено при помощи китайского свистка – преобразователь USB – RS485. С другими командами записи происходит то же самое. Если симулировать ошибку и выдать Error message, то картина совершенно аналогичная.
Возможно кто-то сталкивался с такой загадкой. Был бы очень благодарен за любые подсказки.tonyk 17 фев 2023, 18:10dersuuzalah писал(а):использую ModbusPoll 9.9.5Считаю эталонной программой. Использую 7.1.0. Если твой слэйв заработал с ней, то работает везде.
К компу подключено при помощи китайского свистка – преобразователь USB – RS485Gavnо. На одном компе работает, на другом- нет. Проверь распайку растяжек на плате преобразователя и подключи дренажный проводник.
С другими командами записи происходит то же самоеИщи ошибку у себя.
dersuuzalah 17 фев 2023, 21:28tonyk, спасибо за ваш ответ. Ставился такой опыт: Slave подключен к обычной программе терминал и находится в ожидании каких – либо данных. по приходу чего-нибудь, он переключается на передачу и выдает в терминал строку символов. Я в терминале формирую небольшую строку и запускаю ее в порт. И в ответ вижу на экране строку которую передало устройство. Происходит стабильно и без ошибок. Разумеется используются те же функции.Ситуация аналогична тому как slave, получив команду записи, шлет эхо.
Да в общем, что там эти эксперименты – я нашел программу с которой все прекрасно работает. Однако ModbusPoll – вроде как чуть ли не мировой стандарт и я склоняюсь к мысли, что я как-то не так им пользуюсь. Не может быть чтобы он так откровенно глючил.
tonyk, не могли бы вы прислать ссылку, где можно добыть 7.1.0 ?vernam 17 фев 2023, 23:32Вот 7.1.0
magnet:?xt=urn:btih:57EA6C13BEB8BE6F030355732305447E4E262A45&tr=http%3A%2F%2Fbt3.t-ru.org%2Fann%3Fmagnet&dn=Modbus%20Tools%3A%20Modbus%20Poll%20v7.1.0%20%26%20Modbus%20Slave%20v6.2.0%20%5B2017%2C%20ENG%5D
Обычно такие проблемы снимаются преобразователем с гальваноразвязкой.dersuuzalah 18 фев 2023, 10:55Вот 7.1.0
magnet:?xt=urn:btih:57EA6C13BEB8BE6F030355732305447E4E262A45&tr=http%3A%2F%2Fbt3.t-ru.org%2Fann%3Fmagnet&dn=Modbus%20Tools%3A%20Modbus%20Poll%20v7.1.0%20%26%20Modbus%20Slave%20v6.2.0%20%5B2017%2C%20ENG%5D
Обычно такие проблемы снимаются преобразователем с гальваноразвязкой.
Спасибо, vernam! Насчет развязки – отличная идея, я обязательно воспользуюсь ею, когда буду проектировать окончательный вариант железа. Только сейчас дело в чем-то еще. 7.1.0 я уже нашел, все так же. Когда с одним ПО работает а с другим нет, то дело явно не в железе.
К стати то что вы прислали, похоже на только хвост от ссылки.vt340 18 фев 2023, 14:07dersuuzalah писал(а):нашел программу с которой все прекрасно работаетdersuuzalah, а что за программа ?
tonyk 18 фев 2023, 21:00tonyk, не могли бы вы прислать ссылку, где можно добыть 7.1.0 ? писал(а):tonyk, не могли бы вы прислать ссылку, где можно добыть 7.1.0 ?disk.yandex.ru/d/NQFI4mpyivd1Ng
Насчёт гальванической развязки очень правильное замечание было сказано. Но сначала предлагаю попробовать менее кардинальные вещи.vernam 19 фев 2023, 00:04Это была обычная магнет-ссылка для торрент-клиента. Только что опять проверил, клиент её ловит нормально.
По поводу загадок: в своё время я выкинул китайский свисток, и купил нормальный опторазвязанный адаптер. Все загадки разом исчезли. А до этого у свистка было так: с этим ноутбуком работаю, а с этим не буду (с десктопом вообще не буду – он шумит), с тем прибором связь устанавливать не стану вообще, а вот с этим так и быть свяжусь, но полностью данные от него не приму, только половину, а в оставшуюся половину запишу мусор.
Мне надоело, сначала я спаял на коленке на adum тестовый образец, а когда убедился, что догадка полностью подтвердилась, купил у тех же китайцев готовый адаптер, на оптике.
То что найденная сторонняя программа работает правильно, это тоже из разряда загадок, но учитывая, что поверх rs-485 может быть написано что угодно, отгадка видимо в какой-то коррекции ошибок. Ну или чёрная магия…dersuuzalah 19 фев 2023, 12:24vt340, disk.yandex.ru/d/51WD2i8rVm_rtwdersuuzalah 19 фев 2023, 13:13tonyk, спасибо за ссылку, К сожалению – знакомая картина(( Как докопаюсь до истины – отпишусь.dersuuzalah 19 фев 2023, 21:33Все прояснилось. Передача в USART у меня происходит в режиме DMA. И почему-то STM32 по окончании передачи устанавливает линию TxD в состояние высокого импеданса. На ней получается лог.0 что приемной стороной интерпретируется, как старт-бит очередного байта. А это вводит в ступор RS-485/USB свисток и
принимающий порт. Решилось путем установки резистора подтяжки. Всем еще раз спасибо за помощь.
Было так:tonyk 20 фев 2023, 08:07dersuuzalah писал(а):И почему-то STM32 по окончании передачи устанавливает линию TxD в состояние высокого импедансаПотому что у тебя не включена подтяжка в конфигурации порта. Это раз.
По-умному нужно устанавливать подтяжку к питанию и у трансивера, чтобы при включении твоего девайса он не пакостил в сеть. Это два.
Ещё часто косячат при работе с DMA, это когда окончание передачи определяют по прерыванию от DMA, а не UART.
И да, не забываем про растяжки на линии, отсутствие которых тоже может дать весьма занятные эффекты.dersuuzalah 20 фев 2023, 11:15Я бы конечно включил подтяжку, но я вижу только GPIO_Mode_AF_OD и GPIO_Mode_AF_PP, это F103.
Трансивер будет частью всего устройства, и где устанавливать подтяжку – не важно.
Смещение линии и 120 Ом есть.tonyk 20 фев 2023, 14:29Код:Я бы конечно включил подтяжку, но я вижу только GPIO_Mode_AF_OD и GPIO_Mode_AF_PP, это F103.Смотри внимательней, там должно быть что-то типа pull up.
де устанавливать подтяжку – не важно.Важно. Пока не инициализированы ноги МК, сигнал RE трансивера болтается в воздухе, впрочем, как и DO. Что будет в линии- не понятно.
-
- Вы должны войти в систему, чтобы ответить в этой теме.