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

 
 
> 30 одинаковых устройств на CAN шине. Как сделать автоматическую идентификацию.
syoma
сообщение Aug 26 2007, 09:25
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Привет. Сразу вторая тема.
На шине есть до 30 полностью одинаковых устройств с одинаковым ПО. Естественно все они будут вначале генерить сообщения с одинаковыми идентификаторами и это приведет к коллизии на шине. Плюс если попытаться их конфигурировать то все устройства будут реагировать на один и тот же идентификатор, то есть пообщаться с каждым устройством индивидуально невозможно.
Как это разрешить без программирования каждого устройства вручную?

Пока я вижу только один выход - это забить в программаторе цикл, чтобы он в каждой следующей прошивке увеличивал какие-то байты, которые отвечали бы за идентификатор. Таким образом получится 2^10 вариантов ПО и вероятность того что 2 устройства с одинаковым идентификатором попадут в одну шину - низкая. Если перейти на 2.0B то вероятность будет еще меньше. Недостаток в том, что при запуске системы или замене такого устройства придется обучать контроллеры на шине, чтобы они понимали чему соответствует новый идентификатор или перепрошивали его. Но хорошо то что это можно сделать по CANу, потому что простым перебором идентификаторов обнаружить присутствие устройства и определить его идентификатор возможно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
spf
сообщение Aug 28 2007, 06:02
Сообщение #2


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



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


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
syoma
сообщение Aug 28 2007, 09:46
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата(spf @ Aug 28 2007, 08:02) *
Как вариант (уже рабочий):
В каждое устройство на этапе производства зашивается тип и порядковый номер.
Эти данные выступают в качестве идентификатора при включении (начальный ID).

Ну так это я и думал сделать.
Цитата
Затем центральный контроллер раздает рабочие (динамические) идентификаторы каждому устройству, далее обращение идут по динамическим адресам, причем возможно сохранение работы по статическим адресам (начальный ID).

Вот тут то и проблема - откуда контроллер знает, что такому-то начальному ID соответствует такое-то устройство - т.е. придется на этапе запуска проводить операцию обучения контроллера.

Цитата
- уникальный физический адрес, который можно прочитать (но не идентификатор!). Количество используемых идентификаторов не должно быть 2 в степени 19, их может быть всего 30+ (1..2).

Да, только если вдруг попадется в одной сети хотя бы 2 устройства с одинаковыми идентификаторами - как к ним обратиться, если они реагируют на один и тот-же идентификатор? Будет коллизия.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 05:46
Рейтинг@Mail.ru


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