Ответ: А можно просто алгоритм ? :) Как код вставить, чтоб не покорежило?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Гудвин 03 марта 2005 г. 17:06
В ответ на: Код в студию, плз!!! отправлено -=John=- 03 марта 2005 г. 16:18

Тоже столкнулся с такой проблемой:
Есть устройства с серийным номером (МАК), которые просто подключаются к RS485 в произвольном порядке.
Надо было без "беготни" по точкам определять конфигурацию сети, и назначать сетевые адреса (1..30).
Решил эту проблему не слишком корректно, но зато работает и быстро :)

ограничения:
1. работает только в одном сегменте RS485 (но у меня мастерами являются мосты Ethernet-> RS485, посему проблем с масштабированием нет)
2. необходима подтяжка линий RS485 (ибо в процессе сканирования линия должна находиться в состоянии 1)

Алгоритм примерно такой:
Мастер посылает слейвам широковещательную команду чтения конфигурации.
Устройства запускают цикл анализа состояния линии (бит RX) с дискретностью 100 мкс.
То устройство, счетчик цикла которого сравнивается с серийным номером, посылает пакет мастеру с преамбулой и признаком окончания. Тут же устройству и назначается сетевой номер. Мастер просто принимает этот пакет.
Остальные устройства, если обнаружили 0 (старт бит) в линии, делают паузу чуть более времени передачи пакета и продолжаеют прослушивание до окончания цикла.
Мастер тоже ждет время, необходимое для окончания сканирования всех серийных номеров ( с моем примере 10000, уходит на это всего примерное секунда)

Всякие тонкости в примере.

До этого пробовал всякие хэш функции и пр. - ненадежно и медленно. Разлуливать коллизии тоже не прокатывает в RS485...

У меня работает. Удачи.

Гудвин.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru