孔維全,劉廣鐘
(上海海事大學(xué) 信息工程學(xué)院,上海 201306)
近年來(lái),水下傳感器網(wǎng)絡(luò)受到學(xué)術(shù)界和工業(yè)界研究人員的極大關(guān)注[1],該網(wǎng)絡(luò)可應(yīng)用于沿海監(jiān)視、環(huán)境監(jiān)測(cè)、海底勘探、防災(zāi)偵查等大量應(yīng)用場(chǎng)景。然而,由于陸地傳感器常用的無(wú)線電波在水下會(huì)產(chǎn)生高衰減,因此聲學(xué)通信成為水下傳感器主要的傳輸方法。
為了通過(guò)節(jié)點(diǎn)間的協(xié)調(diào)與合作完成各項(xiàng)分布式任務(wù),需要時(shí)間同步技術(shù)作為支撐,時(shí)間同步技術(shù)是時(shí)分復(fù)用調(diào)度、傳感數(shù)據(jù)融合、介質(zhì)訪問(wèn)控制協(xié)議等多項(xiàng)關(guān)鍵技術(shù)的基礎(chǔ)[2]。然而,水下傳感器的節(jié)點(diǎn)部署要求較高,一旦部署完成很難進(jìn)行維護(hù)和更換,所以傳感器的計(jì)算資源與能量存儲(chǔ)都非常有限。此外,水聲信道的傳播速度大約為1 500 m/s,比電磁波信號(hào)低 5個(gè)數(shù)量級(jí),由于陸地傳感器在進(jìn)行時(shí)間同步時(shí)通常會(huì)忽略傳播延遲,而在水下環(huán)境中,巨大的傳播延遲在節(jié)點(diǎn)通信時(shí)是不可忽略的重要因素,其受海水的溫度、鹽度、密度等多種因素的影響,因此水下聲波的速度會(huì)發(fā)生隨機(jī)性較大的變化。同時(shí),傳感器節(jié)點(diǎn)具有隨洋流影響而移動(dòng)的特點(diǎn),在某節(jié)點(diǎn)發(fā)送消息和收到回復(fù)消息的時(shí)間間隔內(nèi),節(jié)點(diǎn)會(huì)發(fā)生相對(duì)移動(dòng),導(dǎo)致傳播延遲在每次信息交互中都會(huì)發(fā)生變化[3],更重要的是,水下傳感器的計(jì)算能力有限,因此,不宜設(shè)計(jì)過(guò)于復(fù)雜的算法使其消耗大量能量。
本文綜合考慮水下通信的特點(diǎn),提出一種基于低能耗分簇輔助的雙簇首時(shí)間同步算法DCH-Sync。采用分簇模型求解在能耗最低情況下的最佳分簇?cái)?shù)量,從簇中選取2個(gè)最優(yōu)節(jié)點(diǎn)作為主簇首和副簇首,通過(guò)移動(dòng)信標(biāo)節(jié)點(diǎn)完成簇首同步,并引入節(jié)點(diǎn)移動(dòng)模型提高定位精度。在此基礎(chǔ)上,利用雙簇首完成對(duì)普通節(jié)點(diǎn)的時(shí)間同步。
目前,針對(duì)陸地傳感器網(wǎng)絡(luò)的時(shí)間同步算法的研究已取得較多成果,例如,RBS(Reference Broadcast Synchronization)算法[4]使用第三方發(fā)送廣播報(bào)文實(shí)現(xiàn)全局同步,TPSN(Timing-sync Protocol for Sensor Network)算法[5]對(duì)所有節(jié)點(diǎn)進(jìn)行分層和逐層同步,FTSP(Flooding Time Synchronization Protocol)算法[6]則考慮了根節(jié)點(diǎn)選舉與節(jié)點(diǎn)失效等的影響。然而,上述研究均未考慮海洋環(huán)境的特殊性,并且忽略了傳播延遲的影響,因此這類協(xié)議不適用于水下傳感器。
近年來(lái),針對(duì)水下傳感器時(shí)間同步的研究已取得了一些進(jìn)展。高延遲水下時(shí)間同步協(xié)議(Time Synchronization for High Latency,TSHL)[7]將時(shí)間同步分為2個(gè)階段,在第1階段,待同步節(jié)點(diǎn)通過(guò)接收信標(biāo)節(jié)點(diǎn)發(fā)送的25個(gè)消息包,利用線性擬合估計(jì)自身的時(shí)鐘頻偏,在第2階段,待同步節(jié)點(diǎn)與信標(biāo)節(jié)點(diǎn)進(jìn)行雙向交互,從而計(jì)算出時(shí)鐘相偏。然而,該算法未考慮節(jié)點(diǎn)移動(dòng)的問(wèn)題,且假設(shè)傳播延遲不變,并不適用于實(shí)際情況。MU-Sync是針對(duì)水下節(jié)點(diǎn)移動(dòng)性提出的一種具有代表性的同步算法[8],該算法運(yùn)用分簇思想進(jìn)行兩輪線性擬合。第1輪采用發(fā)送-接收的方式進(jìn)行10次信息包交互,每次交互可稱為一次REF包交換,該輪線性擬合忽略傳播延遲的變化,采用固定值計(jì)算各節(jié)點(diǎn)的時(shí)鐘頻偏,而第2輪線性擬合去除相應(yīng)的傳播延遲,得到更加精確的時(shí)鐘偏移估計(jì)。Mobi-Sync[9]引入節(jié)點(diǎn)移動(dòng)模型,并使用3個(gè)信標(biāo)節(jié)點(diǎn)對(duì)一個(gè)節(jié)點(diǎn)進(jìn)行同步,通過(guò)一組速度矢量描述節(jié)點(diǎn)的運(yùn)動(dòng)情況,但此算法過(guò)于繁瑣且能耗較大,難以實(shí)現(xiàn)。D-Sync[10]算法利用多普勒效應(yīng)輔助時(shí)間同步,通過(guò)比較發(fā)送、接收數(shù)據(jù)包的時(shí)間估計(jì)多普勒因子的值,獲得節(jié)點(diǎn)的移動(dòng)方向與速度,其缺點(diǎn)在于需要配備額外的多普勒測(cè)量器,增加了部署成本。文獻(xiàn)[11]提出一種多普勒輔助水下傳感器網(wǎng)絡(luò)時(shí)間同步機(jī)制,由于節(jié)點(diǎn)在數(shù)據(jù)傳輸時(shí)發(fā)生運(yùn)動(dòng),數(shù)據(jù)幀在多普勒頻移的影響下會(huì)被壓縮或擴(kuò)展,因此接收信號(hào)的長(zhǎng)度會(huì)發(fā)生變化,利用這一特性可計(jì)算多普勒因子,從而完成時(shí)間同步。但是,該方法實(shí)現(xiàn)難度過(guò)高且需要額外的硬件才能完成,不適用于實(shí)際情況。上述水下傳感器時(shí)間同步算法雖然考慮了水下高延遲和節(jié)點(diǎn)移動(dòng)等因素,但均未解決節(jié)點(diǎn)能耗過(guò)大的問(wèn)題,具有一定的局限性。本文綜合考慮水下通信的特點(diǎn),通過(guò)分簇模型解決各節(jié)點(diǎn)的能耗問(wèn)題[12]。
對(duì)于水下傳感器網(wǎng)絡(luò),其節(jié)點(diǎn)分簇模型已有較多研究,當(dāng)前多數(shù)分簇算法采用“一對(duì)多”的數(shù)據(jù)傳輸模式,容易增加網(wǎng)絡(luò)節(jié)點(diǎn)的通信負(fù)載,且能量消耗不均衡。由于在水下環(huán)境部署節(jié)點(diǎn)較困難,一旦簇首節(jié)點(diǎn)的能量消耗完畢,就必須重建網(wǎng)絡(luò),這對(duì)系統(tǒng)的穩(wěn)定性和安全性造成極大的影響,因此需要考慮冗余機(jī)制。
本文在分簇過(guò)程中選取雙簇首,一方面是為了在主簇首無(wú)法工作時(shí),副簇首能接替其位置,另一方面,在后續(xù)過(guò)程中,使用雙簇首輔助普通節(jié)點(diǎn)進(jìn)行同步,可有效提高同步精度。圖1給出分簇后節(jié)點(diǎn)的工作過(guò)程,其中傳感器網(wǎng)絡(luò)的結(jié)構(gòu)主要由信標(biāo)節(jié)點(diǎn)、主簇首、副簇首和成員節(jié)點(diǎn)組成。該分簇模型主要用于時(shí)間同步而非數(shù)據(jù)傳輸工作,信標(biāo)節(jié)點(diǎn)首先對(duì)主、副簇首進(jìn)行時(shí)間同步,再利用簇首同步成員節(jié)點(diǎn)。無(wú)論是簇首與信標(biāo)的通信還是簇內(nèi)通信一律采用單跳通信方式而非通過(guò)路由多跳存儲(chǔ)轉(zhuǎn)發(fā),避免靠近信標(biāo)的節(jié)點(diǎn)因能量消耗過(guò)度而迅速消亡。
圖1 分簇后節(jié)點(diǎn)的工作過(guò)程
與傳統(tǒng)的傳感器不同,水下傳感器的能量消耗與距離、頻率和深度等因素相關(guān)。本文采用文獻(xiàn)[13]的水聲能耗模型,當(dāng)發(fā)射機(jī)傳輸大小為lbit的數(shù)據(jù)包時(shí),其消耗的能量如式(1)所示。
ETX(l,d)=lEelec+lTbCHdea(f)d
(1)
其中,Eelec是節(jié)點(diǎn)處理1 bit信息所消耗的能量,Tb是發(fā)送1 bit信息所需的時(shí)間,C=2π×0.67×10-9.5,H為節(jié)點(diǎn)的深度,d為傳輸距離,a(f)是吸收系數(shù),其計(jì)算公式如下:
(2)
其中,f表示頻率,單位為kHz,a(f)單位為dB/km。式(2)體現(xiàn)了信號(hào)頻率與能量衰減之間的關(guān)系。
接收機(jī)接收l(shuí)bit的數(shù)據(jù)包與數(shù)據(jù)融合所消耗的能量相同,如式(3)所示。
ERX(l,d)=lEelec
(3)
文獻(xiàn)[14]提出最佳分簇?cái)?shù)量的計(jì)算方法,但其未考慮簇首與成員節(jié)點(diǎn)工作方式不同而導(dǎo)致的能量消耗差異。本文對(duì)該方法進(jìn)行改進(jìn),假設(shè)在求最佳分簇?cái)?shù)量期望值時(shí)不考慮簇內(nèi)節(jié)點(diǎn)的轉(zhuǎn)發(fā)任務(wù),單純從簇首和成員節(jié)點(diǎn)發(fā)送、接收和數(shù)據(jù)融合消耗能量的角度進(jìn)行分析。
從成員節(jié)點(diǎn)的角度來(lái)看,第k個(gè)簇的第i個(gè)成員節(jié)點(diǎn)發(fā)送1 bit信息需要的能量如下:
EM-TX(ki)=Eelec+TbCHrea(f)r
(4)
其中,r表示節(jié)點(diǎn)至簇首的距離。
接收1 bit信息需要的能量是:
EM-RX(ki)=Eelec
(5)
成員節(jié)點(diǎn)所消耗的總能量如式(6)所示。
EM-total(ki)=2Eelec+TbCHrea(f)r
(6)
從簇首節(jié)點(diǎn)的角度來(lái)看,其消耗的能量由發(fā)送數(shù)據(jù)、接收成員節(jié)點(diǎn)數(shù)據(jù)和數(shù)據(jù)融合3個(gè)步驟所需的能量組成,如式(7)所示。
EC-total(k)=2NkEelec+Nk(Eelec+TbCHrea(f)r)
(7)
(8)
(9)
(10)
在完成分簇以后,需在每個(gè)簇中選出主簇首與副簇首。首先引入網(wǎng)絡(luò)平均能量Ea(i),在進(jìn)行簇首選舉前,只有剩余能量高于網(wǎng)絡(luò)平均能量的節(jié)點(diǎn)(Er(i)≥Ea(i))才有資格參與選舉,其目的是防止能量過(guò)低的節(jié)點(diǎn)被選舉為簇首,從而平衡整個(gè)網(wǎng)絡(luò)的能量消耗。然后通過(guò)式(11)計(jì)算每個(gè)節(jié)點(diǎn)的綜合屬性值W(i),選取出屬性值最高和次高的節(jié)點(diǎn)作為主簇首與副簇首。
(11)
其中,Ei(i)和Er(i)分別是節(jié)點(diǎn)i的初始能量和剩余能量,Ea(i)是節(jié)點(diǎn)i所在簇的平均能量,D是節(jié)點(diǎn)距離水面的深度,ω1、ω2是在競(jìng)選過(guò)程中能量因素與節(jié)點(diǎn)深度的比例,且ω1+ω2=1。通過(guò)式(11)可以選舉出剩余能量高且深度較淺的節(jié)點(diǎn)作為簇首節(jié)點(diǎn)。
簇首是簇中唯一與外界通信的節(jié)點(diǎn),其不僅需要獲得高精度的時(shí)間信息,而且負(fù)責(zé)簇內(nèi)全部節(jié)點(diǎn)的時(shí)間同步工作,具有非常重要的作用。本節(jié)主要解決簇首節(jié)點(diǎn)的時(shí)間同步問(wèn)題。在文獻(xiàn)[15]中,簇首節(jié)點(diǎn)直接向水面浮標(biāo)發(fā)出同步請(qǐng)求,但未考慮某些簇首所處位置過(guò)深的情況,導(dǎo)致傳播距離過(guò)遠(yuǎn),影響同步精度。文獻(xiàn)[16]通過(guò)多跳傳輸方法進(jìn)行同步,但每個(gè)中間節(jié)點(diǎn)在處理數(shù)據(jù)包時(shí)都會(huì)產(chǎn)生一定的時(shí)延,經(jīng)過(guò)多跳累積后會(huì)造成更大的延遲。文獻(xiàn)[17]使用移動(dòng)信標(biāo)節(jié)點(diǎn)對(duì)所有節(jié)點(diǎn)進(jìn)行時(shí)間同步,本文在其基礎(chǔ)上進(jìn)行改進(jìn),采用單跳傳輸模式以減少因數(shù)據(jù)包多跳傳輸而產(chǎn)生的延遲與同步誤差。將自主式水下交通工具(Autonomous Underwater Vehicle,AUV)作為信標(biāo)節(jié)點(diǎn),對(duì)所有簇中的主簇首與副簇首直接進(jìn)行時(shí)間同步。由于AUV能量充足且具有高效移動(dòng)性,因此不會(huì)出現(xiàn)能量不足的情況。考慮到節(jié)點(diǎn)的移動(dòng)對(duì)傳播延遲產(chǎn)生的影響,本文選取權(quán)威的洋流模型模擬節(jié)點(diǎn)的移動(dòng)方式,并計(jì)算移動(dòng)速率。具體的報(bào)文交互采用基于發(fā)送-接收的單向與雙向混合報(bào)文同步方式,其中,單向交互用于計(jì)算時(shí)鐘頻偏,雙向交互用于計(jì)算時(shí)鐘相偏。
AUV在進(jìn)行時(shí)間同步時(shí)應(yīng)盡可能接近每一個(gè)待同步簇首,以減少聲速變化帶來(lái)的影響,同時(shí)應(yīng)將運(yùn)動(dòng)軌跡設(shè)計(jì)得盡可能簡(jiǎn)單、高效。AUV的運(yùn)動(dòng)軌跡如圖2所示,圖中實(shí)線為AUV進(jìn)行同步工作時(shí)的主運(yùn)動(dòng)軌跡,負(fù)責(zé)當(dāng)前層次中各簇首節(jié)點(diǎn)的同步工作,保證各節(jié)點(diǎn)在AUV通信半徑之內(nèi),虛線是輔助運(yùn)動(dòng)軌跡,幫助AUV潛入更深水域,實(shí)現(xiàn)深層次的簇首節(jié)點(diǎn)同步工作。以此循環(huán),直至完成所有節(jié)點(diǎn)的同步。
圖2 移動(dòng)信標(biāo)節(jié)點(diǎn)移動(dòng)軌跡
在同步過(guò)程中引入水下節(jié)點(diǎn)移動(dòng)模型,由于節(jié)點(diǎn)的移動(dòng)會(huì)造成兩節(jié)點(diǎn)的相對(duì)位置發(fā)生變化,因此傳播延遲會(huì)有所不同,需要考慮節(jié)點(diǎn)移動(dòng)速度對(duì)同步過(guò)程的影響。文獻(xiàn)[18]提出一個(gè)權(quán)威洋流模型,如式(12)所示。
(12)
其中,c用來(lái)控制洋流位移速率,B(t)用來(lái)控制曲線的寬度,ε用來(lái)控制整個(gè)洋流場(chǎng)的振幅,ω是洋流場(chǎng)中洋流通過(guò)的頻率,相關(guān)參數(shù)按經(jīng)驗(yàn)進(jìn)行取值,具體如下:A=1.2,c=0.12,ω=0.4,ε=0.3,k=2π/7.5。在一般情況下,僅考慮節(jié)點(diǎn)在x和y方向的位移,不考慮豎直方向上的位移,則節(jié)點(diǎn)在x和y方向上的運(yùn)動(dòng)速度如下:
(13)
圖3給出詳細(xì)的同步示意圖。根據(jù)時(shí)鐘同步原理,普通節(jié)點(diǎn)C的本地時(shí)鐘與標(biāo)準(zhǔn)時(shí)鐘的關(guān)系為T=λt+β,其中,t代表標(biāo)準(zhǔn)時(shí)間,λ代表時(shí)鐘頻偏,β代表時(shí)鐘相偏[19]。
圖3 信標(biāo)節(jié)點(diǎn)與簇首的報(bào)文交互
Fig.3 Message interactions between beacon nodes and cluster heads
簇首同步的過(guò)程分為如下2個(gè)階段:
1)第1階段用于計(jì)算時(shí)鐘頻偏,信標(biāo)節(jié)點(diǎn)B連續(xù)發(fā)送i個(gè)同步信息數(shù)據(jù)包給簇首節(jié)點(diǎn)C,其中,di是數(shù)據(jù)傳輸延遲,t[i]代表信標(biāo)節(jié)點(diǎn)發(fā)送第i個(gè)數(shù)據(jù)包的時(shí)間戳,T[i]代表簇首節(jié)點(diǎn)接收第i個(gè)數(shù)據(jù)包的時(shí)間戳,其相互關(guān)系如式(14)所示。本文規(guī)定信標(biāo)節(jié)點(diǎn)共發(fā)送10個(gè)數(shù)據(jù)包。
t[i]+di=λT[i]+β
(14)
定義Si是簇首C第i次接收到數(shù)據(jù)包時(shí)與信標(biāo)節(jié)點(diǎn)的距離,則Si與Si-1之間有如下關(guān)系:
Si=Si-1+v(t[i]-λT[i-1]-β)+v(λT[i]+β-t[i])
(15)
(16)
其中,c是水下聲速。由于此時(shí)信標(biāo)節(jié)點(diǎn)與簇首距離較近,因此可忽略聲速的變化,設(shè)定c=1 500 m/s,則可算出每個(gè)數(shù)據(jù)包的傳輸延遲,如式(17)所示。
(17)
其中,v是節(jié)點(diǎn)在水下的移動(dòng)速度,ΔT[i]的計(jì)算公式如下:
(18)
聯(lián)立式(11)、式(12),整理后可得式(19)。
(19)
由此可計(jì)算出節(jié)點(diǎn)的時(shí)鐘頻偏。
2)第2階段通過(guò)發(fā)送-接收模式交互數(shù)據(jù)包。簇首首先在T1時(shí)刻發(fā)送信息,信標(biāo)節(jié)點(diǎn)在T2時(shí)刻接收到數(shù)據(jù)包,隨后在T3時(shí)刻發(fā)送反饋數(shù)據(jù)包,簇首在T4時(shí)刻接收。時(shí)鐘相偏可以通過(guò)式(20)~式(22)進(jìn)行計(jì)算。
T1+D=λT2+β
(20)
T3+D=λT4+β
(21)
(22)
在主簇首與副簇首完成時(shí)間同步以后,其可充當(dāng)簇內(nèi)的信標(biāo)節(jié)點(diǎn),向各成員節(jié)點(diǎn)發(fā)送時(shí)間同步消息。文獻(xiàn)[3]提出使用3個(gè)信標(biāo)節(jié)點(diǎn)完成對(duì)一個(gè)普通節(jié)點(diǎn)的時(shí)間同步,并使用一組速度矢量來(lái)表示節(jié)點(diǎn)的運(yùn)動(dòng)速度,從而推算出節(jié)點(diǎn)的傳播延遲。然而,該算法復(fù)雜度高,不適用于實(shí)際情況。本文使用主簇首與副簇首2個(gè)節(jié)點(diǎn)對(duì)普通節(jié)點(diǎn)進(jìn)行同步。在正常工作時(shí),2個(gè)簇首同時(shí)進(jìn)行時(shí)間同步工作,若主簇首或副簇首出現(xiàn)故障,則使用單個(gè)簇首進(jìn)行同步。此方法與單信標(biāo)時(shí)間同步相比,雖然會(huì)增加一部分能量消耗,但提高了同步精度,并且系統(tǒng)的冗余性和魯棒性也得到增強(qiáng)。由于水下情況復(fù)雜,因此需考慮聲速的變化,根據(jù)深度、溫度等因素計(jì)算實(shí)時(shí)的聲速值。報(bào)文交互采用基于發(fā)送-接收的單向與雙向混合報(bào)文同步方式,并結(jié)合聲速與節(jié)點(diǎn)移動(dòng)速度計(jì)算時(shí)鐘頻偏和相偏。
在水下傳感器網(wǎng)絡(luò)中,時(shí)間同步的精度受到各種因素的影響,其與陸地傳感器最大的不同在于,水下傳感器具有較高的傳播延遲,而傳播延遲與聲速密切相關(guān)。陸地傳感器的傳播介質(zhì)是空氣,一般可忽略傳播延遲,而在海洋環(huán)境中,聲波的傳播速度會(huì)受到深度、溫度和鹽度等各種因素的影響[19],因此在設(shè)計(jì)時(shí)間同步算法時(shí)需考慮聲速的變化。目前,較常使用的衡量聲速的方法如式(23)所示[20-21]。
c(t,s,p)=1 449.2+4.6t-0.55t2+0.000 29t3+
(1.34-0.01t)(s-35)+0.16p
(23)
其中,c為聲速,t、s和p分別表示溫度、鹽度和壓力。
圖4給出簇內(nèi)各節(jié)點(diǎn)在進(jìn)行時(shí)間同步時(shí)的信息交換過(guò)程,圖5為普通節(jié)點(diǎn)與簇首節(jié)點(diǎn)之間的報(bào)文發(fā)送過(guò)程。由圖5可知,同步進(jìn)程由普通節(jié)點(diǎn)A發(fā)起,分別向兩個(gè)簇首S1、S2(即主簇首和副簇首)發(fā)送同步請(qǐng)求報(bào)文RTS,其中包含MAC層時(shí)間戳T[1]。在收到RTS之后,簇首記錄本地時(shí)間t[1]并開(kāi)始向普通節(jié)點(diǎn)A連續(xù)發(fā)送i=5個(gè)回復(fù)包CTS[i],2個(gè)包之間的間隔時(shí)間固定。報(bào)文CTS[i]中包含MAC層時(shí)間戳t[i]、溫度tSi和壓力pSi。普通節(jié)點(diǎn)收到CTS[i]后,記錄其本地時(shí)間戳T[i],同時(shí)記錄接收時(shí)刻溫度tAi和壓力pAi。假設(shè)每個(gè)節(jié)點(diǎn)的深度已知,則可用式(19)和式(20)計(jì)算出溫度和壓力值。隨后,普通節(jié)點(diǎn)分別對(duì)所接收到的報(bào)文中的溫度、壓力等數(shù)據(jù)取均值,并代入式(21)中計(jì)算聲速。
圖4 簇內(nèi)時(shí)間同步時(shí)的信息交換過(guò)程
Fig.4 Information exchange process during time synchroni-zation within a cluster
圖5 簇內(nèi)報(bào)文發(fā)送過(guò)程
在同步過(guò)程中,各時(shí)間戳之間的關(guān)系可用式(24)和式(25)表示。
λT[1]+β+d1=t[1]
(24)
t[i]+di=λT[i]+β,i>1
(25)
時(shí)鐘頻偏λ可用第2節(jié)提到的方法進(jìn)行求解,如式(26)所示。
(26)
其中,聲速c由普通節(jié)點(diǎn)在數(shù)據(jù)包交互過(guò)程中獲取的信息計(jì)算得出,節(jié)點(diǎn)的移動(dòng)速度v根據(jù)洋流模型進(jìn)行計(jì)算,時(shí)鐘相偏可根據(jù)式(22)計(jì)算得到。
本文采用Matlab進(jìn)行仿真,并在相同環(huán)境下比較本文算法與DCH-Sync、TSHL、MU-Sync、multi-hop、D-Sync等算法的性能差異。本文的仿真在1 000 m×1 000 m的水下環(huán)境中進(jìn)行,其中有100個(gè)隨機(jī)分布的傳感器節(jié)點(diǎn),節(jié)點(diǎn)運(yùn)動(dòng)采用隨機(jī)洋流模型,仿真中使用的時(shí)間戳為MAC層時(shí)間戳,其他仿真參數(shù)如表1所示。
表1 默認(rèn)參數(shù)值
節(jié)點(diǎn)消耗的能量主要取決于產(chǎn)生數(shù)據(jù)包的數(shù)量與報(bào)文長(zhǎng)度,圖6給出TSHL算法、MU-Sync算法與本文DCH-Sync算法在運(yùn)行30次同步后產(chǎn)生的數(shù)據(jù)包數(shù)量,以此分析能耗高低。在仿真過(guò)程中,假定TSHL算法采用25個(gè)成對(duì)時(shí)元組,MU-Sync算法采用10次REF包交換。從圖6可以看出,本文算法所產(chǎn)生的數(shù)據(jù)包數(shù)量少于其他2種算法,分別比TSHL算法和MU-Sync算法減少62.89%和28.95%,其原因是TSHL算法和MU-Sync算法需要進(jìn)行多次線性擬合,導(dǎo)致數(shù)據(jù)包的開(kāi)銷增大。
圖6 同步次數(shù)與數(shù)據(jù)包數(shù)量的關(guān)系
Fig.6 Relationship between the number of synchronization times and number of data packets
此外,本文研究了如何有效進(jìn)行簇首間的時(shí)間同步。若簇首直接與水面浮標(biāo)進(jìn)行同步,一些距離水面較遠(yuǎn)的節(jié)點(diǎn)需要多跳傳輸才能與信標(biāo)進(jìn)行通信,從而產(chǎn)生傳輸延遲,大幅影響同步精度,因此,本文采用AUV作為移動(dòng)信標(biāo)輔助同步工作。圖7給出本文算法與多跳傳輸算法在同步完成后,本地時(shí)鐘誤差的增長(zhǎng)趨勢(shì),可以看出,本文算法的誤差明顯小于多跳傳輸算法,在105s以后,誤差減小52.57%左右,在106s以后,誤差約減小35.60%。
圖7 簇首時(shí)間同步后的本地時(shí)鐘誤差變化趨勢(shì)對(duì)比
Fig.7 Comparison of the varying trends of local clock errors after time synchronization between cluster heads
圖8給出本文算法、MU-Sync算法和TSHL算法在完成同步后,本地時(shí)鐘誤差的增長(zhǎng)趨勢(shì)。從圖8可以看出,本文算法的誤差明顯小于其他算法,在105s以后,本文算法的誤差分別比TSHL算法、MU-Sync算法降低68.27%和42.80%,在106s以后,分別降低44.56%和18.50%。本文算法的同步誤差之所以小于其他2種算法,主要有2個(gè)原因:通過(guò)2個(gè)節(jié)點(diǎn)輔助同一節(jié)點(diǎn)的思想,大幅提高了同步精度;采用洋流模型測(cè)算節(jié)點(diǎn)的速度,提高了傳播延遲的計(jì)算精度。
圖8 簇內(nèi)時(shí)間同步后的本地時(shí)鐘誤差變化趨勢(shì)對(duì)比
Fig.8 Comparison of the varying trends of local clock errors after time synchronization within the cluster
傳播延遲的動(dòng)態(tài)變化主要是由節(jié)點(diǎn)的移動(dòng)速度引起的。圖9給出節(jié)點(diǎn)的移動(dòng)速度對(duì)同步誤差的影響,將本文算法與同樣考慮節(jié)點(diǎn)移動(dòng)性的MU-Sync算法、D-Sync算法進(jìn)行對(duì)比,速度的變化范圍是1 m/s~4.5 m/s。從圖9可以看出,三者的同步精度基本不受速度變化的影響,但是,MU-Sync算法、D-Sync算法和DCH-Sync算法的同步誤差分別約為0.023 s、0.011 s和0.004 s,本文算法誤差小于其他2種算法。
圖9 節(jié)點(diǎn)移動(dòng)速度對(duì)同步誤差的影響
Fig.9 Influence of the speed of moving nodes on synchroni-zation errors
本文提出一種基于分簇的雙簇首輔助時(shí)間同步算法DCH-Sync。采用分簇模型對(duì)節(jié)點(diǎn)進(jìn)行分簇,從簇中選取2個(gè)最優(yōu)節(jié)點(diǎn)作為主副簇首,通過(guò)節(jié)點(diǎn)移動(dòng)模型完成簇首同步,在此基礎(chǔ)上,利用雙簇首實(shí)現(xiàn)對(duì)簇內(nèi)普通節(jié)點(diǎn)的同步。仿真結(jié)果表明,與TSHL、MU-Sync、multi-hop、D-Sync算法相比,該算法的同步精度較高且能量消耗較少。下一步將優(yōu)化分簇模型,擴(kuò)大DCH-Sync算法的應(yīng)用范圍。