Статистическое моделирование интерференции WLAN в сети BLE

Этот пример показывает, как моделировать статистическое моделирование интерференции WLAN в сети Bluetooth® Low Energy использование Библиотека Communications Toolbox™ для Протокола Bluetooth.

Фон

С тех пор существуют различные типы беспроводных сетей, действующих в том же нелицензированном диапазоне частот, для двух различных сетей возможно вмешаться друг в друга. Эта интерференция может вызвать отказы передачи в обоих сети. Нет никаких стандартных методов достигнуть сосуществования двух различных беспроводных сетей. Стандарт IEEE 802.15.2 [1] задает методические рекомендации, чтобы достигнуть сосуществования Беспроводных персональных сетей области (WPAN) с другими беспроводными устройствами, действующими в нелицензированных диапазонах частот. Коммуникация WLAN требует минимума пропускной способности на 20 МГц, в то время как устройства Bluetooth низкой энергии (BLE) требуют пропускной способности на только 2 МГц. WLAN использует механизм доступа к каналу под названием Обнаружение несущей Несколько доступ с Предотвращением Столкновения (CSMA/CA), в то время как устройства BLE используют скачкообразное движение частоты. Интерференция происходит, когда рабочая частота BLE и устройств WLAN накладывается. Чтобы минимизировать интерференцию, механизмы сосуществования могут использоваться.

Механизмы сосуществования широко классифицируются в следующие две категории [1]:

  1. Совместный: Этот механизм требует линии связи между сетями BLE и WLAN. Поскольку эти две сети могут связаться друг с другом, одна из этих сетей приостановит свою передачу, в то время как другой использует канал. Этот механизм используется, когда WLAN и устройства BLE встраиваются в то же физическое устройство.

  2. Несовместный: Этот механизм не требует никакой линии связи между сетями BLE и WLAN. Поскольку эти две сети не могут связаться друг с другом, сети будут использовать свои собственные методы, чтобы обнаружить интерференцию другой сети. Этот механизм используется, когда WLAN и устройства BLE не встраиваются в то же физическое устройство.

Этот пример иллюстрирует несовместный механизм сосуществования для устройств BLE с WLAN.

Сосуществование BLE с WLAN - образцовое описание

Трафик BLE: пакетный обмен BLE моделируется между одним ведущим устройством и несколькими (конфигурируемый до 5) ведомые устройства. В BLE [2] передача данных происходит только во время событий связи. Событие связи является последовательностью пакетного обмена данных между ведущим устройством и ведомым устройством, которое повторяется равномерно (интервалы связи). Все пакеты в событии связи передаются на том же канале данных. В начале каждого события связи ведущее устройство начинает связь с соответствующим ведомым устройством. После этого ведомое устройство отвечает ведущему устройству с пакетом данных. Если нет никаких данных, чтобы отправить, ведомое устройство отвечает пустым пакетом. В этом примере только одна транзакция моделируется событие для каждого подключения. Новое событие связи использует новый канал данных. Новый канал выбран на основе адаптивного быстрого переключения каналов. Адаптивность в быстром переключении каналов заключается в том, что карта канала, указывающая на хорошие или плохие каналы, используется при выборе нового канала.

Интерференция WLAN: трафик WLAN динамически добавлен к или удален из, модель согласно заданному запуску и время окончания. Каждая сеть WLAN может быть сконфигурирована с отдельной вероятностью столкновения. Для каждой передачи сгенерировано случайное число. Если сгенерированное случайное число больше, чем вероятность столкновения, то кадр передачи повреждается.

Сосуществование устройства BLE с WLAN: Если на выбранный канал BLE значительно повлияет интерференция WLAN на основе вероятности столкновения, то переданный пакет BLE подвергнется повреждению. Ведущее устройство периодически классифицирует ведомые каналы как 'хорошие каналы' и 'плохие каналы', на основе пакетных отказов на том канале. Информация о классификации каналов хранится в форме названной карты канала битового массива. Ведущее устройство поддерживает различную карту канала для каждого ведомого устройства. Обновленная карта канала отправляется в ведомое устройство. Периодичность классификации каналов сконфигурирована путем установки свойства ClassificationInterval в объекте helperBLEChannelClassification. Устройства BLE в состоянии ожидания вычисляют напряженное время канала для всех 'плохих каналов' путем проверки Энергетических обнаружений (ED). Если текущее количество хороших каналов является меньше, чем предпочтительное количество хороших каналов, то плохие каналы классифицируются снова. Эта классификация основана на напряженном времени канала, когда свойство BadChannelClassificationMethod установлено в 'Используя энергетические признаки'. Если свойство BadChannelClassificationMethod собирается 'Сбросить все плохие каналы', все плохие каналы сбрасываются к хорошим каналам.

Инициализация параметров устройства BLE

Этот раздел добавляет ведущее устройство BLE и конкретное количество ведомых устройств к сети BLE. Поскольку ведущее устройство ответственно за обновление карты канала для каждого ведомого устройства в сети BLE, параметры классификации каналов сконфигурированы в ведущем устройстве только. helperBLEDeviceModel системный объект используется, чтобы смоделировать сосуществование BLE с WLAN.

% Before simulation, clear the persistent variables used for visualization
clear helperBLEVisualizeCoexistence

% The number of BLE slaves in connection with the master.
slavesCount = 1;

% Initialize the BLE master device
master = helperBLEDeviceModel('Role', 'Master', ...
                              'PeerCount', slavesCount);

% Initialize the channel classification parameters
channelClassification = helperBLEChannelClassification(...
                        'PERThreshold', 60, ...
                        'ClassificationInterval', 200, ...
                        'RxStatusCount', 50, ...
                        'MinRxCountToClassify', 4, ...
                        'BadChannelClassificationMethod', 'Using energy detections', ...
                        'PreferredMinimumGoodChannels', 12);

% Assign channel classification parameters to the master device
master.ChannelClassification = channelClassification;

% Initialize "slavesCount" number of slaves
slaves = cell(1, slavesCount);

% Create "slavesCount" number of slave devices
for i = 1:slavesCount
    slaves{i} = helperBLEDeviceModel('Role', 'Slave');
end

% Create "slavesCount" connections between the "master" and "slaves"
[master, slaves] = helperBLECreateLLConnection(master, slaves);

Инициализация параметров трафика WLAN

Этот раздел вводит интерференцию каждому ведомому устройству путем добавления трафика WLAN с заданной настройкой. Трафик WLAN добавляется в заданном канале WLAN. Настройка для каждой сети WLAN включает вероятность столкновения, интерференционное время начала и интерференционное время окончания. helperBLEWLANTrafficConfig является объектом, используемым, чтобы смоделировать трафик WLAN, и функция addWLANTraffic добавляет трафик WLAN на заданном канале WLAN.

% Create configuration object for configuring WLAN traffic
wlanTraffic = helperBLEWLANTrafficConfig();
wlanNetworksCount = 6;

% Probability of collisions of each WLAN network
collisionProbabilities = [0.35, 0.18, 0.26, 0.60, 0.18, 0.34];
% Set of WLAN channels used by each WLAN network
wlanChannels = [1, 5, 6, 12, 9, 8];
% Start and end times (in milliseconds) of each WLAN network
wlanInterferencePeriod = [0, inf; ...
    0, inf; ...
    0, 2100; ...
    0, inf; ...
    200, 2800; ...
    150, inf];

% Configure WLAN traffic
for i = 1:wlanNetworksCount
    % Channel number
    wlanTraffic.ChannelNumber = wlanChannels(i);

    % Collision probability
    wlanTraffic.CollisionProbability = collisionProbabilities(i);

    % Start time
    wlanTraffic.StartTime = wlanInterferencePeriod(i, 1);

    % End time
    wlanTraffic.EndTime = wlanInterferencePeriod(i, 2);

    % Add WLAN traffic of the specified WLAN network configuration
    wlanTraffic = addWLANTraffic(wlanTraffic);
end

Симуляция сосуществования

Этот раздел моделирует пакетный обмен между ведущие и ведомые устройства BLE для заданного количества времени. Функция verifyInterference используется, чтобы проверить, проверяют ли, вмешивается ли канал BLE значительно трафиком WLAN.

% Initialize simulation parameters

% Reset the random number generator seed
rng default

% Total simulation time in terms of milliseconds
simulationTime = 3500;

% One step time is taken as 25 microseconds (0.025 milliseconds)
stepTime = 0.025;

% Empty packet
emptyPacket = struct('Packet', [], ...
                     'AccessAddress', '', ...
                     'RateIndex', '', ...
                     'ChannelIndex', -1);

% Initialize the slave output
slaveOutput = emptyPacket;

% Preallocate the buffers to store the slave outputs
slaveOutputs = cell(1, slavesCount);

% Initialize figures for visualization of coexistence model for each slave
coexistenceModel = ...
    helperBLEVisualizeCoexistence(...
    'Action', 'Initialize', ...
    'SlaveCount', slavesCount, ...
    'WLANChannelList', wlanChannels, ...
    'PERThreshold', master.ChannelClassification.PERThreshold, ...
    'ClassificationInterval', master.ChannelClassification.ClassificationInterval, ...
    'ChannelBusyCountThreshold', master.ChannelClassification.ChannelBusyCountThreshold, ...
    'PreferredMinimumGoodChannels', master.ChannelClassification.PreferredMinimumGoodChannels, ...
    'ConnectionInterval', master.LLConnectionConfigs(1).ConnectionInterval);
viewModel(coexistenceModel);

% Run simulation
for simulationTimer = 0:stepTime:simulationTime
    % Stop the simulation, if all the slaves are disconnected from the
    % master due to interference.
    if numel(master.LLConnectionConfigs) == 0
        % Clear the persistent variables used for visualization before
        % simulation termination.
        clear helperBLEVisualizeCoexistence

        fprintf('Simulation terminated as all slaves are disconnected from the master device.\n')
        break
    end

    % Update WLAN traffic in visualization
    helperBLEUpdateWLANTraffic(slavesCount, wlanChannels, wlanTraffic, simulationTimer);

    % MASTER: Transmitting or Receiving mode
    if (master.ActiveChannel == slaveOutput.ChannelIndex) && ...
            strcmpi(master.ActiveAccessAddress, slaveOutput.AccessAddress)
        masterOutput = step(master, slaveOutput);
    else
        masterOutput = step(master, emptyPacket);
    end

    if ~(isempty(masterOutput.Packet))
        interferenceEffect = verifyInterference(wlanTraffic, ...
            masterOutput.ChannelIndex, simulationTimer);
        % Corrupt the packet, if the interference effect is 1
        if (interferenceEffect == 1)
            masterOutput.Packet(1:2) = ~masterOutput.Packet(1:2);
        % Drop the packet, if the interference effect is 2 (interference is
        % too high)
        elseif (interferenceEffect == 2)
            masterOutput = emptyPacket;
        end
    end

    % SLAVE: Transmitting or Receiving mode
    for i = 1:slavesCount
        % Pass the "masterOutput" to the slave listening in the same
        % frequency and matched access address
        if (slaves{i}.ActiveChannel == masterOutput.ChannelIndex) && ...
                strcmpi(slaves{i}.ActiveAccessAddress, masterOutput.AccessAddress)
            slaveOutputs{i} = step(slaves{i}, masterOutput);
        % Pass an empty packet to all other slaves
        else
            slaveOutputs{i} = step(slaves{i}, emptyPacket);
        end
    end

    slaveOutput = emptyPacket;

    % Get the active slave output (At any time instance only one slave is
    % active)
    for i = 1:slavesCount
        if ~isempty(slaveOutputs{i}.Packet)
            slaveOutput = slaveOutputs{i};
            break
        end
    end

    if ~(isempty(slaveOutput.Packet))
        interferenceEffect = verifyInterference(wlanTraffic, ...
            slaveOutput.ChannelIndex, simulationTimer);
         % Corrupt the packet, if the interference effect is 1
        if (interferenceEffect == 1)
            slaveOutput.Packet(1:2) = ~slaveOutput.Packet(1:2);
        % Drop the packet, if the interference effect is 2 (interference is
        % too high)
        elseif (interferenceEffect == 2)
            slaveOutput = emptyPacket;
        end
    end
end

% After simulation, clear the persistent variables used for visualization
clear helperBLEVisualizeCoexistence

% Log the statistics of this example to
% |bleCoexistenceWithStatisticalWLANStatistics.mat| file
helperBLELogCoexistenceStats(master, slaves, ...
    'bleCoexistenceWithStatisticalWLANStatistics.mat');
Master sending updated channel map  to slave with AccessAddress "12345679"
Master sending updated channel map  to slave with AccessAddress "12345679"

Результаты симуляции

Симуляция этого примера генерирует:

  1. График во время выполнения для каждой пары связи "главный-подчиненный" изображение совокупного показателя успешности и состояния (хороший или плохой) каждого канала отображен.

  2. Матовый файл bleCoexistenceWithStatisticalWLANStatistics.mat с подробной статистикой получен для каждой пары связи "главный-подчиненный".

Заключение

Этот пример продемонстрировал статистическое моделирование интерференции WLAN в сети Bluetooth Low Energy.

Приложение

Можно далее исследовать следующие функции/объекты:

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

  1. Стандарт IEEE 802.15.2™-2003

  2. SIG Bluetooth, спецификация v5.0 ядра Bluetooth: https://www.bluetooth.com/