主要内容

基于MATLAB的802.11ax多节点住宅场景系统级仿真

本示例展示了如何对IEEE®802.11ax™的性能进行建模。1在住宅场景中使用WLAN Toolbox™。

使用这个例子,你可以:

  • 通过配置网络和信道参数对住宅场景进行建模。

  • 模拟一个多节点WLAN系统并可视化与网络相关的统计数据。

  • 通过在介质访问控制(MAC)和物理层(PHY)的抽象模型和完整模型之间切换来模拟网络。

仿真结果显示了吞吐量、延迟和丢包等性能指标。

住宅场景描述

本示例演示了一个系统级仿真,以评估住宅场景中802.11ax网络的性能。住宅场景由一栋三层的建筑组成。以下是住宅方案的特点:

  • 楼层之间的间距为1.5米。

  • 每层由四个房间组成,每个房间的尺寸为10米× 10米× 3米。

  • 每个房间都有一个接入点(AP)和两个随机放置的站点(sta)x- - -y-距离地面1.5米的位置。

  • 每个AP都有同一房间内sta的数据。

仿真场景根据节点之间的距离、WLAN信号经过的墙壁和地板的数量指定路径损耗模型。该图显示了本例中模拟的住宅场景。

本例使用抽象对所有节点(ap和sta)的MAC层和PHY进行建模。MAC层实现增强型分布式通道访问(EDCA)功能。MAC层使用抽象进行帧生成和解码。抽象是指MAC层发送和接收帧元数据,而不是发送或接收编码的MAC帧字节。类似地,PHY对WLAN信号的产生和解码使用抽象。有关PHY抽象的更多信息,请参见系统级仿真的物理层抽象的例子。

这个例子是根据TGax评估方法中指定的Box-3和Box-5情景进行校准的[2]。TGax仿真场景文档中提到的场景计算的网络吞吐量[3.]根据TGax任务组发布的校准结果进行验证,以确认符合IEEE 802.11标准。

配置参数

仿真参数

指定模拟时间(以毫秒为单位)simulationTime变量。若要可视化所有节点的实时状态转换图,请设置showLiveStateTransitionPlot变量设置为true。要在模拟结束时可视化包含网络统计信息的表,请设置displayStatistics变量设置为true。

将随机数生成器的种子设置为1。种子值控制随机数生成的模式。由种子值生成的随机数影响MAC上的退退计数器选择和PHY上的路径损耗建模。对于高保真度的模拟结果,改变种子值并对多次模拟的结果进行平均。

rng (1,“combRecursive”);%随机数生成器的种子simulationTime = 100;%模拟时间,以毫秒为单位showLiveStateTransitionPlot = true;显示所有节点的实时状态转换图displayStatistics = true;%在模拟结束时显示统计信息%将文件夹添加到访问所有辅助文件的路径中目录(genpath (fullfile (pwd,“mlWLANSystemSimulation”)));

住宅场景参数说明

ScenarioParameters结构使用这些参数定义了住宅建筑的大小和布局。

  • BuildingLayout:以三个方向的房间数量来指定建筑布局

  • RoomSize:指定每个房间的大小,单位为米

  • NumRxPerRoom:指定每个房间的台数

该示例假设每个房间中有一个发送AP和两个接收sta。的hDropNodes函数随机生成每个房间内AP和sta的位置。

场景参数= struct;% [x,y,z]方向的房间数ScenarioParameters。BuildingLayout= [2 2 3];%每个房间的面积,单位为米[x,y,z]ScenarioParameters。RoomSize= [10 10 3];%每个房间的sta数量ScenarioParameters。NumRxPerRoom = 2;%随机获取放置节点的位置[apPositions, stpositions] = hDropNodes(场景参数);

节点参数

hLoadConfiguration函数加载指定节点的MAC和PHY配置nodeConfigs并为指定的传输节点加载应用程序流量配置trafficConfigs。该函数为网络中的所有节点分配名称和位置。

%获取每个节点的id和位置[nodeConfigs, trafficConfigs] = hLoadConfiguration(场景参数,apPositions, stpositions);

wlanNodeConfig.mat文件定义了用于指定节点的MAC和PHY配置的结构。有关此MAT文件中详细配置参数的更多信息,请使用该命令hConfigurationHelp(“wlanNodeConfig”)。的nodeConfigs的输出hLoadConfiguration函数是这些结构的数组。可以修改MAC配置参数,如传输报文的格式、信道带宽、MCS索引、STS数等。您还可以修改物理层参数,如发射功率,发射增益,接收增益,噪声功率。例如,这段代码将node-1配置为使用固定的MCS-6传输数据包。

nodeConfigs(1)。TxMCS = 6
nodeConfigs =1×36结构数组与字段:NodeName NodePosition TxFormat Bandwidth TxMCS TxNumSTS NumTxChains MPDUAggregation DisableAck MaxSubframes RTSThreshold DisableRTS MaxShortRetries MaxLongRetries DLOFDMAFrameSequence MaxDLStations BasicRates Use6MbpsForControlFrames BandAndChannel CWMin CWMax AIFSSlots RateControl PowerControl TxPower TxGain RxGain EDThreshold RxNoiseFigure ReceiverRange FreeSpacePathloss IsMeshNode MeshTTL IsAP

wlanTrafficConfig.mat文件定义用于指定应用程序流量配置的结构。有关此MAT文件中详细配置参数的更多信息,请使用该命令hConfigurationHelp(“wlanTrafficConfig”)。的trafficConfigs的输出hLoadConfiguration函数是这些结构的数组。每个结构对应于一个特定的源和目标节点对。您可以修改数组中每个应用程序的数据包大小、数据速率或访问类别等参数。本例中的模拟场景配置ap到sta之间的AC0 (Best Effort)流量。例如,数组中的第一个结构指定节点1 (AP)到节点13 (STA)的应用程序流量。这段代码配置从节点1到节点13传输1000字节大小的应用程序数据包。所有其他发射机使用默认的1500字节的数据包大小。

trafficConfigs(1)。PacketSize = 1000
trafficConfigs =1×24结构数组与字段:SourceNode DestinationNode PacketSize DataRateKbps AccessCategory

创建网络

根据节点配置创建发送器和接收器站点。根据场景参数创建建筑几何形状。

%创建发送和接收站点[txs,rxs] = hCreateSitesFromNodes(nodeConfigs);创建三角测量对象并将场景可视化tri = hTGaxResidentialTriangulation(scenario parameter);hVisualizeScenario(三、tx rx,同位语);

图包含一个轴对象。轴对象包含40个类型为patch, line, text, scatter的对象。这些对象表示AP, STA。

本例使用TGax驻留传播模型来确定节点之间的路径损耗。路径损失是墙的数量、楼层的数量和节点之间的距离的函数。使用hTGaxResidentialPathLoss函数创建路径损耗模型。

propModel = hTGaxResidentialPathLoss(“三角”三,“ShadowSigma”0,“FacesPerWall”1);

通过hCreatePathlossTable helper函数获取网络中各对节点之间的路径损耗。

[pl,tgaxIndoorPLFn] = hCreatePathlossTable(txs,rxs,propModel);

hCreateWLANNodes辅助功能使您能够:

  • 使用上述参数配置的APP、MAC和PHY层创建WLAN节点

  • 通过修改与算法配置相关的代码,在APP、MAC和PHY层添加自定义算法hCreateWLANNodes

默认情况下,hCreateWLANNodeshelper功能在每个WLAN节点上配置抽象的MAC和PHY。

在发送端和接收端,完整的MAC处理建模涉及MAC层完整的MAC帧生成。同样,建模完整的PHY处理涉及到通过衰落信道的波形发送和接收的完整操作。当模拟大型网络时,完整的MAC和PHY处理在计算上是昂贵的。

在抽象MAC中,节点在MAC层不生成或解码任何帧。同样,在抽象的PHY中,节点不会在PHY上生成或解码任何波形。MAC和PHY抽象使您能够最大限度地减少系统级模拟的复杂性和持续时间。有关PHY抽象的更多信息,请参见系统级仿真的物理层抽象的例子。

hCreateWLANNodeshelper函数使您能够通过配置MACFrameAbstractionPHYAbstractionType输入参数。这些参数的有效值为:

  • MACFrameAbstraction:真或假

  • PHYAbstractionType:“TGax评估方法附录1”(默认),“TGax模拟场景MAC校准”或“无”

如果你设置PHYAbstractionType在“TGax评估方法附录1”中,PHY通过使用有效的信噪比(SINR)映射来估计带有TGax信道模型的链路的性能。或者,“TGax仿真场景MAC校准”值PHYAbstractionType假设由于干扰导致数据包失败,而不实际计算链路性能。要使用完整的PHY,请设置的值PHYAbstractionType“没有”。

MACFrameAbstraction =真正的;PHYAbstractionType =TGax评估方法附录1;wlanNodes = hCreateWLANNodes(nodeConfigs, trafficConfigs)“CustomPathLoss”tgaxIndoorPLFn,“MACFrameAbstraction”MACFrameAbstraction,“PHYAbstractionType”, PHYAbstractionType);

下表显示了如何通过配置的值在抽象MAC和完整MAC或PHY之间切换MACFrameAbstractionPHYAbstractionType输入参数。

模拟

初始化可视化参数并模拟WLAN场景,使用hWLANStatsLoggerhWirelessNetworkSimulator辅助函数。

%初始化可视化参数visuvisuationinfo = struct;visualizationInfo。节点= wlanNodes;statsLogger = hWLANStatsLogger(visualizationInfo);如果showLiveStateTransitionPlot hPlotStateTransition (visualizationInfo);%配置状态转换可视化结束%初始化无线网络模拟器networkSimulator = hWirelessNetworkSimulator(wlanNodes);

网络模拟器提供了在模拟中调度自定义事件的灵活性scheduleEvent对象的功能。

例如,每次调用模拟器时,都可以安排一个事件来刷新状态转换可视化。指定函数句柄、输入参数、调用时间和回调的周期。有关调度事件的更多信息,请在MATLAB命令提示符处输入此命令。

帮助hWirelessNetworkSimulator.scheduleEvent

%从MATLAB命令提示符运行脚本时,暂停%执行以在每5毫秒后刷新可视化scheduleEvent(networkSimulator, @() pause(0.001), [], 0,5);

运行指定节点所在网络中的所有节点simulationTime时间。可视化节点的状态转换周期。

%模拟无线网络运行(networkSimulator simulationTime);

图MAC状态随时间的转换包含一个轴对象和另一个uicontrol类型的对象。axis对象包含1652个bar,矩形类型的对象。这些对象分别是:Contention, Transmission, Reception(发送到其他节点),Idle/EIFS/SIFS, Reception(发送到节点)。

清除函数中使用的持久变量清晰的hPlotStateTransition;

结果

检索统计信息并将其存储在mat文件中。UI表显示了模拟过程中收集的所有统计信息。

检索统计数据并将其存储在mat文件中统计= getStatistics(statsloger, displayStatistics);
频段2.4和信道6的统计表
statisticsTable =157×36表Node1 Node2 Node3 Node4 Node5 Node6 Node7 Node8 Node9 Node10 Node11 Node12 Node13 Node25 Node14 Node26 Node15 Node27 Node16 Node28 Node17 Node29 Node18 Node30 Node19 Node31 Node20 Node32 Node21 Node33 Node22 Node34 Node23 Node35 Node24 Node36  __________ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ ________ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______________ ______ 频率2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 2.437 ActiveOperationInFreq 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 AppTxAC_BE 12143 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppTxAC_BK 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppTxAC_VI 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppTxAC_VO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppTxBytes 1.4643 1.5 e + e + 07年07年1.5 1.5 e + e + 07年07年1.5 1.5 e + e + 07年07年1.5 1.5 e + e + 07年07年1.5 1.5 e + e + 07年07年1.5 1.5 e + e + 07年07年0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppRxAC_BE 0 0 0 0 0 0 0 0 0 0 0 0 129 3 58 0 0 32 0 32 0 32 0 0 0 0 0 0 32 64 0 32 0 96 0 64 AppRxAC_BK 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppRxAC_VI 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppRxAC_VO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppRxBytes 0 0 0 0 0 0 0 0 0 0 0 0 1.29e+05 4500 87000 0 0 48000 0 48000 0 48000 0 0 0 0 0 0 48000 96000 0 48000 0 1.44e+05 0 96000 AppTxOverflow 11444 9488 9488 9488 9456 9488 9485 9424 9456 9488 9392 9328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AppAvgPacketLatency 0 0 0 0 0 0 0 0 0 0 0 0 70356 596 86568 0 0 22527 0 33615 0 44721 0 0 0 0 0 0 50286 61091 0 72483 0 49663 0 49967 AppAvgPacketLatencyAC_BE 0 0 0 0 0 0 0 0 0 0 0 0 70356 596 86568 0 0 22527 0 33615 0 44721 0 0 0 0 0 0 50286 61091 0 72483 0 49663 0 49967 AppAvgPacketLatencyAC_BK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ⋮

可以访问上表中的所有统计信息statistics.mat文件。

%将统计数据保存到mat文件保存(“statistics.mat”“统计数据”);

hPlotNetworkStatsHelper函数解析收集到的统计信息,绘制出每个节点的吞吐量、丢包率和平均包延迟值。该图显示了每个发送器(ap)的吞吐量和丢包率。该图还显示了在每个接收节点(sta)经历的平均数据包延迟。吞吐量显示在每个AP上实现的数据速率,单位为兆比特每秒(Mbps)。丢包率表示传输失败的数据与总传输数据的比率。平均数据包延迟显示了每个STA从AP接收其下行流量的平均延迟时间。

%显示每个节点的吞吐量、丢包率和平均时延hPlotNetworkStats(统计,wlanNodes);

图中包含3个轴对象。轴对象1与标题吞吐量在每个发射机包含类型bar的对象。标题为“每个发射机丢包”的轴对象2包含一个类型为bar的对象。标题为“每个接收器的平均数据包延迟”的轴对象3包含一个类型为bar的对象。

%从路径中删除文件夹rmpath (genpath (fullfile (pwd,“mlWLANSystemSimulation”)));

进一步的探索

为了观察STA在房间内移动时的吞吐量变化,您可以对具有固定AP的STA的不同位置运行模拟。您可以观察吞吐量与与其AP的距离的变化。在所有不同位置捕获的吞吐量集可用于绘制如图所示的热图。

参考文献

  1. IEEE标准802.11ax™-2021。“修正案6:增强高效WLAN…”信息技术标准草案。局域网和城域网系统之间的电信和信息交换。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。

  2. “TGax模拟场景”,doc。IEEE 802.11 14/0980r16。

  3. “11ax评估方法”,博士。IEEE 802.11 14/0571r12。

相关的话题