吕春娇
(上海海事大学信息工程学院,上海 201306)
随着海洋经济的兴起,世界各国对海洋资源的管理日渐重视,水下传感器网络的研究已经变成学术界新的研究热点[1]。为了能让水下传感器网络可以更好地完成目标检测、信息获取、数据传输等任务,精准的时间同步因此成为支撑水下传感器网络的一个最基本的技术[2]。目前,国内外学者针对陆上无线传感器网络的结构和特点,提出一系列适用在陆上的时间同步协议[3-5]。但是水下传感器网络采用了声波进行通信,这不同于陆地使用电磁波进行通信;另外水下情况特殊,链路长、传播速度低,这均为水下时间同步算法研究带来了诸多挑战。
水下传感器节点自身配有振荡器,但在大规模的水下分布式网络中,节点受水下温度、水流速度、水压等影响,振荡器的计数周期和计数频率存在波动,导致节点的本地时钟存在误差。因此,节点必须通过接收具有参考意义的时钟节点的时间信息,对自身本地时间进行校准[6]。
在实际应用中,水下传感器网络时间同步算法受几个方面的影响[7]:水声传播速度低(仅为无线电在空气中传播速度的20万分之一);链路距离长(节点间的部署距离为0.5km-2km);节点具有移动性(以0.83-1.67m/s的速度在长度限制范围内移动)。因此,解决传播延时是解决水下时间同步问题的首要前提。
综合以上问题,本文提出了一种基于能量分簇的V-时间同步算法,首先通过能量分簇减少不必要的网络通信开销、降低能耗;然后对文献[6]中提出的时间同步算法进行优化,引入相对移动距离变量,更加精准地计算节点通信时的链路长度从而提高时间同步的精度。V-时间同步算法先对簇头节点进行时间同步,并以此为基准对簇内各成员节点进行时间同步,从而使簇内所有成员节点达到时间同步。
水声信号在传播过程中,信号发射功率大,链路传播距离长,导致传播衰减严重[8]。而且,水声速度低和节点相对移动速度能引起明显的多途现象和多普勒频移,同时加大了环境噪声。这些情况使得节点接收解码时的能耗需求远远大于陆上情况。
针对水下网络的特点,先对监测区域内的所有成员节点应用分簇技术。所有节点被分成多个簇群,每个簇群内有且只有一个簇头节点,其余均为簇成员节点,簇内的成员节点只能与该簇内的成员节点(包括簇头节点)进行通信,如需要和其他簇节点通信,必须通过本簇的簇头节点完成。这种分簇技术大幅度降低了传感器节点间的通信距离,减轻了传播衰减的问题、节约了大量通信能量、也有效地降低了多途现象和多普勒频移造成的干扰。
本文的讨论背景在潜水区域,此区域内传感器节点随水流的移动速度不会有很大偏差,而且在这种环境下,研究表明声信号是通过柱面波进行传播[9]。柱面波的损失可表示为[10]:
(1)式中,d是通信传播链路距离,a为吸收系数,其大小与声波频率有关。
本文采用与文献[11]相同的能量消耗模型,该模型是以减少节点能量消耗为基础而建立的[12]。节点在进行数据传输时的能量消耗可以表示为:
其中,C=2π×0.67×10-9.5+2.75×10-4f2+0.003,Eelec是节点发送数据时需要的能量,H是节点所在位置距水平面的高度,d是节点间链路距离长度,f是发射频率,T是数据通信过程中消耗的时间。整个网络分簇完成后,簇内成员节点开始与簇头通信,所有成员节点的能耗总和由公式(3)给出:
(3)式中,Di是成员节点到簇头节点的距离,簇内成员节点的数量是N。
为了得到每个簇的能耗,对每个簇的能量取期望,通过(3)式可得到期望公式:
从(4)式可以看出,每个簇内的成员节点数量和期望E(D×ea(f)D)是影响簇的能耗的两个因素。
已知节点在簇内监测区域的概率分布密度为f(D),假设每个划分的簇的区域为圆形区域[13],Dr表示每个簇的半径,则:
因此,簇内能耗期望可表示为:
对公式(6)中的Dr求偏微分,可得到其零点值,从而得到当----Esum取极小值时Dr的取值。那么,可以通过(7)式求出分簇的最佳数量n:
在得到分簇的最佳数量后,针对在监测区域内随机分布的节点,按照此方法进行分簇。簇头位于每个簇的中心位置,(7)式中Dm是节点到分簇区域边缘的距离。
水下传感器节点自身配备的晶振提供节点的本地时间,但由于晶振受水波流动、水温不恒定等因素影响,传感器节点振荡频率会产生偏差,因此时间同步也同样会产生偏移[14]。节点本地时间和绝对时间的关系可由下式表示:
其中,T代表节点的本地时间,T′是节点的绝对时间,a是频偏,b是相偏。在陆上无线传感器网络传播中,由于传播速度快、链路距离短,a的变化很小,可忽略不计。但是由于水声传播延时很大,a不能忽略。
从信息交互方式看,在陆地无线传感器网络中,时间同步算法主要分为单发送同步算法、发送-接收同步算法和接收-接收同步算法[15]。以单发送方式为代表的FTSP算法[4],其假设是链路传播延迟可忽略,但在水下传感器网络中链路传播延时是不能忽视的一个因素。以接收-接收方式为代表的RBS[16]算法不能直接用于水下环境,主要原因是水下链路传播延时长,而且传播延时存在时变性,同步过程中对节点的频率偏移有很大影响、发送信息时能耗较高。因此,在水下传感器网络中,节点大都以发送-接收方式进行时间同步,如 TSHL[17]、MU-Sync[18]、Mobi-Sync[19]等算法。
本文中,也同样采用发送-接收方式的同步算法。这种时间同步方式一般采用单跳的方式向节点发送信标消息。浮标节点向簇头节点发送时间同步信息,簇头节点获得时间信息后再作为同步时间的基准节点,向簇内成员节点发送信标信号进行同步。
簇头节点同步示意图如图1所示。
图1 簇头节点同步原理图
首先,簇头节点C向水面浮标F发送含有发送时刻TC1(簇首节点C的当前本地时间)的时间同步请求数据包,代表时间同步过程的开始,通信链路距离为d1;接着,浮标F接收到来自簇头节点C的数据请求包,同时记录当前本地时间TF1;并向簇头节点立刻进行信息反馈,此时的传播延时非常小,可以忽略不计。但为更好的解决水下传感器的传播延时问题,浮标F在时间间隔tm后再向簇头节点发送一次包含当前本地时间TF2的信标信息包,此时通信链路距离为d2;簇头节点接收到信息后记录当前本地时间TC3。
由(8)式得,节点进行本地时钟校正,得到公式(9):
其中,DCF是簇头C到浮标F的传播延时;DFC是浮标F到簇头节点C的传播延时。
假设在节点间的运动具有一定的关联性,簇头节点和水面浮标在一次信息交换周期内相对位移变化能够形成一个三角形,如图2所示。
图2 节点移动模型
浮标F在接收到簇头节点C发送过来的请求消息后,在时间间隔tm后进行第二次消息反馈。由于水下环境与陆地环境的不同,这时的传播链路d2与簇头节点发送请求的传播链路d1发生变化,两条链路轨迹之间产生夹角,记为α;将簇头节点在TC2+tm时刻估计其接收链路与簇头节点C运动轨迹之间的夹角记为β;由于受水流的影响,水下传感器网络的节点会有一定的移动性,因此将图2中A和TF1之间的距离记为l(即在tm时间内浮标节点F相对于簇头节点C的运动距离)。浮标F和簇头节点C均能获得任意时刻的所在位置的水流速度,因此l可由下式表示:
其中VF1、VF2、VC2、VC3分别是浮标节点和簇头节点在TF1、TF2、TC2、TC3时刻的水流速度。在ΔTF1ATF2和ΔTF1TC1TF2中,通过使用正弦定理和三角函数公式,可以得到:
假设声音在水下传播速度是恒定的,为c=1500m/s,根据公式(10)、(11)、(12)得出:
把(13)、(14)式代入,能够求解出时间频偏 a的值:
求出时钟频偏后,代入到公式(9)中,可以分别求出b1、b2,最后根据公式(16)可得到时钟相偏b。
根据求出的时钟频偏和时钟相偏,可以对每个簇头节点实现时间同步。
已经完成时间同步的簇头节点作为簇内唯一的一个信标节点,向簇内待同步成员节点发送时间同步消息[13]。同步过程如图3所示。
图3 簇成员节点时间同步原理图
簇头节点向成员节点多次短间隔发送时间同步信号,其目的在于抵消节点在水下运动的传输时延,以降低时间同步误差。簇内成员节点在收到信标信号后,实时监听信道。当信道空余时,在T1时刻发送包含当前本地时间的反馈信息给簇头节点,簇头节点接收到信号,记录本地时间T2,并在T3时刻发送携带时间信息的信号到成员节点,成员节点在T4时刻接收。
假设簇头节点向成员节点共发送N次信标消息,考虑节点在水下的运动情况,在簇头节点第M次(1≤M≤N)发送信号时,根据公式(9)可以得到节点已经运动的距离为:
其中,v是水下传感器节点运动速度。由公式(17)得到:
采用以上方法,可以计算出簇内成员节点的频偏a和相偏b,从而达到簇内的时间同步。
本文使用MATLAB,对分簇后与未分簇的情况下节点能量消耗、时间同步的精度两方面进行仿真实验。与文献[6]中所提出的在同一能量分簇模型下的时间同步算法进行比较,看本文提出的V-时间同步算法是否在同步精度上得到提升。
本文的仿真环境是直径1000米的圆形区域,监测区域内随机分布150个水下传感器节点,初始频偏为80ppm,初始相偏为50ppm。
图4 节点能量消耗对比图
从图4可以看出,水下传感器节点在未分簇和分簇情况下对节点能量消耗的区别是很大的。本文中应用的基于能量消耗模型,随着传感器节点分簇的数目增加,节点间通信时的能耗逐渐降低,趋近于0;而未进行分簇的节点在传输信息时的能量消耗一直保持不变,并且能耗非常大。由此可见,此分簇方法能有效地减少能耗。
图5同步过程中频偏变化对比图
图5 表示两种时间同步算法随着同步次数的增加频偏的变化曲线。从图中可以看出,随着同步次数的增加两种算法均能有效的减少误差,但本文提出的优化算法效果优于文献[6]提出的同步算法。这是因为在文献[6]提出的算法中,忽略了时间延时,因此得到的结果误差较大;而且忽略了在水下通信过程中节点会随着洋流移动的特性,忽略了链路距离的变化,导致数据有些误差。
水下传感器网络不同于陆上传感器网络,由于它受到水流影响导致节点具有移动性、水声信号传播延时大、链路距离长、易引起多普勒频散现象等,使得水下时间同步算法有很大的误差。
本文的研究基于一种给定能量模型的方式,首先对网络结构中的传感器节点进行分簇,通过能量分簇技术能有效地减少节点间信息通信时的能量消耗;然后再对已有的一个水下传感器同步算法进行优化,考虑到节点在水下的移动性和传播延时的问题,引入延时和节点间相对移动距离进行V-时间同步算法的计算。实验表明,本文提出的同步算法在精度上要高于原有算法。
因此,分簇技术、减少传输时延、考虑节点间的相对移动距离在研究水下传感器网络的时间同步算法上具有很大的工程意义。