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

 
 
> Определение мастера в многомастерной сети
Славентий
сообщение Feb 21 2012, 07:26
Сообщение #1


Частый гость
**

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



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

Имеется некоторое устройство, считающее значение фазы и формирующее на основании данного значения управляющие импульсы. Данное устройство должно работать как индивидуально, так и в группе с несколькими аналогичными устройствами. При работе в компании, одно из устройств должно быть ведущим и раздавать остальным рассчитанное значение фазы. Для организации сети планируется использовать один из вариантов: CAN или SCI(UART). CAN поддерживает аппаратный арбитраж, но может не удовлетворить по скорости передачи. SCI же удовлетворяет по скорости, но, как мне кажется, придется придется прибегать к привлечению человека в вопросе выбора мастера (допустим ставить перемычку в разъеме соединения блоков, куда выведены линии цифрового входа устройства, или ставить на каждый блок клавишу запуска/указания мастера).

Вопрос: какой из методов можно использовать, чтобы обеспечить работу устройства как в одиночном режиме, так и в сети, с минимальным набором действий и участием человека по указанию мастера в сети, а лучше вообще без участия человека?

Заранее благодарен за внимание.



Сообщение отредактировал Славентий - Feb 21 2012, 07:29
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3  
Start new topic
Ответов (30 - 38)
toweroff
сообщение Feb 24 2012, 13:38
Сообщение #31


Гуру
******

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



Цитата(Славентий @ Feb 24 2012, 14:20) *
спасибо за идею, была такая мысль. но в данном случае появляются заморочки при прошивке устройства. придется каким-то образом при прошивке контроллера помимо самой firmware в память записывать дополнительные данные (серийный номер или, может быть, время прошивки, или еще что-то уникальное) причем так, чтобы не лазить в коде, и чтобы процесс был автоматизирован (чтобы данные уникальности для каждого устройства автоматически изменялись после каждого процесса прошивки).

слабо поставить на каждую плату какой-нибудь даллас, типа DS1990, только в подходящем корпусе? rolleyes.gif
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Feb 24 2012, 14:21
Сообщение #32


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Цитата(Ruslan1 @ Feb 24 2012, 15:03) *
Если для Вас заложить и поддерживать джампер сложнее, чем писать-отлаживать-имплементировать в устройство механизм разборки коллизий и всего что с этим связано- снимаю шляпу.

Жизненная ситуация №1: пользователь по ошибке вклчил в сеть с существующим мастером ещё одного мастера (забыл снять джампер).
Жизненная ситуация №2: в сети мастер отвалился (завис, сгорел и т.д.). Устройства как стадо баранов стоят и ждут "рассчитанное значение фазы", т.е. ничего не делают и при этом пользователь даже не догадывается о проблеме.

Даже с аппаратным определение мастера обязательно должна быть реализована детекция коллизий на шине.

По поводу автоматизации генерации уникального номера при прошивке - поищите в сети. Для AVR, например, существует тулза AVRDude, которая может самостоятельно инкриментировать серийный номер в ПЗУ при каждой перепрошивке. Для других МК, думаю, найдутся программы с подобным функционалом.
Go to the top of the page
 
+Quote Post
Славентий
сообщение Feb 24 2012, 14:29
Сообщение #33


Частый гость
**

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



Цитата(Sergey_Aleksandrovi4 @ Feb 24 2012, 16:21) *
Жизненная ситуация №1: пользователь по ошибке вклчил в сеть с существующим мастером ещё одного мастера (забыл снять джампер).
Жизненная ситуация №2: в сети мастер отвалился (завис, сгорел и т.д.). Устройства как стадо баранов стоят и ждут "рассчитанное значение фазы", т.е. ничего не делают и при этом пользователь даже не догадывается о проблеме.

Даже с аппаратным определение мастера обязательно должна быть реализована детекция коллизий на шине.

По поводу автоматизации генерации уникального номера при прошивке - поищите в сети. Для AVR, например, существует тулза AVRDude, которая может самостоятельно инкриментировать серийный номер в ПЗУ при каждой перепрошивке. Для других МК, думаю, найдутся программы с подобным функционалом.


про "жизненные ситуации" это Вы прямо в точку! за наводку по софту спасибо, буду искать.
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Feb 24 2012, 14:31
Сообщение #34


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



ТС, а что за МК (или ПЛИС) вы используете? Дело в том, что некоторые МК имеют свой уникальный идентификатор, который вшит в них уже при производстве. Из известных мне, ID имеют XMEGA, STM8 и STM32.
Go to the top of the page
 
+Quote Post
Славентий
сообщение Feb 24 2012, 14:51
Сообщение #35


Частый гость
**

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



система разрабатывается на TMS320F28069 от Texas Instruments, по даташиту внутреннего идентификатора не встречал
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение Feb 24 2012, 20:14
Сообщение #36


Местный
***

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



Есть такой древний стандарт - Profibus (часть 2) - там вся эта многомастерность подробно и аккуратно расписана.
Go to the top of the page
 
+Quote Post
maksimp
сообщение Feb 25 2012, 05:50
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(Славентий @ Feb 22 2012, 22:39) *
шумы ацп не получится использовать. в устройстве используется несколько каналов для измерений, а неиспользуемые выводы ацп посажены на аналоговую землю, для повышения точности измерений

Получится использовать. Все каналы АЦП всё равно шумят, и в том числе подключённые к земле. А значения измеряемых величин тем более можно рассматривать как случайные. Хотя объём случайности может быть и не велик - например по 1 биту с канала АЦП.
Взять значения всех каналов АЦП, составить вместе (то есть записать в последовательно расположенные элементы массива), по ним вычислить CRC или MD5 или что-то подобное чтобы смешать все каналы АЦП вместе. То что получится - случайное число. По этому числу определить время задержки до начала передачи. Начать передачу. Если коллизия - то может быть у другого блока такие же значения с АЦП - тогда ещё раз заново взять значения всех каналов АЦП и т.д.


Сообщение отредактировал maksimp - Feb 25 2012, 05:59
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 25 2012, 05:57
Сообщение #38


Познающий...
******

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



QUOTE (Ruslan1 @ Feb 24 2012, 19:03) *
Если для Вас заложить и поддерживать джампер сложнее,

Прошу прощения, я не автор темы. Я вообще ничего закладывать и поддерживать не собираюсь rolleyes.gif
В своей сети на базе RS-485 я предподчитаю мастер задавать "дедовским способом", т.е. вручную.
Почему я предложил вариант со случайным временем? Да потому, что автор попросил что угодно. Вот я и предложил что угодно) Вариант с джампером уже был.

Я еще и прошивку идентификатора предложил выше, 6 байт, аналогия с MAC-адресом. Вроде на весь мир хватает)))


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Feb 28 2012, 21:45
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(haker_fox @ Feb 25 2012, 07:57) *
Прошу прощения, я не автор темы. Я вообще ничего закладывать и поддерживать не собираюсь rolleyes.gif
В своей сети на базе RS-485 я предподчитаю мастер задавать "дедовским способом", т.е. вручную.

Не, это я прошу прощения, чего-то меня не в ту степь понесло. У топикстартера несколько другое назначение устройства, названного мастером, чем я привык. У него это не строго определенный контроллер, а просто один из всех. То есть на каждом участке сети (любом изолированном участке) требуется обеспечить уникальность мастера. Если мастеров стало ноль (сломан/связь порвалась) - выбрать нового из всех подключенных слейвов. Если мастеров стало больше одного (два ранее независимых сегмента сети соединили) - нужно чтобы "выжил только один".

По мне я бы собрал систему на CAN, которая позволяет расставить приоритеты, и считал бы сообщением от мастера (фаза или что там) сообщение с максимальным приоритетом за время, равное интервалу сеанса связи. Тогда вообще париться не нужно, все предсказуемо и дубово, не нужно передавать никакие полномочия вообще.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:22
Рейтинг@Mail.ru


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