主要内容

带WLAN信号干扰的BLE共存模型

这个例子展示了如何使用蓝牙协议的通信工具箱™库和WLAN工具箱™来模拟蓝牙®低能量(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设备未嵌入到相同的物理设备中时,使用该机制。

该示例说明了具有WLAN的BLE设备的非协作共存机制。

与WLAN共存 - 模型描述

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

沟通在祝福:BLE在链路层定义了两个主要角色,即主和从。主机发起数据通信,从机响应主机。在这个例子中,BLE数据包交换是在一个主服务器和多个(可配置的多达5个)从服务器之间建模的。在祝福2[数据通信仅在连接事件期间发生。连接事件是主数据包在主站和从站之间交换的重复(以定期的间隔)序列。连接事件中的所有数据包都在同一数据通道上发送。在每个连接事件的开始时,主设备启动与相应从站的通信。此后,从站响应具有数据分组的主设备。如果没有要发送的数据,则从站响应空数据包。在此示例中,每个连接事件仅建模一个事务。一个新的连接事件使用新的数据通道。基于自适应通道跳跃选择新频道。在选择新频道时使用指示良好或不良通道的频道映射,从而显示频道跳跃中的适应性。

WLAN交通:WLAN流量根据指定的开始和结束时间动态地添加到模型中或从模型中删除。每个WLAN网络配置一个单独的碰撞概率。此外,每个WLAN网络都配置了WLAN干扰等级,以破坏各自信道中的BLE信号。对于每一次传输,都会生成一个0到1之间的随机数。如果生成的随机数小于碰撞概率,则通过在该信道中添加WLAN信号破坏了传输的BLE信号。生成的WLAN流量可以修改为IEEE®802.11ax™[3.或802.11n [4.)使用WlantRaffic.函数。然而,本示例仅使用20mhz WLAN信道。

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

检查支持包安装金宝app

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

comm金宝appsupportpackagecheck(“蓝牙”);

BLE配置参数

本节将BLE主设备和指定数量的从设备添加到BLE网络。由于主设备负责更新BLE网络中的每个从站的信道映射,因此在主设备使用时配置信道分类参数helperBLEChannelClassification.这helperBLEDeviceModel对象用于对BLE与WLAN共存进行建模。

%与主服务器相关的BLE从服务器的数量slavescount = 1;创建能够连接“slavesCount”的BLE主设备%的奴隶数主= helperBLEDeviceModel ('角色'“大师”...“SlavesCount”, slavesCount);%初始化信道分类参数,对BLE进行分类渠道分为好渠道和坏渠道。PERThreshold:包%错误率(每)阈值类别Interval:%信道分类周期性RxStatusCount:%最大收到的数据包数状态minrxcounttoclassify:BadChannelClassificationMethod:坏频道的%方法分类优先考虑蛋白贵族沟渠:%良好渠道的首选数量channelClassification = helperBLEChannelClassification (...'perthreshold',40,...“ClassificationInterval”, 150,...“RxStatusCount”,50,...'minrxcounttoclassify'4...'badchannelclassificationmethod'“重置所有坏频道”...'首选MinimumGoodChannels', 30);%分配通道分类参数给主设备的主人。ChannelClassification = ChannelClassification;%初始化“slavescount”的奴隶数奴隶(1,slavescount)= HelperbledeviceModel;%创建Slave设备的slavesCount数量idx = 1:slavesCount (idx) = helperBLEDeviceModel('角色'“奴隶”);结束在“Master”和“Slaves”之间创建“slavesCount”连接。这%函数通过共享公共连接创建链接层连接%参数,如连接间隔,每个接入地址%主从连接对。[master, slaves] = helperBLECreateLLConnection(master, slaves);

模型WLAN流量

本节使用指定的配置模拟WLAN流量。

配置参数

每个WLAN网络的配置参数包括在指定WLAN信道中的冲突概率、干扰级别、干扰开始时间和干扰结束时间。这helperBLEWLANSignalTrafficConfig对象用于对WLAN流量进行建模。

%设置WLAN网络干扰BLE网络的数量wlanNetworksCount = 6;%WLAN通道(在每个WLAN网络使用的范围[1,14]中)集wlanChannels = [1, 5, 6, 12, 9, 8];具有BLE网络的每个WLAN网络的碰撞概率概率collision - probability = [0.75, 0.68, 0.76, 0.80, 0.78, 0.64];%每个WLAN的开始和结束时间,单位为毫秒%网络wlanInterferencePeriod = [0, inf;]...0,INF;...0, 2100;...0,INF;...200年,2800年;...150,INF];% 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流量wlanTrafficConfig, wlanNetworksCount, wlanChannels, collisionprobability,...WLANINTERIFEDPEIOD,WLANINTERFERENCELEVEL);

共存模拟

本节举例说明在干扰WLAN信号时主从设备之间的通信。

初始化仿真参数

在此代码中初始化了与WLAN信号干扰所需的仿真参数。

%初始化仿真参数%重置随机数发生器种子sprev = rng (“默认”);%若要使能BLE与WLAN共存的可视化,请设置% "enableVisualization"为真。禁用BLE的可视化与WLAN的%共存将“EnableVisualization”设置为False。enableVisualization = true;%要启用通道跳转序列的可视化,请设置% "enableHoppingVisualization"为真。使不可视化%通道跳转序列,将“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的倍数)来实现%在模拟时间和准确性之间进行权衡。步伐= 0.025;%生成BLE传输模式参数phyMode =“LE1M”;% Mode可以是'LE2M' | 'LE1M' | 'LE500K' | 'LE125K'EbNo = 16;% Eb/ dB中没有值%初始化PHY参数sps:每符号取样bleSNR:%BLE信号到噪声比率initimpare:BLE PHY的系统对象%损伤[sps, bleSNR, inittimpairments] = helperBLEInitPHYParameters(EbNo, phyMode);为空包创建结构,初始化Master的输出LLPDU:生成的链路层协议数据单元(PDU)%附加%循环冗余检查(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信号的传输经过以下射频损伤。

  • DC偏移

  • 载波频率偏移量

  • 载波相位偏移量

  • 时间漂移

使用HelperBlemp.1.功能,配置射频损伤。

运行的函数helperBLEDeviceModel用于BLE主设备和从设备之间的通信。这添加干扰功能增加WLAN信号,破坏BLE信号。在BLE波形中加入高斯白噪声(WGN)。这helperBLEVisualizeCoexistence可视化BLE与WLAN信号共存的仿真。

%初始化每个从站的共存模型的可视化图。%此可视化显示WLAN频道及其冲突%的概率,也显示了信道跳转为通信BLE主设备和从设备之间的%。它还显示了状态(好的或% bad),以及各自的成功率% 渠道。coexistenceModel =...helperblevisualizecoexistence(...“行动”“初始化”...“SlaveCount”slavesCount,...'Wlanchannellist'wlanChannels,...'perthreshold'master.ChannelClassification.PERThreshold,...“ClassificationInterval”master.ChannelClassification.ClassificationInterval,...“ChannelBusyCountThreshold”master.ChannelClassification.ChannelBusyCountThreshold,...'首选MinimumGoodChannels',master.channelclassification.preferredminimum goodchannels,...“ConnectionInterval”,master.llconnectionConfigs(1).ConnectionInterval,...“Stoptime”,模拟时间,...“PHYMode”phyMode,...“EnableVisualization”enableVisualization,...'EnableHoppingVisualization',enableHoppingVisualization);coexistencemodel.initializevisualization();ViewModel(共存共存);master.coExistenceVisualization = CoExistEndeModel;%运行仿真simulationTimer = 0:步伐:simulationTime%停止模拟,如果所有的从从断开%主人由于干扰。如果BLE通道的PER他们彼此的交流是高的,然后大师和%从服务器断开连接。通道的PER值高是因为%在各自的通道中高碰撞概率。如果numel(master.activeConnectionIdxs(master.activeConnectionIdxs〜= -1))== 0 fprintf('仿真终止,因为所有从站都与主设备断开连接。\ n'的)休息;结束%在可视化中更新WLAN流量HelperbleupdateWlantRaffic(Slavescount,Wlanchannels,Wlantrafficconfig,SimulationTimer,Master);% 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 = helperbledamments (inittimpairments, masterWaveformTx, sps);%增加WLAN干扰masterWaveformTx = addInterference (wlanTrafficConfig,...MasterOutput.ChannelIndex,SimulationTimer,MasterWaveFormTX);%传输波形通过AWGN通道masterWaveformRx = awgn(masterWaveformTx, bleSNR);%在添加损伤和干扰后解码PHY波形[DecodedMasterPacket,DecodedMasterAccessAddress] = HelperblePhyrx(MasterWaveFormRx,...Phymode,SPS,MasterOutput.AccessAddress,MasterOutput.ChannelIndex);masteroxput.llpdu = decodedmasterpacket;当BLE PHY接收器失败时,%访问地址为空由于高干扰水平或者,%检测有效的BLE数据包%损害或噪音水平。如果〜isempty(decodedmasteraccessaddress)masteroutputpessaddress = dec2hex(Bi2de(Decodedmasteraccessaddress'),8);结束结束%更新当前模拟时间master.CoexistenceVisualization.CurrentTime = simulationTimer;master.CoexistenceVisualization.Action =“模拟进展”;%从站:发送或接收模式Idx = 1:Slavescount%将“masteroxting”传递给站的侦听%的频率如果(奴隶(idx)。ActiveChannel == masterOutput.ChannelIndex) &&...〜isempty(masteroutoutput.llpdu)slaveoutputs {idx} =运行(从站(idx),masteroutput);%将空数据包传递给所有其他从站其他的{idx} = run(slave (idx), emptyPacket);结束%更新每个Slave的模拟进度master.CoexistenceVisualization.SlaveNumber = idx;ViewModel(Master.coExistenceVisualization)结束slaveOutput = emptyPacket;%获取活动的Slave输出(在任何时候,只有一个Slave是% 积极的)Idx = 1:Slavescount如果〜isempty(slaveoutputs {idx} .llpdu)slaveoutput = slaveoutputs {idx};休息结束结束如果〜(isempty(slaveoutput.llpdu))%生成PHY波形slaveOutput。RateIndex = phyMode;slaveWaveformTx = helperBLEPHYTx(slaveOutput, sps);%添加BLE损伤SlavewaveFormtx = HelperblePlementments(Initimpairments,SlaveWaveFormtx,SPS);%增加WLAN干扰slaveWaveformTx = addInterference (wlanTrafficConfig,...slaveOutput。ChannelIndex、simulationTimer slaveWaveformTx);%传输波形通过AWGN通道slavewaveformrx = awgn(slavewaveformtx,blesnr);%在添加损伤和干扰后解码PHY波形[decodedSlavePacket, decodedSlaveAccessAddress] = helperBLEPHYRx(slaveWaveformRx,)...Phymode,SPS,SlaveOutput.AccessAddress,SlaveOutput.ChannelIndex);slaveoutput.llpdu =解码索;当BLE PHY接收器失败时,%访问地址为空由于高干扰水平或者,%检测有效的BLE数据包%损害或噪音水平。如果~ isempty (decodedSlaveAccessAddress) slaveOutput。AccessAddress = dec2hex(bi2de(decodedSlaveAccessAddress'), 8);结束结束结束%更新每个Slave的模拟进度master. coexistencevisualize . slavenumber = idx;master.CoexistenceVisualization.Action =“模拟进展”;ViewModel(Master.coExistenceVisualization)结束%将此示例的统计信息记录到% | bleCoexistenceWithWLANSignalStatistics。垫|文件HelperBlogCoexistencestats(掌握,奴隶,...“bleCoexistenceWithWLANSignalStatistics.mat”);%恢复之前的随机数生成设置RNG(SPREV)

仿真结果

这个例子的模拟生成:

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

  2. 一个垫子文件blecoexistencewithwlansignalstatistics.mat使用详细的统计数据如收到的数据包数,获得了每个频道的每个通道和状态(好或坏)的数据包数量

进一步的探索

您可以进一步探索此示例:

  • 使用WLAN格式的其他变体,例如非HT直接序列扩频(DSSS)或高吞吐量(HT)WlantRaffic.功能

  • 损坏BLE信号添加干扰通过改变BLE信号不同阶段的干扰来实现功能

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

此示例使您可以使用WLAN信号干扰分析BLE共存。每个WLAN网络的碰撞概率和干扰电平用于破坏BLE信号。BLE主设备和从设备使用良好的通道互相通信,以避免数据包丢失。每个BLE频道计算成功率。该示例得出结论,对于WLAN通道的高碰撞概率和干扰电平,所以实现相应的BLE通道的成功率低。因此,这些通道不用于BLE主设备和从设备之间的通信。

附录

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

这个例子使用了这些助手:

选定的参考书目

  1. IEEE标准®802.15.2™。“无线个人区域网络与在无牌频带内运作的其他无线设备共存”。信息技术推荐规程。系统间电信和信息交换。局域网和城域网。特殊要求。IEEE计算机协会

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

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

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

相关的话题