Вход |  Регистрация
 
 
Время электроники Суббота, 16 ноября
 
 


Это интересно!

Ранее

Вопросы безопасности и разработки стандартов для промышленных беспроводных сетей

В статье рассмотрены способы повышения надежности промышленных беспроводных сетей, а также методы и инструменты обеспечения безопасности, предусмотренные в перспективных протоколах промышленных беспроводных сетей, — WirelessHART, WIA-PA и ISA-100. Затронуты вопросы разработки основных стандартов промышленных беспроводных сетей. Статья представляет собой перевод [1].

Базовые принципы построения IP-сетей для встраиваемых систем

В статье приведены сведения об основных сетевых технологиях, применяемых для построения локальных и глобальных сетей, и показана доминирующая роль IP-технологии для встраиваемых систем. Рассмотрен стек протоколов TCP/IP и взаимодействие протоколов на каждом уровне модели OSI. Описаны особенности реализации каждого уровня модели OSI при построении сети для встраиваемых систем.

Применение усовершенствованных эквалайзеров и 20-м медных кабелей в линиях связи

В последнее время была проделана немалая работа по стандартизации медных кабельных линий связи. В результате появились стандарты SFF8431, IEEE802.3ba, FC-PI-4, SFF8461, FC-PI-5 и IEEE802.3ba. В статье рассматриваются новейшие технологии эквалайзерных ИС, а также модернизированные кабельные узлы, позволяющие создавать линии связи с помощью пассивных медных кабелей длиной 20 м. Публикация представляет собой сокращенный перевод [1].

Реклама

По вопросам размещения рекламы обращайтесь в отдел рекламы

Реклама наших партнеров

 

13 октября

Приложения ZigBee: обмен данными, API и PAN

В статье [1] рассмотрены типы передачи данных по сети ZigBee, реализация протоколов API на различных платформах и принцип организации персональной сети на основе ZigBee. Печатается в сокращении.



Обмен данными

Основное назначение беспроводной сети — обеспечение качественной передачи данных между узлами. В стандарте ZigBee наиболее надежный маршрут доставки пакетов выбирается автоматически. Для посылки данных нужна только одна команда, например, AF_DataRequest (&addrInfo, iDataSize, pPtrToData, NULL).

В сети ZigBee используются стандартные термины, определенные организацией IEEE:

– Data Request  — запрос на передачу;

– Data Confirm — сигнал, подтверждающий получение данных;

– Data Indication  — сигнал о наличии данных в канале.

Как показано на рисунке 1, эти запросы посылаются приложением. Каждому запросу данных в ответ генерируется только один сигнал подтверждения, указывающий на успешный прием или неудачу. Сигнал наличия данных может быть послан в любое время.

Рис. 1. Виды запросов

Передача бывает нескольких видов:

– точка-точка (Unicast) со сквозным подтверждением;

– точка-точка (Unicast) без подтверждения;

– широковещательная передача (Broadcast);

– групповая передача (Groupcast/Multicast).

При индивидуальной рассылке сначала между узлами автоматически выбирается маршрут. После подтверждения пакет посылается повторно до трех раз. Иногда маршрут передачи изменяется, если промежуточный узел выходит из строя. Широковещательные данные передаются всем узлам сети, находящимся в пределах досягаемости. Групповая передача осуществляется в пределах определенной группы узлов.

ZigBee — асинхронный протокол, поэтому каждый узел может инициировать передачу в любой момент времени. Например, когда пользователь включает свет, данные посылаются мгновенно, независимо от быстродействия выключателя. Недостаток ZigBee заключается в том, что нельзя предсказать задержку пакета. Обычно принимается, что для передачи пакета требуется по 10 мс на каждый промежуток между абонентами. Сложности возникают, когда требуется повторная посылка или вычисление маршрута. Для выбора маршрута производится широковещательная рассылка, а устройство, начавшее передачу, должно ждать. Повторные посылки делятся на пошаговые — MAC и между конечными устройствами — APS. Если один узел инициирует передачу другому, находящемуся на расстоянии четырех скачков (см. рис. 2), то в среднем пакет будет принят через 40 мс, а подтверждение придет через 80 мс.

Рис. 2. Задержка при передаче пакета

При индивидуальной передаче с подтверждением может быть произведено до трех повторных передач с интервалом 1,5 с, т.е. в худшем случае задержка может составить около 5 с. Размер пакета не влияет на задержку, если канал относительно свободен, поскольку время ожидания выбирается случайным образом, уменьшая время передачи. Но если канал загружен, то вероятность повторной посылки экспоненциально возрастает с увеличением длины пакета. В связи с этим рекомендуется пересылать короткие пакеты, чтобы сократить задержку и уменьшить занимаемую полосу, освобождая ресурс для других приложений. Передача в больших пакетах целесообразна только в случае, если данные имеют очень большой объем.

Программный интерфейс ZigBee

Для интерфейса ZigBee нет единого для всех платформ прикладного протокола API. Сделано это намеренно, чтобы предоставить совершенствование протоколов API производителю платформы. Для разработчика это означает, что при переходе на другую платформу необходимо вносить поправки в программное обеспечение. Чтобы упростить эту задачу, рекомендуется выполнять часть кода, отвечающую за обмен со стеком, на отдельном МК.

В стандарте прописаны только функции ZigBee. Команды, вызывающие ту или иную функцию, имеют разную структуру в зависимости от используемой платформы. Например, команда передачи данных APSDE-DATA.request на оборудовании Freescale вызывается инструкцией AF_DataRequest(), а на платформе Ember — инструкцией emberSendDatagram(). Хотя обе функции называются по-разному и имеют неодинаковый набор аргументов, они производят одно и то же действие — передачу октета.

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

Рассмотрим реализацию протоколов API четверкой крупных производителей: Texas Instruments, Ember, Integration Associates и Freescale.

Texas Instruments

В 2006 г. компания TI купила Chipcon, небольшую норвежскую фирму, занимающуюся производством РЧ-устройств и оборудования ZigBee. Бренд Chipcon до сих пор используется (например, CC2430). Решение Z-Stack можно свободно загрузить с официального сайта TI. В Z-Stack прописаны функции, по структуре очень похожие на команды ZigBee. Так, функция передачи данных AF_DataRequest() выглядит следующим образом: afStatus_t AF_DataRequest(afAddrType_t *dstAddr, endPointDesc_t *srcEP, uint16 cID, uint16 len, uint8 *buf, uint8 *transID, uint8 options, uint8 radius).

Адреса конечной точки и соответствующего узла (или группы) содержатся в структуре afAddrType_t. Устройство-источник и идентификатор (ID) кластера — прямые параметры. Параметры len и buf характеризуют нагрузку приложения и содержат указатель на идентификатор транзакции, с помощью которой приложение контролирует, какой ID будет закреплен за прикладным уровнем APS. Идентификатор автоматически инкрементируется командой AF_DataRequest(), если сообщение буферировано.

Компания TI предлагает два интерфейса Z-Stack: полную (см. выше) и упрощенную версию — Simple API. В стеке Simple API содержится меньше команд и опций, однако приложение становится значительно проще для программиста. Например, в упрощенном варианте запрос данных выглядит следующим образом: void zb_SendDataRequest (uint16 destination, uint16 commandId, uint8 len, uint8 *pData, uint8 handle, uint8 ack, uint8 radius). Среди аргументов нет адресов конечных устройств, идентификаторов кластера и профиля. Все они принимают значения, зарезервированные в индивидуальном профиле Simple API. Сигнал Data Indication в Simple API высылается командой void zb_ReceiveDataIndication (uint16 source, uint16 command, uint8 len, uint8 *pData).

Ember API

Ember — небольшая американская компания, образованная несколькими инвесторами, в т.ч. Бобом Меткалфом (Bob Metcalf), основателем технологии Ethernet. Подход Ember отличается от рассмотренного выше. Компания использует транспортный уровень и расширяет набор функций, определенный в стандарте ZigBee:

– emberSendDatagram();

– emberSendSequenced();

– emberSendMulticast();

– emberSendLimitedMulticast();

– emberSendUnicast() посылает индивидуальные сообщения APS;

– emberSendBroadcast () посылает широковещательные сообщения APS.

Пример использования команды emberSendDatagram():

EmberStatus AppSendDatagram (int8u clusterId, int8u *contents, int8u length)

{

EmberMessageBuffer message = EMBER_NULL_MESSAGE_BUFFER;

EmberStatus status;

if (length ! = 0) {

message = emberFillLinkedBuffers (contents, length);

if (message = EMBER_NULL_MESSAGE_BUFFER)

return EMBER_NO_BUFFERS;

}

status = emberSendDatagram (0, clusterId, message);

if (message ! = EMBER_NULL_MESSAGE_BUFFER)

emberReleaseMessageBuffer (message);

return status;

}

Еще одна особенность подхода Ember — использование связанных буферов по 32 байт, которые образуют один большой буфер для хранения сообщений, полученных по беспроводному каналу.

Протоколы EmberZNet имеют и другие интересные свойства, например, удаленное обновление программного стека по беспроводной сети или Ethernet. Возможность обновления по беспроводному каналу позволяет расширять функционал или корректировать ошибки, однако в то же время представляет собой потенциальную лазейку для несанкционированного доступа.

В отличие от TI или Freescale, для подключения платы ZigBee к ПК компания Ember использует интерфейс Ethernet, а не USB. Достоинство этого подхода заключается в том, что доступ к устройствам ZigBee осуществляется с помощью любого компьютера в сети. Однако при этом стоимость решения возрастает.

Integration Associates API

Компания Integration Associates предлагает решение EZLink. Его особенность заключается в том, что МАС-уровень ZigBee реализован аппаратно. Это открывает доступ к определенным функциям, например шифрации и дешифрации. Решение может быть выполнено на отдельном модуле IA-OEM DAMD1 2400 или в виде USB-флэшки, на которой уже установлена удобная программная среда для мониторинга сети и управления ею.

Freescale API

Компания Freescale предлагает инструмент BeeKit для конфигурации стека через ПК. В набор BeeStack входят не только протоколы обмена, но и управления устройствами. Например, стек протоколов EC-Net разработан для удаленного управления телевизором.

Персональные сети ZigBee

Узлы ZigBee могут только посылать запросы данных друг другу. Такая сеть получила название персональной (PAN — Personal Area Network). В сети ZigBee определены три типа логических устройств: координатор (ZC — ZigBee Coordinator), маршрутизатор (ZigBee Router) и оконечное устройство (ZED — ZigBee End Device). Из них только координатор может формировать сеть, остальные — только подключаться к ней. Тип устройства определяется разработчиком.

Каналы

Сети ZigBee работают на полосе 2,4 ГГц на каналах 11—26, разделенных интервалом 5 МГц (см. рис. 3). В устройствах Freescale каналы имеют номера 0—15, поэтому их надо транслировать в каналы 11—26. В сетях ZigBee используется уплотнение спектра (DSSS — Direct Sequence Spread Spectrum). Передача производится в полудуплексном режиме. В каждый момент времени доступен только один канал. Обычно в протоколах ZigBee не используется переключение канала. Высокое качество работы даже в условиях сильной зашумленности обеспечивается модуляцией O-QPSK и уплотнением DSSS.

Рис. 3. Используемая полоса частот ZigBee

Выбор канала производится пользователем. Устройство при подключении к сети сканирует все каналы. При формировании сети сканирование проводится дважды: в пассивном и активном режимах. Разработчику предоставляется возможность использовать два режима работы сети: с «маяком» (beacon-enabled) и без него (beacon-disabled). Режим beacon-enabled обеспечивает строго структурированную по времени передачу данных в рамках суперциклов, что позволяет определить время задержки на отсылку пакета. Маяком в сети является координатор, который рассылает сообщения синхронизации.

Пассивное сканирование позволяет выбрать наиболее свободный канал, а при активном сканировании координатор рассылает найденные в сети запросы маяка (beacon request), чтобы определить занятые идентификаторы PAN. По умолчанию сеть ZigBee выбирает канал с наименьшим количеством сетей и с самым низким уровнем шума. При подключении устройства к сети проводится только активное сканирование. Если сеть уже сформирована и подключаемое устройство получило ответный кадр маяка (beacon response), то канал считается достаточно тихим.

Длительность сканирования обозначена в стандарте 802.15.4 целым числом от 0 до 14 (см. табл. 1). В платформе Freescale выбор канала и длительности сканирования производится программно с помощью команд mDefaultValueOfChannel_c в файле ApplicationConf.h и gScanDuration_c в файле BeeStackConfiguration.h.

Таблица 1. Длительность сканирования

Значение

Длительность, мс

Значение

Длительность, мс

0

31

8

3 948

1

46

9

7 880

2

77

10

15 744

3

138

11

31 473

4

261

12

62 930

5

507

13

125 844

6

998

14

251 674

7

1 981

Идентификаторы PAN

Идентификаторы (PAN ID) используются для логического отделения узлов одной сети ZigBee от узлов другой, если сети расположены на одной и той же территории либо работают в одном канале. Благодаря разным ID несколько сетей могут существовать в непосредственной близости друг от друга без интерференции.

Идентификатор ZigBee представляет собой 16-разрядное число от 0x0000 до 0x3fff. Заметим, что в стандарте 802.15.4 идентификаторы имеют значения в диапазоне 0x0000—0xfffe. В версии ZigBee 2006 идентификаторы имеют уникальное значение на данном канале, т.е. в разных каналах могут работать устройства с одинаковым ID. В ZigBee 2007 это запрещено из-за применения функции быстрой подстройки частоты (frequency agility), которая разрешает сети переключать каналы для поиска лучшего.

При формировании сети PAN ID принимает значение 0xffff, которое говорит о том, что приложение запрашивает у стека случайный идентификатор, не конфликтующий с ID других, работающих поблизости, сетей. При подключении к сети ID = 0xffff означает, что узел хочет подключиться к любой сети. Идентификатор выбирается пользователем.

Расширенный идентификатор PAN

Расширенные идентификаторы (EPID — Extended PAN ID) представляют собой 64-разрядные числа, которые уникальным образом идентифицируют персональную сеть. Обмен данными производится с использованием 16-разрядного идентификатора, кроме одного случая. Ответный кадр, посланный на запрос маяка, содержит расширенный идентификатор сети, чтобы узел, который хочет подключиться к сети, выбрал нужный ID.

Когда узел ZigBee хочет подключиться к сети, он всегда высылает запрос маяка. Затем он анализирует все полученные ответные маяки и выбирает подходящий. Расширенные идентификаторы не устанавливаются ни одним комитетом стандартов. Для старших 24 разрядов EPID рекомендуется использовать OUI — уникальный номер, присвоенный сетевому устройству производителем. Интересно, что расширенные ID абсолютно не связаны с 16-разрядными идентификаторами и МАС-адресами и используются исключительно для нахождения узлом нужной сети.

Литература

1. Gislason Drew. Zigbee Wireless Networking.



Вы можете скачать эту статью в формате pdf здесь.
Оцените материал:

Автор: Дрю Гисласон (Drew Gislason), президент San Juan Software



Комментарии

0 / 0
0 / 0

Прокомментировать





 

Горячие темы

 
 




Rambler's Top100
Руководителям  |  Разработчикам  |  Производителям  |  Снабженцам
© 2007 - 2019 Издательский дом Электроника
Использование любых бесплатных материалов разрешено, при условии наличия ссылки на сайт «Время электроники».
Создание сайтаFractalla Design | Сделано на CMS DJEM ®
Контакты