|
Перечисление устройств на общей шине |
|
|
|
 |
Ответов
|
Aug 1 2008, 10:31
|
Местный
  
Группа: Свой
Сообщений: 203
Регистрация: 17-07-06
Пользователь №: 18 874

|
Цитата(Огурцов @ Jul 31 2008, 11:19)  По какому принципу сделать сабж ? Шина типа rs485, хочется получить нечто типа plug&play. В моей гоолове крутится только один вариант - после какой-то общей команды устройства выдают на шину свой уникальный идентификатор (чтобы их можно было зарегистрировать) через случайные интервалы (чтобы исключить коллизии). Вот "случайность" при таком способе и не нравится - более подошло бы что-то более определенное. С RS485 красиво сделать не получится. Даже если Мастер пошлет широковещательную команду на которую Слэйвы будут отвечать через случайные интервалы, при этом слушать линию что в нее не передает ктото друго, выдерживать паузу (чтобы отличить передачу бита соответствующего растяжкам линий A и B от тишины в линии), все равно не нулевая вероятность начать передачу одновременно, а это, в отличие от CAN аварийный режим. По этому, ИМХО, смотрите в сторону CAN. У меня в качестве серийного номера прибора служит 48-бит его Ethernet MAC-адрес. Были конечно сложности с автоматизацией определения устройств в сети (В CAN идентификатор учавствующий в арбитраже только 29 бит), но они были решены. После определения всех MAC-адресов, по ним можно отправлять служебные команды (когда сетевых адресов еще нету), узнавать тип устройства и просить поморгать светодиодом попищать динамиком, после этого ему уже присваивается сетевой адрес. Цитата(rezident @ Aug 1 2008, 17:24)  По теме топика. У каждого устройства должен иметься свой уникальный серийный номер. Исходя из значения этого номера, и должна определяться пауза для выдачи устройством идентификационной информации по широковещательному хапросу. Разница между соседними номерами должна быть более длительности одной посылки (ответа на запрос), а весь диапазон адресов определяется серийностью изделия. Завод может выпускать сотни тысяч приборов в месяц. На конкретном объекте модут собраться приборы из разных партий. Ждать ответов может быть придется очень долго.
|
|
|
|
|
Aug 1 2008, 11:24
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(navy2000 @ Aug 1 2008, 10:31)  С RS485 красиво сделать не получится. RS485 вроде бы допускает одновременное включение на передачу нескольких узлов - ток ограничивается. Драйверы CAN в этом смысле гораздо приятнее. Кроме того, в CAN реализовать искомое по-моему вполне реально. Но дорогой он, поэтому задача - RS485. Цитата(navy2000 @ Aug 1 2008, 10:31)  У меня в качестве серийного номера прибора служит 48-бит его Ethernet MAC-адрес. Были конечно сложности с автоматизацией определения устройств в сети (В CAN идентификатор учавствующий в арбитраже только 29 бит), но они были решены. После определения всех MAC-адресов, по ним можно отправлять служебные команды (когда сетевых адресов еще нету), узнавать тип устройства и просить поморгать светодиодом попищать динамиком, после этого ему уже присваивается сетевой адрес. Типа того. Еще вариант - таки регистрировать устройства на мастере, но в режиме plug&play, а чтобы не было конфликтов, подключать по одному. Цитата(rezident @ Aug 1 2008, 11:17)  Другое дело, что коллизии в RS485 довольно сложно идентифицировать, это да. Придет битый пакет - делов-то.
|
|
|
|
Сообщений в этой теме
Огурцов Перечисление устройств на общей шине Jul 31 2008, 04:19 MrYuran Тогда только дополнительные линии. Для раздачи адр... Jul 31 2008, 06:19 Огурцов А интересная, кстати, мысль (хоть и не подходит) -... Jul 31 2008, 10:33 MrYuran Да нет, всё не так. не кольцо, RS485 как обычно, ш... Jul 31 2008, 10:48 Огурцов Цитата(MrYuran @ Jul 31 2008, 10:48) Да н... Jul 31 2008, 18:33 Alex11 Тут есть еще один вопрос. Что на самом деле нужно ... Jul 31 2008, 12:58 Прохожий Цитата(Огурцов @ Jul 31 2008, 08:19) По к... Jul 31 2008, 19:14 Огурцов Цитата(Прохожий @ Jul 31 2008, 19:14) На ... Jul 31 2008, 21:29 Огурцов Цитата(Прохожий @ Jul 31 2008, 19:14) Все... Aug 1 2008, 10:05  rezident Цитата(Огурцов @ Aug 1 2008, 16:05) Еще д... Aug 1 2008, 10:24   Огурцов Цитата(rezident @ Aug 1 2008, 10:24) в ст... Aug 1 2008, 11:07 rezident Цитата(navy2000 @ Aug 1 2008, 16:31) Посл... Aug 1 2008, 10:53  navy2000 Цитата(rezident @ Aug 1 2008, 17:53) Помо... Aug 1 2008, 11:13   rezident Цитата(navy2000 @ Aug 1 2008, 17:13) Если... Aug 1 2008, 11:17 navy2000 Была одна идея, когда строил большие сети на RS485... Aug 1 2008, 11:51 Огурцов Цитата(navy2000 @ Aug 1 2008, 11:51) Маст... Aug 1 2008, 12:16  Огурцов Всем спасибо, сообразил - метод деления отрезка по... Aug 5 2008, 17:05 Цыкетчик Цитата(Огурцов @ Jul 31 2008, 08:19) По к... Sep 23 2008, 18:26 lermax Цитата(Цыкетчик @ Sep 23 2008, 22:26) Я т... Sep 13 2009, 12:16
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|