Полудуплекс и дуплекс
Линия связи может передавать данные в обе стороны одновременно — это дуплекс — или по очереди — полудуплекс. В RS-485 полудуплексу хватает одной пары проводов, но узлы должны договариваться, кто передаёт, и вовремя переключать направление.
Обновлено Редакция GAW
Дуплекс (full-duplex) — режим связи, при котором данные идут в обе стороны одновременно; полудуплекс (half-duplex) — в обе стороны, но по очереди. Есть ещё симплекс — передача только в одну сторону.
В интерфейсе RS-485 выбор режима определяет число пар проводов. По руководству TI SLLA272:
| Вариант | Провода | Режим | Особенность |
|---|---|---|---|
| 2-wire | одна пара | полудуплекс | у трансивера выходы передатчика внутри соединены со входами приёмника |
| 4-wire | две пары | дуплекс | одна пара для передачи, другая для приёма |
Полудуплекс по одной паре — самый распространённый вариант, в том числе для Modbus RTU: протокол работает по принципу «ведущий спросил — один ведомый ответил», и одновременная передача не нужна. Но узлы должны управлять направлением. У трансивера для этого выводы DE (разрешение передатчика) и RE (разрешение приёмника, инверсный): микроконтроллер включает передатчик перед отправкой и выключает сразу после последнего стоп-бита UART. Если отпустить линию поздно, передатчик заглушит начало ответа; рано — обрежет свой последний символ.
Сама передача по паре — дифференциальная, а на концах линии ставят терминаторы. Подключение, смещение шины и типовые ошибки разобраны в статье «RS-485».
Частые вопросы
Чем полудуплекс отличается от дуплекса?
Полудуплекс передаёт данные в обе стороны, но по очереди: в каждый момент один узел передаёт, остальные слушают. Дуплекс позволяет передавать и принимать одновременно. В RS-485 полудуплексу нужна одна пара проводов, дуплексу — две.
Почему RS-485 обычно полудуплексный?
Одна пара дешевле и проще в прокладке, а протоколы вроде Modbus RTU всё равно работают по принципу «запрос — ответ»: ведущий спрашивает, один ведомый отвечает. Одновременная передача в обе стороны им не нужна.
Зачем выводы DE и RE у трансивера RS-485?
Для управления направлением: DE включает передатчик, а инверсный RE — приёмник. В полудуплексе микроконтроллер включает передатчик только на время своей передачи и сразу отключает после последнего стоп-бита, иначе он заглушит ответ другого узла.
Источники
- Texas Instruments. The RS-485 Design Guide (SLLA272C), T. Kugelstadt — полудуплекс по одной паре (2-wire) и дуплекс по двум (4-wire); у полудуплексного трансивера выходы передатчика внутри соединены со входами приёмника; управление передатчиком и приёмником выводами DE и RE
- Modbus Organization. MODBUS over Serial Line Specification and Implementation Guide V1.02 — Modbus по последовательной линии — двухпроводной RS-485 как основной вариант, обмен по принципу ведущий–ведомые, переключение направления
Нашли ошибку?