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

 
 
> Как объединить две 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
 
Start new topic
Ответов
NeoN
сообщение Nov 21 2005, 15:20
Сообщение #2


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

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



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


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


Гуру
******

Группа: Свой
Сообщений: 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 Текстовая версия Сейчас: 26th June 2025 - 22:06
Рейтинг@Mail.ru


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