реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как объединить две RS-485 сети по дуплексному каналу?
NeoN
сообщение Nov 19 2005, 07:38
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 150
Регистрация: 18-10-04
Пользователь №: 901



Вот такая проблема: есть дуплексный канал связи в составе оптического оборудования, который грубо можно представить как две сигнальные линии в противоположных направлениях с вносимой задержкой до
1мс. Надо объединить две сети RS-485 через этот канал. Т.е. на каждом конце канала стоят двунаправленные RS-485 трансиверы, передача данных осуществима тривиально, а вот как управлять направлением передачи в трансивере? У кого-нибудь есть опыт?


--------------------
user posted image
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 19 2005, 09:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(NeoN @ Nov 19 2005, 10:38) *

Это следует понимать, как сопряжение fulldupleх канала с simplex моноканалом при отсутствии
доступа master(ам) работающим в моноканале? Тогда только разбирая в протоколе RS485
запросы master(ов).


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Nov 19 2005, 23:33
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342



Посмотри схемотехнику преобразователей RS232<->RS-485 -- практически ОНО. Варианты самые разные, начиная от грязных трюков типа "открытый коллектор" до микроконтроллеров с 2-мя UART.


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
torik
сообщение Nov 20 2005, 11:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Я не очень врубился в вопрос, но есть два варианта:
- полудуплекс - это один 485 приемопередатчик типа ADM485, у него есть сигнал управления прием/передача. Линия связи - витая пара.
- дуплекс - таже база, но два приемопередатчика - один всегда на передачу, другой на прием. Линия связи - две витые пары.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 20 2005, 15:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Кроме переключения направления нужно еще решить задачу подавления эха. Но не в этом суть. Нужно выбрать способ арбитража и захвата линии. Исходно оба драйвера RS485 стоят в режиме приема. Здесь желательна "растяжка" линий, чтобы по возможности исключить ложные срабатывания схемы захвата линии. В зависимости от того, с которой стороны раньше началась активность (при наличии растяжки это первый переход из лог 1 в лог 0), тот драйвер RS485 устанавливается (точнее остается и блокирется в этом состоянии) на прием, захватывает дуплексный канал для передачи на определенное время, а второй драйвер RS485 переключается на передачу. Время захвата канала продлевается каждый раз при переходе сигнала из лог 1 в лог 0. Как закончились перепады уровней (закончилась передача), так канал разблокируется и оба драйвера RS485 снова встают в режим приема. Способ детектирования перехода уровней и генерации времени захвата канала отдаю на ваше усмотрение.
У нас на подобном алгоритме работы выпускаются конверторы/репитеры RS485-RS232-RS485. Все три направления коммутируются автоматически (логический автомат). Кроме этого применение двух таких конверторов (соединяются два через нульмодемный переходник посредством RS232) возможна организация соединения линий RS485 "звездой" (четыре луча), с автоматическим переключением линий прием/передача - один передает, остальные принимают.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 20 2005, 19:58
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(rezident @ Nov 20 2005, 17:15) *
Исходно оба драйвера RS485 стоят в режиме приема.
...
В зависимости от того, с которой стороны раньше началась активность ...


Вопрос конечно задан размазано, но по крайней мере ясно что там две СЕТИ.
Таким образом задача не соединения точка точка и не звезда объединенная на каком-то
устройстве :-(
Полагаю, что имеется точка подключения к моноканалу в котором общаются (в том числе и между собой), ну например дюжина устройств. Теперь нужно подсоединить через дуплексный канал еще одну такую группу. При этом в канале имеется изрядная задержка 1 ms а устройства на сети скорее работают много шустрее :-(. Про пропускную способность канала тоже ничего не сказано в вопросе -
из вредности - пусть будет ниже :-). Ну не решается это жесткой логикой c тупым слежением за импульсами в канале. Нужен 'роутер' разбирающий и буферизирующий информацию.
А вообще, хотелось бы автора вопроса услышать :-)


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
NeoN
сообщение Nov 21 2005, 15:20
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 150
Регистрация: 18-10-04
Пользователь №: 901



Нужно объединять именно две сети, т.е. в каждой из них на паре сидит несколько устройств. Практически, я сейчас и собираюсь делать, то что описал rezident, ему - респект. Но остается проблема "одновременной", т.е. в пределах той самой задержки канала активности на обоих концах канала и как следствие, "коллизии". В настоящий момент все это разрабатывается для системы, где есть только один мастер, по этому подобная ситуация исключена на уровне протоколов обмена, но хочется решить эту задачу как можно более универсально.


--------------------
user posted image
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 21 2005, 16:25
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(NeoN @ Nov 21 2005, 20:20) *
Но остается проблема "одновременной", т.е. в пределах той самой задержки канала активности на обоих концах канала и как следствие, "коллизии".

Ну и что? Коллизии не будет, т.к. канал связи двунаправленный. Просто сигнал там (в канале связи) и останется. А вообще автомат, переключающий направления драйвера RS485, должен анализировать оба битовых потока, как со стороны канала, так и свой собственный входной. Свой собственный должен иметь бОльший приоритет, чем тот что пришел со стороны канала связи. Можно даже на свой собственный ввести задержку (буферизацию) битового потока на ту же величину, что дает канал связи. Тогда их действие на автомат будет равноправным, но задержка распространения сигнала удвоится в обоих направлениях. Кстати, на заморочки с синхронизацией переключения драйверов RS485 на разных концах канала связи можно вообще плюнуть. Ну пускай оба драйвера принимают сигнал и транслируют его в канал связи. Канал-то уже двунаправленный. Впрочем я это уже указал выше.
Цитата(NeoN @ Nov 21 2005, 20:20) *
В настоящий момент все это разрабатывается для системы, где есть только один мастер, по этому подобная ситуация исключена на уровне протоколов обмена, но хочется решить эту задачу как можно более универсально.

Мультимастерный режим в RS485 это скорее исключение, чем правило. Это же не CAN, если уж на то пошло. Разрабатывайте систему с одним мастером.
Для достоверной передачи данных в протоколе должен быть предусмотрен формат запрос-ответ. Раз запрос не дошел (пропал в канале связи) , то и ответа не будет. Однако, в связи с весьма значительной задержкой в самом канале, не исключен вариант, что оба источника данных могут засинхронизироваться по времени и лупить запросы с двух сторон до посинения. Но это опять проблемы мультимастера и решать их пришлось бы даже без наличия этого промежуточного канала связи.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 10:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01607 секунд с 7
ELECTRONIX ©2004-2016