В этом примере показано, как симулировать статистическое моделирование интерференции WLAN на Bluetooth® низкая энергетическая сеть (BLE), пользующаяся Библиотекой Communications Toolbox™ для Протокола Bluetooth. Механизмы сосуществования используются, чтобы минимизировать интерференцию WLAN в сети BLE. В этом примере вероятность столкновения каждой сети WLAN используется, чтобы повредить сигналы BLE. Результаты симуляции, сгенерированные в этом примере, приходят к заключению, что для высокой вероятности столкновения канала WLAN, достигнутый показатель успешности соответствующего канала BLE является низким.
Как существуют различные типы беспроводных сетей, действующих в том же нелицензированном диапазоне частот, для двух различных сетей возможно вмешаться друг в друга. Эта интерференция может вызвать отказы передачи в обоих сети. Нет никакого стандартизированного алгоритма, чтобы достигнуть сосуществования двух различных беспроводных сетей. Однако стандарт IEEE® 802.15.2™ [1] задает некоторые методические рекомендации, чтобы достигнуть сосуществования беспроводных персональных сетей области (WPAN) с другими беспроводными устройствами, действующими в нелицензированных диапазонах частот.
Этот пример иллюстрирует статистическое моделирование интерференции WLAN в сети BLE. Коммуникация 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 сконфигурирована с отдельной вероятностью столкновения. Для каждой передачи сгенерировано случайное число между 0 и 1. Если сгенерированное случайное число меньше вероятности столкновения, то кадр передачи повреждается.
Сосуществование BLE с WLAN: Если на выбранный канал BLE значительно повлияет интерференция WLAN на основе вероятности столкновения, то переданный пакет BLE подвергнется повреждению. Ведущее устройство периодически классифицирует Ведомые каналы как 'хорошие каналы' или 'плохие каналы', на основе пакетных отказов в том канале. Информация о классификации каналов хранится в форме названной карты канала битового массива. Битовый массив является массивом 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',60, ... 'ClassificationInterval',150, ... 'RxStatusCount',50, ... 'MinRxCountToClassify',4, ... 'BadChannelClassificationMethod','Using energy detections', ... 'PreferredMinimumGoodChannels',20); % 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. Объект helperBLEWLANStatisticalTrafficConfig используется, чтобы смоделировать трафик 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.35, 0.48, 0.26, 0.60, 0.28, 0.34]; % 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];
Трафик WLAN модели
Этот раздел конфигурирует интерференцию к каждому Ведомому устройству путем добавления трафика WLAN с заданной настройкой. Сеть WLAN добавляется всего, задал каналы WLAN с помощью wlanTraffic функцию.
% Create a configuration object for WLAN traffic wlanTrafficConfig = helperBLEWLANStatisticalTrafficConfig(); % Configure WLAN traffic with the specified WLAN network parameters wlanTraffic(wlanTrafficConfig, wlanNetworksCount, wlanChannels, ... collisionProbabilities, wlanInterferencePeriod);
Этот раздел иллюстрирует связь между Ведущими и Ведомыми устройствами, в то время как WLAN вмешивается статистически.
Инициализируйте параметры симуляции
Параметры симуляции, требуемые для статистического моделирования интерференции WLAN в сети BLE, инициализируются в этом коде.
% 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 % maximum packet size used in this example is 33 octets (264 bits). The % packet transmission time in different PHY modes are: 0.264 milliseconds % (in LE1M), 0.132 milliseconds (in LE2M), 0.528 milliseconds (in LE500K) % and 1.056 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; % 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 повреждается на основе вероятности столкновения WLAN соответствующего канала.
Функция запуска helperBLEDeviceModel используется для связи между Ведущими и Ведомыми устройствами BLE. Функция getInterferenceLevel проверяет, вмешивается ли канал BLE значительно трафиком WLAN. 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, ... '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. Master and Slave are disconnected when % the PER of the BLE channels in which they are communicating with each % other is high. 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) && ... strcmpi(master.ActiveAccessAddress, slaveOutput.AccessAddress) masterOutput = run(master, slaveOutput); else masterOutput = run(master, emptyPacket); end if ~(isempty(masterOutput.LLPDU)) interferenceEffect = getInterferenceLevel(wlanTrafficConfig, ... masterOutput.ChannelIndex, simulationTimer); % Corrupt the packet, if the interference effect is 1 if (interferenceEffect == 1) masterOutput.LLPDU(1:2) = ~masterOutput.LLPDU(1:2); % Drop the packet, if the interference effect is 2 % (interference is too high) elseif (interferenceEffect == 2) masterOutput = emptyPacket; end end % Update current simulation time coexistenceModel.CurrentTime = simulationTimer; coexistenceModel.Action = 'Simulation Progress'; % SLAVE: Transmitting or Receiving mode for idx = 1:slavesCount % Pass the "MasterOutput" to the Slave listening in the same % frequency and matched access address if (slaves(idx).ActiveChannel == masterOutput.ChannelIndex) && ... strcmpi(slaves(idx).ActiveAccessAddress, masterOutput.AccessAddress) slaveOutputs{idx} = run(slaves(idx), masterOutput); % Pass an empty packet to all other Slaves to update the timers else slaveOutputs{idx} = run(slaves(idx), emptyPacket); end % Update simulation progress for each Slave coexistenceModel.SlaveNumber = idx; viewModel(coexistenceModel) 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)) interferenceEffect = getInterferenceLevel(wlanTrafficConfig, ... slaveOutput.ChannelIndex, simulationTimer); % Corrupt the packet, if the interference effect is 1 if (interferenceEffect == 1) slaveOutput.LLPDU(1:2) = ~slaveOutput.LLPDU(1:2); % Drop the packet, if the interference effect is 2 % (interference is too high) elseif (interferenceEffect == 2) slaveOutput = emptyPacket; 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 % |bleCoexistenceWithStatisticalWLANStatistics.mat| file helperBLELogCoexistenceStats(master, slaves, ... 'bleCoexistenceWithStatisticalWLANStatistics.mat'); % Restore the previous setting of random number generation rng(sprev);
Симуляция этого примера генерирует:
График во время выполнения для каждой пары связи "Главный-подчиненный" изображение состояния (хороший или плохой) и совокупные, недавние показатели успешности каждого канала отображен
Получен файл MAT bleCoexistenceWithStatisticalWLANStatistics.mat с подробной статистикой, такой как количество полученных пакетов, количество пакетов, поврежденных на каждом канале и состоянии (хороший или плохой) канала для каждого интервала классификации
Этот пример позволяет вам анализировать сосуществование BLE со статистической интерференцией WLAN. Вероятность столкновения каждой сети WLAN используется, чтобы повредить пакеты BLE. Ведущие и Ведомые устройства BLE используют хорошие каналы, чтобы связаться друг с другом, чтобы избежать пакетной потери. Показатель успешности вычисляется в каждом канале BLE. Этот пример приходит к заключению, что для высокой вероятности столкновения канала WLAN, достигнутый показатель успешности соответствующего канала BLE является низким. Поэтому эти каналы не используются для связи между Ведущими и Ведомыми устройствами BLE.
Пример использует эти функции:
bleChannelSelection
: Выберите индекс канала BLE
bleLLDataChannelPDUConfig
: Создайте объект настройки для PDU канала данных о Слое Ссылки BLE
bleLLDataChannelPDU
: Сгенерируйте PDU канала данных о Слое Ссылки BLE
bleLLDataChannelPDUDecode
: Декодируйте PDU канала данных о Слое Ссылки BLE
Пример использует этих помощников:
helperBLEChannelClassification: Создайте классификацию каналов объекта BLE
helperBLEWLANStatisticalTrafficConfig: Создайте объект настройки для трафика сигнала WLAN
helperBLEDeviceModel: Создайте объект для устройства BLE
helperBLELLConnectionEvent: Создайте объект для событий связи Слоя Ссылки BLE
helperBLELLConnectionEventStatus: Перечисление, чтобы указать на состояние событий связи Слоя Ссылки BLE
helperBLEConnectionStateModel: Создайте объект для связи Слоя Ссылки BLE
helperBLECreateLLConnection: Создайте связь между Ведущим устройством BLE и Ведомыми устройствами BLE
helperBLEUpdateWLANTraffic: Обновите трафик WLAN в визуализации в таймере симуляции
helperBLEVisualizeCoexistence: Создайте объект к визуализации модель сосуществования
helperBLELogCoexistenceStats: Регистрируйте статистику сосуществования к рабочему пространству MATLAB
IEEE® Standard 802.15.2™. "Сосуществование Беспроводных Персональных Сетей области с Другими Беспроводными устройствами, Действующими в Нелицензированных Диапазонах частот". Методические рекомендации IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретные требования; Общество эпохи компьютеризации IEEE
Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.0. https://www.bluetooth.com /