Проблемы с RS485

Обсуждаем цифровые устройства...
Ответить
san4esmc
Родился
Сообщения: 12
Зарегистрирован: Вт апр 30, 2013 17:29:16

Проблемы с RS485

Сообщение san4esmc »

Привет котам!
Собираю сеть на RS485 (драйвера полнодуплексные MAX3081)
max3081.png
MAX3081
(12.38 КБ) 1048 скачиваний

Собрал по схеме:
rs485.png
Схема сети
(47.29 КБ) 1166 скачиваний

. Когда на линии мастер и только один слейв - всё работает отлично. Если на линии 2 слейва, то ни один из слейвов не может послать сигнал к мастеру. К сожалению осцилографа не имею и посмотреть точные сигналы не могу :( , но при эмуляции в протеусе видно, что одна из дифференциальных линий (Z со стороны слейва) нормально передает сигнал, а вторая (Y со стороны слейва) не двигается вообще. На стороне мастера с драйвера выходит сигнал, который не дотягивает до лог. 0.
Подскажите, плиз, с чем это может быть связано и как такое можно побороть?
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: Проблемы с RS485

Сообщение mas123 »

san4esmc писал(а):Когда на линии мастер и только один слейв - всё работает отлично. Если на линии 2 слейва, то ни один из слейвов не может послать сигнал к мастеру.
Значит, кто-то подсаживает линию.

san4esmc писал(а):Собрал по схеме:
Схема нерабочая неполная. По этой схеме никто не передает и никто не принимает :)

san4esmc писал(а):Подскажите, плиз, с чем это может быть связано и как такое можно побороть?
Куда подключены и по какому алгоритму работают сигналы DE и RE?
san4esmc
Родился
Сообщения: 12
Зарегистрирован: Вт апр 30, 2013 17:29:16

Re: Проблемы с RS485

Сообщение san4esmc »

mas123 писал(а):Схема нерабочая неполная. По этой схеме никто не передает и никто не принимает :)

Передает мастер (слева), все приемники слейвов висят на его передатчике, а все передатчики слейвов - на прийомнике мастера.

Мастер первым байтом отсылает адрес слейва и дальше общается только с ним.

mas123 писал(а):Куда подключены и по какому алгоритму работают сигналы DE и RE?

Этих сигналов в MAX3081 нету (на схеме написано внизу).
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Проблемы с RS485

Сообщение DX168B »

Дык выходы слэйвов объединены. Нельзя соединять выходы вместе, так как выходы соседних преобразователей просаживают линию передачи.
Для этого нужны линии RE (receiver enable) и DE (driver enable)
RE - (вход) по низкому уровню включает приемник драйвера RS485.
DE - (вход) по высокому уровню включает передатчик драйвера.
Если передатчик выключен (по идее) его выход должен перейти в Z-состояние. Тогда выход не будет мешать обмену.

Включать передатчик надо только во время передачи, потом, по окончанию передачи, его надо отрубать.
В MAX3081 таких входов нет, по этому смените драйвер на подходящий.
И еще. Есть ли смысл делать дуплексную схему? Может поставить просто MAX485 и гонять данные по одной витой паре?
Ну, еще протокол немного подправить и проблем не будет.

MAX485

Изображение
I am DX168B and this is my favourite forum on internet!
san4esmc
Родился
Сообщения: 12
Зарегистрирован: Вт апр 30, 2013 17:29:16

Re: Проблемы с RS485

Сообщение san4esmc »

Есть ещё MAX3082
max3082.png
MAX3082
(7.53 КБ) 808 скачиваний


Аналог MAX485

Тогда после передачи мастер ещё немного должен удержать линию пока слейв перейдёт в режим передачи, правильно? Потому как если мастер выключит передатчик, а слейв до того свой не включит, то линия просядет.

А для полнодуплексного общения тогда подойдёт MAX3080 (RE и DE присутствуют)
max3080.png
MAX3080
(11.11 КБ) 796 скачиваний
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Проблемы с RS485

Сообщение DX168B »

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

На линии передачи мастера, сидят слейвы со своими приемниками. У приемников высокое входное сопротивление, по этому, они не мешают друг другу и по этому, там у Вас там проблем нет.

Симплексная сеть (одна витая пара и MAX485, MAX3082) же устроена по другому.
В такой сети, все узлы являются равноправными (одноранговая сеть). В ней каждое устройство может инициировать передачу и ее будут принимать все устройства в сети.
Для простого управления драйвером, на MAX485 достаточно объединить вместе ножки !RE и DE и подать на ногу микроконтроллера. При низком уровне, драйвер будет в режиме приема, и при высоком, в режиме передачи. В такой сети проще контролировать коллизии (одновременная работа нескольких передатчиков), чем в дуплексной.
I am DX168B and this is my favourite forum on internet!
san4esmc
Родился
Сообщения: 12
Зарегистрирован: Вт апр 30, 2013 17:29:16

Re: Проблемы с RS485

Сообщение san4esmc »

Ок, но что случиться в одноранговой сети, если, вдруг, все устройства перейдут в режим ресивера (хоть на доли секунды)? Кто будет удерживать линию? Или это предусмотрено драйвером?
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: Проблемы с RS485

Сообщение mas123 »

san4esmc писал(а):Ок, но что случиться в одноранговой сети, если, вдруг, все устройства перейдут в режим ресивера (хоть на доли секунды)?
Ничего не случится. Все будут ждать начала передачи.
san4esmc писал(а):Кто будет удерживать линию? Или это предусмотрено драйвером?
А зачем линию удерживать-то?
san4esmc
Родился
Сообщения: 12
Зарегистрирован: Вт апр 30, 2013 17:29:16

Re: Проблемы с RS485

Сообщение san4esmc »

mas123 писал(а):А зачем линию удерживать-то?

Ну как зачем? Передача то начинается со стартового бита, которым является логический ноль. Если в линию никто не передает, а все только принимают, то линия из лог. единицы уйдет в лог. ноль и все начнут прием мусора, нет?
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: Проблемы с RS485

Сообщение mas123 »

san4esmc писал(а):
mas123 писал(а):А зачем линию удерживать-то?

Ну как зачем? Передача то начинается со стартового бита, которым является логический ноль. Если в линию никто не передает, а все только принимают, то линия из лог. единицы уйдет в лог. ноль и все начнут прием мусора, нет?
Не. Никто никуда не уйдет.
Снимешь сигнал разрешения передачи - драйвер отключится от RS-485. Отключится, но не "перейдет в 0".
Линия-то у нас дифференциальная, а напряжения не будет ни на одном проводе.
san4esmc
Родился
Сообщения: 12
Зарегистрирован: Вт апр 30, 2013 17:29:16

Re: Проблемы с RS485

Сообщение san4esmc »

mas123 писал(а):Снимешь сигнал разрешения передачи - драйвер отключится от RS-485. Отключится, но не "перейдет в 0".
Линия-то у нас дифференциальная, а напряжения не будет ни на одном проводе.


Симуляция в протеусе показывает, что на выходе RO драйвера будет лог. ноль.
rs485.zip
Схема в протеусе
(11.17 КБ) 293 скачивания


Как вариант - поставить между драйвером и входом RX контроллера подтяжку, тогда все будет ок.

Сейчас схема с задержкой работает отлично, без задержки не пробовал. Как только пройдут праздники, сразу попробую и отпишусь. :kill:
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Проблемы с RS485

Сообщение Jack_A »

mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: Проблемы с RS485

Сообщение mas123 »

san4esmc писал(а):
mas123 писал(а):Снимешь сигнал разрешения передачи - драйвер отключится от RS-485. Отключится, но не "перейдет в 0".
Линия-то у нас дифференциальная, а напряжения не будет ни на одном проводе.

Симуляция в протеусе показывает, что на выходе RO драйвера будет лог. ноль.
И что? Почитай как UART работает.
Стартовый бит отслеживается по переходу из "1" в "0". Наличие постоянного "0" никак не мешает жить.

san4esmc писал(а):Как вариант - поставить между драйвером и входом RX контроллера подтяжку, тогда все будет ок.
Смысле не вижу. Никогда не ставили, всё работает как надо.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Проблемы с RS485

Сообщение DX168B »

san4esmc писал(а):Ок, но что случиться в одноранговой сети, если, вдруг, все устройства перейдут в режим ресивера (хоть на доли секунды)? Кто будет удерживать линию? Или это предусмотрено драйвером?

Ничего не случится. Все устройства будут ожидать приема. Как верно подметил mas123, стартовым битом является переход с единицы в ноль. Когда кто-нибудь в сети перейдет в режим передачи, произойдет переход с 0 в 1. UART на это не отреагирует. Далее, начинается передача - переход с единицы в ноль (стартовый бит, за тем задержка после стартового бита и далее сэмплинг через равные интервалы времени, после - стоповый бит).

ЗЫ: У меня в сети работает 10 трехкиловатных выпрямителей и один контроллер. Сеть одноранговая и проблем с обменом нет, да и не должно быть в принципе.
Не забываем еще о терминирующем резисторе на конце линии.
I am DX168B and this is my favourite forum on internet!
rahmaevao
Встал на лапы
Сообщения: 126
Зарегистрирован: Пн окт 13, 2014 09:31:45

Re: Проблемы с RS485

Сообщение rahmaevao »

А есть ли такие приемопередатчики, которые в режиме передатчика тоже имеют высокое сопротивление?
Хочу обычный UART посадить на RS485 без сигналов DE RE. Связь полудуплексная сеть одноранговая.
Спасибо)
Ответить

Вернуться в «Цифровая техника»