В этом примере показано, как симулировать сосуществование Bluetooth ® с малой энергией (BLE) с интерференцией WLAN с помощью библиотеки Communications Toolbox™ для протокола Bluetooth и WLAN Toolbox™. Механизмы сосуществования используются, чтобы минимизировать помехи WLAN в сети BLE. В этом примере вероятность столкновения и уровень помех каждой сети WLAN используются для повреждения сигналов BLE. Результаты симуляции, сгенерированные в этом примере, заключают, что для высокой вероятности столкновения и уровня интерференции канала WLAN достигнутая скорость успеха соответствующего канала BLE является низкой.
Поскольку существуют различные типы беспроводных сетей, работающих в одной и той же нелицензированной полосе частот, возможно, чтобы две различные сети мешали друг другу. Эта помеха может вызвать отказы в передаче в обеих сетях. Нет стандартизированного алгоритма для достижения сосуществования двух различных беспроводных сетей. Однако стандарт IEEE ® 802.15.2™ [1] задает некоторые рекомендуемые методы для достижения сосуществования беспроводных персональных вычислительных сетей (WPAN) с другими беспроводными устройствами, работающими в нелицензированных полосах.
Этот пример иллюстрирует модель сосуществования BLE с интерференцией сигнала WLAN. Для связи WLAN требуется не менее 20 МГц полосы пропускания, в то время как для устройств BLE требуется только 2 МГц полосы пропускания. WLAN использует механизм доступа к каналу, называемый multiple access-sense с предотвращением столкновения (CSMA/CA), в то время как устройства BLE используют скачкообразное изменение частоты. Помехи возникают, когда рабочая частота устройств BLE и WLAN перекрывается. Чтобы минимизировать помехи, используются механизмы сосуществования.
Механизмы сосуществования широко классифицируются по этим двум категориям [1]:
Совместная работа: Этот механизм требует ссылки связи между сетями BLE и WLAN. Поскольку эти две сети могут связываться друг с другом, одна из этих сетей останавливает свою передачу, в то время как другая использует канал. Этот механизм используется, когда устройства WLAN и BLE встроены в одно и то же физическое устройство.
Несоблюдение: Этот механизм не требует каких-либо ссылок связи между сетями BLE и WLAN. Поскольку эти две сети не могут общаться друг с другом, они используют свои собственные методы, чтобы обнаружить помехи другой сети. Этот механизм используется, когда устройства WLAN и BLE не встроены в одно и то же физическое устройство.
Этот пример иллюстрирует механизм несоблюдения сосуществования для устройств BLE с WLAN.
В этом разделе описывается обмен данными в BLE, алгоритме интерференции и сосуществования WLAN, используемом для предотвращения интерференции в этом примере.
Коммуникация в BLE: BLE задает две основные роли на слое ссылки, а именно Мастер и Раб. Master инициирует передачу данных, а Slave отвечает ведущему. В этом примере обмен пакетами BLE моделируется между одним ведущим и несколькими (конфигурируемыми до 5) ведомыми устройствами. В BLE [2] передача данных происходит только во время событий соединения. Событие соединения является повторяющейся (с регулярными интервалами называемой интервалом соединения) последовательностью пакетов данных, обменивающихся данными между Ведущим и Ведомым. Все пакеты в пределах события соединения передаются по одному и тому же каналу данных. В начале каждого события соединения Мастер инициирует связь с соответствующим Ведомым. После этого ведомое устройство отвечает ведущему устройству с пакетом данных. Если нет данных для отправки, Slave отвечает пустым пакетом. В этом примере для каждого события соединения моделируется только одна транзакция. Новое событие подключения использует новый канал данных. Новый канал выбирается на основе адаптивного скачкообразного изменения канала. При выборе нового канала используется карта канала, указывающая хорошие или плохие каналы, таким образом показывающая адаптивность скачкообразного изменения канала.
Трафик 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, определяющим классификацию канала (или 'хороший', или 'плохой'). Функция classifyChannels классифицирует каналы BLE и сохраняет сгенерированное растровое изображение. Мастер поддерживает разную карту канала для каждого ведомого устройства. Обновленная карта канала отправляется в Slave. Периодичность классификации каналов конфигурируется путем установки свойства ClassificationInterval
в объекте helperBLEChannelClassification. Устройства BLE в состоянии ожидания вычисляют время занятости канала для всех «плохих каналов» путем выполнения обнаружения энергии (ED) принятых сигналов. Если текущее количество хороших каналов меньше, чем предпочтительное количество хороших каналов, плохие каналы снова классифицируются. Эта классификация основана на времени занятости канала, когда BadChannelClassificationMethod
для свойства задано значение 'Using energy indications'. Если на BadChannelClassificationMethod
значение свойства установлено на 'Сброс всех плохих каналов', затем все плохие каналы сбрасываются на хорошие каналы.
Проверьте, установлен ли пакет поддержки 'Communications Toolbox Library for the Bluetooth Protocol'.
commSupportPackageCheck('BLUETOOTH');
В этом разделе добавляется устройство BLE Master и указанное количество ведомых устройств в сеть 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 в течение определенного количества времени.
Master (Transmission или Reception): В каждом событии соединения BLE Master инициирует связь с соответствующим ведомым устройством путем передачи формы сигнала BLE, сгенерированной для пакета канального слоя, по каналу данных. Сигнал WLAN мешает сгенерированной форме волны BLE в соответствующем канале BLE. После передачи Мастер ждет ответа от Раба.
Slave (Передача или Прием): В каждом событии соединения BLE Slave получает мешанную форму волны от ведущего по каналу данных. После этого Ведомое устройство отвечает Ведущему по тому же каналу данных путем передачи пакета Канального слоя после генерирующей формы волны BLE. Сгенерированный сигнал BLE помечается сигналом WLAN в соответствующем канале BLE.
Перед добавлением интерференции WLAN переданный сигнал BLE передается через следующие искажения RF.
Смещение постоянного тока
Смещение несущей частоты
Смещение фазы несущей
Дрейф синхронизации
Используйте функцию helperBLEImpairms, чтобы сконфигурировать нарушения RF.
Функция run helperBLEDeviceModel используется для связи между BLE Master и ведомыми устройствами. Функция 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)
Симуляция этого примера генерирует:
Отображается график выполнения для каждой пары соединений Master-Slave, изображающий состояние (хорошее или плохое) и совокупные недавние показатели успеха каждого канала
Получен файл MAT bleCoexistenceWithWLANSignalStatistics.mat с подробной статистикой, такой как количество полученных пакетов, количество поврежденных пакетов на каждом канале и состояние (хорошее или плохое) канала для каждого интервала классификации.
Вы можете дополнительно изучить этот пример:
Использование других вариантов форматов WLAN, таких как не-HT прямой последовательности расширенного спектра (DSSS) или высокой пропускной способности (HT) в функции wlanTraffic
Повреждение сигнала BLE в функции addInterference путем изменения интерференции, присутствующей на разных каскадах сигнала BLE
Можно также исследовать статистическое моделирование пересечений WLAN в сети BLE.
Этот пример позволяет вам анализировать сосуществование BLE с интерференцией сигнала WLAN. Вероятность столкновения и уровень интерференции каждой сети WLAN используются для повреждения сигналов BLE. Ведущие и ведомые устройства BLE используют хорошие каналы для связи друг с другом, чтобы избежать потери пакетов. Вероятность успеха вычисляется в каждом канале BLE. В этом примере делается вывод, что для высокой вероятности столкновения и уровня интерференции канала WLAN достигнутая скорость успеха соответствующего канала BLE является низкой. Поэтому эти каналы не используются для связи между ведущими и ведомыми устройствами BLE.
В примере используются следующие функции:
bleChannelSelection
: Выберите индекс канала BLE
bleLLDataChannelPDUConfig
: Создайте объект строения для PDU канала данных Слой
bleLLDataChannelPDU
: Сгенерируйте канал данных BLE Слой PDU
bleLLDataChannelPDUDecode
: Декодируйте PDU канала данных слоя BLE
В примере используются следующие помощники:
helperBLEChannelClassification: Создайте объектную классификацию каналов BLE
helperBLEWLANSignalTrafficConfig: создайте объект строения для трафика сигнала WLAN
helperBLEDeviceModel: Создайте объект для устройства BLE
helperBLELLConnectionEvent: создайте объект для событий подключения Слой
helperBLELLConnectionEventStatus: перечисление, указывающее на состояние событий соединения слоя ссылки
helperBLEConnectionStateModel: создайте объект для подключения Слой
helperBLECreateLLConnection: создайте соединение между BLE Master и подчиненными устройствами BLE
helperBLEUpdateWLANTraffic: Обновление трафика WLAN в визуализации в таймере симуляции
helperBLEVisualizeCoexistence: создайте объект для визуализации модели сосуществования
helperBLELogCoexistenceStats: Зарегистрировать статистику сосуществования в рабочем пространстве MATLAB
helperBLEInitPHYParameters: Инициализируйте параметры BLE PHY
helperBLEPHYTx: Сгенерируйте сигнал BLE PHY
helperBLEImpairments: Добавьте нарушения к форме волны BLE
helperBLEPHYRx: приемник сигнала BLE PHY
helperBLEImpairmentsДобавление: Добавьте нарушения RF к форме волны BLE
helperBLEImpairmentsInit: Инициализация параметров нарушения РФ
helperBLEPracticalReceiver: Демодулируйте и декодируйте принятый сигнал
helperBLEReceiverInit: Инициализируйте параметры приемника BLE PHY
Стандартные 802.15.2™ IEEE ®. «Сосуществование беспроводных персональных вычислительных сетей с другими беспроводными устройствами, работающими в нелицензированных полосах». IEEE Рекомендуемая практика в области информационных технологий - Телекоммуникации и обмен информацией между системами - Местные и столичные сети - Конкретные требования; Компьютерное общество IEEE
Bluetooth Special Interest Group (SIG). Bluetooth Core Спецификации. Версия 5.0. https://www.bluetooth.com/
P802.11ax™/D3.1 IEEE. «Управление доступом к среде беспроводной локальной сети (MAC) и физическим Слоем (PHY) Спецификаций - Поправка 6: Усовершенствования для высокой Эффективности WLAN». Проект стандарта на информационные технологии - телекоммуникации и обмен информацией между системами Местные и столичные сети - Конкретные требования; Комитет по стандартам LAN/MAN Компьютерного общества IEEE
Стд- 802.11™ IEEE. «Управление доступом к среде беспроводной локальной сети (MAC) и физическим Слоем (PHY) Спецификаций». Стандарт IEEE на информационные технологии - Телекоммуникации и обмен информацией между системами - Местные и столичные сети - Особые требования; Комитет по стандартам LAN/MAN Компьютерного общества IEEE