Неисправное устройство RS-485 оказывает неравномерное влияние на соседние устройства в настройке шины.

Я пытаюсь понять тайну того, как один неисправный приемопередатчик RS-485 в сетевой шине с несколькими устройствами, по-видимому, очень неравномерно влияет на успех передачи самого себя и своих соседей.

НАСТРОЙКА
Установка состоит из шинной сети RS-485 с примерно 20 устройствами на линии. В качестве приемопередатчиков используются платы Sparkfun RS-485 Breakout ( Sparkfun BOB-10124 ). Согласующие резисторы на 220 Ом были удалены с плат, чтобы обеспечить возможность установки нескольких устройств. Витая пара между устройствами имеет длину от 14 до 30 метров. В целях безопасности и шумоподавления установлены повторители RS-485 ( РПТ-485_422-2 ) между 6 устройствами каждый.

Настройка сетевой шины RS-485

ПРОБЛЕМА
Из-за неизвестных проблем (возможно: скачок напряжения или короткое замыкание или другая форма неправильного обращения) время от времени трансивер повреждается. Анализ передачи показывает, что существует проблема с несколькими устройствами в сети. Не очевидно, какой трансивер вызывает проблему. Как только неисправный трансивер найден (в основном методом проб и ошибок) и заменен, скорость передачи всех остальных устройств возвращается к норме.

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

На изображении ниже показано, что происходит при анализе успешной передачи, когда один и тот же неисправный трансивер вставляется в разные позиции сетевой шины. Иногда собственный успех передачи приемопередатчика составляет 0% (в позиции #11 или #12), иногда - 100% (в позиции #13 или #15). Иногда его соседние устройства имеют 0% или 100% или значения между ними. Обратите внимание, что эти результаты являются постоянными и не колеблются.

Неисправный трансивер и его влияние на успешность передачи

Я надеюсь, что кто-то увидит закономерность в этих результатах, или у него появится представление о том, какая часть трансивера могла быть повреждена. Может быть, кто-то сталкивался с подобными проблемами с сетями RS-485 и может указать мне на некоторые направления. В этом посте я не пытаюсь выяснить, что могло вызвать повреждение трансивера, а пытаюсь понять, как это повреждение влияет на всю сеть. Чтобы в будущем можно было диагностировать быстрее.


Вот изображение трансивера, используемого в установке: плата Sparkfun RS-485 Breakout board ( Sparkfun BOB-10124 ). Обратите внимание, что согласующий резистор на 220 Ом был удален для установки.

Разрывная плата Sparkfun RS-485

Очевидная проблема с этой платой заключается в отсутствии подтягивающего резистора, который по умолчанию отключает передачу (DE на микросхеме, RTS на плате) до тех пор, пока явно не будет запущено программное обеспечение. Вероятно, вам следует добавить это, когда вы подключаете его. В противном случае только одно из этих недостаточно запущенных программ, активно контролирующих его, может заблокировать всю шину.

Ответы (2)

Я думаю, чтобы правильно диагностировать это, вам нужно будет подслушать что-то вроде преобразователя FTDI rs458 вместе с осциллографом. С помощью прицела вы можете видеть, когда трансивер захватывает и отпускает линию. Возможно, вам придется вручную опросить каждый узел и просмотреть каждый ответ. Если вы можете точно определить модуль, который удерживает линию «внизу», посмотрите, действительно ли соответствующий вывод включения находится в высоком состоянии. Если линия не удерживается, это может означать, что два узла пытаются ответить одновременно (проблема прошивки atmega).

Убедитесь, что вы нагрузили систему двумя резисторами на 120 Ом в соответствии с инструкциями повторителя.

Многие инженеры игнорируют сигнальную землю, когда создают сеть RS485, потому что RS485 известен как «двухпроводная связь».

Подключаете ли вы сигнальную землю, а также два сигнала данных?

Если вы не подключите сигнальную землю, приемопередатчик RS485 будет поврежден из-за разности потенциалов заземления.

И вам могут понадобиться два резистора смещения (некоторые люди называют их подтягивающим и подтягивающим резисторами).

В RS485 есть два сигнала - A и B (некоторые люди называют их TRX+ и TRX-). И приемопередатчик RS485 выводит сигнал на контроллер UART в соответствии с разницей между A и B следующим образом:

AB > 150 мВ: выход High AB < -150 мВ: выход Low Если AB находится в диапазоне от -150 мВ до +150 мВ, состояние выхода непредсказуемо. Таким образом, резисторы смещения необходимы в цепи RS485.

Смещающие резисторы в цепи RS485 поддерживают высокий или низкий уровень сигнальных линий A и B в состоянии ожидания RS485. (См. ниже.)

A: должен оставаться высоким B: должен оставаться низким в режиме ожидания

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