В этом примере показано, как генерировать и декодировать кадры MAC стандарта IEEE ® 802.15.4™ [1] с использованием библиотеки Communications Toolbox™ Library для протокола ZigBee ®.
Стандарт IEEE 802.15.4 определяет уровни MAC и PHY низкоскоростных беспроводных персональных сетей (LR-WPAN) [1]. Уровни IEEE 802.15.4 MAC и PHY обеспечивают основу для других стандартов более высокого уровня, таких как ZigBee, StartHart ®, 6LoWPAN и MiWi. Такие стандарты находят применение в домашней автоматизации и сети датчиков и имеют большое значение для тенденции Интернета вещей (IoT).
Уровень MAC IEEE 802.15.4 вставляет заголовок MAC и нижний колонтитул MAC до и после кадра сетевого уровня соответственно. Нижний колонтитул MAC содержит проверку CRC.

Лрвпан. Объект конфигурации MACFrameConfig используется как при генерации, так и при декодировании MAC-кадров IEEE 802.15.4. Такие объекты описывают кадр MAC и определяют его тип и все применимые свойства. Лрвпан. Функция MACFrameGenerator принимает lrwpan. Объект MACFrameConfig, описывающий кадр и, при необходимости, полезную нагрузку уровня MAC (кадр уровня NET) в байтах (два символа), и выводит кадр MAC в битах. Лрвпан. Функция MACFrameDecoder принимает блок данных протокола MAC (MPDU) в битах и выводит lrwpan. Объект MACFrameConfig, описывающий кадр и, возможно, кадр уровня NET в байтах. Раздел 5 в [1] описывает форматы кадров MAC.
В этом разделе декодируются кадры MAC, передаваемые из коммерческих радиоприемников ZigBee, обеспечивающих автоматизацию дома, и записываемые с помощью радиоприемника USRP ® B200-mini и пакета поддержки Communications Toolbox для радиоприемника USRP ®. Уровень PHY захваченных сигналов был декодирован в соответствии с методикой, описанной в примере восстановления сигналов OQPSK стандарта IEEE 802.15.4. Полученные MPDU сохраняются в MAT-файле:
load lrwpanMACCaptures
Сначала декодируют кадр данных:
[dataFrameMACConfig, netFrame] = lrwpan.MACFrameDecoder(MPDU_data); if ~isempty(dataFrameMACConfig) fprintf('CRC check passed for the MAC frame.\n'); dataFrameMACConfig end
CRC check passed for the MAC frame.
dataFrameMACConfig =
MACFrameConfig with properties:
FrameType: 'Data'
General MAC properties:
SequenceNumber: 244
AcknowledgmentRequest: 1
DestinationAddressing: 'Short address'
DestinationPANIdentifier: '1E16'
DestinationAddress: '35EA'
SourceAddressing: 'Short address'
SourceAddress: '0000'
PANIdentificationCompression: 1
FramePending: 0
FrameVersion: '2003'
Security: 0
Затем декодируют кадр подтверждения:
ackFrameMACConfig = lrwpan.MACFrameDecoder(MPDU_ack)
ackFrameMACConfig =
MACFrameConfig with properties:
FrameType: 'Acknowledgment'
General MAC properties:
SequenceNumber: 165
DestinationAddressing: 'Not present'
SourceAddressing: 'Not present'
FramePending: 0
FrameVersion: '2003'
Security: 0
Лрвпан. Функция MACFrameGenerator может генерировать все типы кадров MAC из стандарта IEEE 802.15.4 [1], т.е. типы кадров «Маяк», «Данные», «Подтверждение» и «Команда MAC». Типы кадров команд MAC могут быть дополнительно указаны как «Запрос ассоциации», «Ответ ассоциации», «Уведомление о разъединении», «Запрос данных», «Уведомление о конфликте PAN ID», «Уведомление об отсутствии связи», «Запрос маяка» и «Запрос GTS».
Этот код иллюстрирует создание кадров для всех типов кадров:
% Beacon beaconConfig = lrwpan.MACFrameConfig('FrameType', 'Beacon'); beaconMACFrame = lrwpan.MACFrameGenerator(beaconConfig); % Data dataConfig = lrwpan.MACFrameConfig('FrameType', 'Data'); numOctets = 50; payload = dec2hex(randi([0 2^8-1], numOctets, 1), 2); dataMACFrame = lrwpan.MACFrameGenerator(dataConfig, payload); % Acknowledgment ackConfig = lrwpan.MACFrameConfig('FrameType', 'Acknowledgment'); ackFrame = lrwpan.MACFrameGenerator(ackConfig); % MAC Command commandConfig = lrwpan.MACFrameConfig('FrameType', 'MAC Command'); commandConfig.MACCommand = 'Association request'; % Valid settings for MACCommand also include: 'Association response', % 'Disassociation notification', 'Data request', 'PAN ID conflict % notification', 'Orphan notification', 'Beacon request', and 'GTS request'. commandFrame = lrwpan.MACFrameGenerator(commandConfig);
Далее можно изучить следующие функции генератора и декодирования, а также объект конфигурации:
IEEE 802.15.4-2011 - Стандарт IEEE для локальных и городских сетей - Часть 15.4: Низкоскоростные беспроводные персональные сети (LR-WPAN)