Обсуждаем цифровые устройства...
Ответить

Проблемы с RS485

Вт апр 30, 2013 17:46:41

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

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

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

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

Вт апр 30, 2013 18:58:24

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

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

san4esmc писал(а):Подскажите, плиз, с чем это может быть связано и как такое можно побороть?
Куда подключены и по какому алгоритму работают сигналы DE и RE?

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

Вт апр 30, 2013 20:43:22

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

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

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

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

Этих сигналов в MAX3081 нету (на схеме написано внизу).

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

Вт апр 30, 2013 23:21:30

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

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

MAX485

Изображение

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

Ср май 01, 2013 11:28:28

Есть ещё MAX3082
max3082.png
MAX3082
(7.53 KiB) Скачиваний: 630


Аналог MAX485

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

А для полнодуплексного общения тогда подойдёт MAX3080 (RE и DE присутствуют)
max3080.png
MAX3080
(11.11 KiB) Скачиваний: 639

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

Ср май 01, 2013 17:32:52

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

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

Симплексная сеть (одна витая пара и MAX485, MAX3082) же устроена по другому.
В такой сети, все узлы являются равноправными (одноранговая сеть). В ней каждое устройство может инициировать передачу и ее будут принимать все устройства в сети.
Для простого управления драйвером, на MAX485 достаточно объединить вместе ножки !RE и DE и подать на ногу микроконтроллера. При низком уровне, драйвер будет в режиме приема, и при высоком, в режиме передачи. В такой сети проще контролировать коллизии (одновременная работа нескольких передатчиков), чем в дуплексной.

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

Чт май 02, 2013 00:42:08

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

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

Чт май 02, 2013 03:05:37

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

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

Чт май 02, 2013 16:18:08

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

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

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

Чт май 02, 2013 17:29:01

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

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

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

Чт май 02, 2013 17:51:23

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


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


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

Сейчас схема с задержкой работает отлично, без задержки не пробовал. Как только пройдут праздники, сразу попробую и отпишусь. :kill:

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

Чт май 02, 2013 23:05:35

Рекомендую :
http://www.novosoft.by/Ency/rs-485.htm

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

Пт май 03, 2013 00:49:52

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

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

san4esmc писал(а):Как вариант - поставить между драйвером и входом RX контроллера подтяжку, тогда все будет ок.
Смысле не вижу. Никогда не ставили, всё работает как надо.

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

Пт май 03, 2013 18:13:59

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

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

ЗЫ: У меня в сети работает 10 трехкиловатных выпрямителей и один контроллер. Сеть одноранговая и проблем с обменом нет, да и не должно быть в принципе.
Не забываем еще о терминирующем резисторе на конце линии.

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

Вт янв 08, 2019 17:20:38

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