蓝牙网水浸无线传感器网络

该实施例表明网络层驱在蓝牙使用通信工具箱™库蓝牙协议网状网络。泛滥是其中每个传入分组通过除了它到达所述一个每个传出链路发送的机制。溢流机构由通过中间中继节点识别源和目的节点之间的路径的影响。这个例子也示出了如何在蓝牙执行Monte Carlo模拟网状网络,以获得的数值结果平均超过多次迭代。

蓝牙网栈

蓝牙核心规范[1包括低能耗版本的低速率无线个人区域网络,称为低能耗蓝牙(BLE)或智能蓝牙。BLE协议栈由通用属性配置文件(GATT)、属性协议(ATT)、安全管理协议(SMP)、逻辑链路控制与适应协议(L2CAP)、链路层(LL)和物理层组成。BLE被添加到生成少量数据的低能耗设备的标准中,例如在家庭自动化、保健、健身和物联网(IoT)等应用程序中使用的通知警报。

蓝牙网的个人资料[2定义了实现BLE网络解决方案的基本要求。网格栈位于BLE核心规范的顶部,由模型层、基础模型层、访问层、上层传输层、下层传输层、网络层和承载层组成。蓝牙网状网络可以在智能照明、工业自动化、传感器网络、资产跟踪和许多其他物联网解决方案等应用中实现大规模设备网络。万博 尤文图斯

这两种类型的承载的蓝牙支持网格的广告承载和GATT万博1manbetx承载。这个例子只考虑广告载体。下图显示了蓝牙网孔叠层了广告载体。

蓝牙网状网络层

网络层主要负责:

  • 使用承载层发送所述上层消息通过网络

  • 中继网格消息

  • 网络级安全

一些网络层的主要功能的如下所示。

中继特性:为了具有可靠和有效的泛洪机制,蓝牙mesh标准定义了中继特性。启用中继功能的节点可以在网络上重新传输网格消息。与传统的每个节点重新发送接收到的消息相比,这有助于减少信道拥塞。节点可以根据网络条件启用或禁用中继功能。中继节点(任何启用中继功能的网状节点)通过网络转发接收到的消息。这有助于扩展mesh消息的范围,以支持大规模网络。

管理洪水:蓝牙网的个人资料[2]指定了优化一个高效网络的泛洪操作的方法。这被称为控制洪水。处理水浸的主要方法有:

  • 消息缓存:所有节点必须实现一个网络消息缓存。消息缓存包含最近看到的所有网络消息。如果发现接收到的消息在缓存中,则将其丢弃。

  • TTL:时间的生存期(TTL)控制的跳的消息在网络中中继的数量。选择最佳的TTL值通过网络节能。如果在一个节点的TTL值大于或等于2时,它表示该消息可能已被中继,并且可以进行中继。TTL值小于2时,指示该消息可能已被中继,但不会被中继。

  • 心跳:心跳消息由周期性的节点发送。它被用作指示给接收节点,即,发送节点是活的。在接收节点用于发布一个消息给发送者的最优TTL值从心跳消息的。

网络地址:网络层定义了四种类型的地址:

  • 未使用的地址:一个未使用的地址表示没有地址已经被分配到节点

  • 单播地址:单播地址用于该节点的唯一标识

  • 组地址:组地址用于标识一组节点

  • 虚拟地址:虚拟地址代表一组目的地址。每个虚拟地址在逻辑上代表128位标签UUID(通用唯一标识符)

在蓝牙网泛滥,网络层起着至关重要的作用。所有接收到的,并在网络层中使用任一广告承载或关贸总协定承载发送的网络消息。在实现大规模网状网网络层的帮助中继和代理功能。中继功能,用于中继通过在广告承载的节点接收/转发网络的PDU。代理功能用于中继由关贸总协定和广告承载之间的节点接收/转发网络的PDU。在此示例中,蓝牙网使用广告承载是体现在一个无线传感器网络泛滥。

检查支持包安装万博1manbetx

%检查是否“蓝牙协议的通信工具箱库”%支万博1manbetx持包是否已安装。comm万博1manbetxSupportPackageCheck(“蓝牙”);

蓝牙网模拟驱

这个示例允许您创建和配置蓝牙网状网络。创建了两个网络场景,每个场景由50个节点组成的网状网络,其中一些节点被配置为中继。在每个场景中,都指定了源和目标节点对及其对应的TTL值。在第一个场景中,确定了源节点和目标节点之间的路径。您还可以使用统计数据可视化网络中的消息流。在第二种场景中,一些中继节点和终端节点(网状网络中的任何节点)失败。此外,部分中继节点的中继特性也被禁用。仿真结果表明,即使网络中某些中间中继器和终端节点发生故障,在所选的源节点和目标节点之间仍有可能存在路径。

目标:

  • 创建并配置一个网状网络

  • 可视化信息泛滥

  • 在选定的源和目标之间派生路径

  • 显示统计数据(参考网络层统计在每个节点)在每个节点

组态:

  • 源和目的节点对

  • 来自每个源的数据包的TTL值

  • 中继节点

  • 失败的节点

结果:

创建和配置网格网络:

您可以使用helperBLEMeshNetworkNodehelperBLEMeshVisualizeNetwork用于创建和分别可视化网状网络。你需要指定NumberOfNodesNodePositionTypehelperBLEMeshVisualizeNetwork。作为默认值NodePositionType是“网格”。您也可以通过配置的值,可以指定自己的网络NodePositionType为“UserInput”和节点位置位置

%设定随机数发生器种子到“默认”sprev = rng ('默认');网状网络中的节点数%totalNodes = 50;%用类型的对象初始化'bleMeshNodes'向量% helperBLEMeshNetworkNode(1, totalNodes) = helperBLEMeshNetworkNode;配置网格节点IDX = 1:totalNodes meshNode = helperBLEMeshNetworkNode;meshNode.Identifier = IDX;meshNode.NetworkLayer.ElementAddresses = DEC2HEX(IDX,4);bleMeshNodes(IDX)= meshNode;结束%负载的节点位置加载('bleMeshNetworkNodePositions.mat');%,持续两个场景创建可视化对象numberOfScenarios = 2;%用类型的对象初始化'meshNetworkPlots'向量%helperBLEMeshVisualizeNetworkmeshNetworkPlots(1,numberOfScenarios)= helperBLEMeshVisualizeNetwork;idx = 1: numberofscenario meshnetworkplot (idx) = helperBLEMeshVisualizeNetwork;meshNetworkPlots (idx)。NumberOfNodes= totalNodes;%设置分配类型“Grid”|“UserInput”meshNetworkPlots(IDX).NodePositionType ='UserInput';%根据节点数量设置节点位置(适用于% 'UserInput'),以米为单位meshNetworkPlots (idx)。位置= bleMeshNetworkNodePositions;基于节点位置,以米为单位%设定范围附近meshNetworkPlots (idx)。VicinityRange = 25;%设置标题meshNetworkPlots(IDX).title伪=...(“场景”num2str(IDX)“蓝牙网水浸”];结束

配置仿真参数:仿真参数配置如下所示。可以使用指定网络中的源和目标对的数量srcDstPairs。仿真结果包含对应于每个源和目的地对所获得的路径。您还可以查看每个节点的网络层的统计数据。然而,在显示的情节,你可以直观的前三个来源和目的地对的结果。

仿真时间%,以毫秒为单位simulationTime = 600;%启用/禁用的可视化enableVisualization = TRUE;%源和目标对srcDstPairs = [1];13 29];来自每个源节点的数据包的% TTL值ttl = [25;25);

模拟:的函数helperBLEMeshFloodingSimulationhelperBLEMeshFloodingSimulationResults运行仿真和分别收集仿真结果。

  • 场景一:在这个场景中,网络中的所有50个节点都是活动的。其中一些节点被选为继电器。下面的图突出显示了每个源和目标对的对应路径。包含所获得路径的结果存储在scenarioOneResults

%中继节点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 = [];%模拟场景pathScenarioOne = helperBLEMeshFloodingSimulation(totalNodes,bleMeshNodes,meshNetworkPlots(1),...simulationTime,srcDstPairs,TTL,relayNodeIDs,failedNodeIDs,...enableVisualization);

%的场景的结果scenario ooneresults = helperblemeshflood simulationresults (srcdstpair, pathscenario oone)
scenarioOneResults = 2x4的表源目标路径NumberOfHops ______ ___________ ____________ ____________ 1 7 {1X9双} 8 13 29 {1X7双} 6
  • 场景二:网络配置被改变以证明有源和目的地节点之间的备用路径。在这种情况下,中继功能在然而,节点3和43被从网络中移除的节点41禁用。下面的图突出显示了每个源和目标对的对应路径。包含所获得路径的结果存储在scenarioTwoResults

%中继节点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]。%模拟场景(totalNodes, bleMeshNodes, meshNetworkPlots(2),...simulationTime,srcDstPairs,TTL,relayNodeIDs,failedNodeIDs,...enableVisualization);

%的场景的结果scenario otworesults = helperBLEMeshFloodingSimulationResults(srcdstpair, pathscenario otwo)
scenarioTwoResults = 2x4的表源目标路径NumberOfHops ______ ___________ _____________ ____________ 1 7 {1x11双} 10 13 29 {1×8双} 7

网络层统计在每个节点

在每个节点中捕获的网络层统计是:

  • 从节点发送的消息的数目

  • 节点接收到的消息数

  • 应用的Rx消息数即在节点考虑用于进一步处理的消息

  • 由节点转发的消息数

  • 节点上丢弃的消息数

工作空间可变statisticsAtEachNode包含这两种方案的所有节点的累积网络统计信息。然而,对于一个给定的模拟运行,你可以看到最大的第一五个节点的网络统计信息。对于网络中的第一个五个节点的网络统计数据是:

statisticsAtEachNode = helperBLEMeshFloodingSimulationResults(bleMeshNodes);statisticsForFirstFiveNodes = statisticsAtEachNode(1:分钟(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.]用于获得计算结果平均超过多个仿真。Monte Carlo模拟在使用这些配置参数通过建模节点故障分析的消息传递的概率蓝牙网状网络上执行。

%源和目的节点srcDstPair = [16 12];来自上述源节点的消息的% 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个种子随机数生成器上运行。执行Monte Carlo模拟后观察到的统计信息包括:

  • 消息递送的概率从源到当中继节点在网络中随机故障目的地

  • 源节点和目的节点之间所需的平均跳数

  • 在源和目的之间有路径的关键继电器

对于上面的配置,你可以看到在MAT文件中的模拟结果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节点的节点和节点,节点(39 37 8 38 4)之间的五大关键继电器有一个路径。

您可以运行/修改helperBLEMeshMonteCarloSimulations脚本(长运行仿真),用于通过Monte Carlo模拟产生的结果。

这个例子,可以创建并配置一个多节点蓝牙网状网络和分析网络层泛滥。研究水浸行为,二仿真场景被考虑。在第一种情形中,源和目的地节点之间的路径被确定,并且通过选择一些中间节点作为中继节点可视化。在第二种情况下,某些节点(继电器和完)被丢弃,而对于一些中继节点的中继功能被禁用。将所得到的结果表明,即使节点(中继和End)在网络中的失败随机存在源和目的地节点之间的路径。

这个例子允许你创建你自己的蓝牙网状网络和可视化网络洪灾它的统计数据。此外,还可以在蓝牙执行Monte Carlo模拟网状网络,以获得的数值结果平均超过多次迭代。

附录

本例使用这些助手:

选定的参考书目

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

  2. 蓝牙特殊兴趣组(SIG)。“蓝牙网简介”。1.0版。https://www.bluetooth.com/

  3. 大都会,尼古拉斯,和S.乌拉姆。“蒙特卡罗方法。”杂志美国统计协会44,没有。247(1949年9月):335-41。https://doi.org/10.1080/01621459.1949.10483310

相关话题