呂春嬌
(上海海事大學信息工程學院,上海 201306)
隨著海洋經(jīng)濟的興起,世界各國對海洋資源的管理日漸重視,水下傳感器網(wǎng)絡(luò)的研究已經(jīng)變成學術(shù)界新的研究熱點[1]。為了能讓水下傳感器網(wǎng)絡(luò)可以更好地完成目標檢測、信息獲取、數(shù)據(jù)傳輸?shù)热蝿?wù),精準的時間同步因此成為支撐水下傳感器網(wǎng)絡(luò)的一個最基本的技術(shù)[2]。目前,國內(nèi)外學者針對陸上無線傳感器網(wǎng)絡(luò)的結(jié)構(gòu)和特點,提出一系列適用在陸上的時間同步協(xié)議[3-5]。但是水下傳感器網(wǎng)絡(luò)采用了聲波進行通信,這不同于陸地使用電磁波進行通信;另外水下情況特殊,鏈路長、傳播速度低,這均為水下時間同步算法研究帶來了諸多挑戰(zhàn)。
水下傳感器節(jié)點自身配有振蕩器,但在大規(guī)模的水下分布式網(wǎng)絡(luò)中,節(jié)點受水下溫度、水流速度、水壓等影響,振蕩器的計數(shù)周期和計數(shù)頻率存在波動,導致節(jié)點的本地時鐘存在誤差。因此,節(jié)點必須通過接收具有參考意義的時鐘節(jié)點的時間信息,對自身本地時間進行校準[6]。
在實際應(yīng)用中,水下傳感器網(wǎng)絡(luò)時間同步算法受幾個方面的影響[7]:水聲傳播速度低(僅為無線電在空氣中傳播速度的20萬分之一);鏈路距離長(節(jié)點間的部署距離為0.5km-2km);節(jié)點具有移動性(以0.83-1.67m/s的速度在長度限制范圍內(nèi)移動)。因此,解決傳播延時是解決水下時間同步問題的首要前提。
綜合以上問題,本文提出了一種基于能量分簇的V-時間同步算法,首先通過能量分簇減少不必要的網(wǎng)絡(luò)通信開銷、降低能耗;然后對文獻[6]中提出的時間同步算法進行優(yōu)化,引入相對移動距離變量,更加精準地計算節(jié)點通信時的鏈路長度從而提高時間同步的精度。V-時間同步算法先對簇頭節(jié)點進行時間同步,并以此為基準對簇內(nèi)各成員節(jié)點進行時間同步,從而使簇內(nèi)所有成員節(jié)點達到時間同步。
水聲信號在傳播過程中,信號發(fā)射功率大,鏈路傳播距離長,導致傳播衰減嚴重[8]。而且,水聲速度低和節(jié)點相對移動速度能引起明顯的多途現(xiàn)象和多普勒頻移,同時加大了環(huán)境噪聲。這些情況使得節(jié)點接收解碼時的能耗需求遠遠大于陸上情況。
針對水下網(wǎng)絡(luò)的特點,先對監(jiān)測區(qū)域內(nèi)的所有成員節(jié)點應(yīng)用分簇技術(shù)。所有節(jié)點被分成多個簇群,每個簇群內(nèi)有且只有一個簇頭節(jié)點,其余均為簇成員節(jié)點,簇內(nèi)的成員節(jié)點只能與該簇內(nèi)的成員節(jié)點(包括簇頭節(jié)點)進行通信,如需要和其他簇節(jié)點通信,必須通過本簇的簇頭節(jié)點完成。這種分簇技術(shù)大幅度降低了傳感器節(jié)點間的通信距離,減輕了傳播衰減的問題、節(jié)約了大量通信能量、也有效地降低了多途現(xiàn)象和多普勒頻移造成的干擾。
本文的討論背景在潛水區(qū)域,此區(qū)域內(nèi)傳感器節(jié)點隨水流的移動速度不會有很大偏差,而且在這種環(huán)境下,研究表明聲信號是通過柱面波進行傳播[9]。柱面波的損失可表示為[10]:
(1)式中,d是通信傳播鏈路距離,a為吸收系數(shù),其大小與聲波頻率有關(guān)。
本文采用與文獻[11]相同的能量消耗模型,該模型是以減少節(jié)點能量消耗為基礎(chǔ)而建立的[12]。節(jié)點在進行數(shù)據(jù)傳輸時的能量消耗可以表示為:
其中,C=2π×0.67×10-9.5+2.75×10-4f2+0.003,Eelec是節(jié)點發(fā)送數(shù)據(jù)時需要的能量,H是節(jié)點所在位置距水平面的高度,d是節(jié)點間鏈路距離長度,f是發(fā)射頻率,T是數(shù)據(jù)通信過程中消耗的時間。整個網(wǎng)絡(luò)分簇完成后,簇內(nèi)成員節(jié)點開始與簇頭通信,所有成員節(jié)點的能耗總和由公式(3)給出:
(3)式中,Di是成員節(jié)點到簇頭節(jié)點的距離,簇內(nèi)成員節(jié)點的數(shù)量是N。
為了得到每個簇的能耗,對每個簇的能量取期望,通過(3)式可得到期望公式:
從(4)式可以看出,每個簇內(nèi)的成員節(jié)點數(shù)量和期望E(D×ea(f)D)是影響簇的能耗的兩個因素。
已知節(jié)點在簇內(nèi)監(jiān)測區(qū)域的概率分布密度為f(D),假設(shè)每個劃分的簇的區(qū)域為圓形區(qū)域[13],Dr表示每個簇的半徑,則:
因此,簇內(nèi)能耗期望可表示為:
對公式(6)中的Dr求偏微分,可得到其零點值,從而得到當----Esum取極小值時Dr的取值。那么,可以通過(7)式求出分簇的最佳數(shù)量n:
在得到分簇的最佳數(shù)量后,針對在監(jiān)測區(qū)域內(nèi)隨機分布的節(jié)點,按照此方法進行分簇。簇頭位于每個簇的中心位置,(7)式中Dm是節(jié)點到分簇區(qū)域邊緣的距離。
水下傳感器節(jié)點自身配備的晶振提供節(jié)點的本地時間,但由于晶振受水波流動、水溫不恒定等因素影響,傳感器節(jié)點振蕩頻率會產(chǎn)生偏差,因此時間同步也同樣會產(chǎn)生偏移[14]。節(jié)點本地時間和絕對時間的關(guān)系可由下式表示:
其中,T代表節(jié)點的本地時間,T′是節(jié)點的絕對時間,a是頻偏,b是相偏。在陸上無線傳感器網(wǎng)絡(luò)傳播中,由于傳播速度快、鏈路距離短,a的變化很小,可忽略不計。但是由于水聲傳播延時很大,a不能忽略。
從信息交互方式看,在陸地無線傳感器網(wǎng)絡(luò)中,時間同步算法主要分為單發(fā)送同步算法、發(fā)送-接收同步算法和接收-接收同步算法[15]。以單發(fā)送方式為代表的FTSP算法[4],其假設(shè)是鏈路傳播延遲可忽略,但在水下傳感器網(wǎng)絡(luò)中鏈路傳播延時是不能忽視的一個因素。以接收-接收方式為代表的RBS[16]算法不能直接用于水下環(huán)境,主要原因是水下鏈路傳播延時長,而且傳播延時存在時變性,同步過程中對節(jié)點的頻率偏移有很大影響、發(fā)送信息時能耗較高。因此,在水下傳感器網(wǎng)絡(luò)中,節(jié)點大都以發(fā)送-接收方式進行時間同步,如 TSHL[17]、MU-Sync[18]、Mobi-Sync[19]等算法。
本文中,也同樣采用發(fā)送-接收方式的同步算法。這種時間同步方式一般采用單跳的方式向節(jié)點發(fā)送信標消息。浮標節(jié)點向簇頭節(jié)點發(fā)送時間同步信息,簇頭節(jié)點獲得時間信息后再作為同步時間的基準節(jié)點,向簇內(nèi)成員節(jié)點發(fā)送信標信號進行同步。
簇頭節(jié)點同步示意圖如圖1所示。
圖1 簇頭節(jié)點同步原理圖
首先,簇頭節(jié)點C向水面浮標F發(fā)送含有發(fā)送時刻TC1(簇首節(jié)點C的當前本地時間)的時間同步請求數(shù)據(jù)包,代表時間同步過程的開始,通信鏈路距離為d1;接著,浮標F接收到來自簇頭節(jié)點C的數(shù)據(jù)請求包,同時記錄當前本地時間TF1;并向簇頭節(jié)點立刻進行信息反饋,此時的傳播延時非常小,可以忽略不計。但為更好的解決水下傳感器的傳播延時問題,浮標F在時間間隔tm后再向簇頭節(jié)點發(fā)送一次包含當前本地時間TF2的信標信息包,此時通信鏈路距離為d2;簇頭節(jié)點接收到信息后記錄當前本地時間TC3。
由(8)式得,節(jié)點進行本地時鐘校正,得到公式(9):
其中,DCF是簇頭C到浮標F的傳播延時;DFC是浮標F到簇頭節(jié)點C的傳播延時。
假設(shè)在節(jié)點間的運動具有一定的關(guān)聯(lián)性,簇頭節(jié)點和水面浮標在一次信息交換周期內(nèi)相對位移變化能夠形成一個三角形,如圖2所示。
圖2 節(jié)點移動模型
浮標F在接收到簇頭節(jié)點C發(fā)送過來的請求消息后,在時間間隔tm后進行第二次消息反饋。由于水下環(huán)境與陸地環(huán)境的不同,這時的傳播鏈路d2與簇頭節(jié)點發(fā)送請求的傳播鏈路d1發(fā)生變化,兩條鏈路軌跡之間產(chǎn)生夾角,記為α;將簇頭節(jié)點在TC2+tm時刻估計其接收鏈路與簇頭節(jié)點C運動軌跡之間的夾角記為β;由于受水流的影響,水下傳感器網(wǎng)絡(luò)的節(jié)點會有一定的移動性,因此將圖2中A和TF1之間的距離記為l(即在tm時間內(nèi)浮標節(jié)點F相對于簇頭節(jié)點C的運動距離)。浮標F和簇頭節(jié)點C均能獲得任意時刻的所在位置的水流速度,因此l可由下式表示:
其中VF1、VF2、VC2、VC3分別是浮標節(jié)點和簇頭節(jié)點在TF1、TF2、TC2、TC3時刻的水流速度。在ΔTF1ATF2和ΔTF1TC1TF2中,通過使用正弦定理和三角函數(shù)公式,可以得到:
假設(shè)聲音在水下傳播速度是恒定的,為c=1500m/s,根據(jù)公式(10)、(11)、(12)得出:
把(13)、(14)式代入,能夠求解出時間頻偏 a的值:
求出時鐘頻偏后,代入到公式(9)中,可以分別求出b1、b2,最后根據(jù)公式(16)可得到時鐘相偏b。
根據(jù)求出的時鐘頻偏和時鐘相偏,可以對每個簇頭節(jié)點實現(xiàn)時間同步。
已經(jīng)完成時間同步的簇頭節(jié)點作為簇內(nèi)唯一的一個信標節(jié)點,向簇內(nèi)待同步成員節(jié)點發(fā)送時間同步消息[13]。同步過程如圖3所示。
圖3 簇成員節(jié)點時間同步原理圖
簇頭節(jié)點向成員節(jié)點多次短間隔發(fā)送時間同步信號,其目的在于抵消節(jié)點在水下運動的傳輸時延,以降低時間同步誤差。簇內(nèi)成員節(jié)點在收到信標信號后,實時監(jiān)聽信道。當信道空余時,在T1時刻發(fā)送包含當前本地時間的反饋信息給簇頭節(jié)點,簇頭節(jié)點接收到信號,記錄本地時間T2,并在T3時刻發(fā)送攜帶時間信息的信號到成員節(jié)點,成員節(jié)點在T4時刻接收。
假設(shè)簇頭節(jié)點向成員節(jié)點共發(fā)送N次信標消息,考慮節(jié)點在水下的運動情況,在簇頭節(jié)點第M次(1≤M≤N)發(fā)送信號時,根據(jù)公式(9)可以得到節(jié)點已經(jīng)運動的距離為:
其中,v是水下傳感器節(jié)點運動速度。由公式(17)得到:
采用以上方法,可以計算出簇內(nèi)成員節(jié)點的頻偏a和相偏b,從而達到簇內(nèi)的時間同步。
本文使用MATLAB,對分簇后與未分簇的情況下節(jié)點能量消耗、時間同步的精度兩方面進行仿真實驗。與文獻[6]中所提出的在同一能量分簇模型下的時間同步算法進行比較,看本文提出的V-時間同步算法是否在同步精度上得到提升。
本文的仿真環(huán)境是直徑1000米的圓形區(qū)域,監(jiān)測區(qū)域內(nèi)隨機分布150個水下傳感器節(jié)點,初始頻偏為80ppm,初始相偏為50ppm。
圖4 節(jié)點能量消耗對比圖
從圖4可以看出,水下傳感器節(jié)點在未分簇和分簇情況下對節(jié)點能量消耗的區(qū)別是很大的。本文中應(yīng)用的基于能量消耗模型,隨著傳感器節(jié)點分簇的數(shù)目增加,節(jié)點間通信時的能耗逐漸降低,趨近于0;而未進行分簇的節(jié)點在傳輸信息時的能量消耗一直保持不變,并且能耗非常大。由此可見,此分簇方法能有效地減少能耗。
圖5同步過程中頻偏變化對比圖
圖5 表示兩種時間同步算法隨著同步次數(shù)的增加頻偏的變化曲線。從圖中可以看出,隨著同步次數(shù)的增加兩種算法均能有效的減少誤差,但本文提出的優(yōu)化算法效果優(yōu)于文獻[6]提出的同步算法。這是因為在文獻[6]提出的算法中,忽略了時間延時,因此得到的結(jié)果誤差較大;而且忽略了在水下通信過程中節(jié)點會隨著洋流移動的特性,忽略了鏈路距離的變化,導致數(shù)據(jù)有些誤差。
水下傳感器網(wǎng)絡(luò)不同于陸上傳感器網(wǎng)絡(luò),由于它受到水流影響導致節(jié)點具有移動性、水聲信號傳播延時大、鏈路距離長、易引起多普勒頻散現(xiàn)象等,使得水下時間同步算法有很大的誤差。
本文的研究基于一種給定能量模型的方式,首先對網(wǎng)絡(luò)結(jié)構(gòu)中的傳感器節(jié)點進行分簇,通過能量分簇技術(shù)能有效地減少節(jié)點間信息通信時的能量消耗;然后再對已有的一個水下傳感器同步算法進行優(yōu)化,考慮到節(jié)點在水下的移動性和傳播延時的問題,引入延時和節(jié)點間相對移動距離進行V-時間同步算法的計算。實驗表明,本文提出的同步算法在精度上要高于原有算法。
因此,分簇技術(shù)、減少傳輸時延、考慮節(jié)點間的相對移動距離在研究水下傳感器網(wǎng)絡(luò)的時間同步算法上具有很大的工程意義。