toweroff 1 24 февраля, 2012 Опубликовано 24 февраля, 2012 · Жалоба спасибо за идею, была такая мысль. но в данном случае появляются заморочки при прошивке устройства. придется каким-то образом при прошивке контроллера помимо самой firmware в память записывать дополнительные данные (серийный номер или, может быть, время прошивки, или еще что-то уникальное) причем так, чтобы не лазить в коде, и чтобы процесс был автоматизирован (чтобы данные уникальности для каждого устройства автоматически изменялись после каждого процесса прошивки). слабо поставить на каждую плату какой-нибудь даллас, типа DS1990, только в подходящем корпусе? :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Aleksandrovi4 2 24 февраля, 2012 Опубликовано 24 февраля, 2012 · Жалоба Если для Вас заложить и поддерживать джампер сложнее, чем писать-отлаживать-имплементировать в устройство механизм разборки коллизий и всего что с этим связано- снимаю шляпу. Жизненная ситуация №1: пользователь по ошибке вклчил в сеть с существующим мастером ещё одного мастера (забыл снять джампер). Жизненная ситуация №2: в сети мастер отвалился (завис, сгорел и т.д.). Устройства как стадо баранов стоят и ждут "рассчитанное значение фазы", т.е. ничего не делают и при этом пользователь даже не догадывается о проблеме. Даже с аппаратным определение мастера обязательно должна быть реализована детекция коллизий на шине. По поводу автоматизации генерации уникального номера при прошивке - поищите в сети. Для AVR, например, существует тулза AVRDude, которая может самостоятельно инкриментировать серийный номер в ПЗУ при каждой перепрошивке. Для других МК, думаю, найдутся программы с подобным функционалом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shooroop 0 24 февраля, 2012 Опубликовано 24 февраля, 2012 · Жалоба Жизненная ситуация №1: пользователь по ошибке вклчил в сеть с существующим мастером ещё одного мастера (забыл снять джампер). Жизненная ситуация №2: в сети мастер отвалился (завис, сгорел и т.д.). Устройства как стадо баранов стоят и ждут "рассчитанное значение фазы", т.е. ничего не делают и при этом пользователь даже не догадывается о проблеме. Даже с аппаратным определение мастера обязательно должна быть реализована детекция коллизий на шине. По поводу автоматизации генерации уникального номера при прошивке - поищите в сети. Для AVR, например, существует тулза AVRDude, которая может самостоятельно инкриментировать серийный номер в ПЗУ при каждой перепрошивке. Для других МК, думаю, найдутся программы с подобным функционалом. про "жизненные ситуации" это Вы прямо в точку! за наводку по софту спасибо, буду искать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Aleksandrovi4 2 24 февраля, 2012 Опубликовано 24 февраля, 2012 · Жалоба ТС, а что за МК (или ПЛИС) вы используете? Дело в том, что некоторые МК имеют свой уникальный идентификатор, который вшит в них уже при производстве. Из известных мне, ID имеют XMEGA, STM8 и STM32. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shooroop 0 24 февраля, 2012 Опубликовано 24 февраля, 2012 · Жалоба система разрабатывается на TMS320F28069 от Texas Instruments, по даташиту внутреннего идентификатора не встречал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew2000 0 24 февраля, 2012 Опубликовано 24 февраля, 2012 · Жалоба Есть такой древний стандарт - Profibus (часть 2) - там вся эта многомастерность подробно и аккуратно расписана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksimp 0 25 февраля, 2012 Опубликовано 25 февраля, 2012 (изменено) · Жалоба шумы ацп не получится использовать. в устройстве используется несколько каналов для измерений, а неиспользуемые выводы ацп посажены на аналоговую землю, для повышения точности измерений Получится использовать. Все каналы АЦП всё равно шумят, и в том числе подключённые к земле. А значения измеряемых величин тем более можно рассматривать как случайные. Хотя объём случайности может быть и не велик - например по 1 биту с канала АЦП. Взять значения всех каналов АЦП, составить вместе (то есть записать в последовательно расположенные элементы массива), по ним вычислить CRC или MD5 или что-то подобное чтобы смешать все каналы АЦП вместе. То что получится - случайное число. По этому числу определить время задержки до начала передачи. Начать передачу. Если коллизия - то может быть у другого блока такие же значения с АЦП - тогда ещё раз заново взять значения всех каналов АЦП и т.д. Изменено 25 февраля, 2012 пользователем maksimp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 25 февраля, 2012 Опубликовано 25 февраля, 2012 · Жалоба Если для Вас заложить и поддерживать джампер сложнее, Прошу прощения, я не автор темы. Я вообще ничего закладывать и поддерживать не собираюсь :rolleyes: В своей сети на базе RS-485 я предподчитаю мастер задавать "дедовским способом", т.е. вручную. Почему я предложил вариант со случайным временем? Да потому, что автор попросил что угодно. Вот я и предложил что угодно) Вариант с джампером уже был. Я еще и прошивку идентификатора предложил выше, 6 байт, аналогия с MAC-адресом. Вроде на весь мир хватает))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 28 февраля, 2012 Опубликовано 28 февраля, 2012 · Жалоба Прошу прощения, я не автор темы. Я вообще ничего закладывать и поддерживать не собираюсь :rolleyes: В своей сети на базе RS-485 я предподчитаю мастер задавать "дедовским способом", т.е. вручную. Не, это я прошу прощения, чего-то меня не в ту степь понесло. У топикстартера несколько другое назначение устройства, названного мастером, чем я привык. У него это не строго определенный контроллер, а просто один из всех. То есть на каждом участке сети (любом изолированном участке) требуется обеспечить уникальность мастера. Если мастеров стало ноль (сломан/связь порвалась) - выбрать нового из всех подключенных слейвов. Если мастеров стало больше одного (два ранее независимых сегмента сети соединили) - нужно чтобы "выжил только один". По мне я бы собрал систему на CAN, которая позволяет расставить приоритеты, и считал бы сообщением от мастера (фаза или что там) сообщение с максимальным приоритетом за время, равное интервалу сеанса связи. Тогда вообще париться не нужно, все предсказуемо и дубово, не нужно передавать никакие полномочия вообще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться