В этом примере показано, как имитировать сосуществование Bluetooth ® низкой энергии (BLE) с помехами WLAN с помощью библиотеки Communications Toolbox™ Library для протокола Bluetooth и Toolbox™ WLAN. Механизмы сосуществования используются для минимизации помех WLAN в сети BLE. В этом примере вероятность коллизий и уровень помех каждой сети WLAN используются для повреждения сигналов BLE. Результаты моделирования, сгенерированные в этом примере, делают вывод, что для высокой вероятности столкновения и уровня помех канала WLAN достигнутая частота успеха соответствующего канала BLE является низкой.
Поскольку существуют различные типы беспроводных сетей, работающих в одной и той же нелицензионной полосе частот, две разные сети могут создавать помехи друг другу. Эти помехи могут привести к сбоям передачи в обеих сетях. Не существует стандартизированного алгоритма для достижения сосуществования двух различных беспроводных сетей. Однако стандарт IEEE ® 802.15.2™ [1] определяет некоторые рекомендуемые практики для достижения сосуществования беспроводных персональных сетей (WPAN) с другими беспроводными устройствами, работающими в нелицензионных диапазонах частот.
Этот пример иллюстрирует модель сосуществования BLE с помехами сигнала WLAN. Для связи WLAN требуется минимум 20 МГц полосы пропускания, в то время как для устройств BLE требуется только 2 МГц полосы пропускания. WLAN использует механизм доступа к каналу, называемый множественным доступом с учетом несущей с предотвращением коллизий (CSMA/CA), в то время как устройства BLE используют скачкообразную перестройку частоты. Помехи возникают, когда рабочая частота устройств BLE и WLAN перекрывается. Для минимизации помех используются механизмы сосуществования.
Механизмы сосуществования широко подразделяются на эти две категории [1]:
Сотрудничество: Этот механизм требует линии связи между сетями BLE и WLAN. Поскольку эти две сети могут взаимодействовать друг с другом, одна из этих сетей приостанавливает свою передачу, в то время как другая использует канал. Этот механизм используется, когда устройства WLAN и BLE встроены в одно физическое устройство.
Non-Collaborative: Этот механизм не требует какого-либо канала связи между сетями BLE и WLAN. Поскольку эти две сети не могут взаимодействовать друг с другом, они используют свои собственные методы для обнаружения помех другой сети. Этот механизм используется, когда устройства WLAN и BLE не встроены в одно и то же физическое устройство.
Этот пример иллюстрирует механизм несогласованного сосуществования для устройств 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 и 0, определяющим классификацию канала («хороший» или «плохой»). Функция classifeyChannel классифицирует каналы BLE и сохраняет сгенерированное растровое изображение. Ведущее устройство поддерживает различную карту каналов для каждого ведомого устройства. Обновленная карта каналов посылается ведомому устройству. Периодичность классификации каналов конфигурируется путем установки свойства ClassificationInterval в объекте helperBLEChannelClassification. Устройства BLE в состоянии ожидания вычисляют время занятости канала для всех «плохих каналов», выполняя обнаружение энергии (ED) принятых сигналов. Если текущее количество хороших каналов меньше, чем предпочтительное количество хороших каналов, плохие каналы классифицируются снова. Эта классификация основана на времени занятости канала, когда BadChannelClassificationMethod для свойства установлено значение «Using energy indications». Если BadChannelClassificationMethod свойство имеет значение «Reset all bad channel» (Сброс всех плохих каналов), после чего все плохие каналы сбрасываются в хорошие каналы.

Проверьте, установлена ли библиотека Communications Toolbox Library для пакета поддержки протокола Bluetooth.
commSupportPackageCheck('BLUETOOTH');
В этом разделе в сеть 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. Объект 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 (не-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 проходит через следующие нарушения РЧ.
Смещение постоянного тока
Смещение несущей частоты
Смещение фазы несущей
Дрейф синхронизации
Используйте функцию helperBLEVENTmpairments для настройки RF-нарушений.
Функция запуска helperBLEDeviceModel используется для связи между ведущими и подчиненными устройствами BLE. Функция addInterference добавляет сигналы WLAN для повреждения сигналов BLE. Белый гауссовый шум (WGN) добавляется к интерференционным сигналам BLE. HelperBLEVisualityCoincistence визуализирует моделирование сосуществования 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)

Моделирование этого примера создает:
Отображается график времени выполнения для каждой пары соединения ведущий-ведомый, отображающий состояние (хорошее или плохое) и совокупные, последние показатели успеха каждого канала.
Получен MAT-файл bleCoecistiveWireWLANSignalStatistics.mat с подробной статистикой, такой как количество принятых пакетов, количество пакетов, поврежденных на каждом канале, и состояние (хорошее или плохое) канала для каждого интервала классификации.
Для дальнейшего изучения этого примера выполните следующие действия:
Использование других вариантов форматов WLAN, таких как не-HT прямой последовательности с расширенным спектром (DSSS) или высокая пропускная способность (HT) в функции wlanTraffic
Искажение сигнала BLE в функции addInterference путем изменения помех, присутствующих на различных стадиях сигнала BLE
Можно также изучить статистическое моделирование помех WLAN в сети BLE.
Этот пример позволяет анализировать сосуществование BLE с помехами сигнала WLAN. Вероятность коллизий и уровень помех каждой сети WLAN используются для повреждения сигналов BLE. Ведущие и подчиненные устройства BLE используют хорошие каналы для связи друг с другом во избежание потери пакетов. Коэффициент успешности вычисляется в каждом канале BLE. В этом примере делается вывод, что для высокой вероятности коллизий и уровня помех канала WLAN достигнутая частота успеха соответствующего канала BLE является низкой. Поэтому эти каналы не используются для связи между ведущими и подчиненными устройствами BLE.
В примере используются следующие функции:
bleChannelSelectionВыбор индекса канала BLE
bleLLDataChannelPDUConfigСоздание объекта конфигурации для PDU канала данных канального уровня BLE
bleLLDataChannelPDUФормирование PDU канала данных канального уровня BLE
bleLLDataChannelPDUDecodeДекодирование PDU канала данных канального уровня BLE
В примере используются следующие помощники:
helperBLEChannelClassification: Создание классификации каналов BLE объекта
helperBLEWLANSignalTrafficConfig: Создание объекта конфигурации для трафика сигналов WLAN
helperBLEDeviceModel: Создание объекта для устройства BLE
helperBLELLConneyEvent: Создание объекта для событий соединения на канальном уровне BLE
helperBLELLConnateEventStatus: Enumeration для указания состояния событий соединения на канальном уровне BLE
helperBLEConnateStateModel: Создание объекта для соединения уровня связи BLE
helperBLECreateLLC onnection: Создание соединения между ведущими и подчиненными устройствами BLE
helperBLEUpdateWLANTraffic: Обновление трафика WLAN при визуализации в таймере моделирования
helperBLEVisualityCoincistence: Создание объекта для визуализации модели сосуществования
helperBLELogCoecisticalStats: Регистрация статистики сосуществования в рабочей области MATLAB
helperBLEVENTnitPHYParameters: Инициализация параметров BLE PHY
helperBLEPHYTx: Генерация сигнала BLE PHY
helperBLEmpairments: Добавление нарушений в форму сигнала BLE
helperBLEPHYRx: приемник сигналов BLE PHY
helperBLEVENTmpairesAddtion: Добавление нарушений радиочастотного сигнала в форму сигнала BLE
helperBLEVENTmpairesInit: Initialize RF-параметры ухудшения
helperBLEPracingReceiver: Демодулировать и декодировать принятый сигнал
helperBLEReceiverInit: Инициализация параметров приемника BLE PHY
Стандартные 802.15.2™ IEEE ®. «Сосуществование беспроводных персональных сетей с другими беспроводными устройствами, работающими в нелицензированных диапазонах частот». IEEE Рекомендуемая практика в области информационных технологий - Телекоммуникации и обмен информацией между системами - Локальные и городские сети - Особые требования; Компьютерное общество IEEE
Группа специальных интересов Bluetooth (SIG). «Спецификация ядра Bluetooth». Версия 5.0. https://www.bluetooth.com/
P802.11ax™/D3.1 IEEE. «Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY) - Поправка 6: Усовершенствования для высокоэффективной беспроводной локальной сети». проект стандарта на информационные технологии - телекоммуникации и обмен информацией между системами Комитет по стандартам LAN/MAN Компьютерного общества IEEE
IEEE Std 802.11™. «Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY)». Стандарт IEEE для информационных технологий - Телекоммуникации и обмен информацией между системами - Локальные и городские сети - Особые требования; Комитет по стандартам LAN/MAN Компьютерного общества IEEE