主要内容

BLE网络WLAN干扰的统计建模

本示例展示了如何使用蓝牙协议的通信工具箱™库在蓝牙®低能(BLE)网络上模拟WLAN干扰的统计建模。采用共存机制将WLAN对BLE网络的干扰降到最低。在本例中,使用每个WLAN网络的碰撞概率来破坏BLE信号。本例中生成的仿真结果表明,对于高碰撞概率的WLAN信道,相应BLE信道的实现成功率较低。

BLE-WLAN共存机制

由于有不同类型的无线网络在同一未经许可的频段上运行,两个不同的网络有可能相互干扰。这种干扰会导致两个网络的传输失败。目前还没有标准化的算法来实现两个不同的无线网络共存。然而,IEEE®802.15.2™标准[1]规定了一些建议做法,以实现无线个人区域网络(WPAN)与在未经许可频段运行的其他无线设备共存。

本例演示了BLE网络中WLAN干扰的统计建模。WLAN通信至少需要20mhz带宽,而BLE设备只需要2mhz带宽。WLAN使用一种信道访问机制,称为载波感知多址与碰撞避免(CSMA/CA),而BLE设备使用跳频。BLE和WLAN设备工作频率重叠时,会产生干扰。为了使干扰最小化,采用了共存机制。

共存机制大致可分为以下两类[1]:

  • 协作:这种机制需要BLE和WLAN网络之间的通信链路。由于这两个网络可以相互通信,当另一个网络使用信道时,其中一个网络暂停其传输。这种机制用于WLAN和BLE设备嵌入到同一物理设备中时。

  • 这个:这种机制不需要BLE和WLAN网络之间的任何通信链路。由于这两个网络无法相互通信,它们使用自己的方法来检测另一个网络的干扰。这种机制用于WLAN和BLE设备没有嵌入到同一物理设备中时。

本例说明了BLE设备与WLAN的非协作共存机制。

BLE与WLAN共存-型号描述

本例详细介绍了BLE中的数据通信、WLAN干扰以及避免干扰的共存算法。

BLE中的沟通:BLE在链路层定义了两个主要角色,即Master和Slave。主服务器发起数据通信,从服务器响应主服务器。在这个例子中,BLE包交换是在一个Master和多个(最多可配置5个)slave之间建模的。在BLE中[2,则数据通信仅在连接事件期间发生。连接事件是在主服务器和从服务器之间循环的(以定期的间隔称为连接间隔)数据包交换序列。连接事件中的所有数据包都在同一数据通道上传输。在每个连接事件开始时,主服务器发起与各个从服务器的通信。然后,从服务器用一个数据包响应主服务器。如果没有要发送的数据,则Slave响应一个空包。在本例中,每个连接事件只建模了一个事务。新的连接事件使用新的数据通道。基于自适应信道跳变选择新信道。在选择新信道时使用指示好信道或坏信道的信道映射,从而显示信道跳变的适应性。

WLAN交通:WLAN流量将根据指定的开始时间和结束时间动态添加到或从模型中删除。每个WLAN网络都配置了单独的碰撞概率。对于每一次传输,都会生成一个0到1之间的随机数。如果生成的随机数小于碰撞概率,则传输帧损坏。

BLE与WLAN共存:根据碰撞概率,如果所选的BLE信道受到WLAN干扰较大,则传输的BLE包将发生损坏。主设备定期将从通道分类为“好通道”或“坏通道”,基于该通道中的数据包失败。信道分类信息以称为信道映射的位图的形式存储。位图是一个由1和0组成的数组,定义了通道的分类(“好”或“坏”)。的classifyChannels函数对BLE通道进行分类,并存储生成的位图。Master为每个Slave维护不同的通道映射。更新后的通道映射被发送到Slave。通过设置该属性,可以配置信道分类的周期ClassificationIntervalhelperBLEChannelClassification对象。BLE设备在空闲状态下,通过执行能量检测(ED)计算所有“坏信道”的信道繁忙时间。如果当前良好通道数小于首选良好通道数,则对不良通道重新进行分类。这种分类是基于信道繁忙时的BadChannelClassificationMethod属性设置为“使用能量指示”.如果BadChannelClassificationMethod属性设置为“重置所有坏频道”时,所有坏信道都被重置为好信道。

检查支持包是否安装金宝app

检查是否安装了“蓝牙协议的通信工具箱库”支持包。金宝app

comm金宝appSupportPackageCheck (“蓝牙”);

BLE配置参数

将一个BLE Master设备和指定数量的Slave设备加入到BLE网络中。由于主设备负责更新BLE网络中每个从设备的信道映射,因此信道分类参数在主设备上使用helperBLEChannelClassification.的helperBLEDeviceModel对象用于模拟BLE与WLAN共存。

与主服务器连接的BLE从服务器的数量slavesCount = 1;创建BLE主设备,能够与“slavesCount”连接奴隶数量%master = helperBLEDeviceModel(“角色”“大师”...“SlavesCount”, slavesCount);初始化信道分类参数对BLE进行分类%频道分成好频道或坏频道。PERThreshold:包误差率(PER)阈值%信道分类周期RxStatusCount:minrxcounttoclassification:最大接收包数最小接收包数状态坏频道分类方法PreferredMinimumGoodChannels:%良好通道的首选数量channelClassification = helperBLEChannelClassification(...“PERThreshold”现年60岁的...“ClassificationInterval”, 150,...“RxStatusCount”, 50岁,...“MinRxCountToClassify”,4,...“BadChannelClassificationMethod”“使用能量检测”...“PreferredMinimumGoodChannels”, 20);为主设备分配信道分类参数的主人。ChannelClassification = ChannelClassification;初始化“slavesCount”slave数量slave (1, slavesCount) = helperBLEDeviceModel;%创建“slavesCount”从机数量idx = 1:slavesCount slave (idx) = helperBLEDeviceModel(“角色”“奴隶”);结束在“Master”和“Slaves”之间创建“slavesCount”连接。这函数通过共享公共连接创建链路层连接%参数,如连接间隔,每个访问地址%主从连接对。[master, slaves] = helperBLECreateLLConnection(master, slaves);

WLAN流量模型

本节使用指定的配置对WLAN流量进行建模。

配置参数

每个WLAN网络的配置参数包括指定信道内的冲突概率、干扰开始时间和干扰结束时间。的helperBLEWLANStatisticalTrafficConfig对象用于WLAN流量建模。

%设置干扰BLE网络的WLAN网络数量wlanNetworksCount = 6;每个WLAN网络使用的WLAN通道集(范围[1,14])wlanChannels = [1,5,6,12,9,8];每个WLAN网络与BLE网络碰撞的概率%碰撞概率= [0.35,0.48,0.26,0.60,0.28,0.34];%每个WLAN传输的开始和结束时间(单位为毫秒)%网络wlanInterferencePeriod = [0, inf;...0,正无穷;...0, 2100;...0,正无穷;...200年,2800年;...150年,正);

WLAN流量模型

本节通过添加指定配置的WLAN流量来配置对每个Slave的干扰。将WLAN网络添加到所有指定的WLAN通道中wlanTraffic函数。

创建WLAN流量配置对象wlanTrafficConfig = helperBLEWLANStatisticalTrafficConfig();使用指定的WLAN网络参数配置WLAN流量wlanTraffic(wlanTrafficConfig, wlanNetworksCount, wlanChannels)...collisionProbabilities wlanInterferencePeriod);

共存的模拟

本节以统计方式介绍WLAN干扰情况下主从设备之间的通信情况。

初始化仿真参数

本文对BLE网络中WLAN干扰统计建模所需的仿真参数进行了初始化。

初始化模拟参数重置随机数生成器种子Sprev = rng(“默认”);%若要使BLE与WLAN共存可视化,请设置% "enableVisualization"为true。禁用BLE的可视化将“enableVisualization”设置为false。enableVisualization = true;%若要启用信道跳变序列可视化,请设置% "enableHoppingVisualization"为true。禁用的可视化%的通道跳序列,设置“enableHoppingVisualization”为false。%如果“enableVisualization”设置为false,则% "enableHoppingVisualization"不被考虑。enableHoppingVisualization = true;%总模拟时间(以毫秒为单位)simulationTime = 4000;每步时间为0.025毫秒。所有的时间%参数(连接间隔,扫描间隔,广告间隔,%等)是0.625毫秒的倍数。的本例中使用的最大数据包大小为33字节(264位)。的不同PHY模式下报文传输时间的百分比为:0.264毫秒% (LE1M单位),0.132毫秒(LE2M单位),0.528毫秒(LE500K单位)和1.056毫秒(单位为LE125K)。因此,步长为%被认为是0.025毫秒(0.625是0.025的倍数)来实现模拟时间和精度之间的权衡。timeStep = 0.025;为空包创建结构以初始化Master的输出LLPDU:生成的链路层协议数据单元PDU (Generated Link Layer Protocol Data Unit)%后跟循环冗余校验(CRC)% RateIndex:表示数据包速率的字符串%传播。它包含一个'LE2M' | 'LE1M' | 'LE500K'% | ' le125k 'AccessAddress:每个主从连接对的唯一地址% ChannelIndex:报文传输的通道emptyPacket = struct(“LLPDU”[],...“AccessAddress”...“RateIndex”...“ChannelIndex”1);初始化Slave输出slaveOutput = emptyPacket;预分配缓冲区来存储Slave输出slaveOutputs = cell(1, slavesCount);

模拟

本节模拟BLE主设备和从设备在指定时间内的报文交换。

  • 硕士(传输或接收):在每个连接事件中,BLE Master通过在数据通道上传输链路层数据包来发起与各自的Slave的通信。生成的BLE报文根据对应信道的WLAN碰撞概率进行损坏。传输后,主服务器等待从服务器的响应。

  • 从机(传输或接收):在每个连接事件中,BLE从端接收来自主端数据通道上的被干扰数据包。此后,从机通过传输链路层数据包在同一数据通道上响应主机。生成的BLE报文根据对应信道的WLAN碰撞概率进行损坏。

运行的函数helperBLEDeviceModel用于BLE主备设备之间的通信。的getInterferenceLevel函数验证BLE信道是否受到WLAN流量的显著干扰。的helperBLEVisualizeCoexistence可视化BLE与WLAN流量共存的仿真。

初始化每个Slave共存模型的可视化图形。。此可视化显示WLAN通道及其碰撞%的概率,并显示通信的信道跳变%之间的BLE主设备和从设备。它还显示状态(良好或%坏)的每个BLE通道,以及在各自的成功率%的通道。coexistenceModel =...helperBLEVisualizeCoexistence (...“行动”“初始化”...“SlaveCount”slavesCount,...“WLANChannelList”wlanChannels,...“PERThreshold”master.ChannelClassification.PERThreshold,...“ClassificationInterval”master.ChannelClassification.ClassificationInterval,...“ChannelBusyCountThreshold”master.ChannelClassification.ChannelBusyCountThreshold,...“PreferredMinimumGoodChannels”master.ChannelClassification.PreferredMinimumGoodChannels,...“ConnectionInterval”.ConnectionInterval master.LLConnectionConfigs (1),...“Stoptime”simulationTime,...“EnableVisualization”enableVisualization,...“EnableHoppingVisualization”, enableHoppingVisualization);coexistenceModel.initializeVisualization ();视图模型(coexistenceModel);的主人。共存可视化=共存模型;%运行模拟simulationTimer = 0:timeStep:simulationTime停止模拟,如果所有的slave都断开连接%主因干扰。主从断开时与每个信道通信的BLE信道的PER %%其他高。如果元素个数(master.ActiveConnectionIdxs(主人。~= -1)) == 0 fprintf(当所有从设备与主设备断开连接时,模拟终止。\n打破结束在可视化中更新WLAN流量help bleupdatwlantraffic (slavesCount, wlanChannels, wlanTrafficConfig,...simulationTimer,主人);MASTER:发送或接收模式如果(主。ActiveChannel == slaveOutput.ChannelIndex) &&...strcmpi(主。ActiveAccessAddress, slaveOutput. accessaddress) masterOutput = run(master, slaveOutput);其他的masterOutput = run(master, emptyPacket);结束如果~(isempty(masterOutput.LLPDU)) interferenceEffect = getInterferenceLevel(wlanTrafficConfig,...masterOutput。ChannelIndex simulationTimer);%损坏数据包,如果干扰效果为1如果(interferenceEffect == 1) masterOutput.LLPDU(1:2) = ~masterOutput.LLPDU(1:2);如果干扰效果为2,则丢弃数据包%(干扰太大)elseif(interferenceEffect == 2) masterOutput = emptyPacket;结束结束%更新当前模拟时间coexistenceModel。CurrentTime = simulationTimer;coexistenceModel。Action =“模拟进展”SLAVE:发送或接收模式idx = 1:slavesCount将“MasterOutput”传递给Slave%频率和匹配的访问地址如果(奴隶(idx)。ActiveChannel == masterOutput.ChannelIndex) &&...strcmpi(奴隶(idx)。ActiveAccessAddress, masterOutput. accessaddress) slaveOutputs{idx} = run(slave (idx), masterOutput);将一个空包传递给所有其他slave以更新计时器其他的slaveOutputs{idx} = run(slave (idx), emptyPacket);结束为每个Slave更新模拟进度coexistenceModel。SlaveNumber = idx;视图模型(coexistenceModel)结束slaveOutput = emptyPacket;%获取活动Slave输出(在任何时候实例中只有一个Slave是%活跃)idx = 1:slavesCount如果~isempty(slaveOutputs{idx}.LLPDU) slaveOutput = slaveOutput {idx};打破结束结束如果~(isempty(slaveOutput.LLPDU)) interferenceEffect = getInterferenceLevel(wlanTrafficConfig,...slaveOutput。ChannelIndex simulationTimer);%损坏数据包,如果干扰效果为1如果(干涉效应== 1)slaveOutput.LLPDU(1:2) = ~slaveOutput.LLPDU(1:2);如果干扰效果为2,则丢弃数据包%(干扰太大)elseif(interferenceEffect == 2) slaveOutput = emptyPacket;结束结束结束更新每个Slave的模拟进度idx = 1:slave count master. coexistencevisualize . slavenumber = idx;master.CoexistenceVisualization.Action =“模拟进展”;视图模型(master.CoexistenceVisualization)结束将此示例的统计信息记录到% | bleCoexistenceWithStatisticalWLANStatistics。垫|文件helperBLELogCoexistenceStats(主人,奴隶,...“bleCoexistenceWithStatisticalWLANStatistics.mat”);恢复之前生成随机数的设置rng (sprev);

仿真结果

本例的模拟生成:

  1. 将显示每个主从连接对的运行时图,描绘每个通道的状态(好或坏)以及最近的累计成功率

  2. MAT文件bleCoexistenceWithStatisticalWLANStatistics.mat通过详细的统计信息,例如接收的数据包数量,每个通道上损坏的数据包数量以及每个分类间隔的通道状态(好或坏)

通过本示例,可以分析BLE与WLAN统计干扰共存的情况。使用各个WLAN网络的碰撞概率对BLE报文进行损坏。BLE主备设备之间使用良好的信道进行通信,避免丢包。成功率是在每个BLE通道上计算的。从这个例子可以看出,对于一个WLAN信道的高碰撞概率,相应BLE信道的实现成功率较低。因此,这些通道不用于BLE主设备和从设备之间的通信。

附录

这个例子使用了这些特性:

下面的例子使用了这些helper:

选定的参考书目

  1. IEEE标准802.15.2™。“无线个人区域网络与在未许可频段运行的其他无线设备共存”。IEEE信息技术推荐实施规程。系统间的电信和信息交换。局域网和城域网。特殊要求。IEEE计算机学会

  2. 蓝牙特别兴趣小组(SIG)。“蓝牙核心规范”。5.0版。https://www.bluetooth.com/

相关的话题