-
- Мне больше нравится схема с выбором главного и последующими
перевыборами. В моем случае изменение конфигурации должно
происходить редко, потерять 10-20 секунд на выборы допустимо.
Передача маркера быстрее реагирует на пропадание, но боюсь что к
помехам оно окажется неустойчиво. У меня еще не получилось
придумать устойчивую к помехам схему передачи маркера. Да еще что
бы она соединение двух таких линий пережила. - AlexBi(21.09.2020 18:27)
- Что то мне это напоминает, на работе книжка имеется про сети с маркерами по 485. Главное не забыть :-) - Visitor(21.09.2020 18:31)
- Выбор главного - делал. Именно на задержках случайной длительности. Иногда бывает что победителей - двое. Иногда даже что дважды подряд. Но это общей устойчивости не нарушает. - Cкpипaч(21.09.2020 18:30)
- Невозможность назначить адрес - это одновременное включение в линию
двух и более одинаковых устройств, отличающихся только MAC-адресом.
Он довольно длинный, на основе него делать паузу не реально. Им
надо как-то между собой разобраться, что бы в очередь доступа к
линии встать (или очередь создать, если они оказались
единственными). - AlexBi(21.09.2020 10:54)
- Еще раз - паузу бери Rnd(). На вскидку, от пяти до десяти
длительностей передачи символа. Если нод много - расширь диапазон,
чтобы "двойные коллизии" были по-реже. Cкpипaч(776 знак., 21.09.2020 15:04)
- Как ловить коллизию? При передаче коллизию не увидеть. При приеме
могут быть какие-то шумы, которые исказят результат, их нельзя
считать коллизией. Остается только наличие сигнала в паузе, т.е.
когда его не должно быть. Но тут опять шум может исказить
результат. Какой-то не очень простой велосипед получается. - AlexBi(21.09.2020 18:33)
- Аппаратно-программно? Эхо не равно переданному = коллизия. ToчкaOпopы(220 знак., 21.09.2020 20:44, , картинка)
- В принципе, можно "передачу маркера" выделить в отдельный вид пакета. Тогда "простой обмен" можно делать в режиме запрос-ответ-с-повторными передачами. Будет, в условиях шума, более устойчиво. - Cкpипaч(21.09.2020 18:48)
- Коллизия это превышение предельной длины паузы между пакетами. Пауза возникает либо по достижению конца "цепочки", либо когда у приемника не сошлось CRC пакета (и он не передает тогда, когда его очередь). Оба случая обрабатываются одинаково. Cкpипaч(598 знак., 21.09.2020 18:46)
- Не вижу зачем обычную помеху отличать от коллизии. Один хрен полосой пропускания придется жертвовать, так пусть это хотя бы упростит архитектуру. - Cкpипaч(21.09.2020 18:41)
- Как ловить коллизию? При передаче коллизию не увидеть. При приеме
могут быть какие-то шумы, которые исказят результат, их нельзя
считать коллизией. Остается только наличие сигнала в паузе, т.е.
когда его не должно быть. Но тут опять шум может исказить
результат. Какой-то не очень простой велосипед получается. - AlexBi(21.09.2020 18:33)
- Вот сам не так давно колхозил что-то похожее. Общая линия, у
каждого устройства есть уникальный номер ("длинный"). Сделал
процедуру сканирования адресного пространства методом деления
пополам. Устройства должны уметь отзываться на команду "у кого
старшие N разрядов адреса равны NNN, откликнитесь", а мастер должен
видеть, что имеет место отклик одного или более устройств. Код
процедуры получился простой до безобразия. - SciFi(21.09.2020 14:41)
- А можно узнать, как тема многомастерности перешла на тему
определения адреса? - VLLV(21.09.2020 18:38)
- Фиг знает, наверное, я не врубился в тему. Не обращайте внимания. - SciFi(21.09.2020 20:58)
- Добавление еще одного устройства в уже работающую линию не вызывает
больших вопросов, после включения питания устройство слушает линию,
видит что там, встраивается. Сложность вызывают два случая: 1) два
устройства включены одновременно, оба видят что в линии ни чего
нет, после чего оба пытаются стать главными, коллизия, которую они
могут не заметить и решить, что каждое из них - единственное в
линии. Что приводит к проблемному случаю 2) Две работающих линии
соединяются между AlexBi(82 знак., 21.09.2020 18:17)
- 1) Решение, подсмотренное в Ethernet, вы принципиально не принимаете? 2) Сама по себе коллизия - норма. Просто шина после нее "пересобирается в цепочку" и все. - Cкpипaч(21.09.2020 18:27)
- Угу. Только новичок может подключиться через 5 милисекунд после
окончания сканирования, да? :) - Cкpипaч(21.09.2020 14:44)
- От меня поступили интересные сведения, а вы можете ими воспользоваться, утопить в какашках, адаптировать к своим условиям, откинуть как неподходящие -- мне пофиг :-) - SciFi(21.09.2020 14:48)
- А можно узнать, как тема многомастерности перешла на тему
определения адреса? - VLLV(21.09.2020 18:38)
- А чем длинный мак плох? Посчитай на его основе некий хеш... хоть
CRC8 - вот тебе уникальная константа. Из нее лепи паузы и задержки. - POV_(21.09.2020 11:34, )
- Тут скорее CRC3 только приемлемым окажется, а с ним довольно велик риск двух одинаковых CRC. - AlexBi(21.09.2020 18:28)
- Еще раз - паузу бери Rnd(). На вскидку, от пяти до десяти
длительностей передачи символа. Если нод много - расширь диапазон,
чтобы "двойные коллизии" были по-реже. Cкpипaч(776 знак., 21.09.2020 15:04)
- Мне больше нравится схема с выбором главного и последующими
перевыборами. В моем случае изменение конфигурации должно
происходить редко, потерять 10-20 секунд на выборы допустимо.
Передача маркера быстрее реагирует на пропадание, но боюсь что к
помехам оно окажется неустойчиво. У меня еще не получилось
придумать устойчивую к помехам схему передачи маркера. Да еще что
бы она соединение двух таких линий пережила. - AlexBi(21.09.2020 18:27)