这个案例展示了网络层的洪水蓝牙®网状网络使用沟通工具库™的蓝牙®协议。使用这个示例中,您可以:
创建和配置蓝牙网状网络通过定位在网格中节点。
指定您自己的网络通过配置节点位置和类型的节点位置分配。
分类和网格节点配置为源,目的地,继电器,和结束节点,观察网络层洪水有助于源和目的地之间的通信即使禁用一些中间继电器节点。
可视化流数据包从源到目的地。
示例还展示了如何执行蒙特卡罗模拟蓝牙网状网络获取数值结果(如所需的中继节点数量,关键源和目的地之间的中继节点)平均在多个迭代。
蓝牙核心规范(1)包括一个低能量低速率无线个人区域网络版本,称为蓝牙低能量(bie)或蓝牙智能。BLE堆栈由通用属性配置文件(关贸总协定),属性协议(ATT),安全管理器协议(SMP)、逻辑链路控制和适应协议(L2CAP),链路层(LL)和物理层。祝福是添加到标准低能量的设备生成少量的数据,如通知警报在家庭自动化等应用程序使用,医疗、健身、和物联网(物联网)。关于祝福协议栈的更多信息,请参阅蓝牙协议栈。
蓝牙网格配置文件(2)定义了基本需求实现一个祝福的网状网络解决方案。网栈位于BLE的核心规范,由模型层,地基模型层、接入层、传输层,降低传输层、网络层和不记名层。蓝牙网状网络使大型设备网络应用,如智能照明、工业自动化、传感器网络、资产跟踪、和许多其他的物联网解决方案。金宝搏官方网站蓝牙网栈的更多信息,请参阅蓝牙网状网络。
蓝牙网状网络层主要执行这些操作。
上层传输消息使用持票人通过网络层
中继网消息
实现管理洪水优化网络洪水
分配网络地址
配置网络层安全
为更多的信息关于这些网状网络层操作,明白了蓝牙网状网络。
这个例子使用广告载体来演示蓝牙网洪水在无线传感器网络中。
本例的主要目标是:
创建和配置蓝牙网状网络
可视化信息泛滥
派生选择源和目的地之间的路径
显示统计数据(参考网络层数据在每一个节点每个节点)
%检查的蓝牙协议的通信工具库%安金宝app装支持包。comm金宝appSupportPackageCheck (“蓝牙”);
这个例子使您能够创建和配置两个蓝牙网状网络场景。每一个场景都是50-node网络。网络中的节点分为继电器、来源、目的地,和结束节点。指定相应的生存时间(TTL)值的源和目的节点。在第一个场景中,示例标识源和目的节点之间的路径。你可以想象中的消息流网络与网络层数据。在第二个场景中,例如禁用一些中继节点和结束节点。在这种情况下,仿真表明,该网络的可能性之间建立一个路径指定的源和目标。
创建和可视化网状网络,使用helperBLEMeshNetworkNode和helperBLEMeshVisualizeNetwork功能。指定的节点数(totalNodes
)和节点位置的类型(NodePositionType
)helperBLEMeshVisualizeNetwork函数。默认类型的节点位置是“网格”。指定您自己的网络,设置的值NodePositionType
“UserInput”和节点位置职位
。
%设置随机数生成器的种子“默认”sprev = rng (“默认”);%在网状网络中指定的节点数量totalNodes = 50;%初始化bleMeshNodes向量和类型的对象% helperBLEMeshNetworkNodetotalNodes bleMeshNodes (1) = helperBLEMeshNetworkNode;%每个网格节点配置惟一标识符为idx = 1: totalNodes meshNode = helperBLEMeshNetworkNode;meshNode。标识符= idx;meshNode.NetworkLayer。ElementAddresses = dec2hex (idx 4);bleMeshNodes (idx) = meshNode;结束%从垫文件加载节点位置负载(“bleMeshNetworkNodePositions.mat”);%的场景模拟在这个例子numberOfScenarios = 2;%初始化meshNetworkPlots向量和类型的对象% helperBLEMeshVisualizeNetworknumberOfScenarios meshNetworkPlots (1) = helperBLEMeshVisualizeNetwork;为idx = 1: numberOfScenarios meshNetworkPlots (idx) = helperBLEMeshVisualizeNetwork;meshNetworkPlots (idx)。NumberOfNodes = totalNodes;%节点位置分配的类型设置为“网格”或%的UserInputmeshNetworkPlots (idx)。NodePositionType =“UserInput”;%设置节点位置(适用于基于数量的节点% UserInput),米meshNetworkPlots (idx)。职位= bleMeshNetworkNodePositions;%设置附近范围基于节点位置,在米meshNetworkPlots (idx)。VicinityRange = 25;%设置网络可视化meshNetworkPlots (idx)。Title =…(“场景”num2str (idx)“洪水:蓝牙网”];结束
指定源和目标的数量对网状网络中使用srcDstPairs
参数。指定数据包TTL值是在每个源节点。
%指定仿真时间,以毫秒为单位simulationTime = 600;%启用或禁用可视化enableVisualization = true;%指定源和目标对srcDstPairs = [1 7;13 29];%指定数据包TTL值是在每个源节点ttl = [25;25);
运行仿真,得到结果,使用helperBLEMeshFloodingSimulation和helperBLEMeshFloodingSimulationResults函数,分别。
场景1:在这种情况下,网络中的所有50个节点是活动的。这些节点选为继电器和没有失败的节点在这个场景中。
%指定中继节点relayNodeIDs = [3 4 5 8 10 11 15 19 20 21 23 25 28 30 32 34 36 37 38 39 41…42 43 44 45 46 47 48 49];%指定失败节点(节点的网络)failedNodeIDs = [];
这图显示了对应的每一对源和目的地之间的路径。的scenarioOneResults
工作空间变量存储包含路径场景1中获得的结果。
%与场景1配置仿真运行pathScenarioOne = helperBLEMeshFloodingSimulation (totalNodes、bleMeshNodes meshNetworkPlots (1),…simulationTime srcDstPairs, ttl、relayNodeIDs failedNodeIDs,…enableVisualization);%显示场景1的结果scenarioOneResults = helperBLEMeshFloodingSimulationResults (srcDstPairs pathScenarioOne)
scenarioOneResults = 2 x4表源目的地路径NumberOfHops ______ ___________ ___________________________ _______ 1 7 {[1 46 19 4 39 41 48 23 7]} 8 13 29 {[13 5 3 28 36 44 29]} 6
场景2:在这种情况下,禁用节点41的继电器特性。从网络中删除节点3和节点43。
%指定中继节点relayNodeIDs = [4 5 8 10 11 15 19 20 21 23 25 28 30 32 34 36 37 38 39 42…44 45 46 47 48 49];%指定失败节点(节点的网络)failedNodeIDs = [3, 43];
这图显示了对应的每一对源和目的地之间的路径。的scenarioTwoResults
工作空间变量存储包含路径获得的结果在场景2中。
%运行仿真场景2的配置pathScenarioTwo = helperBLEMeshFloodingSimulation (totalNodes、bleMeshNodes meshNetworkPlots (2),…simulationTime srcDstPairs, ttl、relayNodeIDs failedNodeIDs,…enableVisualization);%显示场景2的结果scenarioTwoResults = helperBLEMeshFloodingSimulationResults (srcDstPairs pathScenarioTwo)
scenarioTwoResults = 2 x4表源目的地路径NumberOfHops ______ ___________ ________________________________ _______ 1 7{[1 46 19 4 8 20 37 45 34 23 7]}十13 29 {[13 30 45 34 28 36 44 29]}7
在每个节点上,捕捉这些网络层数据示例。
通过节点的消息数量
节点接收到的消息的数量
应用程序接收到的消息的数量
由节点传递的消息的数量
节点的消息数量下降
的statisticsAtEachNode
工作空间变量包含累积网络统计场景中的所有节点1和2的场景。为一个特定的模拟运行,您可以看到网络统计数据只有前五节点。这些是网络统计数据中的前五个节点网络。
statisticsAtEachNode = helperBLEMeshFloodingSimulationResults (bleMeshNodes);statisticsForFirstFiveNodes = statisticsAtEachNode (1: min (5 totalNodes):)
statisticsForFirstFiveNodes = 5 x6表NodeID TotalTxMsgs TotalRxMsgs TotalAppRxMsgs TotalRelayedMsgs TotalDroppedMsgs ______ ___________ ___________, ___________……* * * 1 2 4 0 0 4 2 0 8 0 0 8 3 0 5 0 2 3 4 0 10 0 4 6 5 0 9 0 5
获得平均数值结果在多个模拟,这个例子实现了蒙特卡罗方法(3]。分析消息传递的概率从源节点到目标节点后启用或禁用网状网络中的中继节点,使用helperBLEMeshMonteCarloSimulations脚本。每个仿真运行遵循这些步骤。
使用一个新的种子生成一个随机数。
随机禁用中继节点,直到只有一个路径源和目的节点之间存在。
存储路径。
蒙特卡洛模拟输出这些统计数据。
消息传递的概率从源到目的地时继电器节点随机网络中禁用
源和目的节点之间的平均跳数
关键继电器需要确保数据包从源到目的地交付
示例执行Monte Carlo模拟法通过使用这些配置参数。
%源和目的节点srcDstPair = 12 [16];% TTL值上面的消息是在源节点ttl = 25;%中继节点relayNodeIDs = [21 15 25 11 38 19 46 8 39 20 37 32 30 5 45 49 43 3 28 36 47…34 23 48 41 44 42 10 4];%失败节点(节点的网络)failedNodeIDs = [];
上面的例子执行10000年模拟通过使用配置。查看仿真结果,明白了bleMeshMonteCarloResults.mat
垫文件。
负载(“bleMeshMonteCarloResults.mat”);disp ([有一个节点之间的路径节点的概率num2str (srcDstPair (1))…“和节点”num2str (srcDstPair (2))“是”…num2str (probabilityOfSuccess)“%”。]);disp ([节点之间的平均跳数节点”num2str (srcDstPair (1))“和节点”…num2str (srcDstPair (2))“是”…num2str (averageHopCount)“。”]);disp ([“关键继电器节点之间需要获得一个路径节点的num2str (srcDstPair (1))…“和节点”num2str (srcDstPair (2))”['num2str (criticalRelaysInfo {1:5, 1}”)…“]”。]);%恢复以前的设置随机数生成rng (sprev);
概率16节点的节点和节点之间的路径12 88.6428%。16个节点的节点和节点之间的平均跳数12是8。关键继电器节点需要得到16节点和节点之间的路径12 [39 37 8 38 4]。
为自定义配置参数进行蒙特卡罗模拟,修改并运行helperBLEMeshMonteCarloSimulations脚本。
这个例子使您能够创建和配置一个多节点蓝牙网状网络和分析网络层的洪水。研究洪水行为,认为两个仿真场景的例子。在第一个场景中,源和目的节点之间的路径识别和可视化通过选择一些中间节点作为中继节点。在第二个场景中,某些节点(继电器和结束)下降,和继电器特性的一些中继节点是禁用的。结果表明,存在一个路径源和目的节点之间即使节点(继电器和结束)随机网络中失败。
这个例子使您能够创建自己的蓝牙网状网络和可视化网格洪水和网络统计数据。获得平均数值结果在多个迭代,您可以执行蒙特卡罗模拟蓝牙网状网络。
本例使用这些助手:
helperBLEMeshNetworkNode:蓝牙网格节点的创建一个对象
helperBLEMeshNetworkLayer:蓝牙网状网络层功能创建一个对象
helperBLEMeshNetworkPDU:生成蓝牙网状网络PDU
helperBLEMeshNetworkPDUDecode:解码蓝牙网状网络PDU
helperBluetoothQueue:蓝牙队列创建一个对象的功能
helperBLEMeshRetransmissions:重发在蓝牙网格节点的创建一个对象
helperBLEMeshChannelMessage:收到消息从蓝牙网状网络通道
helperBLEMeshPath在蓝牙:派生路径源和目的地之间的网状网络
helperBLEMeshVicinityNodes:附近给定节点的节点
helperBLEMeshGraphCursorCallback:显示节点数据鼠标悬停动作
helperBLEMeshVisualizeNetwork:蓝牙网状网络可视化的创建一个对象
helperBLEMeshFloodingSimulation:模拟蓝牙网状网络
helperBLEMeshFloodingSimulationResults:蓝牙网状网络仿真结果
helperBLEMeshMonteCarloSimulations:蓝牙网状网络蒙特卡罗模拟
蓝牙特别兴趣小组(团体)。“蓝牙核心规范”。5.0版。https://www.bluetooth.com/。
蓝牙特别兴趣小组(团体)。“蓝牙网格配置文件”。1.0版。https://www.bluetooth.com/。
大都市,尼古拉斯和乌兰。“蒙特卡罗方法”。美国统计协会杂志》上44岁的没有。247(1949年9月):335 - 41。https://doi.org/10.1080/01621459.1949.10483310。