这个例子展示了如何使用蓝牙协议的通信工具箱™库来模拟蓝牙®低能量(BLE)网络上的WLAN干扰的统计建模。采用共存机制来减小无线局域网对BLE网络的干扰。在这个例子中,每个WLAN网络的冲突概率被用来破坏BLE信号。仿真结果表明,对于高碰撞概率的WLAN信道,各自的BLE信道的成功率较低。
由于有不同类型的无线网络在同一个未授权的频段上运行,两个不同的网络有可能互相干扰。这种干扰会导致两个网络中的传输失败。目前还没有标准的算法来实现两种不同无线网络的共存。然而,IEEE®802.15.2™标准[1]就无线个人区域网络(WPAN)与其他无线装置在未经授权的频带上运作的共存,订定一些建议措施。
这个例子说明了BLE网络WLAN干扰的统计建模。WLAN通信需要最少的20MHz的带宽,而BLE设备只需要2 MHz的带宽。WLAN使用称为载波侦听与冲突避免(CSMA / CA)的多址信道接入机制,而BLE设备使用跳频。当BLE和WLAN设备的工作频率重叠产生干扰。为了尽量减少干扰,使用共存机制。
共存机制大致分为这两类[1]:
协作:这种机制需要BLE和WLAN网络之间的通信链路。由于这两个网络可以相互通信,其中一个网络在另一个网络使用信道时暂停传输。当WLAN和BLE设备被嵌入到同一物理设备中时,就会使用这种机制。
非合作:这种机制不需要BLE和WLAN网络之间的通信链路。由于这两个网络无法互相沟通,他们用自己的方法来检测其他网络的干扰。当WLAN和BLE设备不嵌入到相同的物理装置中使用该机制。
该实施例说明用于与WLAN BLE设备的非协作共存机制。
本节阐述用于避免在本实施例中的干扰在BLE数据通信,WLAN干扰和共存算法。
沟通在祝福:BLE在链路层定义了两个主要的角色,即主角色和从角色。主服务器启动数据通信,从服务器响应主服务器。在本例中,BLE包交换是在一个主服务器和多个(最多可配置5个)从服务器之间进行建模的。在祝福2],在数据通信期间连接事件只发生。连接事件是分组的主机与从机之间交换的数据的重复(以规则的间隔被称为连接间隔)序列。所有的连接事件内的数据包在相同的数据信道发送。在每一个连接事件,与相应的从主机发起通信的开始。此后,从响应于与数据分组的母版。如果没有数据要发送,从站用空数据包进行响应。在这个例子中,只有一个事务每个连接事件建模。一个新的连接事件使用一个新的数据信道。新的信道是基于自适应信道跳频选择。指示好坏信道A信道映射的同时选择新的信道,因而表示信道跳频的适应被使用。
WLAN交通:根据指定的开始和结束时间,将WLAN流量动态地添加到或从模型中删除。每个WLAN网络都配置了单独的冲突概率。对于每一次传输,都会生成一个0到1之间的随机数。如果产生的随机数小于碰撞概率,则发射帧被损坏。
与WLAN共存:如果所选择的BLE通道显著通过基于冲突概率的WLAN干扰的影响,则所发送的分组BLE将经受损坏。主设备周期性地分类从通道为“良好信道”或“坏信道”,基于该信道分组的故障。信道的分类信息被存储在一个所谓的信道映射位图的形式。位图是1点0的定义信道(“好”或“坏”)的分类的数组。该classifyChannels功能分类上述BLE通道并将所生成的位图。主维护每个从站不同的信道映射表。更新信道映射表被发送到从站。信道的分类的周期是通过设置属性配置ClassificationInterval
在helperBLEChannelClassification对象。BLE设备处于空闲状态,通过执行能量检测(ED),计算所有“坏信道”的信道繁忙时间。如果当前的好信道数小于首选的好信道数,则对坏信道重新进行分类。此分类是基于信道繁忙时间时的BadChannelClassificationMethod
属性设置为“使用能源的迹象”。如果BadChannelClassificationMethod
属性设置为“重置所有坏信道”,所有的坏信道被重置为好渠道。
检查是否安装或不是“通信工具箱库的蓝牙协议的支持包。金宝app
comm金宝appSupportPackageCheck ('蓝牙');
这部分增加了一个BLE主设备和特定数目的从设备到网络BLE。由于主机负责在BLE网络中更新信道映射对于每个从站,所述信道分类参数在主设备使用被配置helperBLEChannelClassification。该helperBLEDeviceModel对象用于建立BLE与WLAN共存的模型。
与主服务器相关的BLE从服务器的数量slavesCount = 1;%创建BLE主设备能够与“slavesCount”连接的奴隶的数量%主= helperBLEDeviceModel (“角色”,“大师”,…“SlavesCount”,slavesCount);%初始化信道分类参数的分类BLE%渠道进入好坏渠道。% PERThreshold:包错误率(每个)阈值%ClassificationInterval:信道分类的周期%RxStatusCount:收到的数据包状态的最大数量%MinRxCountToClassify:的接收到的分组的状态的最小数%BadChannelClassificationMethod:为坏信道的分类方法%PreferredMinimumGoodChannels:良好信道的优选数channelClassification = helperBLEChannelClassification (…'PERThreshold'60,…“ClassificationInterval”,150,…'RxStatusCount'50,…'MinRxCountToClassify'4,…'BadChannelClassificationMethod',“采用节能检测”,…'PreferredMinimumGoodChannels',20);将通道分类参数分配给主设备的主人。ChannelClassification = ChannelClassification;初始化奴隶数量从站(1,slavesCount)= helperBLEDeviceModel;%创建从设备的“slavesCount”号对于idx = 1:slavesCount slaves(idx) = helperBLEDeviceModel(“角色”,“奴隶”);结束在“主人”和“奴隶”之间创建“奴隶计数”连接。这%函数创建通过共享公共连接链路层连接%参数,如连接间隔,每个访问地址%主从连接对。[主,从站] = helperBLECreateLLConnection(主,从站);
本款机型使用指定配置的WLAN流量。
配置参数
每个WLAN网络的配置参数包括指定WLAN信道中的冲突概率、干扰开始时间和干扰结束时间。该helperBLEWLANStatisticalTrafficConfig对象用于对WLAN通信流进行建模。
WLAN网络%集数与BLE网络中的干扰wlanNetworksCount = 6;WLAN信道的%集(在范围[1,14])中使用由每个WLAN网络wlanChannels = [1,5,6,12,9,8]。每个WLAN网络与网络BLE碰撞的概率%collisionProbabilities = [0.35,0.48,0.26,0.60,0.28,0.34];%透射的开始和结束时间(以毫秒为单位)在每个WLAN%网络wlanInterferencePeriod = [0,INF;…0,INF;…0,2100;…0,INF;…200,2800;…150,INF〕;
WLAN交通模型
这个部分配置通过将WLAN业务使用指定的配置的干涉到每个从站。WLAN网络使用中的所有指定的WLAN信道加入wlanTraffic功能。
%创建WLAN流量的配置对象wlanTrafficConfig = helperBLEWLANStatisticalTrafficConfig ();%使用指定的WLAN网络参数配置WLAN流量wlanTraffic(wlanTrafficConfig,wlanNetworksCount,wlanChannels,…collisionProbabilities wlanInterferencePeriod);
本节说明了在WLAN干扰下,主设备和从设备之间的通信。
初始化仿真参数
该代码初始化了BLE网络中WLAN干扰统计建模所需的仿真参数。
仿真参数初始化%%重置随机数发生器种子sprev = rng ('默认');要使BLE与WLAN共存的可视化,请设置% “enableVisualization” 为真。要禁用BLE的可视化与WLAN共存%设置“enableVisualization”为假。enableVisualization = TRUE;%为了使信道跳频序列的可视化,设置% “enableHoppingVisualization” 为真。要禁用的可视化%的信道跳频序列,设置“enableHoppingVisualization”为假。%如果出现“enableVisualization”设置为false,那么不考虑“enableHoppingVisualization”。enableHoppingVisualization = true;%总仿真时间以毫秒为单位simulationTime = 4000;%一个步骤的时间被认为是0.025毫秒。所有的时间%参数(连接间隔、扫描间隔、广告间隔、在BLE规范中是0.625毫秒的倍数。该本例中使用的最大数据包大小为33字节(264位)。该%在不同的PHY模式的分组传输时间是:0.264毫秒%(单位LE1M), 0.132毫秒(单位LE2M), 0.528毫秒(单位LE500K)%和1.056毫秒(在LE125K)。因此,步骤时间%被认为是0.025毫秒(0.625是0.025的倍数)来实现%仿真时间和精度之间的权衡。时间步长= 0.025;为空包创建结构以初始化主包的输出%和奴隶%LLPDU:生成的链路层协议数据单元(PDU)附加有%循环冗余校验(CRC)%RateIndex:字符串表示该分组将是速率%传输。它包含“LE2M”之一|'LE1M' |'LE500K'%|'LE125K'% AccessAddress:每个主从连接对的唯一地址% ChannelIndex:数据包传输的信道emptyPacket =结构(“LLPDU”,[]…'AccessAddress',“”,…“RateIndex”,“”,…“ChannelIndex”1);初始化从输出slaveOutput = emptyPacket;%预分配缓冲器来存储从站输出slaveoutput = cell(1, slavesCount);
模拟
本节模拟BLE主从设备之间的数据包用于在指定的时间量的交换。
主任(传讯或接收):在每个连接事件,BLE主器件通过在数据信道上发送一个链路层分组发起与相应的从所述通信。所生成的BLE分组被基于相应的信道的WLAN冲突概率损坏。传输信号后,主机等待从机的响应。
从(发送或接收):在每个连接事件中,BLE从在一个数据通道上从主接收被干扰的数据包。然后,从服务器通过发送链路层数据包在同一数据信道上响应主服务器。所生成的BLE分组被基于相应的信道的WLAN冲突概率损坏。
该运行功能helperBLEDeviceModel用于BLE主设备和从设备之间的通信。该getInterferenceLevel函数验证BLE信道是否受到WLAN流量的显著干扰。该helperBLEVisualizeCoexistence可视化与WLAN流量BLE共存的模拟。
%初始化数字为每个从站共存模型的可视化。这个可视化显示了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);master.CoexistenceVisualization = coexistenceModel;%运行仿真对于simulationTimer = 0:时间步:simulationTime%停止模拟,如果所有从服务器都与%主控由于干扰。主从在什么时候断开连接它们与每个BLE通道通信的PER值%的其它高。如果numel(master.ActiveConnectionIdxs(master.ActiveConnectionIdxs〜= -1))== 0 fprintf中(当所有从设备与主设备断开连接时,模拟终止。)打破;结束更新WLAN流量的可视化helperBLEUpdateWLANTraffic (slavesCount wlanChannels wlanTrafficConfig,…simulationTimer,主人);主人:发射或接收方式如果(master.ActiveChannel == slaveOutput.ChannelIndex)&&…strcmpi(master.ActiveAccessAddress,slaveOutput.AccessAddress)masterOutput =运行(主,slaveOutput);其他masterOutput =运行(主,emptyPacket);结束如果~(isempty(masterOutput.LLPDU))干涉效果= getInterferenceLevel(wlanTrafficConfig,…masterOutput.ChannelIndex,simulationTimer);%损坏该数据包,如果干扰效果是1如果(interferenceEffect == 1)masterOutput.LLPDU(1:2)=〜masterOutput.LLPDU(1:2);如果干扰效果为2(干扰为%太高)elseif(干涉效果== 2)masterOutput = emptyPacket;结束结束%更新当前模拟时间coexistenceModel.CurrentTime = simulationTimer;coexistenceModel.Action =“模拟研究进展”;%SLAVE:发送或接收模式对于IDX = 1:slavesCount%通过“MasterOutput”到从听力在同一%频率和匹配的访问地址如果(奴隶(idx)。ActiveChannel == masterOutput.ChannelIndex) &&…strcmpi(从站(IDX).ActiveAccessAddress,masterOutput.AccessAddress)slaveOutputs {IDX} =运行(从站(IDX),masterOutput);%传递一个空包到所有其它从更新计时器其他slaveoutput {idx} = run(slave (idx), emptyPacket);结束每个奴隶%更新模拟进展coexistenceModel.SlaveNumber = IDX;视图模型(coexistenceModel)结束slaveOutput = emptyPacket;%获取活动从输出(在任何时刻只有一个从站%活性)对于IDX = 1:slavesCount如果〜的isEmpty(slaveOutputs {IDX} .LLPDU)slaveOutput = slaveOutputs {IDX};打破;结束结束如果〜(的isEmpty(slaveOutput.LLPDU))interferenceEffect = getInterferenceLevel(wlanTrafficConfig,…slaveOutput。ChannelIndex simulationTimer);%损坏该数据包,如果干扰效果是1如果(interferenceEffect == 1)slaveOutput.LLPDU(1:2)=〜slaveOutput.LLPDU(1:2);如果干扰效果为2(干扰为%太高)elseif(interferenceEffect == 2)slaveOutput = emptyPacket;结束结束结束%更新每个从模拟进展对于IDX = 1:slavesCount master.CoexistenceVisualization.SlaveNumber = IDX;master.CoexistenceVisualization.Action =“模拟研究进展”;视图模型(master.CoexistenceVisualization)结束将此示例的统计信息记录到% | bleCoexistenceWithStatisticalWLANStatistics。垫|文件helperBLELogCoexistenceStats(主人,奴隶,…“bleCoexistenceWithStatisticalWLANStatistics.mat”);%恢复随机数生成的以前的设置rng (sprev);
本例仿真产生:
显示每个主 - 从连接对描绘的状态(好或坏)和各频道的累积,最近的成功率运行时间图
垫子文件bleCoexistenceWithStatisticalWLANStatistics.mat与详细统计数据,例如接收到的分组的数目,获得了损坏对每个分类间隔的信道的每个信道和状态(好或坏)的报文数
此示例使您能够分析BLE与WLAN统计干扰的共存。利用每个WLAN网络的冲突概率来破坏BLE数据包。BLE主从设备使用良好的信道进行通信,以避免丢包。在每个BLE通道计算成功率。该实例表明,对于高碰撞概率的WLAN信道,其各自的BLE信道的成功率较低。因此,这些通道不用于BLE主设备和从设备之间的通信。
在此示例中使用的特征是:
bleChannelSelection
:选择BLE通道索引
bleLLDataChannelPDUConfig
:为BLE链路层数据通道PDU创建一个配置对象
bleLLDataChannelPDU
:生成BLE链路层数据通道PDU
bleLLDataChannelPDUDecode
:解码BLE链路层数据信道PDU
本例中使用的帮助程序是:
helperBLEChannelClassification:创建一个对象BLE通道分类
helperBLEWLANStatisticalTrafficConfig:创建WLAN信号通信量的配置对象
helperBLEDeviceModel:创建BLE设备的对象
helperBLELLConnectionEvent:创建BLE链路层连接事件的对象
helperBLELLConnectionEventStatus:枚举指示BLE链路层连接事件的状态
helperBLEConnectionStateModel:为BLE链路层连接创建一个对象
helperBLECreateLLConnection:在BLE主设备和BLE从设备之间创建一个连接
helperBLEUpdateWLANTraffic:在仿真定时器上更新WLAN流量可视化
helperBLEVisualizeCoexistence:创建一个目的是可视化的共存模型
helperBLELogCoexistenceStats:登录共存统计MATLAB工作区
IEEE标准®802.15.2™。“无线个人区域网络与其他无线装置在未经许可的频带上运作的共存”。IEEE推荐的信息技术 - 局域网和城域网 - - 系统间远程通信和信息交换的特殊要求。IEEE计算机学会
蓝牙特别兴趣小组(SIG)。“蓝牙核心规范”。5.0版。https://www.bluetooth.com/