Цитата(NeoN @ Nov 21 2005, 20:20)

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

В настоящий момент все это разрабатывается для системы, где есть только один мастер, по этому подобная ситуация исключена на уровне протоколов обмена, но хочется решить эту задачу как можно более универсально.
Мультимастерный режим в RS485 это скорее исключение, чем правило. Это же не CAN, если уж на то пошло. Разрабатывайте систему с одним мастером.
Для достоверной передачи данных в протоколе должен быть предусмотрен формат запрос-ответ. Раз запрос не дошел (пропал в канале связи) , то и ответа не будет. Однако, в связи с весьма значительной задержкой в самом канале, не исключен вариант, что оба источника данных могут засинхронизироваться по времени и лупить запросы с двух сторон до посинения. Но это опять проблемы мультимастера и решать их пришлось бы даже без наличия этого промежуточного канала связи.