1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

RS 485 ModBUS - теряем байты

RS-485, ProfiBUS, 4-20 mA, Wi-Fi, GSM и так далее

Модератор: Глоб.модераторы

Ответить
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

RS 485 ModBUS - теряем байты

Сообщение Jackson »

Добрый день!

На одном объекте образовалась у нас интересная проблема

Сеть Modbus RTU (RS485). Скорость 9600. Мастер в 100 метрах от первого слейва. Слэйвов всего 10. Между слэйвами есть сегмент 100 метров. Общая длина сети 400 - 600 метров. Всю кабельную линию перебрали и проверили.

Возникают ошибки связи частые: от раза в несколько минут (5...10 минут), до раза в 15...30 минут.

Каждый слэйв опрашивается в три посылки. Связь пропадает со слэйвами случайным образом, закономерности не выявлено.
Мониторили трафик на стороне Мастера с Portmon/Modbus slave. Ошибки выглядят так: у ответов от слэйвов "битые" первые два байта - те, в которых ID и функция. В ответе слейва эти байты либо присутствуют искажённые (явно неправильное значение, но не код ошибки), либо первого байта нет вообще. Остальная часть телеграммы корректная - в ней данные - включая CRC. Т.е. ответ от устройства правильный, но что-то ломает по пути первые два байта.

Кабель - правильный, лишних терминальных резисторов нет, положенные - на своих местах, топология - шина, как положено. Настройки по стоп-биту, и контролю чётности в слейвах нам не доступны. Со стороны мастера настроено следующее: бит данных 8, контроль чётности отключён, один стоп-бит. Изменить эти настройки нельзя - специфика аппаратной части мастера. Со стороны слэйвов производитель говорит, что у них настройки идентичные, но проверить пока нельзя.

Вот куда копать? Буду признателен за мысли.

Про осциллограф можно не напоминать, пока не можем им посмотреть.
По вопросам работы Форума можно обратиться по этим контактам.

stesl
эксперт
эксперт
Сообщения: 1035
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 100 раз
Поблагодарили: 141 раз

RS 485 ModBUS - теряем байты

Сообщение stesl »

Jackson писал(а): 28 апр 2023, 15:50 Вот куда копать?
Немного непонятно - то ли связь теряется совсем,то ли пакеты битые,которые не обрабатываются соответственно..
Ладно, моя мысля вот о чем - от всех слейвов такое происходит? Может их можно по одному поотсекать? Чисто на аппаратном уровне же могут эти байты ломаться?... Но это чисто теоретически ))Никогда не вдавался в схемотехнику.

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

RS 485 ModBUS - теряем байты

Сообщение rwg »

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

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

RS 485 ModBUS - теряем байты

Сообщение leon78 »

Если у слэйвов есть параметр типа "Delay between frames" (задержка между кадрами), можно попробовать его увеличить
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

RS 485 ModBUS - теряем байты

Сообщение Jackson »

stesl писал(а): 28 апр 2023, 16:11 Немного непонятно - то ли связь теряется совсем,то ли пакеты битые,которые не обрабатываются соответственно..
Пакеты битые, которые мастер не принимает и соответственно для мастера это ошибка таймаута.
leon78 писал(а): 28 апр 2023, 16:50Если у слэйвов есть параметр типа "Delay between frames" (задержка между кадрами), можно попробовать его увеличить
Согласен :good: Мне эта мысль тоже сразу в голову пришла. Но пока добраться до таких настроек слейва нет возможности (и неизвестно есть ли они вообще). Работаем над этим.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2471
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2121 раз
Поблагодарили: 208 раз

RS 485 ModBUS - теряем байты

Сообщение keysansa »

Бывает, одно устройство глючит в середине линии. И вызывает такие симптомы. согласен с rwg.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Ответить

Вернуться в «Интерфейсы, протоколы, связь»