Идентификация устройств в сети RS-485

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

Всем привет. Подскажите как организовать сеть RS-485. Один мастер и много ведомых. У каждого будет зашит свой номер. По этому номеру при инициализации будет присваиваться адрес. Но как считать этот номер. Ведь при выдачи запроса, например, GET_ID все начнут его выдавать будет конфликт. Наверняка существуют какие-то решения
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Случайные числа помогут.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Максимальное число устройств в сети известно?
Можно заранее прошить в ведомых некие порядковые номера от 1 до максимума и запрограммировать их так, чтобы они отвечали только после n-го запроса GET-ID, где n - порядковый номер устройства.
Т.е. выдаете в сеть столько запросов GET-ID, сколько м.б. устройств в Вашей сети, после каждого запроса от соотв. устройства приходит (или не приходит :) ответ...
Пойдет такой вариант?
Оптимизм х (Опыт + Знания) = const
Контактная информация:
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

Максимальное число устройств 6. Данный вариант не подходит потому что устройства будут разные. Т.е. нельзя заранее сказать с какими ID в сети будут устройства. Может все таки пойти на конфликт шины и сделать так как это реализовано в MicroLan. Каким образом я могу применить метод случайных чисел? Предполагается 32битный ID. Должен же быть какой то способ получения номера без конфликта на шине
Реклама
Эиком - электронные компоненты и радиодетали
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

Как в МикроЛан не получится там открытый сток. Мда
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

kj писал(а):устройства будут разные.

Должен же быть какой то способ получения номера без конфликта на шине
Случайные числа, случайные паузы.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

То есть предлагается каждому номеру сопоставить выдержку через которую он будет отвечать? Если максимальное число 4 млрд то какая это будет выдержка
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

kj писал(а):То есть предлагается каждому номеру сопоставить выдержку через которую он будет отвечать?
Вы слово СЛУЧАЙНОЕ понимаете ?

Если сопоставить заранее - это будет случайное ?
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

Хорошо допустим. Скорость при инициализации 9600. Посылка 8-ми байтовая. Для получения номера -- 2 посылки. Все это займет примерно 15 мс. Максимальное время инициализации 5с. Делим 5 на 15мс. Получаем 333. А если устройств будет произведено тысячи, десятки тысяч. Согласитесь довольно высока вероятность что в одной сети совпадут устройства с одинаковой выдержкой, что недопустимо
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

А решение обязательно д.б. чисто программное?
Обычно в таких ситуациях просто ставится несколько джамперов или дип-переключатель, на которых на этапе монтажа сети выставляются уникальные номера устройств в данной конкретной сети. При этом внутренний ID уникален для каждого устройства. А вот его в этом случае можно получать по описанной выше схеме. :)

Однако здесь возможен косяк при неодновременном включении устройств.

Вообще, в broadcast сетях (а речь, похоже, именно о такой) используется random acсess time, т.е. после подачи команды устройство отсылает свой ID через случайное время, лежащее в некотором диапазоне. В этой ситуации коллизии возможны, но вероятность их невелика, при возникновении коллизии надо просто повторить опрос.

Можно скрестить эти варианты: после команды устройство возвращает айдишник по прошествии времени, заданного джампером на устройстве.

Вообще, некоторые нюансы все же будут зависить от очередности подачи питания на устройства.
:)
Последний раз редактировалось Aheir Ср сен 12, 2007 15:29:42, всего редактировалось 1 раз.
Оптимизм х (Опыт + Знания) = const
Контактная информация:
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

К сожалению оно должно быть программное. Самый оптимальный вариант на корпусе нанести серийный номер и при конфигурации вписать мастеру все серийники. Но к сожалению данный способ не подходит по целому ряду причин. DIP ы тоже не подходят. К сожалению. Вот поэтому и парюсь. Должен же быть какойто способ. Ведь в промышленности RS 485 рулит. Тот же ProfiBus, ModBus. Может кто знает?
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Тогда пробуйте по принципу broadcast'a, только все же обработчик коллизий надо продумать будет. :)
Оптимизм х (Опыт + Знания) = const
Контактная информация:
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

Ну конечно сначала broadcast запрос -- получаю все номера, адресую. А потом чтоб скорость была максимальная никаких коллизий возникать не должно. Обратился по адресу -- получил ответ. Все остальные молчат
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

kj писал(а):Должен же быть какойто способ.
Уж несколько раз его вам сказал.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

Необходимо ПОЛНОСТЬЮ исключить вероятность ошибки при конфигурирровании. Каково это будет если в 1000 случаях кофигурация будет нормальная. а в 1001 случае попадутся 2 устройства с совпадающей выдержкой. Согласитесь диапазон случайных чисел от 0 до 333 не такой уж большой
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я думаю, придется обязательно слушать линию во время передачи. если ведомый начинает передавать ответ на широковещательный запрос, и при этом обнаруживает, что принимает он не то, что передает - он замолкает на некий псевдослучайный интервал времени, например, просто пропорциональный его физическому адресу, и лишь после того начинает вторую попытку передать. причем любая попытка начать передачу всегда начинается с прослушивания линии в течение того же псевдослучайного интервала времени - только если линия свободна это время - тогда начинается передача. вкратце я изложил принцип стандарта CSMA/CD - ethernet-сети примерно по этому принципу работают. елси в сети нет устройств с одинаковыми физическими адресами - рано или поздно все смогут передать свою информацию.

возможно, tych и имел ввиду примерно это, но прямо не сказал по свойственной ему привычке отвечать либо ссылкой на свой сайт (очевидно, скоро появится сайт rs485network123.nаrоd.ru :) ) либо загадочной фразой... :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Дак уж разъясняли что полностью исключить колизеум нельзя. А он максималист похоже.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

kj писал(а):Ну конечно сначала broadcast запрос -- получаю все номера, адресую. А потом чтоб скорость была максимальная никаких коллизий возникать не должно. Обратился по адресу -- получил ответ. Все остальные молчат
Ну дык блин, само собой, что после процедуры инициализации и считывания всех айди коллизий не будет. Речь идет о возможных конфликтах на этапе инициализации, если делать ее на тайм-шифте, вот об их "разруливании" и придется позаботиться особо. Потом - проьлем не будет.
Чем такой подход не устраивает? :)
Оптимизм х (Опыт + Знания) = const
Контактная информация:
kj
Родился
Сообщения: 12
Зарегистрирован: Сб апр 28, 2007 20:01:05

Сообщение kj »

Вот насчет того что ведомый (который в данный момент передает) может слушать линию я не подумал. Очень хорошая идея. Насчет выдержек и всего остального это уже дело техники. Всем спасибо
Собутыльник Сэра Мурра
Аватара пользователя
Сообщения: 2918
Зарегистрирован: Вт янв 10, 2006 00:26:45
Откуда: Челябинск

Сообщение WildCat »

А объясните мне пожалуйста, как происходит инициализация кучи термометров на шине 1-wire?
Ответить

Вернуться в «Интеграция с ПК»