Модель сосуществования BLE с интерференцией сигнала WLAN

В этом примере показано, как симулировать Bluetooth® низкая энергия (BLE) сосуществование с интерференцией WLAN, пользующейся Библиотекой Communications Toolbox™ для Протокола Bluetooth и WLAN Toolbox™. Механизмы сосуществования используются, чтобы минимизировать интерференцию WLAN в сети BLE. В этом примере, вероятности столкновения и интерференционном уровне каждой сети WLAN используется, чтобы повредить сигналы BLE. Результаты симуляции, сгенерированные в этом примере, приходят к заключению, что для высокой вероятности столкновения и интерференционного уровня канала WLAN, достигнутый показатель успешности соответствующего канала BLE является низким.

Механизм сосуществования BLE-WLAN

Как существуют различные типы беспроводных сетей, действующих в том же нелицензированном диапазоне частот, для двух различных сетей возможно вмешаться друг в друга. Эта интерференция может вызвать отказы передачи в обоих сети. Нет никакого стандартизированного алгоритма, чтобы достигнуть сосуществования двух различных беспроводных сетей. Однако стандарт IEEE® 802.15.2™ [1] задает некоторые методические рекомендации, чтобы достигнуть сосуществования беспроводных персональных сетей области (WPAN) с другими беспроводными устройствами, действующими в нелицензированных диапазонах частот.

Этот пример иллюстрирует, что модель сосуществования BLE с WLAN сигнализирует об интерференции. Коммуникация WLAN требует минимума полосы пропускания на 20 МГц, в то время как устройства BLE требуют полосы пропускания на только 2 МГц. WLAN использует названное обнаружение несущей механизма доступа к каналу, к которому несколько получают доступ с предотвращением столкновения (CSMA/CA), в то время как устройства BLE используют скачкообразное движение частоты. Интерференция происходит, когда рабочая частота BLE и устройств WLAN перекрывается. Чтобы минимизировать интерференцию, механизмы сосуществования используются.

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

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

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

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

Сосуществование BLE с WLAN - описание модели

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

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

Трафик WLAN: трафик WLAN динамически добавлен к или удален из, модель согласно заданным временам начала и конца. Каждая сеть WLAN сконфигурирована с отдельной вероятностью столкновения. Кроме того, уровень интерференции WLAN сконфигурирован для каждой сети WLAN, чтобы повредить сигналы BLE в соответствующем канале. Для каждой передачи сгенерировано случайное число между 0 и 1. Если сгенерированное случайное число меньше вероятности столкновения, то передача сигнал BLE повреждается путем добавления сигналов WLAN в том канале. Сгенерированный трафик WLAN может быть изменен для IEEE® 802.11ax™ [3] или 802.11n [4] использование функции wlanTraffic. Однако этот пример использует каналы WLAN на только 20 МГц.

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

Проверяйте на установку пакета поддержки

Проверяйте, установлена ли 'Библиотека Communications Toolbox для пакета поддержки' Протокола Bluetooth или нет.

commSupportPackageCheck('BLUETOOTH');

Параметры конфигурации BLE

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

% The number of BLE Slaves in connection with the Master
slavesCount = 1;

% Create the BLE Master device capable of connecting with "slavesCount"
% number of Slaves
master = helperBLEDeviceModel('Role','Master', ...
    'SlavesCount',slavesCount);

% Initialize the channel classification parameters to classify the BLE
% channels into good or bad channels. PERThreshold:                 Packet
% error rate (PER) threshold value ClassificationInterval:
% Periodicity of channel classification RxStatusCount:
% Maximum number of received packets status MinRxCountToClassify:
% Minimum number of received packets status BadChannelClassificationMethod:
% Method for bad channels classification PreferredMinimumGoodChannels:
% Preferred number of good channels
channelClassification = helperBLEChannelClassification(...
    'PERThreshold',40, ...
    'ClassificationInterval',150, ...
    'RxStatusCount',50, ...
    'MinRxCountToClassify',4, ...
    'BadChannelClassificationMethod','Reset all the bad channels', ...
    'PreferredMinimumGoodChannels',30);

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

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

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

% Create "slavesCount" connections between the "Master" and "Slaves". This
% function creates a Link Layer connection by sharing the common connection
% parameters such as connection interval, access address for each
% Master-Slave connection pair.
[master, slaves] = helperBLECreateLLConnection(master, slaves);

Трафик WLAN модели

Этот раздел моделирует трафик WLAN с помощью заданной настройки.

Параметры конфигурации

Параметры конфигурации для каждой сети WLAN включают вероятность столкновения, интерференционный уровень, интерференционное время начала и интерференционное время окончания в заданном канале WLAN. Объект helperBLEWLANSignalTrafficConfig используется, чтобы смоделировать трафик WLAN.

% Set number of WLAN networks interfering with the BLE network
wlanNetworksCount = 6;

% Set of WLAN channels (in the range [1, 14]) used by each WLAN network
wlanChannels = [1, 5, 6, 12, 9, 8];
% Probability of collisions of each WLAN network with BLE network
collisionProbabilities = [0.75, 0.68, 0.76, 0.80, 0.78, 0.64];
% Start and end times (in milliseconds) of transmission in each WLAN
% network
wlanInterferencePeriod = [0, inf; ...
    0, inf; ...
    0, 2100; ...
    0, inf; ...
    200, 2800; ...
    150, inf];

% Ratio of WLAN signal power level relative to BLE signal power level
wlanInterferenceLevel = [1.20, 0.90, 0.85, 0.95, 0.70, 1.15];

Трафик WLAN модели

Этот раздел конфигурирует интерференцию к каждому Ведомому устройству путем добавления трафика WLAN с заданной настройкой. Трафик WLAN (формы волны non-HT) добавляется всего, задал каналы WLAN с помощью wlanTraffic функцию.

% Create a configuration object for WLAN traffic
wlanTrafficConfig = helperBLEWLANSignalTrafficConfig();

% Configure WLAN traffic with the specified WLAN network parameters
wlanTraffic(wlanTrafficConfig, wlanNetworksCount, wlanChannels, collisionProbabilities, ...
    wlanInterferencePeriod, wlanInterferenceLevel);

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

Этот раздел иллюстрирует связь между Ведущими и Ведомыми устройствами при вмешательстве в сигналы WLAN.

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

Параметры симуляции, требуемые для сосуществования BLE с WLAN, сигнализируют, что интерференция инициализируется в этом коде.

% Initialize simulation parameters

% Reset the random number generator seed
sprev = rng('default');

% To enable the visualization of BLE coexistence with WLAN, set the
% "enableVisualization" to true. To disable the visualization of BLE
% coexistence with WLAN set the "enableVisualization" to false.
enableVisualization = true;

% To enable the visualization of channel hopping sequence, set the
% "enableHoppingVisualization" to true. To disable the visualization of
% channel hopping sequence, set the "enableHoppingVisualization" to false.
% If the "enableVisualization" is set to false, then
% "enableHoppingVisualization" is not considered.
enableHoppingVisualization = true;

% Total simulation time in milliseconds
simulationTime = 4000;

% One step time is considered as 0.025 milliseconds. All the timing
% parameters (connection interval, scan interval, advertising interval,
% etc.) in BLE specification are multiple of 0.625 milliseconds. The
% minimum packet size used in this example is 9 octets (72 bits). The
% packet transmission time in different PHY modes are: 0.072 milliseconds
% (in LE1M), 0.036 milliseconds (in LE2M), 0.144 milliseconds (in LE500K)
% and 0.288 milliseconds (in LE125K). Therefore, the step time is
% considered as 0.025 milliseconds (0.625 is multiple of 0.025) to achieve
% a trade-off between the simulation time and accuracy.
timeStep = 0.025;

% Parameters for generating BLE transmission mode
phyMode = 'LE1M';   % Mode can be 'LE2M' | 'LE1M' | 'LE500K' | 'LE125K'
EbNo = 16;          % Eb/No value in dB

% Initialize PHY parameters sps:              Samples per symbol bleSNR:
% BLE signal to noise ratio initImpairments:  System object for BLE PHY
% impairments
[sps, bleSNR, initImpairments] = helperBLEInitPHYParameters(EbNo, phyMode);

% Create structure for an empty packet to initialize the output of Master
% and Slaves LLPDU:        Generated Link Layer Protocol Data Unit (PDU)
% appended with
%               Cyclic Redundancy Check (CRC)
% RateIndex:    String representing the rate at which the packet will be
%               transmitted. It contains one of 'LE2M' | 'LE1M' | 'LE500K'
%               | 'LE125K'
% AccessAddress:Unique address for each Master-Slave connection pair
% ChannelIndex: Channel on which the packet is transmitted
emptyPacket = struct('LLPDU',[], ...
    'AccessAddress','', ...
    'RateIndex','', ...
    'ChannelIndex',-1);

% Initialize the Slave output
slaveOutput = emptyPacket;

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

Симуляция

Этот раздел симулирует обмен пакетами между Ведущие и Ведомые устройства BLE для заданного количества времени.

  • Ведущее устройство (Передача или Прием): В каждом событии связи Ведущее устройство BLE инициирует связь с соответствующим Ведомым устройством путем передачи формы волны BLE, сгенерированной для пакета Слоя Ссылки на канале данных. Сигнал WLAN вмешивается в сгенерированную форму волны BLE в соответствующем канале BLE. После передачи Ведущее устройство ожидает ответа от Ведомого устройства.

  • Ведомое устройство (Передача или Прием): В каждом событии связи Ведомое устройство BLE получает вмешавшуюся форму волны от Ведущего устройства на канале данных. После этого Ведомое устройство отвечает Ведущему устройству на том же канале данных путем передачи пакета Слоя Ссылки после генерации форма волны BLE. Сгенерированная форма волны BLE вмешивается сигналом WLAN в соответствующем канале BLE.

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

  • DC возмещен

  • Несущая частота возмещена

  • Фаза Carrier возмещена

  • Синхронизация дрейфа

Используйте функцию helperBLEImpairments, чтобы сконфигурировать ухудшения RF.

Функция запуска helperBLEDeviceModel используется для связи между Ведущими и Ведомыми устройствами BLE. Функция addInterference добавляет сигналы WLAN повредить сигналы BLE. Белый гауссов шум (WGN) добавляется к вмешавшимся формам волны BLE. helperBLEVisualizeCoexistence визуализирует симуляцию сосуществования BLE с сигналами WLAN.

% Initialize figures for visualization of coexistence model for each Slave.
% This visualization shows the WLAN channels along with their collision
% probabilities and also shows the channel hopping for the communication
% between BLE Master and Slave devices. It also shows the status (good or
% bad) of each BLE channel along with the success rate in the respective
% channel.
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, ...
    'Stoptime',simulationTime, ...
    'PHYMode',phyMode, ...
    'EnableVisualization',enableVisualization, ...
    'EnableHoppingVisualization',enableHoppingVisualization);
coexistenceModel.initializeVisualization();
viewModel(coexistenceModel);
master.CoexistenceVisualization = coexistenceModel;

% Run simulation
for simulationTimer = 0:timeStep:simulationTime
    % Stop the simulation, if all the Slaves are disconnected from the
    % Master due to interference. If the PER of the BLE channels in which
    % they are communicating with each other is high, then the Master and
    % the Slave are disconnected. The PER of the channel is high because of
    % the high collision probability in the respective channel.
    if numel(master.ActiveConnectionIdxs(master.ActiveConnectionIdxs ~= -1)) == 0
        fprintf('Simulation terminated as all Slaves are disconnected from the Master device.\n')
        break;
    end

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

    % MASTER: Transmitting or Receiving mode
    if (master.ActiveChannel == slaveOutput.ChannelIndex) && ...
            ~isempty(slaveOutput.LLPDU)
        masterOutput = run(master, slaveOutput);
    else
        masterOutput = run(master, emptyPacket);
    end

    if ~(isempty(masterOutput.LLPDU))
        % Generate PHY waveform
        masterOutput.RateIndex = phyMode;
        masterWaveformTx = helperBLEPHYTx(masterOutput, sps);

        % Add impairments
        masterWaveformTx = helperBLEImpairments(initImpairments, masterWaveformTx, sps);

        % Add WLAN interference
        masterWaveformTx = addInterference(wlanTrafficConfig, ...
            masterOutput.ChannelIndex, simulationTimer, masterWaveformTx);

        % Pass the transmitted waveform through AWGN channel
        masterWaveformRx = awgn(masterWaveformTx, bleSNR);

        % Decode PHY waveform after adding impairments and interference
        [decodedMasterPacket, decodedMasterAccessAddress] = helperBLEPHYRx(masterWaveformRx, ...
            phyMode, sps, masterOutput.AccessAddress, masterOutput.ChannelIndex);

        masterOutput.LLPDU = decodedMasterPacket;
        % Access address becomes empty when the BLE PHY receiver fails to
        % detect a valid BLE packet due to high interference level or
        % impairments or noise level.
        if ~isempty(decodedMasterAccessAddress)
            masterOutput.AccessAddress = dec2hex(bi2de(decodedMasterAccessAddress'), 8);
        end
    end

    % Update current simulation time
    master.CoexistenceVisualization.CurrentTime = simulationTimer;
    master.CoexistenceVisualization.Action = 'Simulation Progress';

    % SLAVE: Transmitting or Receiving mode
    for idx = 1:slavesCount
        % Pass the "MasterOutput" to the Slave listening in the same
        % frequency
        if (slaves(idx).ActiveChannel == masterOutput.ChannelIndex) && ...
                ~isempty(masterOutput.LLPDU)
            slaveOutputs{idx} = run(slaves(idx), masterOutput);
            % Pass an empty packet to all other Slaves
        else
            slaveOutputs{idx} = run(slaves(idx), emptyPacket);
        end

        % Update simulation progress for each Slave
        master.CoexistenceVisualization.SlaveNumber = idx;
        viewModel(master.CoexistenceVisualization)
    end

    slaveOutput = emptyPacket;

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

    if ~(isempty(slaveOutput.LLPDU))
        % Generate PHY waveform
        slaveOutput.RateIndex = phyMode;
        slaveWaveformTx = helperBLEPHYTx(slaveOutput, sps);

        % Add BLE impairments
        slaveWaveformTx = helperBLEImpairments(initImpairments, slaveWaveformTx, sps);

        % Add WLAN interference
        slaveWaveformTx = addInterference(wlanTrafficConfig, ...
            slaveOutput.ChannelIndex, simulationTimer, slaveWaveformTx);

        % Pass the transmitted waveform through AWGN channel
        slaveWaveformRx = awgn(slaveWaveformTx, bleSNR);

        % Decode PHY waveform after adding impairments and interference
        [decodedSlavePacket, decodedSlaveAccessAddress] = helperBLEPHYRx(slaveWaveformRx, ...
            phyMode, sps, slaveOutput.AccessAddress, slaveOutput.ChannelIndex);

        slaveOutput.LLPDU = decodedSlavePacket;
        % Access address becomes empty when the BLE PHY receiver fails to
        % detect a valid BLE packet due to high interference level or
        % impairments or noise level.
        if ~isempty(decodedSlaveAccessAddress)
            slaveOutput.AccessAddress = dec2hex(bi2de(decodedSlaveAccessAddress'), 8);
        end
    end
end

% Update the simulation progress for each Slave
for idx = 1:slavesCount
    master.CoexistenceVisualization.SlaveNumber = idx;
    master.CoexistenceVisualization.Action = 'Simulation Progress';
    viewModel(master.CoexistenceVisualization)
end

% Log the statistics of this example to
% |bleCoexistenceWithWLANSignalStatistics.mat| file
helperBLELogCoexistenceStats(master, slaves, ...
    'bleCoexistenceWithWLANSignalStatistics.mat');

% Restore the previous setting of random number generation
rng(sprev)

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

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

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

  2. Получен файл MAT bleCoexistenceWithWLANSignalStatistics.mat с подробной статистикой, такой как количество полученных пакетов, количество пакетов, поврежденных на каждом канале и состоянии (хороший или плохой) канала для каждого интервала классификации

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

Можно далее исследовать этот пример:

  • Используя другие варианты форматов WLAN, такие как прямая последовательность распространила спектр (DSSS) non-HT или высокая пропускная способность (HT) в функции wlanTraffic

  • Повреждение BLE сигнализирует в функции addInterference путем варьирования интерференции, существующей на различных этапах сигнала BLE

Можно также исследовать Статистическое моделирование Интерференции WLAN в Сети BLE.

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

Приложение

Пример использует эти функции:

Пример использует этих помощников:

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

  1. IEEE® Standard 802.15.2™. "Сосуществование Беспроводных Персональных Сетей области с Другими Беспроводными устройствами, Действующими в Нелицензированных Диапазонах частот". Методические рекомендации IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретные требования; Общество эпохи компьютеризации IEEE

  2. Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.0. https://www.bluetooth.com /

  3. IEEE P802.11ax™/D3.1. "Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 6: Улучшения для Высокой эффективности WLAN". Спроектируйте Стандарт для Информационных технологий - Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями - Конкретные требования; Комитет по Стандартам LAN/MAN Общества эпохи компьютеризации IEEE

  4. Станд. IEEE 802.11™. "Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования". Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретные требования; Комитет по Стандартам LAN/MAN Общества эпохи компьютеризации IEEE

Похожие темы