Этот пример показывает, как моделировать статистическое моделирование интерференции WLAN в сети Bluetooth® Low Energy использование Библиотека Communications Toolbox™ для Протокола Bluetooth.
С тех пор существуют различные типы беспроводных сетей, действующих в том же нелицензированном диапазоне частот, для двух различных сетей возможно вмешаться друг в друга. Эта интерференция может вызвать отказы передачи в обоих сети. Нет никаких стандартных методов достигнуть сосуществования двух различных беспроводных сетей. Стандарт IEEE 802.15.2 [1] задает методические рекомендации, чтобы достигнуть сосуществования Беспроводных персональных сетей области (WPAN) с другими беспроводными устройствами, действующими в нелицензированных диапазонах частот. Коммуникация WLAN требует минимума пропускной способности на 20 МГц, в то время как устройства Bluetooth низкой энергии (BLE) требуют пропускной способности на только 2 МГц. WLAN использует механизм доступа к каналу под названием Обнаружение несущей Несколько доступ с Предотвращением Столкновения (CSMA/CA), в то время как устройства BLE используют скачкообразное движение частоты. Интерференция происходит, когда рабочая частота BLE и устройств WLAN накладывается. Чтобы минимизировать интерференцию, механизмы сосуществования могут использоваться.
Механизмы сосуществования широко классифицируются в следующие две категории [1]:
Совместный: Этот механизм требует линии связи между сетями BLE и WLAN. Поскольку эти две сети могут связаться друг с другом, одна из этих сетей приостановит свою передачу, в то время как другой использует канал. Этот механизм используется, когда WLAN и устройства BLE встраиваются в то же физическое устройство.
Несовместный: Этот механизм не требует никакой линии связи между сетями BLE и WLAN. Поскольку эти две сети не могут связаться друг с другом, сети будут использовать свои собственные методы, чтобы обнаружить интерференцию другой сети. Этот механизм используется, когда WLAN и устройства BLE не встраиваются в то же физическое устройство.
Этот пример иллюстрирует несовместный механизм сосуществования для устройств BLE с WLAN.
Трафик BLE: пакетный обмен BLE моделируется между одним ведущим устройством и несколькими (конфигурируемый до 5) ведомые устройства. В BLE [2] передача данных происходит только во время событий связи. Событие связи является последовательностью пакетного обмена данных между ведущим устройством и ведомым устройством, которое повторяется равномерно (интервалы связи). Все пакеты в событии связи передаются на том же канале данных. В начале каждого события связи ведущее устройство начинает связь с соответствующим ведомым устройством. После этого ведомое устройство отвечает ведущему устройству с пакетом данных. Если нет никаких данных, чтобы отправить, ведомое устройство отвечает пустым пакетом. В этом примере только одна транзакция моделируется событие для каждого подключения. Новое событие связи использует новый канал данных. Новый канал выбран на основе адаптивного быстрого переключения каналов. Адаптивность в быстром переключении каналов заключается в том, что карта канала, указывающая на хорошие или плохие каналы, используется при выборе нового канала.
Интерференция WLAN: трафик WLAN динамически добавлен к или удален из, модель согласно заданному запуску и время окончания. Каждая сеть WLAN может быть сконфигурирована с отдельной вероятностью столкновения. Для каждой передачи сгенерировано случайное число. Если сгенерированное случайное число больше, чем вероятность столкновения, то кадр передачи повреждается.
Сосуществование устройства BLE с WLAN: Если на выбранный канал BLE значительно повлияет интерференция WLAN на основе вероятности столкновения, то переданный пакет BLE подвергнется повреждению. Ведущее устройство периодически классифицирует ведомые каналы как 'хорошие каналы' и 'плохие каналы', на основе пакетных отказов на том канале. Информация о классификации каналов хранится в форме названной карты канала битового массива. Ведущее устройство поддерживает различную карту канала для каждого ведомого устройства. Обновленная карта канала отправляется в ведомое устройство. Периодичность классификации каналов сконфигурирована путем установки свойства ClassificationInterval в объекте helperBLEChannelClassification. Устройства BLE в состоянии ожидания вычисляют напряженное время канала для всех 'плохих каналов' путем проверки Энергетических обнаружений (ED). Если текущее количество хороших каналов является меньше, чем предпочтительное количество хороших каналов, то плохие каналы классифицируются снова. Эта классификация основана на напряженном времени канала, когда свойство BadChannelClassificationMethod установлено в 'Используя энергетические признаки'. Если свойство BadChannelClassificationMethod собирается 'Сбросить все плохие каналы', все плохие каналы сбрасываются к хорошим каналам.
Этот раздел добавляет ведущее устройство BLE и конкретное количество ведомых устройств к сети BLE. Поскольку ведущее устройство ответственно за обновление карты канала для каждого ведомого устройства в сети BLE, параметры классификации каналов сконфигурированы в ведущем устройстве только. helperBLEDeviceModel системный объект используется, чтобы смоделировать сосуществование BLE с WLAN.
% Before simulation, clear the persistent variables used for visualization clear helperBLEVisualizeCoexistence % The number of BLE slaves in connection with the master. slavesCount = 1; % Initialize the BLE master device master = helperBLEDeviceModel('Role', 'Master', ... 'PeerCount', slavesCount); % Initialize the channel classification parameters channelClassification = helperBLEChannelClassification(... 'PERThreshold', 60, ... 'ClassificationInterval', 200, ... 'RxStatusCount', 50, ... 'MinRxCountToClassify', 4, ... 'BadChannelClassificationMethod', 'Using energy detections', ... 'PreferredMinimumGoodChannels', 12); % Assign channel classification parameters to the master device master.ChannelClassification = channelClassification; % Initialize "slavesCount" number of slaves slaves = cell(1, slavesCount); % Create "slavesCount" number of slave devices for i = 1:slavesCount slaves{i} = helperBLEDeviceModel('Role', 'Slave'); end % Create "slavesCount" connections between the "master" and "slaves" [master, slaves] = helperBLECreateLLConnection(master, slaves);
Этот раздел вводит интерференцию каждому ведомому устройству путем добавления трафика WLAN с заданной настройкой. Трафик WLAN добавляется в заданном канале WLAN. Настройка для каждой сети WLAN включает вероятность столкновения, интерференционное время начала и интерференционное время окончания. helperBLEWLANTrafficConfig является объектом, используемым, чтобы смоделировать трафик WLAN, и функция addWLANTraffic добавляет трафик WLAN на заданном канале WLAN.
% Create configuration object for configuring WLAN traffic wlanTraffic = helperBLEWLANTrafficConfig(); wlanNetworksCount = 6; % Probability of collisions of each WLAN network collisionProbabilities = [0.35, 0.18, 0.26, 0.60, 0.18, 0.34]; % Set of WLAN channels used by each WLAN network wlanChannels = [1, 5, 6, 12, 9, 8]; % Start and end times (in milliseconds) of each WLAN network wlanInterferencePeriod = [0, inf; ... 0, inf; ... 0, 2100; ... 0, inf; ... 200, 2800; ... 150, inf]; % Configure WLAN traffic for i = 1:wlanNetworksCount % Channel number wlanTraffic.ChannelNumber = wlanChannels(i); % Collision probability wlanTraffic.CollisionProbability = collisionProbabilities(i); % Start time wlanTraffic.StartTime = wlanInterferencePeriod(i, 1); % End time wlanTraffic.EndTime = wlanInterferencePeriod(i, 2); % Add WLAN traffic of the specified WLAN network configuration wlanTraffic = addWLANTraffic(wlanTraffic); end
Этот раздел моделирует пакетный обмен между ведущие и ведомые устройства BLE для заданного количества времени. Функция verifyInterference используется, чтобы проверить, проверяют ли, вмешивается ли канал BLE значительно трафиком WLAN.
% Initialize simulation parameters % Reset the random number generator seed rng default % Total simulation time in terms of milliseconds simulationTime = 3500; % One step time is taken as 25 microseconds (0.025 milliseconds) stepTime = 0.025; % Empty packet emptyPacket = struct('Packet', [], ... 'AccessAddress', '', ... 'RateIndex', '', ... 'ChannelIndex', -1); % Initialize the slave output slaveOutput = emptyPacket; % Preallocate the buffers to store the slave outputs slaveOutputs = cell(1, slavesCount); % Initialize figures for visualization of coexistence model for each slave 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); viewModel(coexistenceModel); % Run simulation for simulationTimer = 0:stepTime:simulationTime % Stop the simulation, if all the slaves are disconnected from the % master due to interference. if numel(master.LLConnectionConfigs) == 0 % Clear the persistent variables used for visualization before % simulation termination. clear helperBLEVisualizeCoexistence fprintf('Simulation terminated as all slaves are disconnected from the master device.\n') break end % Update WLAN traffic in visualization helperBLEUpdateWLANTraffic(slavesCount, wlanChannels, wlanTraffic, simulationTimer); % MASTER: Transmitting or Receiving mode if (master.ActiveChannel == slaveOutput.ChannelIndex) && ... strcmpi(master.ActiveAccessAddress, slaveOutput.AccessAddress) masterOutput = step(master, slaveOutput); else masterOutput = step(master, emptyPacket); end if ~(isempty(masterOutput.Packet)) interferenceEffect = verifyInterference(wlanTraffic, ... masterOutput.ChannelIndex, simulationTimer); % Corrupt the packet, if the interference effect is 1 if (interferenceEffect == 1) masterOutput.Packet(1:2) = ~masterOutput.Packet(1:2); % Drop the packet, if the interference effect is 2 (interference is % too high) elseif (interferenceEffect == 2) masterOutput = emptyPacket; end end % SLAVE: Transmitting or Receiving mode for i = 1:slavesCount % Pass the "masterOutput" to the slave listening in the same % frequency and matched access address if (slaves{i}.ActiveChannel == masterOutput.ChannelIndex) && ... strcmpi(slaves{i}.ActiveAccessAddress, masterOutput.AccessAddress) slaveOutputs{i} = step(slaves{i}, masterOutput); % Pass an empty packet to all other slaves else slaveOutputs{i} = step(slaves{i}, emptyPacket); end end slaveOutput = emptyPacket; % Get the active slave output (At any time instance only one slave is % active) for i = 1:slavesCount if ~isempty(slaveOutputs{i}.Packet) slaveOutput = slaveOutputs{i}; break end end if ~(isempty(slaveOutput.Packet)) interferenceEffect = verifyInterference(wlanTraffic, ... slaveOutput.ChannelIndex, simulationTimer); % Corrupt the packet, if the interference effect is 1 if (interferenceEffect == 1) slaveOutput.Packet(1:2) = ~slaveOutput.Packet(1:2); % Drop the packet, if the interference effect is 2 (interference is % too high) elseif (interferenceEffect == 2) slaveOutput = emptyPacket; end end end % After simulation, clear the persistent variables used for visualization clear helperBLEVisualizeCoexistence % Log the statistics of this example to % |bleCoexistenceWithStatisticalWLANStatistics.mat| file helperBLELogCoexistenceStats(master, slaves, ... 'bleCoexistenceWithStatisticalWLANStatistics.mat');
Master sending updated channel map to slave with AccessAddress "12345679" Master sending updated channel map to slave with AccessAddress "12345679"
Симуляция этого примера генерирует:
График во время выполнения для каждой пары связи "главный-подчиненный" изображение совокупного показателя успешности и состояния (хороший или плохой) каждого канала отображен.
Матовый файл bleCoexistenceWithStatisticalWLANStatistics.mat с подробной статистикой получен для каждой пары связи "главный-подчиненный".
Этот пример продемонстрировал статистическое моделирование интерференции WLAN в сети Bluetooth Low Energy.
Можно далее исследовать следующие функции/объекты:
Стандарт IEEE 802.15.2™-2003
SIG Bluetooth, спецификация v5.0 ядра Bluetooth: https://www.bluetooth.com/