В статье описан принцип адресации ZigBee. Рассмотрены типы узлов и объектов, определенные стандартом, а также профили работы устройств.
Типы узлов
В сети ZigBee определены три вида узлов: координатор (ZigBee Coordinator, ZC), маршрутизатор (ZR) и конечное устройство (ZED). Координатор ZigBee используется для формирования сети. Эту функцию может выполнять только он. Если сеть защищена, добавление новых узлов осуществляется с помощью координатора. Маршрутизаторы ZigBee нужны для расширения и разветвления сети. Как и координаторы, они осуществляют маршрутизацию пакетов и разрешают узлам подключаться к сети.
Конечное устройство ZigBee — это устройство с питанием от батареи, которое переходит в спящий режим, когда сеть неактивна. Для ZED определено свойство RxOnIde. Когда оно ложно, ZED может длительное время находиться в спящем режиме. В сети нет ограничения на время сна, однако в некоторых профилях задан максимальный предел. Например, один час в профиле автоматизации дома.
Когда RxOnIdle ложно, ZED периодически выходит из режима сна и проверяет, есть ли сообщения для него, после чего снова переходит в неактивное состояние. Когда RxOnIdle принимает значение «Истина», ZED мгновенно принимает сообщения. В обоих случаях устройство может в любой момент начать передачу. Свойство RxOnIdle используется, когда для работы приложения требуется большой объем ОЗУ или флэш-памяти.
Узлом сети может быть любое устройство, например датчик света или температуры, выключатель, термостат, электронный замок.
Адрес сети
Типы адресов ZigBee и диапазон их значений приведены в таблице 1. Адрес сети, обозначаемый NwkAddr, представляет собой 16-разрядное число, уникально определяющее узел в сети. Координатор всегда имеет адрес 0x0000. На одном канале могут существовать два координатора с одинаковыми адресами, поскольку они имеют разные PAN ID.
Таблица. 1. Адреса ZigBee
|
Название |
Диапазон |
Описание |
|
Канал |
11–26 |
Физическая часть РЧ–спектра |
|
Идентификатор PAN |
0x0000–0x3fff |
Адрес сети в канале |
|
Адрес сети |
0x0000–0xfff7 |
Адрес узла в сети |
|
Конечная точка |
1–240 |
Адрес приложения в узле |
|
Кластер |
0x0000–0xffff |
Объект внутри приложения |
|
Команда |
0x00–0xff |
Действие внутри кластера |
|
Атрибут |
0x0000–0xffff |
Единица данных внутри кластера |
|
Расширенный PAN ID |
0x0000000000000000–0xffffffffffffffff |
Уникальный 64-разрядный идентификатор сети |
|
Группа |
0x0000–0xffff |
Выбранная часть узлов сети |
|
Идентификатор профиля |
0x0000–0xffff |
Профиль ZigBee |
В стеке ZigBee (0x01) поле NwkAddr характеризует расположение узла в сети. Например, устройство с NwkAddr = 0x0001 является первым подключившемся к сети ZR, а узел с адресом NwkAddr = 0x796F — это первое конечное устройство. В стеке ZigBee Pro (0x02) адрес присваивается произвольным образом.
МАС-адрес
MAC-адрес — это расширенный адрес, представляющий собой уникальный 64-разрядный номер, присвоенный устройству. Между адресом МАС и NwkAddr нет связи. При отключении устройства от сети и подсоединении его к другой МАС-адрес обязательно останется прежним, а NwkAddr может измениться.
Приемники ZigBee не содержат MAC-адрес. Он назначается производителем и записывается во флэш-память МК, расположенного на плате. MAC-адрес может иногда использоваться вместо короткого адреса узла, например, если узел перемещается и меняет свой короткий адрес. Так, когда пульт дистанционного управления выходит из зоны охвата своего родителя, он ищет новое родительское устройство, чтобы быть доступным для узлов сети. МАС-адрес записывается от младшего бита к старшему, поэтому во флэш-память устройства он заносится в обратном порядке.
Адресация внутри узла
Мы рассмотрели параметры узла, необходимые для его определения в сети. Однако ZigBee обеспечивает также совместимость на уровне приложения за счет использования кластеров, конечных точек, команд, атрибутов и профилей. Каждый пакет должен содержать PAN ID (поле MAC), NwkAddr (поле NWK), адрес конечной точки приемника и передатчика, ID профиля и кластера (поле APS).
Конечные точки
Конечные точки позволяют относить один узел к различным профилям или объединять несколько ZigBee-устройств в узел. Каждый узел сети может содержать 1—240 конечных точек в соответствии с количеством выполняемых приложений. Номера конечных точек могут идти не по порядку.
Например, выключатель может быть предназначен как для внутреннего, так и для внешнего освещения. Соответственно, он представляет собой две конечные точки. Такие устройства как термостат могут содержать несколько независимых устройств с точки зрения сети (датчик, интерфейс пользователя, нагревательный и охладительный эле-менты).
Кластеры
Кластеры определяются 16-разрядным идентификатором и являются объектами приложения. В то время как NwkAddr и конечные точки относятся к адресации, кластер определяет назначение приложения. Например, кластер включения и выключения On/Off выполняет действие перевода устройства из одного состояния в другое. При этом тип исполнительного устройства неважен.
Кластеры содержат команды и атрибуты. Текущее состояние устройства определяется приложением по атрибуту внутри кластера. Некоторые кластеры, определенные в ZigBee, приведены в таблице 2. Кластеры определены только внутри конкретного профиля. Например, в одном профиле кластер 0x0000 может выполнять отключение сети (Off), а в другом — содержать основные установки (Basic). Кроме идентификатора кластеры имеют направление. В свойстве SimpleDescriptor конечной точки кластер обозначается как вход или выход.
Таблица. 2. Кластеры ZigBee
|
Наименование |
ID |
|
Basic (основной) |
0x0000 |
|
Power Configuration (регулировка мощности) |
0x0001 |
|
Temperature Configuration (настройка температуры) |
0x0002 |
|
Identify (кластер распознавания) |
0x0003 |
|
Groups (кластер группы) |
0x0004 |
|
Scenes (кластер сцен) |
0x0005 |
|
On/Off (включение/выключение) |
0x0006 |
|
On/Off Configuration (настройка включения и выключения) |
0x0007 |
|
Level Control (управление уровнем) |
0x0008 |
|
Time (время) |
0x000a |
|
Location (местоположение) |
0x000b |
В стандартных профилях (Public profile) используется библиотека кластеров ZigBee (ZigBee Cluster Library, ZCL), содержащая команды и атрибуты. С помощью библиотеки легко получить или присвоить атрибут, используя общий набор команд.
Команды представляют собой 8-разрядное число и могут быть внутрикластерными или межкластерными. Кластерные команды зависят от номера кластера и обычно начинаются с 0x00. Например, 0x00 — команда выключения в кластере OnOff и команда движения к заданному уровню в кластере LevelControl.
В индивидуальных профилях использовать библиотеку кластеров необязательно. Это позволяет сократить программный код. Атрибуты являются 16-разрядными числами и описывают текущее состояние кластера. Совокупность атрибутов всех кластеров, поддерживаемых устройством, определяет состояние устройства.
Профили
Все запросы данных посылаются в профиль приложения. Для этого используются идентификаторы профиля — 16-разрядные числа в диапазоне 0x0000–0x7fff для стандартных профилей и 0xbf00–0xffff — для профилей, определенных производителем.
Профиль относится к приложению или устройству. Стандартные профили определяются альянсом ZigBee, индивидуальные — производителем.
Home Automation (автоматизация дома) — стандартный профиль для объединения в сеть бытовых устройств, в т.ч. осветительных приборов, выключателей, розеток, пультов управления, кондиционеров, термостатов, нагревателей (см. рис. 1). Другой пример — стандартный профиль Commercial Building Automation, который определяет такие устройства ZigBee как сложные осветительные приборы и многопозиционные выключатели, системы отпирания дверей без использования ключа и системы безопасности.
| Рис. 1. Устройства ZigBee в профиле Home Automation |
![]() |
В одной сети может существовать несколько стандартных и индивидуальных профилей. В ZigBee Alliance постоянно идет работа над расширением набора стандартных профилей, чтобы удовлетворить все потребности клиентов. Именно производители определяют, каких профилей не хватает в первую очередь. Краткий список стандартных профилей приведен в таблице 3.
Таблица. 3. Стандартные профили ZigBee
|
ID профиля |
Название профиля |
|
0101 |
Industrial Plant Monitoring (IPM, мониторинг предприятия) |
|
0104 |
Home Automation (HA, автоматизация жилых помещений) |
|
0105 |
Commercial Building Automation (CBA, автоматизация коммерческих помещений) |
|
0107 |
Telecom Applications (TA, телекоммуникация) |
|
0108 |
Personal Home & Hospital Care (PHHC, амбулаторное или стационарное лечение) |
|
0109 |
Advanced Metering Initiative (AMI, дополнительные измерения) |
Профили позволяют соединять устройства различных производителей без дополнительной настройки. Индивидуальные профили, также называемые профилями производителей (Manufacturer Specific Profiles, MSP), не закреплены альянсом ZigBee. Они создаются для таких приложений, которые рассчитаны на взаимодействие с устройствами только одного производителя.
Профили, определенные производителем, позволяют задавать любой набор кластеров, конечных точек и устройств. Стандарт не накладывает каких бы то ни было ограничений на тип передаваемых данных при условии, что скорость передачи находится в допустимом диапазоне и приложение не перегружает канал.
ZigBee Alliance по запросу производителя — члена организации — присваивает идентификатор предложенному им профилю. Чтобы задать кластеры в индивидуальном профиле, необходимо сначала составить карту всех устройств сети и определить, какого типа информацию они должны обрабатывать. В этом случае структура будет наиболее прозрачна и легка в управлении.
Идентификаторы устройств
Каждая конечная точка содержит идентификатор профиля и идентификатор устройства. Как мы уже говорили, одно физическое устройство может представлять собой несколько устройств ZigBee. Идентификаторы устройств ZigBee принимают значения от 0x0000 до 0xffff (см. табл. 4). Идентификаторы устройств имеют двойное назначение. Они позволяют отображать на дисплее пользователя иконки, соответствующие типу устройства, и в то же время помогают сделать инструменты ZigBee более совершенными.
Таблица. 4. Идентификаторы устройств для профиля Home Automation
|
Устройство |
Идентификатор |
Устройство |
Идентификатор |
|
Расширитель диапазона |
0x0008 |
Датчик света |
0x0106 |
|
Розетка электросети |
0x0009 |
Затенитель |
0x0200 |
|
Выключатель света |
0x0100 |
Контроллер затенителя |
0x0201 |
|
Лампа с регулируемой яркостью |
0x0101 |
Нагревательно-охладительный элемент |
0x0300 |
|
Выключатель света |
0x0103 |
Термостат |
0x0301 |
|
Регулятор яркости |
0x0104 |
Датчик температуры |
0x0302 |
Рассмотрим двухпозиционный переключатель и штепсельную розетку. В плане удаленного мониторинга и управления эти устройства идентичны. Они принадлежат одному кластеру — 0x0006 (OnOff). Однако, с точки зрения пользователя, розетка относится к инструменту для ввода в эксплуатацию электронных устройств, а переключатель позволяет включить или выключить свет.
Сеть ZigBee не устанавливает интерфейса между человеком и устройствами. Выключателем может быть кнопка, тумблер, пластина датчика электрического поля, датчик ускорения и т.д. Во всех стандартных профилях ZigBee содержится список устройств. Производители могут расширить его, используя поле Manufacturer Specific Extension, которое является частью интерфейса библиотеки кластеров ZigBee. Они также могут создать устройство в индивидуальном профиле (MSP), тогда оно будет взаимодействовать с устройствами из стандартного профиля через идентификаторы устройств и кластеры.
Simple Descriptor
Свойство Simple descriptor позволяет соединить все устройства в одну конечную точку. По сути, это полное описание конечной точки. Simple descriptor содержит поля, о которых мы уже говорили: ID конечной точки, ID профиля, ID кластера и ID устройства. Заметим, что в нем нет списка доступных в данном кластере команд или атрибутов. Предполагается, что возможности кластера прописаны в устройстве.
В коде программы описание конечной точки имеет следующий вид:
typedef struct zbSimpleDescriptor_tag
{
zbEndPoint_t endPoint;
zbProfileId_t aAppProfId;
zbDeviceId_t aAppDeviceId;
uint8_t appDevVerAndFlag;
zbCounter_t appNumInClusters;
uint8_t *pAppInClusterList;
zbCounter_t appNumOutClusters;
uint8_t *pAppOutClusterList;
} zbSimpleDescriptor_t;
Описание любой конечной точки можно запросить с помощью команды Simple_Desc_req. Одни кластеры обязательны, другие — опциональны. По свойству Simple descriptor любой узел сети может определить, поддержка каких кластеров необязательна. В списке присутствуют как входные, так и входные кластеры. Это позволяет ZigBee согласовывать устройства. Например, если на одной стороне выходной кластер (регулятор яркости), а на другой — такой же кластер, но входной (источник света с регулируемой яркостью), то устройства связываются.
Литература
1. Gislason D. ZigBee applications//www.eetimes.com.
2. Kinney P. ZigBee Technology: Wireless Control that Simply Works//www.zigbee.org.


