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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Перечисление устройств на общей шине
Огурцов
сообщение Aug 1 2008, 11:24
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 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 довольно сложно идентифицировать, это да.

Придет битый пакет - делов-то.
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 1 2008, 11:29
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Огурцов @ Aug 1 2008, 17:24) *
Еще вариант - таки регистрировать устройства на мастере, но в режиме plug&play, а чтобы не было конфликтов, подключать по одному.
Если подключать по одному, тогда проще уж сразу назначать адреса на месте и иметь сеть из уже имеющих сетевые адреса устройств. wink.gif
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Aug 1 2008, 11:33
Сообщение #18


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(rezident @ Aug 1 2008, 11:29) *
проще уж сразу назначать адреса на месте

Да не проще "назначать", иначе бы plug&play не требовался, адреса должны "назначать_ся_" сами.

Сообщение отредактировал Огурцов - Aug 1 2008, 11:33
Go to the top of the page
 
+Quote Post
navy2000
сообщение Aug 1 2008, 11:51
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 17-07-06
Пользователь №: 18 874



Была одна идея, когда строил большие сети на RS485, но, как говорится "тяму не хватило".
А именно. Имеем на каждой плате серийник (как правило большой), из него нужно получить сетевой номер (маленький, но уникальный). Например, 48-бит серийник, а в сети 100 устройств.
Мастер формирует основание полинома и отдает его в сеть, а слэйвы по этому основанию считают, например, CRC-8 от своего серийника и считают это своим сетевым адресом. Конечно они могут совпасть, тут нужно выбирать функцию.
Потом, мастер начинает опрос (256 раз), а слэвы в ответ шлют свои серийники (вот и пошла возможность коллизии), но от устройств с одинаковым сетевым адресом идет гарантированно разный ответ, а от него можно считать CRC (адрес устройства) и если отвечают более одного, то он не должен сходится. А потом уже дело техники. Приборам с такими то адресами пересчитать CRC с другим основанием, но не попадая в уже розданый диапазон.
В общем, это только идея, возможно бредовая, сам ее реализовывать не стал. Сначала хватало DIPSWITH на приборах, а потом, пришел CAN и 485-й попросту был забыт.

Цитата
Кроме того, в CAN реализовать искомое по-моему вполне реально.
Но дорогой он, поэтому задача - RS485.

Стоимость физического уровня почти одинаковая.
ADM485 около $1
http://www.argussoft.ru/search/?area=catal...85&options=
PCA82C250 то же самое.
http://www.mt-system.ru/index.php?store_se...N4,115&id=5
В качестве контроллера можно применять LPC2109 (120 руб в розницу) в него CAN встроен.
http://www.mt-system.ru/index.php?store_se...D64/01&id=5
Правда, не зная вашей задачи рекомендовать контроллер немного не корректно, но идею я думаю вы поймете.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Aug 1 2008, 12:16
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(navy2000 @ Aug 1 2008, 11:51) *
Мастер формирует основание полинома и отдает его в сеть, а слэйвы по этому основанию считают, например, CRC-8 от своего серийника

Отличная мысль!

Цитата(navy2000 @ Aug 1 2008, 11:51) *
а потом, пришел CAN и 485-й попросту был забыт.

Поэтому и нет желания смотреть в сторону XXX-BUS. На то пошло, так это будет уже XXX-BUS over CAN, с соответственно совершенно другой реализацией.

Цитата(navy2000 @ Aug 1 2008, 11:51) *
Стоимость физического уровня почти одинаковая.
ADM485 около $1

75176 - $0.5 и ниже, т.е. в 2 раза. Камень - раз в десять, но он великоват к тому же, почему и писал о грядущем выходе мелких, которые должны больше подходят и гораздо дешевле.

Цитата(navy2000 @ Aug 1 2008, 11:51) *
В качестве контроллера можно применять LPC2109 (120 руб в розницу) в него CAN встроен.

Неплохо!
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Aug 5 2008, 17:05
Сообщение #21


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Всем спасибо, сообразил - метод деления отрезка пополам.
Вполне детерминирован, возможные состояния: A - таймаут(никого нет), B - правильный ответ(нашли одного), C - коллизия(в поддиапазоне адресов двое, повторяем иттерацию для нового диапазона).
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 23 2008, 18:26
Сообщение #22





Guests






Цитата(Огурцов @ Jul 31 2008, 08:19) *
По какому принципу сделать сабж ?
Шина типа rs485, хочется получить нечто типа plug&play.
В моей гоолове крутится только один вариант - после какой-то общей команды устройства выдают на шину свой уникальный идентификатор (чтобы их можно было зарегистрировать) через случайные интервалы (чтобы исключить коллизии). Вот "случайность" при таком способе и не нравится - более подошло бы что-то более определенное.

Я тут работаю над подобной проблемой
Go to the top of the page
 
+Quote Post
lermax
сообщение Sep 13 2009, 12:16
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 9-12-04
Пользователь №: 1 423



Цитата(Цыкетчик @ Sep 23 2008, 22:26) *
Я тут работаю над подобной проблемой


Такая задача была решена следующим образом:
Топология сети разная для раздачи адресов и для работы. Раздача адресов происходит в топологии точка- точка. Работа - традиционная шина Модбас.
Физически сеть одна (в смысле пары проводов)
При старте системы (например, подача питания на ВСЕ узлы одновременно) раздаем адреса.
Для этого размыкаем шину в каждом узле ( НЗ реле )
Первый узел получает номер от Мастера сети. Если есть узел за ним, становиться временным мастером для следующего узла и следующий узел получает номер от него, иначе процесс раздачи считаем законченным.
Переключаем все узлы в режим Шина и работаем как обычно.

Вполне себе работает. Имеет смысл только в спецпроектах где без такого изврата никак. Из-за повышения сложности софта.
Go to the top of the page
 
+Quote Post

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

 


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


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