Перейти к содержанию
    

Вопрос по интерфейсу ZigBee

Добрый день, при изучении стандарта ZigBee возникло непонимание.

Я включаю ХОСТ ZIGBee, а затем конечные устройства (топология звезда). Как я понял, конечные устройства посылают запросы на выдачу им 16 битного адреса. Хост регистрирует конечные устройства у себя в таблице и отсылает им 16 битные адреса.

Что хотелось бы уточнить:

1. Могу ли я изменить 16 битные адреса (после инициализации конечного устройства в сети) и сохранить их в Flash памяти, чтобы устройство всегда имело один и тотже адрес?

2. При включении конечных устройств они появляются в сети, как мне узнать какое конечое устройство получило какой 16 битный адрес. ХОСТ подключен к РС и на терминал у меня выводятся адреса подключаемых конечных устройств, но хотелось бы понять какое устройство имеет какой адрес, чтобы потом обращаться к этому устройству? Например, датчики температуры у меня расположены в разных комнатах, и мне необходимо понимать из какой комнаты какой датчик передает мне свою температуру, или я хочу поменять параметры одного датчика находящегося в определенной комнате.

3. Могу ли я изменять параметры сети для всех устройств (во время работы), например сменить номер канала, или изменить PAN ID, изменить адреса устройств. и как это сделать? Наверное сеть нужно как-то рестартовать?

Если у кого есть примеры программ работы с устройствами ZIGBee со стеком от TI, то буду очень благодарен если Вы поделитесь.

 

С уважением Сергей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Могу ли я изменить 16 битные адреса (после инициализации конечного устройства в сети) и сохранить их в Flash памяти, чтобы устройство всегда имело один и тотже адрес?

В общем случае - нет. Для звезды - это возможно, так как выдает короткие адреса только 1 нода и она знает какие уже использовались. Если в сети есть еще роутеры, то оба они могут выдать один и тот же адрес двум разным устройствам и если этот конфликет будет обнаружен, то они могут сменить адреса. На статичность адресов можно рассчитывать только если Вы уверены, что в сети будут только Ваши устройства, но тогда не понятно зачем ZigBee.

 

К стати, общий вопрос, зачем ZigBee если топология все-равно звезда?

 

2. При включении конечных устройств они появляются в сети, как мне узнать какое конечое устройство получило какой 16 битный адрес. ХОСТ подключен к РС и на терминал у меня выводятся адреса подключаемых конечных устройств, но хотелось бы понять какое устройство имеет какой адрес, чтобы потом обращаться к этому устройству?

Обычно для точной адресации используются длинные (MAC) адреса, и ZDO (один из уровней стека) предоставляет сервис по преобразованию длииный-короткий и обратно.

 

3. Могу ли я изменять параметры сети для всех устройств (во время работы), например сменить номер канала, или изменить PAN ID, изменить адреса устройств. и как это сделать? Наверное сеть нужно как-то рестартовать?

Номер канала можно изменить через сервисы ZDO. Все остальное - только рестартом сети. Зачем понадобилось менять PANID и адреса?

 

Если у кого есть примеры программ работы с устройствами ZIGBee со стеком от TI, то буду очень благодарен если Вы поделитесь.

 

Тут ничем помочь не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем случае - нет. Для звезды - это возможно, так как выдает короткие адреса только 1 нода и она знает какие уже использовались. Если в сети есть еще роутеры, то оба они могут выдать один и тот же адрес двум разным устройствам и если этот конфликет будет обнаружен, то они могут сменить адреса. На статичность адресов можно рассчитывать только если Вы уверены, что в сети будут только Ваши устройства, но тогда не понятно зачем ZigBee.

К стати, общий вопрос, зачем ZigBee если топология все-равно звезда?

 

Возможно будет и другая топология, но использую ZigBee только из-за низкой стоимости. Если Вы можете посоветовать другие интерфейсы буду очень рад. Задача проста, управление приборами и температурой у меня в доме.

 

Обычно для точной адресации используются длинные (MAC) адреса, и ZDO (один из уровней стека) предоставляет сервис по преобразованию длииный-короткий и обратно.

 

Да с этим я разбирался, но думал есть более простые способы.

 

Как я понял, тогда придется брать каждый датчик с ZigBee считывать его МАС адрес, потом регистрировать в моей программе на РС (расположение и функционал (в какой комнате находится и какой датчик)) и только после этого я смогу ему задавать или считывать значения. Т.е. Если я хочу установить в разных комнатах разные температуры. Таким образом, настройка сети из десятка датчиков займет много времени. Я правильно понимаю? Или можно создать для датчиков каждой комнаты группу и тогда зная принадлежность датчика к группе управлять ею.

 

Идея проста, сделать кучу конечных устройств с одной прошивкой, а потом настраивать уже по месту.

 

Номер канала можно изменить через сервисы ZDO. Все остальное - только рестартом сети. Зачем понадобилось менять PANID и адреса?

 

Я так думал, сделаю сеть и если захочу потом добавить другое устройство, то спец командами могу настроить его на другой PANID. Если вдруг сосед тоже захочет такую игрушку установить у себя. Тогда не меняя прошивки я смогу настраивать различные сети.

Изменено пользователем Grave_Digger

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно будет и другая топология, но использую ZigBee только из-за низкой стоимости.

Имелось в виду, что можно остановиться на MAC уровне, не сталкиваясь со все сложностью ZigBee. Железо останется прежним.

 

Как я понял, тогда придется брать каждый датчик с ZigBee считывать его МАС адрес, потом регистрировать в моей программе на РС (расположение и функционал (в какой комнате находится и какой датчик)) и только после этого я смогу ему задавать или считывать значения. Т.е. Если я хочу установить в разных комнатах разные температуры. Таким образом, настройка сети из десятка датчиков займет много времени. Я правильно понимаю? Или можно создать для датчиков каждой комнаты группу и тогда зная принадлежность датчика к группе управлять ею.

То что описано выше - это нормальный и предусмотренный спецификацией процесс инсталляции сети (по терминологии спецификации - commissioning). При правильной реализации софта (нужно просто учесть, что такая процедура - это часть работы устройства) инсталляция займет не так много времени. Уж всяко меньше прокладывания проводки.

 

Группы можно задавать, но нужно смотреть на поддержку этого функционала конкретной реализацией стека. Я бы не рекомендовал с ними заморачиваться.

 

Я так думал, сделаю сеть и если захочу потом добавить другое устройство, то спец командами могу настроить его на другой PANID.

 

Короткий PANID выбирается стеком автоматически и до выбора координатор смотрит, что кругом никого нет с таким PANID, тут проблем не может быть. Если случайно все-таки получится конфликт, то он должен быть прозрачно для пользователя разрешен самим стеком, это часть спецификации. Длинный PANID равен МАК-у координатора установившего сеть, МАКи должны быть уникальны по всему миру, тут проблем тоже не может быть.

 

Естественно все это работатет при следовании спецификации, если сосед просто вобьет такой же МАК, то проблемы будут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Короткий PANID выбирается стеком автоматически и до выбора координатор смотрит, что кругом никого нет с таким PANID, тут проблем не может быть. Если случайно все-таки получится конфликт, то он должен быть прозрачно для пользователя разрешен самим стеком, это часть спецификации. Длинный PANID равен МАК-у координатора установившего сеть, МАКи должны быть уникальны по всему миру, тут проблем тоже не может быть.

 

Естественно все это работатет при следовании спецификации, если сосед просто вобьет такой же МАК, то проблемы будут.

 

Вижу проблему не в ХОСТАХ, конечные устройства будут искать ХОСТ и могут найти 2 или более (сколько будет) , соответственно могут присоединиться не к тому, вот хочу иметь возможность перенастроить конечное устройство на другой ХОСТ поменяв ему PANID.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вижу проблему не в ХОСТАХ, конечные устройства будут искать ХОСТ и могут найти 2 или более (сколько будет) , соответственно могут присоединиться не к тому, вот хочу иметь возможность перенастроить конечное устройство на другой ХОСТ поменяв ему PANID.

 

Вы не первый кто видит такую проблему :), ее видели еще при создании стандарта.

 

Существует 2 способа входа в сеть:

1. Ассоциация (происходит на MAC уровне). Разрешает-ли конкретное устройство подсоединяться к себе задается парамметром AssociationPermit. Подсоединение происходит или к сети с заданным PANID или к первой попавшейся при сканировании или как-то еще выбранной, зависит от устройства.

 

2. Rejoin (происходит на сетевом уровне). Разрешен всегда, но только к заданной и заранее известной сети.

 

Стандартный способ решить проблему построения сети и непускания в нее никого больше - разрешать AssociationPermit только на время подключения нового устройства. Это не спасет от входа через rejoin. Но тут уже ничего не спасет, злоумышленник всегда сможет подключиться к сети без использования шифрования. Отсюда следующее решение - использовать шифрование. Тогда в сети смогут работать только те устройства, которые знаю ключ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы не первый кто видит такую проблему :), ее видели еще при создании стандарта.

 

Существует 2 способа входа в сеть:

1. Ассоциация (происходит на MAC уровне). Разрешает-ли конкретное устройство подсоединяться к себе задается парамметром AssociationPermit. Подсоединение происходит или к сети с заданным PANID или к первой попавшейся при сканировании или как-то еще выбранной, зависит от устройства.

 

2. Rejoin (происходит на сетевом уровне). Разрешен всегда, но только к заданной и заранее известной сети.

 

Стандартный способ решить проблему построения сети и непускания в нее никого больше - разрешать AssociationPermit только на время подключения нового устройства. Это не спасет от входа через rejoin. Но тут уже ничего не спасет, злоумышленник всегда сможет подключиться к сети без использования шифрования. Отсюда следующее решение - использовать шифрование. Тогда в сети смогут работать только те устройства, которые знаю ключ.

 

Спасибо, с этим вроде разобрался. Появилось еще больше вопросов.

в МАС есть функции считывания адресов : (это применительно к TI (z-stack или TIMAC))

 

uint16 devaddr_sh;

sAddrExt_t devaddr_ex;

 

MAC_MlmeGetReq(MAC_SHORT_ADDRESS, &devaddr_sh);

MAC_MlmeGetReq(MAC_EXTENDED_ADDRESS,&devaddr_ex);

 

вот при каждой перезагрузке конечных устройств я получаю разные адреса. С короткими понятно, пусть разные будут, а вот почему МАС всегда разный? Или есть другие функции?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот при каждой перезагрузке конечных устройств я получаю разные адреса. С короткими понятно, пусть разные будут, а вот почему МАС всегда разный? Или есть другие функции?

 

Я не спец по стеку от TI. Может Вы их как-то неправильно инициализируете изначально и возвращается мусор. Если короткий адрес стек должен выбрать сам, то длинный ему нужно дать. Вы это делаете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не спец по стеку от TI. Может Вы их как-то неправильно инициализируете изначально и возвращается мусор. Если короткий адрес стек должен выбрать сам, то длинный ему нужно дать. Вы это делаете?

 

Простите, я не сильно разбирался в протоколе, но вроде МАС должен присутствовать в микросхеме изначально, в моем случае в микросхеме сс2520, я должен только считать его. Я пытаюсь считать МАС конечного устройства из самого конечного устройства. Я не очень понял что значит "ему нужно давать"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

МАС должен присутствовать в микросхеме изначально, в моем случае в микросхеме сс2520

 

Нет. По аналогии с обычными сетевыми картами, МАС адрес специфичен для производителя (содержит код производителя) и поэтому не может быть известен заранее. Более того, если MAC прошивать на этапе производства в микросхему, то она будет стоить уже совсем не так дешево.

 

Существуют в продаже отдельные UID чипы, которые в силу уникальности стоят весьма ощутимых денег. Можно хранить UID в EEPROM (как это часто делается на сетевых картах, например) или где-то еще, но в любом случае обеспечить уникальность этих номеров - задача производителя железа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня так же появился такой вопрос по сетям ZigBee. Можно ли передавать данные по этим сетям по 1 байту в непрерывном режиме (так называемый сквозной канал, например как в WIFI)? Сколько будет составлять скорость передачи данных 1 байта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня так же появился такой вопрос по сетям ZigBee. Можно ли передавать данные по этим сетям по 1 байту в непрерывном режиме (так называемый сквозной канал, например как в WIFI)? Сколько будет составлять скорость передачи данных 1 байта.

Низкая получится скорость, есть только пакетный режим и на каждый пакет навесится от 20 байт заголовков всяких. Но большую чать времени будет составлять не передача, а работа алгоритма CSMA/CA - на пакет с подтверждением суммарно займет несколько мс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. от WiFi не уйдешь. А эти модули в Россию ни как не хотят пускать, а какие есть больно дорогие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. от WiFi не уйдешь. А эти модули в Россию ни как не хотят пускать, а какие есть больно дорогие.

 

Смотря какая задача. Если передача данных точка-точка и совместимость собственно с ZigBee не нужна, то можно использовать просто MAC IEEE802.15.4 (или вообще только PHY) и получить приличную скорость.

 

Атмеловские трансиверы дополнительно поддерживают проприетарные скорости до 2 МБит/c.

Изменено пользователем Taradov Alexander

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У нас вообще стоит несколько задач:

1. задача необходимо передавать пакет данных размером 256 байт до 1400 байт, пауза между пакетами 50мс.

2. задача передача данных 8-10 байт+пауза с частотой следования пакетов 200 Гц

 

На чем можно это реализовать. Мы раньше использовали Моха с WiFi, но она потребляет много и очень дорога.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...