IEEE 802.15.4 - генерация кадра MAC и декодирование

Этот пример показывает, как сгенерировать и декодировать кадры MAC стандарта IEEE® 802.15.4™ [1] пользование Библиотекой Communications Toolbox™ для Протокола ZigBee®.

Фон

Стандарт IEEE 802.15.4 задает слои MAC и PHY Беспроводных Персональных Сетей области С низкой ставкой (LR-WPANs) [1]. Слои IEEE 802.15.4 MAC и PHY обеспечивают основание других стандартов более высокого слоя, таких как ZigBee, WirelessHart®, 6LoWPAN и MiWi. Такие стандарты находят применение в домашней автоматизации и организации сети датчика и очень относятся к тренду Интернета вещей (IoT).

Архитектура

Слой IEEE 802.15.4 MAC вставляет заголовок MAC и нижний колонтитул MAC до и после кадра сетевого слоя, соответственно. Нижний колонтитул MAC содержит проверку CRC.

lrwpan. Объект настройки MACFrameConfig используется и в генерации и в декодировании кадры MAC IEEE 802.15.4. Такие объекты описывают кадр MAC и задают его тип кадра и все применимые свойства. lrwpan. Функция MACFrameGenerator принимает lrwpan. Объект MACFrameConfig, описывающий кадр, и опционально полезную нагрузку слоя MAC (кадр СЕТЕВОГО слоя) в байтах (2D символы) и выходные параметры кадр MAC в битах. lrwpan. Функция MACFrameDecoder принимает Модуль данных о протоколе MAC (MPDU) в битах и выводит lrwpan. Объект MACFrameConfig, описывающий кадр и возможно СЕТЕВОЙ слой, структурирует в байтах. Пункт 5 в [1] описывает форматы кадра MAC.

Декодирование кадров MAC домашней автоматизации радио ZigBee

Этот раздел декодирует кадры MAC, переданные от коммерческих радио ZigBee, разрешающих домашнюю автоматизацию и полученное использование USRP® B200-мини-радио и Пакет Поддержки Communications Toolbox для радио USRP®. Слой PHY полученных форм волны декодировался согласно методологии, описанной в Восстановлении примера Сигналов IEEE 802.15.4 OQPSK. Получившиеся MPDUs хранятся в файл 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

Генерация кадров MAC

lrwpan. Функция MACFrameGenerator может сгенерировать все типы кадра MAC из стандарта IEEE 802.15.4 [1], т.е. 'Маяк', 'Данные', 'Подтверждение', и 'типы кадра' Команды MAC. Типы кадра Команды MAC могут быть далее заданы как: 'Ассоциация запрашивает', 'Ответ ассоциации', 'Уведомление о разъединении', 'Данные запрашивают', 'уведомление о конфликте ID PAN', 'Уведомление о висячей строке', 'Запрос маяка', и '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);

Дальнейшее исследование

Можно далее исследовать следующий генератор и декодирующие функции, а также объект настройки:

Выбранная библиография

  1. IEEE 802.15.4-2011 - Стандарт IEEE для Локальных сетей и городских компьютерных сетей - Часть 15.4: Беспроводные Персональные Сети области С низкой ставкой (LR-WPANs)