В этом примере показано, как симулировать 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 использует названное обнаружение несущей механизма доступа к каналу, к которому несколько получают доступ с предотвращением столкновения (CSMA/CA), в то время как устройства BLE используют скачкообразное движение частоты. Интерференция происходит, когда рабочая частота BLE и устройств WLAN перекрывается. Чтобы минимизировать интерференцию, механизмы сосуществования используются.
Механизмы сосуществования широко классифицируются в эти две категории [1]:
Совместный: Этот механизм требует линии связи между сетями BLE и WLAN. Поскольку эти две сети могут связаться друг с другом, одна из этих сетей приостанавливает свою передачу, в то время как другой использует канал. Этот механизм используется, когда WLAN и устройства BLE встраиваются в то же физическое устройство.
Несовместный: Этот механизм не требует никакой линии связи между сетями 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's и определение 0 классификация канала (или 'хороший' или 'плохой'). Функция classifyChannels классифицирует каналы BLE и хранит сгенерированный битовый массив. Ведущее устройство обеспечивает различную карту канала для каждого Ведомого устройства. Обновленная карта канала отправляется в Ведомое устройство. Периодичность классификации каналов сконфигурирована путем установки свойства ClassificationInterval
в объекте helperBLEChannelClassification. Устройства BLE в состоянии ожидания, вычислите напряженное время канала для всех 'плохих каналов' путем выполнения энергетического обнаружения (ED) полученных сигналов. Если текущее количество хороших каналов меньше предпочтительного количества хороших каналов, плохие каналы классифицируются снова. Эта классификация основана на напряженном времени канала когда BadChannelClassificationMethod
свойство установлено в 'Используя энергетические признаки'. Если BadChannelClassificationMethod
свойство собирается 'Сбросить все плохие каналы', затем все плохие каналы сбрасываются к хорошим каналам.
Проверяйте, установлена ли 'Библиотека Communications Toolbox для пакета поддержки' Протокола 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 (формы волны 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 передается через следующие нарушения РФ.
DC возмещен
Несущая частота возмещена
Фаза Carrier возмещена
Синхронизация дрейфа
Используйте функцию helperBLEImpairments, чтобы сконфигурировать нарушения РФ.
Функция запуска 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)
Симуляция этого примера генерирует:
График во время выполнения для каждой пары связи "Главный-подчиненный" изображение состояния (хороший или плохой) и совокупные, недавние показатели успешности каждого канала отображен
Получен файл MAT bleCoexistenceWithWLANSignalStatistics.mat с подробной статистикой, такой как количество полученных пакетов, количество пакетов, поврежденных на каждом канале и состоянии (хороший или плохой) канала для каждого интервала классификации
Можно далее исследовать этот пример:
Используя другие варианты форматов WLAN, такие как прямая последовательность распространила спектр (DSSS) non-HT или высокая пропускная способность (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
helperBLELLConnectionEvent: Создайте объект для событий связи Слоя Ссылки BLE
helperBLELLConnectionEventStatus: Перечисление, чтобы указать на состояние событий связи Слоя Ссылки BLE
helperBLEConnectionStateModel: Создайте объект для связи Слоя Ссылки BLE
helperBLECreateLLConnection: Создайте связь между Ведущим устройством BLE и Ведомыми устройствами BLE
helperBLEUpdateWLANTraffic: Обновите трафик WLAN в визуализации в таймере симуляции
helperBLEVisualizeCoexistence: Создайте объект к визуализации модель сосуществования
helperBLELogCoexistenceStats: Регистрируйте статистику сосуществования к рабочему пространству MATLAB
helperBLEInitPHYParameters: Инициализируйте параметры BLE PHY
helperBLEPHYTx: Сгенерируйте форму волны BLE PHY
helperBLEImpairments: Добавьте нарушения в форму волны BLE
helperBLEPHYRx: получатель формы волны BLE PHY
helperBLEImpairmentsAddition: Добавьте нарушения РФ в форму волны BLE
helperBLEImpairmentsInit: Инициализируйте параметры нарушения РФ
helperBLEPracticalReceiver: Демодулируйте и декодируйте полученный сигнал
helperBLEReceiverInit: Инициализируйте параметры получателя BLE PHY
IEEE® Standard 802.15.2™. "Сосуществование Беспроводных Персональных Сетей области с Другими Беспроводными устройствами, Действующими в Нелицензированных Диапазонах частот". Методические рекомендации IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретные требования; Общество эпохи компьютеризации IEEE
Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.0. https://www.bluetooth.com /
IEEE P802.11ax™/D3.1. "Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 6: Улучшения для Высокой эффективности WLAN". Спроектируйте Стандарт для Информационных технологий - Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями - Конкретные требования; Комитет по Стандартам LAN/MAN Общества эпохи компьютеризации IEEE
Станд. IEEE 802.11™. "Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования". Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретные требования; Комитет по Стандартам LAN/MAN Общества эпохи компьютеризации IEEE