|
Определение мастера в многомастерной сети |
|
|
|
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 >
|
 |
Ответов
(1 - 38)
|
Feb 21 2012, 13:47
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(haker_fox @ Feb 21 2012, 16:42)  ...через случайный промежуток времени.. кстати о йожиках... осталось понять откуда его красиво взять. 1) прошивать уникальный номер и привязываться к нему - возня с уникальностью при прошивке железа. 2) ацп шумы ??? (круглый)
|
|
|
|
|
Feb 22 2012, 10:58
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(toweroff @ Feb 22 2012, 14:41)  нууу... спорно. Общий рубильник выкл/вкл, например Всё зависит от того какой интервал времени выбрать в качестве критерия одновременности ...г,д,ч,м,c,мс,мкс,нс,пс...
|
|
|
|
|
Feb 22 2012, 11:11
|

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

|
Цитата(zombi @ Feb 22 2012, 14:58)  Всё зависит от того какой интервал времени выбрать в качестве критерия одновременности ...г,д,ч,м,c,мс,мкс,нс,пс...  ну г,д,ч,м,с можно смело фтоппко а с остальными - это уж как может RTC выдавать Хорошо, согласен, что с подобными временнЫми интервалами есть случайные величины - разброс емкостей питания, нарастание напряжения ядра, RTC,... есть некоторый разброс Но, хорошо шумящий ADC, имхо, лучше
|
|
|
|
|
Feb 22 2012, 18:39
|

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

|
Цитата(zombi @ Feb 22 2012, 11:31)  Если в устройстве есть RTC то при включении использовать его значение в качестве случ.вел. RTC - RealTimeClock? Цитата(toweroff @ Feb 22 2012, 13:41)  нууу... спорно. Общий рубильник выкл/вкл, например если устройства работают в сети, то питание так и подается на все сразу Цитата(toweroff @ Feb 22 2012, 14:11)   ну г,д,ч,м,с можно смело фтоппко а с остальными - это уж как может RTC выдавать Хорошо, согласен, что с подобными временнЫми интервалами есть случайные величины - разброс емкостей питания, нарастание напряжения ядра, RTC,... есть некоторый разброс Но, хорошо шумящий ADC, имхо, лучше шумы ацп не получится использовать. в устройстве используется несколько каналов для измерений, а неиспользуемые выводы ацп посажены на аналоговую землю, для повышения точности измерений значит все-таки не обойтись без кнопок\перемычек...
|
|
|
|
|
Feb 22 2012, 20:55
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Славентий @ Feb 22 2012, 21:39)  RTC - RealTimeClock? Да часы или просто энергонезависимый счетчик RealTimeCounter. Самый простой вариант это кнопка. А чтобы сказать более точно возможно ли без оной обойтись, нужно более точно знать характеристики сети: времянки, макс. кол-во устройств в сети, вообще предполагаемое кол-во выпущенных устройств и т.д.
|
|
|
|
|
Feb 24 2012, 10:20
|

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

|
Цитата(Sergey_Aleksandrovi4 @ Feb 24 2012, 11:43)  Имеет ли каждое устройство свой уникальный серийный номер или иной идентификатор? Например, у кого больше (меньше), тот и мастер на шине. спасибо за идею, была такая мысль. но в данном случае появляются заморочки при прошивке устройства. придется каким-то образом при прошивке контроллера помимо самой firmware в память записывать дополнительные данные (серийный номер или, может быть, время прошивки, или еще что-то уникальное) причем так, чтобы не лазить в коде, и чтобы процесс был автоматизирован (чтобы данные уникальности для каждого устройства автоматически изменялись после каждого процесса прошивки).
Сообщение отредактировал Славентий - Feb 24 2012, 10:22
|
|
|
|
|
Feb 24 2012, 11:03
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(haker_fox @ Feb 24 2012, 07:06)  Я знаю, что в Ethernet нет мастера  Я имел в виду, что там используется передача через случайный промежуток времени, если обнаружена коллизция. И этот метода работает по всему миру. Мои знания не устарели? Это все к тому, что случайность - не такая уж и дыра, в которую можно попасть  дыра. по определению. В какие только дебри народ согласен залезть, лишь бы джампер на плате не ставить  Если для Вас заложить и поддерживать джампер сложнее, чем писать-отлаживать-имплементировать в устройство механизм разборки коллизий и всего что с этим связано- снимаю шляпу. Я в свое время почитал о том как езернет разруливает все нештатные ситуации- понял, что лучше это все обойти, чем влезать. Кстати про езернет и мастеров- если вы захотите автоматически назначать адреса, то и там нужен специальный DHCP сервер, вольницы "сами все решим без главного" в сети не наблюдается.
|
|
|
|
|
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, которая позволяет расставить приоритеты, и считал бы сообщением от мастера (фаза или что там) сообщение с максимальным приоритетом за время, равное интервалу сеанса связи. Тогда вообще париться не нужно, все предсказуемо и дубово, не нужно передавать никакие полномочия вообще.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|