|
адресация устройств на шине RS-485 для AVR |
|
|
|
Jan 5 2009, 10:40
|
Группа: Новичок
Сообщений: 5
Регистрация: 6-10-08
Пользователь №: 40 732

|
Здравствуйте. Есть у меня несколько atmega128, обьединённых через RS-485 интерфейс, построенный на UARTе. Одна из них ведущая, все остальные - ведомые. Подскажите пожалуйста, какие есть методы распределения адресов ведомых устройств на такой шине? В данный момент адреса каждой из ведомых atmegа128 задаются джамперами на плате, подключенными к порту.
|
|
|
|
|
 |
Ответов
|
Jan 5 2009, 13:17
|
Группа: Новичок
Сообщений: 5
Регистрация: 6-10-08
Пользователь №: 40 732

|
Цитата(ukpyr @ Jan 5 2009, 15:01)  ну можно как-нибудь извратиться, например использовать псевдослучайное время ответа узлов и выделенный начальный адрес (например 0). но это уже будет не совсем Modbus, при работе в одной сети с другими устройствами могут возникнуть проблемы. я тоже думал использовать временные задержки при ответах от ведомых устройств, но это уж совсем как то не очень выглядит. да и при возникновении сбоев кавардак в сети может начяться Цитата(_Pasha @ Jan 5 2009, 16:04)  Можно зарезервировать какую-л команду для присвоения адреса, а девайсы снабжать длинным уникальным идентификатором, который должен быть виден юзеру (типа наклейка). Но появляется другая проблема - в память ведущего прописывать идентификаторы...
Лично я свожу количество джамперов к минимуму - 2/3/4 штуки. Те девайсы, что делаю под rs-485, имеют фиксированные адресные пространства по их функционалу (например, измерители температуры с адресами 0x30.. 0x3F, приводы 0x28..0x2f). Вот такая песня. Конечно, если конфликтует с чем-то, адреса подвигаются. да. как ни крути, а с джамперами всё значительно проще. у меня их 2 штуки для задания адреса на каждом устройстве. хватает. вот только при возможном выходе из строя одного из устройств придётся выставльть джамперы в строгом соответствии со сгоревшим девайсом, а делать это возможно придётся посторонним людям. Поэтому и хотелось сделать распределение адресов автоматически.
|
|
|
|
|
Jan 5 2009, 13:24
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Dmitry Sadikov @ Jan 5 2009, 16:13)  я тоже думал использовать временные задержки при ответах от ведомых устройств, но это уж совсем как то не очень выглядит. да и при возникновении сбоев кавардак в сети может начяться Однако, если и в самом деле хочется уйти от первоначального жесткого распределения адресов вручную, думаю, что иного способа не найти. Устройства надо как-то "сериализовать" (т.е. присвоить им уникальные идентификаторы на этапе программирования), и на этапе поиска устройств (отдельная широковещательная команда) они должны отдавать идентификатор хосту. И уж он будет назначать адрес по идентификатору. Я такой метод использовал в беспроводной сети (после запроса ответы в 256 тайм-слотах, главное - использовать генератор случайных чисел с хорошим распределением). При 256 тайм-слотах до полутысячи устройств "разруливаются" за разумное число попыток, предел - порядка 2000 устройств. Для одной ветки RS-485 256 устройств все равно разумный максимум, да и адрес обычно однобайтовый... Правда, у меня скорости были довольно большие и общее время ответа составляло полсекунды. А, скажем, для 9600 это будет заметно дольше. Впрочем, если такой поиск надо проводить однократно или изредка, то почему бы и нет ?
|
|
|
|
Сообщений в этой теме
Dmitry Sadikov адресация устройств на шине RS-485 для AVR Jan 5 2009, 10:40 VladimirYU Цитата(Dmitry Sadikov @ Jan 5 2009, 13:40... Jan 5 2009, 10:46 Dmitry Sadikov хотелось бы в идеале, чтобы адреса распределял вед... Jan 5 2009, 10:54 VladimirYU Цитата(Dmitry Sadikov @ Jan 5 2009, 13:54... Jan 5 2009, 11:03 Dmitry Sadikov Спасибо. воспользуюсь этим способом.
ну а при од... Jan 5 2009, 11:12 VladimirYU Цитата(Dmitry Sadikov @ Jan 5 2009, 14:12... Jan 5 2009, 11:21    rx3apf Цитата(_Pasha @ Jan 5 2009, 16:47) Почему... Jan 7 2009, 20:15   Dmitry Sadikov Цитата(rx3apf @ Jan 5 2009, 16:24) Правда... Jan 5 2009, 19:09  _Pasha Цитата(Dmitry Sadikov @ Jan 5 2009, 17:17... Jan 5 2009, 13:54 _Pasha Можно зарезервировать какую-л команду для присвоен... Jan 5 2009, 13:04 smalcom проблема еще в том, что для 485-го, как указывали ... Jan 5 2009, 13:50 ukpyr Цитатано в каждом из девайсов изначально должен бы... Jan 5 2009, 19:50 Polaris Помимо джамперов можно еще привязкой к разъему вос... Jan 6 2009, 13:17 VladimirYU Dmitry Sadikov, природу не обманешь, либо заранее ... Jan 7 2009, 06:37
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|