主要内容

WLAN信号干扰下BLE共存模型

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

BLE-WLAN共存机制

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

这个例子说明了一个有WLAN信号干扰的BLE共存模型。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网络都配置了单独的碰撞概率。此外,为每个WLAN网络配置WLAN干扰级别,以破坏各自通道中的BLE信号。对于每一次传输,都会生成一个0到1之间的随机数。如果生成的随机数小于碰撞概率,则通过在该信道中添加WLAN信号,传输BLE信号被损坏。生成的WLAN流量可针对IEEE®802.11ax™进行修改[3.]或802.11n [4使用thewlanTraffic函数。但是,本例仅使用20 MHz WLAN通道。

BLE与WLAN共存:如果所选BLE信道根据碰撞概率受到WLAN干扰较大,则所传输的BLE信号会受到该信道内WLAN信号的干扰。主设备定期将从通道分类为“好通道”或“坏通道”,基于该通道中的数据包失败。信道分类信息以称为信道映射的位图的形式存储。位图是一个由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”现年40岁的...“ClassificationInterval”, 150,...“RxStatusCount”, 50岁,...“MinRxCountToClassify”4...“BadChannelClassificationMethod”“重置所有坏频道”...“PreferredMinimumGoodChannels”, 30);为主设备分配信道分类参数的主人。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网络的配置参数包括指定信道内的冲突概率、干扰级别、干扰开始时间和干扰结束时间。的helperBLEWLANSignalTrafficConfig对象用于WLAN流量建模。

%设置干扰BLE网络的WLAN网络数量wlanNetworksCount = 6;每个WLAN网络使用的WLAN通道集(范围[1,14])wlanChannels = [1,5,6,12,9,8];每个WLAN网络与BLE网络碰撞的概率%碰撞概率= [0.75,0.68,0.76,0.80,0.78,0.64];%每个WLAN传输的开始和结束时间(单位为毫秒)%网络wlanInterferencePeriod = [0, inf;...0,正无穷;...0, 2100;...0,正无穷;...200年,2800年;...150年,正);% WLAN信号功率电平与BLE信号功率电平的比值wlanInterferenceLevel = [1.20, 0.90, 0.85, 0.95, 0.70, 1.15];

WLAN流量模型

本节通过添加指定配置的WLAN流量来配置对每个Slave的干扰。将WLAN流量(非ht波形)添加到所有指定的WLAN通道中wlanTraffic函数。

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

共存的模拟

本节举例说明了当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毫秒的倍数。的本例中使用的最小包大小为9字节(72位)。的不同PHY模式下报文传输时间的%为:0.072毫秒% (LE1M单位),0.036毫秒(LE2M单位),0.144毫秒(LE500K单位)%和0.288毫秒(单位为LE125K)。因此,步长为%被认为是0.025毫秒(0.625是0.025的倍数)来实现模拟时间和精度之间的权衡。timeStep = 0.025;%生成BLE传输模式参数phyMode =“LE1M”% Mode可以为“LE2M”|“LE1M”|“LE500K”|“LE125K”EbNo = 16;% Eb/没有dB值初始化PHY参数sps:每个符号的样本% BLE信噪比initimpments: BLE PHY的系统对象%障碍[sps, bleSNR, initImpairments] = helperBLEInitPHYParameters(EbNo, phyMode);为空包创建结构以初始化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通过在数据通道上传输为链路层数据包生成的BLE波形来启动与各自的Slave的通信。WLAN信号干扰了各自BLE通道中生成的BLE波形。传输后,主服务器等待从服务器的响应。

  • 从机(传输或接收):在每个连接事件中,BLE从接收来自主数据通道上的干扰波形。此后,在产生BLE波形后,从机通过传输链路层数据包在同一数据通道上响应主机。生成的BLE波形受到各自BLE信道中的WLAN信号的干扰。

在添加WLAN干扰之前,传输的BLE信号经过如下射频损伤。

  • 直流偏置

  • 载频偏置

  • 载波相位偏移

  • 时间漂移

使用helperBLEImpairments功能配置射频损伤。

运行的函数helperBLEDeviceModel用于BLE主备设备之间的通信。的addInterference功能添加WLAN信号破坏BLE信号。在干扰的BLE波形中加入高斯白噪声(WGN)。的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,...“PHYMode”phyMode,...“EnableVisualization”enableVisualization,...“EnableHoppingVisualization”, enableHoppingVisualization);coexistenceModel.initializeVisualization ();视图模型(coexistenceModel);的主人。共存可视化=共存模型;%运行模拟simulationTimer = 0:timeStep:simulationTime停止模拟,如果所有的slave都断开连接%主因干扰。如果PER的BLE通道在其中%他们之间的沟通是高的,那么大师和% Slave已断开连接。通道的PER较高,原因是%对应信道的高碰撞概率。如果元素个数(master.ActiveConnectionIdxs(主人。~= -1)) == 0 fprintf(当所有从设备与主设备断开连接时,模拟终止。\n打破结束在可视化中更新WLAN流量helperbleupdatwlantraffic (slavesCount, wlanChannels, wlanTrafficConfig, simulationTimer, master);MASTER:发送或接收模式如果(主。ActiveChannel == slaveOutput.ChannelIndex) &&...~isempty(slaveOutput. llpdu) masterOutput = run(master, slaveOutput);其他的masterOutput = run(master, emptyPacket);结束如果~ (isempty (masterOutput.LLPDU))生成PHY波形masterOutput。RateIndex = phyMode;masterWaveformTx = helperBLEPHYTx(masterOutput, sps);%添加损伤masterWaveformTx = helpbleimpairment (initimpments, masterWaveformTx, sps);%添加WLAN干扰masterWaveformTx = addInterference(wlanTrafficConfig,...masterOutput。ChannelIndex, simulationTimer, masterWaveformTx);将传输的波形通过AWGN通道masterWaveformRx = awgn(masterWaveformTx, bleSNR);在增加损伤和干扰后解码PHY波形[decodedMasterPacket, decodedMasterAccessAddress] = helperBLEPHYRx(masterWaveformRx, masterWaveformRx)...phyMode sps masterOutput。AccessAddress masterOutput.ChannelIndex);masterOutput。LLPDU = decodedMasterPacket;BLE PHY接收器失败时,访问地址变为空%检测到一个有效的BLE包由于高干扰水平或%损害或噪音水平。如果~ isempty (decodedMasterAccessAddress) masterOutput。AccessAddress = dec2hex(bi2de(decodedMasterAccessAddress'), 8);结束结束%更新当前模拟时间master. coexistencvisualize . currenttime = simulationTimer;master.CoexistenceVisualization.Action =“模拟进展”SLAVE:发送或接收模式idx = 1:slavesCount将“MasterOutput”传递给Slave%的频率如果(奴隶(idx)。ActiveChannel == masterOutput.ChannelIndex) &&...~isempty(masterOutput. llpdu) slaveOutputs{idx} = run(slave (idx), masterOutput);传递一个空包给所有其他slave其他的slaveOutputs{idx} = run(slave (idx), emptyPacket);结束为每个Slave更新模拟进度master. coexistencvisualize . slavenumber = idx;视图模型(master.CoexistenceVisualization)结束slaveOutput = emptyPacket;%获取活动Slave输出(在任何时候实例中只有一个Slave是%活跃)idx = 1:slavesCount如果~isempty(slaveOutputs{idx}.LLPDU) slaveOutput = slaveOutput {idx};打破结束结束如果~ (isempty (slaveOutput.LLPDU))生成PHY波形slaveOutput。RateIndex = phyMode;slaveWaveformTx = helperBLEPHYTx(slaveOutput, sps);增加BLE伤害slaveWaveformTx = helpbleimpairment (initimpments, slaveWaveformTx, sps);%添加WLAN干扰slaveWaveformTx =添加干扰(wlanTrafficConfig,...slaveOutput。ChannelIndex, simulationTimer, slaveWaveformTx);将传输的波形通过AWGN通道slaveWaveformRx = awgn(slaveWaveformTx, bleSNR);在增加损伤和干扰后解码PHY波形[decodedSlavePacket, decodedSlaveAccessAddress] = helperBLEPHYRx(slaveWaveformRx,...phyMode, sps, slaveOutput。AccessAddress slaveOutput.ChannelIndex);slaveOutput。LLPDU = decodedSlavePacket;BLE PHY接收器失败时,访问地址变为空%检测到一个有效的BLE包由于高干扰水平或%损害或噪音水平。如果~ isempty (decodedSlaveAccessAddress) slaveOutput。AccessAddress = dec2hex(bi2de(decodedSlaveAccessAddress'), 8);结束结束结束更新每个Slave的模拟进度idx = 1:slave count master. coexistencevisualize . slavenumber = idx;master.CoexistenceVisualization.Action =“模拟进展”;视图模型(master.CoexistenceVisualization)结束将此示例的统计信息记录到% | bleCoexistenceWithWLANSignalStatistics。垫|文件helperBLELogCoexistenceStats(主人,奴隶,...“bleCoexistenceWithWLANSignalStatistics.mat”);恢复之前生成随机数的设置rng (sprev)

仿真结果

本例的模拟生成:

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

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

进一步的探索

你可以通过以下方法进一步探索这个例子:

  • 使用WLAN格式的其他变体,如非HT直接序列扩频(DSSS)或高吞吐量(HT)wlanTraffic函数

  • 破坏BLE信号addInterference通过改变BLE信号不同阶段存在的干扰来发挥作用

你也可以探索BLE网络WLAN干扰的统计建模

通过本示例,可以分析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/

  3. IEEE P802.11ax™/ D3.1。《无线局域网介质访问控制(MAC)和物理层(PHY)规范-修改6:高效无线局域网的增强》信息技术标准草案。系统间的电信和信息交换。局域网和城域网。特殊要求。IEEE计算机学会局域网/城域网标准委员会

  4. IEEE标准802.11™。《无线局域网介质访问控制(MAC)和物理层(PHY)规范》。IEEE信息技术标准。系统间的电信和信息交换。局域网和城域网。特殊要求。IEEE计算机学会局域网/城域网标准委员会

相关的话题