|
Определение мастера в многомастерной сети |
|
|
|
Feb 21 2012, 07:26
|

Частый гость
 
Группа: Свой
Сообщений: 95
Регистрация: 11-01-09
Из: Москва, Севастополь
Пользователь №: 43 141

|
Добрый день. Может не совсем правильно озаглавил тему, поэтому освещаю суть проблемы.
Имеется некоторое устройство, считающее значение фазы и формирующее на основании данного значения управляющие импульсы. Данное устройство должно работать как индивидуально, так и в группе с несколькими аналогичными устройствами. При работе в компании, одно из устройств должно быть ведущим и раздавать остальным рассчитанное значение фазы. Для организации сети планируется использовать один из вариантов: CAN или SCI(UART). CAN поддерживает аппаратный арбитраж, но может не удовлетворить по скорости передачи. SCI же удовлетворяет по скорости, но, как мне кажется, придется придется прибегать к привлечению человека в вопросе выбора мастера (допустим ставить перемычку в разъеме соединения блоков, куда выведены линии цифрового входа устройства, или ставить на каждый блок клавишу запуска/указания мастера).
Вопрос: какой из методов можно использовать, чтобы обеспечить работу устройства как в одиночном режиме, так и в сети, с минимальным набором действий и участием человека по указанию мастера в сети, а лучше вообще без участия человека?
Заранее благодарен за внимание.
Сообщение отредактировал Славентий - Feb 21 2012, 07:29
|
|
|
|
3 страниц
< 1 2 3
|
 |
Ответов
(30 - 38)
|
Feb 24 2012, 13:38
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Славентий @ Feb 24 2012, 14:20)  спасибо за идею, была такая мысль. но в данном случае появляются заморочки при прошивке устройства. придется каким-то образом при прошивке контроллера помимо самой firmware в память записывать дополнительные данные (серийный номер или, может быть, время прошивки, или еще что-то уникальное) причем так, чтобы не лазить в коде, и чтобы процесс был автоматизирован (чтобы данные уникальности для каждого устройства автоматически изменялись после каждого процесса прошивки). слабо поставить на каждую плату какой-нибудь даллас, типа DS1990, только в подходящем корпусе?
|
|
|
|
|
Feb 24 2012, 14:21
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764

|
Цитата(Ruslan1 @ Feb 24 2012, 15:03)  Если для Вас заложить и поддерживать джампер сложнее, чем писать-отлаживать-имплементировать в устройство механизм разборки коллизий и всего что с этим связано- снимаю шляпу. Жизненная ситуация №1: пользователь по ошибке вклчил в сеть с существующим мастером ещё одного мастера (забыл снять джампер). Жизненная ситуация №2: в сети мастер отвалился (завис, сгорел и т.д.). Устройства как стадо баранов стоят и ждут "рассчитанное значение фазы", т.е. ничего не делают и при этом пользователь даже не догадывается о проблеме. Даже с аппаратным определение мастера обязательно должна быть реализована детекция коллизий на шине. По поводу автоматизации генерации уникального номера при прошивке - поищите в сети. Для AVR, например, существует тулза AVRDude, которая может самостоятельно инкриментировать серийный номер в ПЗУ при каждой перепрошивке. Для других МК, думаю, найдутся программы с подобным функционалом.
|
|
|
|
|
Feb 24 2012, 14:29
|

Частый гость
 
Группа: Свой
Сообщений: 95
Регистрация: 11-01-09
Из: Москва, Севастополь
Пользователь №: 43 141

|
Цитата(Sergey_Aleksandrovi4 @ Feb 24 2012, 16:21)  Жизненная ситуация №1: пользователь по ошибке вклчил в сеть с существующим мастером ещё одного мастера (забыл снять джампер). Жизненная ситуация №2: в сети мастер отвалился (завис, сгорел и т.д.). Устройства как стадо баранов стоят и ждут "рассчитанное значение фазы", т.е. ничего не делают и при этом пользователь даже не догадывается о проблеме.
Даже с аппаратным определение мастера обязательно должна быть реализована детекция коллизий на шине.
По поводу автоматизации генерации уникального номера при прошивке - поищите в сети. Для AVR, например, существует тулза AVRDude, которая может самостоятельно инкриментировать серийный номер в ПЗУ при каждой перепрошивке. Для других МК, думаю, найдутся программы с подобным функционалом. про "жизненные ситуации" это Вы прямо в точку! за наводку по софту спасибо, буду искать.
|
|
|
|
|
Feb 25 2012, 05:50
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
Цитата(Славентий @ Feb 22 2012, 22:39)  шумы ацп не получится использовать. в устройстве используется несколько каналов для измерений, а неиспользуемые выводы ацп посажены на аналоговую землю, для повышения точности измерений Получится использовать. Все каналы АЦП всё равно шумят, и в том числе подключённые к земле. А значения измеряемых величин тем более можно рассматривать как случайные. Хотя объём случайности может быть и не велик - например по 1 биту с канала АЦП. Взять значения всех каналов АЦП, составить вместе (то есть записать в последовательно расположенные элементы массива), по ним вычислить CRC или MD5 или что-то подобное чтобы смешать все каналы АЦП вместе. То что получится - случайное число. По этому числу определить время задержки до начала передачи. Начать передачу. Если коллизия - то может быть у другого блока такие же значения с АЦП - тогда ещё раз заново взять значения всех каналов АЦП и т.д.
Сообщение отредактировал maksimp - Feb 25 2012, 05:59
|
|
|
|
|
Feb 25 2012, 05:57
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (Ruslan1 @ Feb 24 2012, 19:03)  Если для Вас заложить и поддерживать джампер сложнее, Прошу прощения, я не автор темы. Я вообще ничего закладывать и поддерживать не собираюсь  В своей сети на базе RS-485 я предподчитаю мастер задавать "дедовским способом", т.е. вручную. Почему я предложил вариант со случайным временем? Да потому, что автор попросил что угодно. Вот я и предложил что угодно) Вариант с джампером уже был. Я еще и прошивку идентификатора предложил выше, 6 байт, аналогия с MAC-адресом. Вроде на весь мир хватает)))
--------------------
Выбор.
|
|
|
|
|
Feb 28 2012, 21:45
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(haker_fox @ Feb 25 2012, 07:57)  Прошу прощения, я не автор темы. Я вообще ничего закладывать и поддерживать не собираюсь  В своей сети на базе RS-485 я предподчитаю мастер задавать "дедовским способом", т.е. вручную. Не, это я прошу прощения, чего-то меня не в ту степь понесло. У топикстартера несколько другое назначение устройства, названного мастером, чем я привык. У него это не строго определенный контроллер, а просто один из всех. То есть на каждом участке сети (любом изолированном участке) требуется обеспечить уникальность мастера. Если мастеров стало ноль (сломан/связь порвалась) - выбрать нового из всех подключенных слейвов. Если мастеров стало больше одного (два ранее независимых сегмента сети соединили) - нужно чтобы "выжил только один". По мне я бы собрал систему на CAN, которая позволяет расставить приоритеты, и считал бы сообщением от мастера (фаза или что там) сообщение с максимальным приоритетом за время, равное интервалу сеанса связи. Тогда вообще париться не нужно, все предсказуемо и дубово, не нужно передавать никакие полномочия вообще.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|