Проблема с ModbusPoll

    • #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:10
      dersuuzalah писал(а):
      использую ModbusPoll 9.9.5

      Считаю эталонной программой. Использую 7.1.0. Если твой слэйв заработал с ней, то работает везде.

      К компу подключено при помощи китайского свистка – преобразователь USB – RS485

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

      С другими командами записи происходит то же самое

      Ищи ошибку у себя.

       

      dersuuzalah

      17 фев 2023, 21:28
      tonyk, спасибо за ваш ответ. Ставился такой опыт: 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:07
      dersuuzalah писал(а):
      нашел программу с которой все прекрасно работает

      dersuuzalah, а что за программа ?

       

      tonyk

      18 фев 2023, 21:00
      tonyk, не могли бы вы прислать ссылку, где можно добыть 7.1.0 ? писал(а):
      tonyk, не могли бы вы прислать ссылку, где можно добыть 7.1.0 ?

      disk.yandex.ru/d/NQFI4mpyivd1Ng
      Насчёт гальванической развязки очень правильное замечание было сказано. Но сначала предлагаю попробовать менее кардинальные вещи.

       

      vernam

      19 фев 2023, 00:04
      Это была обычная магнет-ссылка для торрент-клиента. Только что опять проверил, клиент её ловит нормально.
      По поводу загадок: в своё время я выкинул китайский свисток, и купил нормальный опторазвязанный адаптер. Все загадки разом исчезли. А до этого у свистка было так: с этим ноутбуком работаю, а с этим не буду (с десктопом вообще не буду – он шумит), с тем прибором связь устанавливать не стану вообще, а вот с этим так и быть свяжусь, но полностью данные от него не приму, только половину, а в оставшуюся половину запишу мусор.
      Мне надоело, сначала я спаял на коленке на adum тестовый образец, а когда убедился, что догадка полностью подтвердилась, купил у тех же китайцев готовый адаптер, на оптике.
      То что найденная сторонняя программа работает правильно, это тоже из разряда загадок, но учитывая, что поверх rs-485 может быть написано что угодно, отгадка видимо в какой-то коррекции ошибок. Ну или чёрная магия…

       

      dersuuzalah

      19 фев 2023, 12:24
      vt340, disk.yandex.ru/d/51WD2i8rVm_rtw

       

      dersuuzalah

      19 фев 2023, 13:13
      tonyk, спасибо за ссылку, К сожалению – знакомая картина(( Как докопаюсь до истины – отпишусь.

       

      dersuuzalah

      19 фев 2023, 21:33
      Все прояснилось. Передача в USART у меня происходит в режиме DMA. И почему-то STM32 по окончании передачи устанавливает линию TxD в состояние высокого импеданса. На ней получается лог.0 что приемной стороной интерпретируется, как старт-бит очередного байта. А это вводит в ступор RS-485/USB свисток и
      принимающий порт. Решилось путем установки резистора подтяжки. Всем еще раз спасибо за помощь.
      Было так:

       

      tonyk

      20 фев 2023, 08:07
      dersuuzalah писал(а):
      И почему-то 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. Что будет в линии- не понятно.

       

Viewing 0 reply threads
  • Вы должны войти в систему, чтобы ответить в этой теме.
Интepecнoe нa фopумe:
Авторизация
*
*
Регистрация
*
*
*
Генерация пароля
×