Кроме переключения направления нужно еще решить задачу подавления эха. Но не в этом суть. Нужно выбрать способ арбитража и захвата линии. Исходно оба драйвера RS485 стоят в режиме приема. Здесь желательна "растяжка" линий, чтобы по возможности исключить ложные срабатывания схемы захвата линии. В зависимости от того, с которой стороны раньше началась активность (при наличии растяжки это первый переход из лог 1 в лог 0), тот драйвер RS485 устанавливается (точнее остается и блокирется в этом состоянии) на прием, захватывает дуплексный канал для передачи на определенное время, а второй драйвер RS485 переключается на передачу. Время захвата канала продлевается каждый раз при переходе сигнала из лог 1 в лог 0. Как закончились перепады уровней (закончилась передача), так канал разблокируется и оба драйвера RS485 снова встают в режим приема. Способ детектирования перехода уровней и генерации времени захвата канала отдаю на ваше усмотрение. У нас на подобном алгоритме работы выпускаются конверторы/репитеры RS485-RS232-RS485. Все три направления коммутируются автоматически (логический автомат). Кроме этого применение двух таких конверторов (соединяются два через нульмодемный переходник посредством RS232) возможна организация соединения линий RS485 "звездой" (четыре луча), с автоматическим переключением линий прием/передача - один передает, остальные принимают.
|