王义君 钱志鸿
①(长春理工大学电子信息工程学院 长春 130022)
②(吉林大学通信工程学院 长春 130012)
无线传感器网络(Wireless Sensor Networks,WSN)在数据采集、信号传输和信息处理等方面优势显著[1]。在设计WSN的过程中,需要考虑众多因素,如硬件条件限制、面向节点失效时的网络容忍度、网络延展性、动态网络拓扑及网络能量消耗等。但对于绝大多数WSN应用而言,保证节点的时间同步精度是重中之重。高效的WSN时间同步算法一方面有利于增强网络延展性、适应动态拓扑变化和降低全网能耗,另一方面对于诸如数据融合、能量管理、传输调度、定位及目标跟踪等方面应用也可提升性能指标、保证系统可靠性[2]。
由于WSN应用场景特殊,其硬件资源选择往往处于受限状态,在设计协议或算法时,除了考虑固有性能指标,需要考虑能量消耗是否满足网络通信生命周期要求[3]。因此,同步精度和能量消耗成为设计WSN时间同步算法主要考虑的两个因素。
本文首先实现两节点成对时间同步,然后在拓扑结构确立前提下实现全网节点的自适应时间同步,并从时间精度、能量消耗和不同拓扑下算法的执行效率等方面对同步算法进行了验证。其余部分安排如下:第2节分析了目前WSN时间同步技术的研究现状,总结了目前时间同步技术存在的问题;第3节给出了同步算法的具体实现思想及执行过程;为了验证同步机制的有效性,第4节建立了仿真实验环境,并通过实验结果对算法有效性进行了分析;第5节对全文进行了总结。
由于网络资源相对受限,传统的网络时间同步方法都无法适用于WSN。因此,设计符合WSN要求的时间同步算法成为研究热点[4]。WSN时间同步通常分为2类:发送端-接收端(Sender-Receiver)同步和接收端-接收端(Receiver-Receiver)同步。本文提出的时间同步优化算法基于Receiver-Receiver机制,众多学者开展了相关研究。
接收端-接收端时间同步的代表算法为RBS(Receiver Broadcast Synchronization)算法[5]。Kashyap等人[6]提出基于RBS和ACS(Adaptive Clock Synchronization)的联合时钟同步(RA)算法。该算法规定单个同步节点1跳范围内的接收器数量,进而最小化同步整个网络的能量消耗。同时还考虑如果1个或多个同步节点死亡,如何仍保持网络覆盖范围和连接性。文献[7]针对WSN中随着节点数目增多,传统的参考广播同步算法网络开销非常大的问题,提出一种能量有效的参考广播同步算法。该算法只对不相邻的两个接收节点在多个参考广播消息的条件下求平均相位偏差,并且对计算得出的相位偏差进行最大后验估计;采用最小二乘线性回归方法周期性地拟合时钟偏移,完成同步过程。文献[8]提出从连通度和收敛速度方面考虑的时间同步算法。该算法通过采用多跳通信模型,生成多跳节点之间的虚拟通信链路,并实现网络的代数连通度增加。同时,为了平衡收敛时间、精度和通信复杂度,设计了一种多跳控制器,通过延迟补偿得到精确的相对时钟偏移估计。该算法在连通及收敛方面取得了较好效果,但并未对能量消耗方面做实验论证。文献[9]提出一种能量高效的自适应参考广播同步算法,该算法兼顾了能量消耗和精度,但其主要应用场景限定在WSN监测大规模光伏组件情况,具有一定局限性。Receiver-Receiver同步在无需MAC层时间戳介入的情况下表现出较好的同步精度,但这种机制由于其单跳同步精度较高的特点,目前更多考虑的是节点数量较少的小规模网络覆盖应用,对于多跳中大规模网络的同步效果较差。在拓扑控制时,该机制主要选择基于生成树(spanning tree)的分簇结构,通信消耗较大,自适应同步能力不强。
通过上述分析,目前WSN同步算法主要存在同步累积误差及能耗大、MAC层非确定性延迟及硬件局限等问题,进而影响全网同步效率。本文基于Receiver-Receiver同步思想,提出一种自适应高效优化无线传感器网络时间同步算法(Adaptive and Efficient time synchronization Optimization algorithm in WSN, AEO)。AEO算法一方面阐明了双节点时间同步原理,即包括接收端同步消息确认及时间修正、交互参数同步包构建和双节点同步实现;另一方面在拓扑结构建立和节点身份认定的基础上,研究了全网络自适应时间同步过程。
WSN中网络节点通过多跳方式相互链接完成信息传输,网络时钟同步模型包括Receiver-Receiver同步通信模型和时间同步模型。
3.1.1 Receiver-Receiver同步通信模型
Receiver-Receiver成对节点同步典型通信方式如图1所示。节点R为参考节点,负责周期性广播包含同步消息的信标包,以满足接收端节点的同步需求。节点A和节点B是接收端节点。节点B为从节点,接收参考节点的广播信标包后,向主节点A通过请求链路发送同步请求,当接收到主节点A返回消息时,完成自身的同步误差修正,实现与主节点的时间同步。节点A为主节点,接收节点R发送的广播信标包,通过应答链路向从节点B返回同步误差估计量信息。
图1 Receiver-Receiver成对同步通信模型
3.1.2 Receiver-Receiver时间同步模型
假设WSN覆盖区域内有n个节点,节点i的本地时钟为ti,t为理想参考时间,时间模型定义为
其中,αi为频率漂移,βi为相位偏差,ε为随机噪声。频率漂移和相位偏差是影响成对节点同步误差精度的2个重要参数。频率漂移主要受节点微控制器的晶振影响,相位偏差主要由各类延迟决定。假设网络中节点o需要与节点i进行同步,则节点o的本地时钟可表示为
其中,αio和βio分别为节点o和节点i间的相对频率漂移和相对相位偏差。因此,当αio= 1,βio= 0时,两个节点将完全实现时间同步。
3.2.1 双节点时间同步原理
同步机制设计目的在于保证同步精度的同时,降低网络能耗,因此,本文所设计的双节点时间同步原理包括3个方面:接收端同步消息确认及时间修正、交互参数同步包构建和双节点同步实现。
(1) 接收端同步消息确认及时间修正。参考节点周期性广播同步消息包,将该包称为参考节点信标包。两个连续信标包之间的时间间隔为同步信标间隔,用Tb表示;假设一个完整同步周期Tp内发送Nb个信标包,则
每个信标包中包括参考节点标识(IDentification,ID)、发送时间戳(Sending Timestamp, ST)、信标码( beacon code)和周期号( period number)。其中,参考节点ID用于双节点同步的识别与确认;发送时间戳在参考节点的应用层生成,表示时间同步包的生成时间;信标码记录每个周期内的信标是否全部被接收节点接收,该记录决定了一个同步周期是否有效;周期号在每个同步周期的末尾,由参考节点按时间序列递增。每个接收节点接收到参考节点发送的信标包后,将信息存储在接收端同步消息包中,将该包称为接收节点信宿包。每个信宿包中存储的内容包括接收节点ID、参考节点ID、发送时间戳、信标码,同步周期轮次。同时,每个信标到达时,接收节点会产生本地接收时间戳(Receiving Timestamp, RT),该时间戳存储在大小为Nb的循环存储缓冲区中。参考节点和接收节点同步包结构如图2所示。
图2 同步包结构
在一个完整同步周期结束时,接收节点执行本地频率漂移和相位偏差估计。首先,对接收到的发送时间戳进行聚类分析,将大范围偏离的数据去除;其次,在ST和RT之间采用Huber Loss方式对误差进行估计,计算出与参考节点的偏差,算法具体执行过程在3.2.2节详细介绍。
(2) 交互参数同步包构建。当接收节点完成与参考节点通信,计算出对于参考节点的相对频率漂移和相对相位偏差估算量后,开始构建并生成交互参数同步包,由以下字段构成:{Lid, Rid, Foff,Poff, Icode}。Lid为接收节点ID,Rid为参考节点ID,Foff为本地接收节点相对于参考节点的频率漂移偏差,Poff为本地接收节点相对于参考节点的相位偏差偏差,Icode为交互参数同步码。Icode的编码包括2部分:(a) 以参考节点周期号为输入,通过散列函数形成周期确认码Tcode。令X = {x0, ···, xi, ··· ,xm–1}为参考节点周期号的集合,则Tcode的编码方式如式(4)所示
其中,a为每个周期对应的周期系数,不同周期轮次a的值按约定发生变化,其值为整数;l为预先设定值,其值为素数,l ≥ m。 (b) 将Tcode与Rid做异或运算,得到Icode编码,即Icode= Tcode⊕Rid。带有Icode的交互参数同步包生成后,接收节点间通过握手进行同步信息确认时,不需要再转发整个同步消息包,而只转发交互参数同步包即可,因为该包中既包含实现同步的具体信息,又比整个同步消息包数据量有所降低,可有效节约网络能耗。同时,交互参数同步包另一个作用在于Icode中包含了参考节点ID和参考节点周期号信息,这样在接收端双节点同步时不需要再与参考节点进行消息确认,两节点间只要通过Icode匹配就可以实现同步过程。
3.2.2 频率漂移及相位偏差估计
接收端节点收到参考节点发送的信标包,需要对本地时间进行估计,计算出与参考节点的偏差估计量后才能申请与其他节点同步。参考节点在每个周期发送的信标包越多,接收节点所获得的估计数据也就越多,则每个周期内同步精度就会越高,偏差估计量就会越小。因此,当一个周期内信标包发送结束后,接收节点需要估算出与参考节点的时间偏差估计量。接收节点在一个周期内能够接收到多少信标包可以由信标码来确定。在一个有效周期结束后,接收端节点开始对频率漂移和相位偏差进行估计,包括两个步骤:拟合估计部分通过Huber Loss方法对时间误差进行计算,实现数据的瞬时估算。数据更新部分通过算法自适应调整,对历史数据进行自我聚类训练,通过不断学习,使得数据经验值更加准确,这将使同步精度进一步提升。
(1) 拟合估计。能量有效是WSN需要重要考虑的因素,部分学者在保证同步精度的同时,往往考虑采用单一的最小二乘线性回归方法估计频率漂移和相位偏差,但最小二乘法需要将误差数据进行平方运算,当某个接收数据与真实数据差别过大时,该方法就会牺牲较为理想的数据值[10]。因此,在数据存在异常值时,单一的最小二乘法会带来较大的拟合误差。在统计学中,Huber Loss是用于鲁棒回归的损失函数,与平方误差损失相比,它对数据的异常值敏感程度大大降低[11]。本文采用Huber Loss实现拟合估计。定义误差范围变量δ,当接收数据与本地数据的误差小于δ时,采用最小二乘法拟合估算;当接收数据与本地数据的误差大于δ时,采用最小绝对值法拟合估算,如式(7)所示,其中x表示接收数据,f(x)表示经验数据,Fδ(x,f(x))为拟合估计函数值,δ的取值为11.221 μs[12]。
U为累积经验系数矩阵,ε为满足拟合数据要求的指定阈值。
式(8)中,U根据累积历史数据不断调整自身稀疏结构,在更新过程中使接收端数据更加准确。因此,本文通过调整U使TrU能够近似达到相对最佳。在实际的计算处理中,一次找到TrU的相对最优值是不可能的,所以该过程是每次仅更新TrU的1列,第k列的更新重构子项如式(10)所示。通过将乘法TrU分解为z个秩为1的矩阵的和,z的最大值为K,假定其他K–1列为固定的,用Wk表示,第k列未知,完成此步骤后,通过奇异值分解达到第k列的最小化分布。
3.3.1 拓扑结构建立
双节点同步扩展到全局多跳范围网络自适应同步,必须建立有效的网络拓扑结构。本节通过构建Voronoi多边形拓扑实现全网节点的覆盖。
首先,采用Bowyer-Watson算法来构建覆盖区域内所有节点的Delaunay三角剖分结构[13]。利用该方法构建网络三角剖分的目的在于:(1) 所有节点满足空圆特性:Delaunay三角剖分网络是唯一的(任意4点不能共圆),即在构建的Delaunay三角剖分网络中任何一个三角形的外接圆范围内不会有其它点存在。利用这个特点可保证网络的唯一性和鲁棒性;(2) 最大化最小角特性:在所有节点形成的三角剖分中,在两个相邻的三角形构成凸四边形的对角线,在相互交换后,6个内角的最小角不再增大,该方法所形成的三角形的最小角最大。利用这个特点可保证每个三角形区域不会因角度问题过窄,在硬件设置确定的情况下,可满足节点间通信能耗相对减少。如何保证空圆特性,是实现Delaunay三角剖分的关键,即如何判断任意三角形的外接圆内不会存在第4个顶点。
对于2维覆盖区域,空圆特性示意如图3所示。设节点A, B, C, D的坐标分别为(Ax, Ay), (Bx,By), (Cx,Cy), (Dx, Dy),A, B, C 3点构成三角形,D点为待判断节点,可通过式(11)的行列式来判断D点是否在三角形的外接圆内。当A, B和C按逆时针顺序排序时,当且仅当D位于外接圆内时,式(11)所表示的行列式值为正。
图3 空圆特性示意图
其次,当节点的Delaunay三角剖分结构建立以后,可以通过Delaunay三角剖分图与Voronoi图的对偶性构建Voronoi多边形拓扑。具体步骤如下:
步骤1 网络节点自动构建Delaunay三角剖分网,对网络节点和形成三角形进行编号,并存储构成每个三角形的网络节点编号;
步骤2 计算并标记每个三角形外接圆圆心;步骤3 遍历搜索三角形链表,寻找与当前三角形3边共边的相邻的3个三角形;
步骤4 如果找到,则把寻找到的三角形的外心与当前三角形的外心连接,存入Voronoi边链表中;如果找不到,则求出最外边的中垂线射线存入Voronoi边链表中;
步骤5 遍历搜索结束,根据边链表画出WSN的Voronoi多边形拓扑结构。
图4给出了10 m× 10 m覆盖范围内布置20个节点,基于Delaunay三角剖分的WSN网络Voronoi多边形拓扑结构。
图4 Voronoi多边形拓扑结构
其中,蓝色虚线表示节点间相互连接的Delaunay三角,红色多边形即为Voronoi多边形,表示每个节点的感知控制区域。
3.3.2 节点身份确认
WSN中的节点根据全网同步需求分为3类:参考节点、邻域节点和接收节点。Voronoi多边形拓扑结构构建完成后,参考节点除了具有双节点同步的功能外,其通信范围扩展到与其相邻的Voronoi多边形区域中所有节点,实现扩展后大规模时间同步;邻域节点可接收到多个Voronoi多边形区域的参考节点消息,此类节点同时处在多个参考节点的通信范围内,主要作用是作为参考节点时间同步的补充,协调参考节点间的同步精度;接收节点是不包括参考节点和邻域节点在内的网络中所有其他节点,即等待同步节点。如何在WSN中确认参考节点及邻域节点是实现全网同步的重要环节。
(1) 参考节点确认。2维覆盖空间中的网络节点,令S表示其所在Voronoi多边形的边数量集合,S集合表示该节点邻居节点的数量,反映了其空间位置的重要性;令E表示其自身能量集合,反映了其传输能力的重要性。设节点z在第c个周期时的S和E分别表示为sz(c)和ez(c),在每次迭代计算中,根据局部范围内各个节点在一个周期内不同时间段其自身Voronoi多边形的边数量和剩余能量的变化,可以得到该局部范围内节点的最优值排序
需要说明的是,在式(12)和式(13)中,节点S的优先级比E高。因为Voronoi多边形的边数量多证明其邻居节点多,表示其可以通信的范围大,此时可以确定该节点剩余能量能够满足通信需求。对于能量来讲,只要不低于设定阈值即可作为参考节点。
本文将整个网络生命周期分为初期、中期和后期3个阶段。在初期,可采用式(12)和式(13)所判定的节点排序确认参考节点。但随着网络应用的不断深入,部分网络节点可能因为能耗、环境和人为因素等情况,脱离网络应用场景,进而不能有效反映在网络拓扑结构中,因此,除了考虑S和E外,在网络整个生命周期的中、后期,还需评估其他性能指标以实现参考节点确认,具体步骤如下:
步骤1 统计覆盖区域内每个节点的链路误包率和时间延迟两项性能指标,分别记为PERl和Td。PERl为该节点涉及无线通信链路中端到端误包率,Td为该节点涉及无线通信链路中端到端传输时延;
步骤2 同时考虑S, E, PERl和Td,将参考节点最优值排序公式由式(12)和式(13)修正为式(14)
步骤4 根据vx(c)值重新确定网络生命周期中、后期的参考节点。
3.3.3 全网同步实现
全网同步实现流程如图6所示,执行步骤如下:
图6 全网同步实现流程
步骤1 WSN节点构建Voronoi多边形拓扑结构,在拓扑划分的时候为每个多边形区域编号,即确定每个节点的覆盖范围;
步骤2 确定拓扑结构中的参考节点,并将与其相邻的多边形中的节点确认为该参考节点负责同步的接收节点,同时,确认该参考节点同步范围内的邻域节点;
图5 邻域节点确认
步骤3 执行参考节点与主节点同步周期。参考节点进行第1轮消息广播,该范围内节点接收到消息后,每个节点统计当前周期以前可保证通信能够可靠完成的性能指标,包括自身链路能量、历史误包率和累计时间延迟,通过归一量处理计算出性能指标归一化量值,将该值与预先设定的阈值进行比较,高于预设阈值的节点均可作为该范围内的主节点。然后,确定的主节点给参考节点返回应答消息包,参考节点收到后实现通信范围内主节点确认。此后,参考节点进行第2轮消息广播,该消息包中包含参考节点的本地时间戳,所有主节点接收到该消息包后,调整自身时间,与参考节点实现同步。
步骤4 执行从节点与主节点同步周期,在同一参考节点覆盖的区域内,主节点确定后,其余所有节点均为从节点。当参考节点第2轮广播消息结束后,从节点与主节点一样,都会记录下参考节点的同步信息并完成时间调整,同时按照双节点同步方式实现与主节点的同步。在1个周期范围内,从节点仅会选择第1个接收到的主节点信息,然后将不再接收其他主节点信息。
至此,参考节点通过式(18)和式(19)更新调整本地时间偏差,实现多区域的联合时间同步。
仿真区域分别设置为100 m×100 m,200 m×200 m,300 m×300 m,400 m×400 m和500 m×500 m,每个区域的网络节点数量分别为100,200,300,400和500,参考节点的数量按网络节点数量的10%计算,5个区域选择参考节点数量分别为10, 20, 30, 40和50,具体仿真设置参数如表1所示。为了验证本文提出AEO算法有效性,在Voronoi多边形拓扑结构、树状(Tree)拓扑结构和链状(Chain)拓扑结构情况下,将其与基于One-way Broadcast同步的FTSP(The Flooding Time Synchronization Protocol)算法[14]和E-FTSP(Enhanced FTSP)算法[15]、基于Two-way Pairwise同步的TPSN(Timing-sync Protocol for Sensor Networks)算法[16]和E-PTS(Enhanced Precision Time Synchronization)算法[17]、基于Receiver-Receiver同步的RBS算法[5]和RA算法[6]进行比较。需要指出的是,接收节点在接收到参考节点信标包上打上时间戳,记录信标码、信标间隔和同步周期号;数据更新每小时执行1次,U矩阵在整个仿真时间内共更新5次。仿真实验过程分为2部分:成对节点同步分析及全网节点同步分析。
表1 仿真参数
(1) 成对节点同步分析。首先,对7类算法的平均同步误差进行仿真验证,仿真结果如图7所示。AEO算法在双节点同步时一方面采用Huber Loss实现拟合估计,在每个周期结束后修正本地时钟偏差;另一方面通过历史数据自主训练进行数据更新,实现本地时钟偏差的累积误差最小。图7(a)中,随着信标包数量增加,AEO算法的平均同步误差在7.5~10 μs,E-PTS算法、E-FTSP算法和RA算法的平均同步误差在15~25 μs,而FTSP算法、RBS算法和TPSN算法的平均同步误差在25~35 μs;图7(b)中,随着同步周期轮次增加,平均同步误差明显降低,5轮同步周期过后,AEO算法的平均同步误差可达2 μs,E-PTS算法约为8 μs,E-FTSP算法约为10 μs,RA算法约为13.5 μs,而FTSP算法、RBS算法和TPSN算法的平均同步误差明显高于提到的算法,维持在20~25 μs。因此,AEO算法成对节点时间同步时具有较好的时间同步精度。
图7 平均同步误差
其次,对7类算法的能量消耗进行仿真验证,仿真结果如图8所示。AEO算法通过构建交互参数同步包,降低了同步消息传输过程中的同步包字节数,利用散列函数周期确认码可以直接在主从节点间完成相互身份确认,不需要与参考节点进行通信,进而降低同步过程中的能量消耗。图8(a)中,随着信标包数量增加,AEO算法的能量消耗在0.5~1 mW·s,E-PTS算法、E-FTSP算法和RA算法的能量消耗在1~2.5 mW·s,而FTSP算法、RBS算法和TPSN算法的能量消耗在5~10 mW·s;图8(b)中,随着同步周期轮次增加,能量消耗开始增加,5轮同步周期过后,AEO算法的能量消耗小于5 mW·s,E-PTS算法、E-FTSP算法和RA算法的能量消耗在5~15 mW·s,而FTSP算法、RBS算法和TPSN算法的能量消耗明显高于提到的算法,维持在50~60 mW·s。因此,AEO算法成对节点时间同步时其能量消耗最少。
图8 能量消耗
(2) 全网节点同步分析。本文实现全网节点的多跳时间同步依赖于Voronoi拓扑结构,因此,在本部分首先将Voronoi拓扑与另外2类典型拓扑结构,即Tree拓扑及Chain拓扑进行比较,图9给出了9个节点情况下3类拓扑结构示意图。如图所示,如果节点1要实现与节点9的时间同步,在Chain拓扑中,同步消息包需要依次传递,需设置节点1为起始节点,如果节点5失效,通信链路完全中断,同步消息传递失败,两节点不能实现同步,所以这种Chain拓扑实现简单,但连通度较差;在Tree拓扑结构中,同步消息包需要分簇传递,需设置节点1为根节点,如果节点5失效,节点9则处于孤立状态,在下一轮拓扑结构建立之前,其不能和其他任何节点实现时间同步,所以这种Tree拓扑结构紧密,但重新建立能耗较大,且孤立节点带来同步误差;在Voronoi拓扑中,同步消息包平行传递,设置节点1和节点6为参考节点,节点5为邻域节点,其作用仅次于参考节点,如果其失效,节点9仍可以与参考节点6范围内的节点7或节点8实现同步,在这种最不理想的情况下,可以保证网络的连通度和同步精度。
图9 拓扑结构
连通度可作为综合衡量拓扑结构连通效率和收敛时间的性能参数[9],设λi为第i个节点的连通度,则网络连通效率η可定义网络中所有节点连通度的和集与所有节点连通度的并集的比值
根据式(20),3类拓扑结构在连通效率和收敛时间方面的性能指标如图10所示。网络节点连接越多,物理链接的可能性就越大,网络收敛速度越快,收敛时间越短。随着网络节点数量的增加,Voronoi拓扑的连通效率从86%上升到95%,收敛时间从25 min下降到6 min;Tree拓扑的连通效率从75%上升到54%,收敛时间从61 min下降到23 min;Chain拓扑连通效率从63%上升到75%,收敛时间从76 min下降到51 min。
图10 拓扑结构性能比较
同时,在拓扑分析部分,本文还针对网络误包率增加的情况,对3类拓扑结构连通效率的变化进行了比较。在包含500个节点的WSN中,1个周期内随着丢包率的增加,3类拓扑结构连通效率实验结果如图11所示。Voronoi拓扑在50%误包率时,其连通效率仍可达到50%,而Tree拓扑及Chain拓扑则分别为34%和19%。因此,与其他2类拓扑结构相比,Voronoi拓扑具有较好的网络稳定性。
图11 误包率对拓扑结构性能影响
从上述分析可知,本文提出全网同步算法的执行效率比其他典型算法均有所提升,其原因在于基于Voronoi拓扑的网络构建过程并不复杂,在此结构下的节点身份确认可以自适应管理网络并有效传递同步消息,因此带来全网同步收敛时间下降及网络可靠性提升。
在Voronoi拓扑下,对全网节点多跳时间同步精度及能耗做了进一步仿真分析,将AEO算法与性能相对较好的E-PTS算法、E-FTSP算法和RA算法进行比较。对于同步精度而言,首先,全网同步依赖于双节点同步作为其基本构成,双节点同步误差的降低为全网节点同步误差降低奠定基础。其次,Voronoi拓扑建立后,通过衡量节点边数和剩余能量自适应确定参考节点选择排序,并利用几何关系设置其邻域节点,使得参考节点网络范围内同步误差的平均值等同于所有成对同步误差的平均值,相较于其他拓扑结构降低了误差累积概率。图12给出了Voronoi拓扑下的平均同步误差对比,相较于另外3类算法,随着网络规模增大,参考节点数量增多,AEO算法的平均同步误差小于100 μs,取得了较好的全网同步精度效果。
图12 Voronoi拓扑下的平均同步误差
对于能量消耗而言,首先,全网同步能量消耗取决于双节点同步能量消耗,双节点能量优势也反映在全网同步能量消耗的实验中。其次,WSN能耗与发送和接收的数据包数量成正比。从图9可看出,Voronoi拓扑相较于Chain、Tree拓扑,节点间同步所需要的同步消息包发送与接收的数量大大降低,从而提升能量利用效率。图13给出了Voronoi拓扑下的能量消耗对比,相较于另外3类算法,随着网络规模增大,参考节点数量增多,AEO算法能量消耗在225~340 mW·s,节能效果显著。
图13 Voronoi拓扑下的能量消耗
本文在接收端-接收端WSN时间同步概念的基础上,提出自适应高效无线传感器网络时间同步优化算法。算法主要包括双节点时间同步和自适应全网络节点时间同步。双节点时间同步包括接收端同步消息确认及时间修正、交互参数同步包构建和双节点同步实现。自适应全网络节点时间同步在拓扑结构建立和节点身份认定的基础上得以实现。双节点同步时通过构建交互参数同步包降低了网络能量消耗,采用拟合估计和数据更新对每个节点的频率漂移及相位偏差进行修正,提高了同步精度。在Voronoi拓扑结构下,合理选择参考节点及邻域节点,完成全网节点的自适应时间同步。仿真实验验证了算法在同步精度和能耗两方面得以提高。后续将围绕不同WSN应用场景,将不同协议应用到实际系统开发中。