提出了一個(gè)基于虛擬時(shí)鐘指數(shù)逼近的無線傳感器網(wǎng)絡(luò)時(shí)鐘同步協(xié)議,采用一個(gè)虛擬時(shí)鐘作為全網(wǎng)同步的基礎(chǔ),從而實(shí)現(xiàn)全網(wǎng)同步。由于采用虛擬時(shí)鐘,使得各節(jié)點(diǎn)進(jìn)入網(wǎng)絡(luò)時(shí)有了統(tǒng)一的標(biāo)準(zhǔn),對時(shí)鐘扭曲和偏移采用指數(shù)逼近的方法,在相差較大時(shí)調(diào)整快,提高了同步效率。仿真數(shù)據(jù)證明,本協(xié)議能有效地提高同步效率,并適應(yīng)于不同的網(wǎng)絡(luò)拓?fù)洹?/p>
引言
WSN時(shí)鐘同步[1]關(guān)鍵問題主要有兩個(gè)方面:一是標(biāo)準(zhǔn)的確立,即有一個(gè)時(shí)鐘作為全網(wǎng)基準(zhǔn),不管是事實(shí)上存在的時(shí)鐘,還是虛擬的時(shí)鐘;二是標(biāo)準(zhǔn)的共享,即各節(jié)點(diǎn)都按照標(biāo)準(zhǔn)來調(diào)整自己的工作狀態(tài)。目前WSN時(shí)鐘同步主要集中于兩個(gè)方面:集中式和分布式。集中式如TPSN[2]、RBS[3]、 FTSP[4]。分布式同步如ATS[5]、CCS[6]、GCS[7]。
本文采用一個(gè)虛擬的時(shí)鐘作為全網(wǎng)同步的基準(zhǔn),所有節(jié)點(diǎn)在進(jìn)入網(wǎng)絡(luò)后逐次逼近一個(gè)統(tǒng)一的虛擬時(shí)鐘,逼近過程采用基于本地時(shí)鐘的指數(shù)逼近方式,最終實(shí)現(xiàn)同步。
1 近期工作
WSN中時(shí)鐘同步的主要方法如下,前三者為集中式同步,后三者為分布式同步方法:
TPSN(TimingSync Protocol for Sensor Networks)[2]是用于WSN中時(shí)鐘同步的技術(shù),主要包括標(biāo)準(zhǔn)發(fā)現(xiàn)階段和同步階段。發(fā)現(xiàn)階段將整個(gè)網(wǎng)絡(luò)劃分為樹狀層次拓樸,根結(jié)點(diǎn)是首要結(jié)點(diǎn),然后采用普通的握手協(xié)議實(shí)現(xiàn)全網(wǎng)同步。TPSN利用MAC層時(shí)間戳減少信息傳輸?shù)难訒r(shí)和提高同步準(zhǔn)確性,收斂速度隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大線性增長。該算法的限制是,當(dāng)根結(jié)點(diǎn)或者父結(jié)點(diǎn)失效時(shí),需要有相應(yīng)的策略去選擇新的根結(jié)點(diǎn)或父結(jié)點(diǎn)。同時(shí)由于地理上相近的節(jié)點(diǎn),并不一定能夠在實(shí)際中成為樹狀網(wǎng)絡(luò)中的鄰近節(jié)點(diǎn),因此降低了同步性能。
RBS(Reference Broadcast Synchronization)[3]著眼于提供基于信標(biāo)信號單跳范圍內(nèi)的節(jié)點(diǎn)同步方案,其最大的貢獻(xiàn)在于去除了信息傳輸過程中的兩個(gè)影響因素——傳輸時(shí)間和接入時(shí)間,即消息花在非時(shí)鐘同步上的時(shí)間最少。RBS采用最小方差線性回歸的方法補(bǔ)償時(shí)鐘扭曲,收斂速度隨著網(wǎng)絡(luò)規(guī)模也呈線性增長趨勢,使用信標(biāo)節(jié)點(diǎn)使得傳輸易受到干擾,同時(shí)也會(huì)因?yàn)楣?jié)點(diǎn)移動(dòng)而導(dǎo)致時(shí)鐘同步失敗。
FTSP(Flooding Time Synchronization Protocol )[4]是一個(gè)自治、多跳的同步協(xié)議,通過無線棧中低層無線消息中的時(shí)間戳,完全消除了CSMA協(xié)議中的接入時(shí)間,從而提供了較高的準(zhǔn)確性。FTSP通過線性回歸補(bǔ)償部分節(jié)點(diǎn)的時(shí)鐘扭曲能夠得到更高的準(zhǔn)確性。FTSP還采用了幾種機(jī)制來提高節(jié)點(diǎn)和鏈路失敗后的魯棒性,比如周期性地采用洪泛同步方式同步節(jié)點(diǎn)時(shí)鐘,由于FTSP對動(dòng)態(tài)拓?fù)涞倪m應(yīng)性和對不同時(shí)鐘扭曲的修正能力,成為事實(shí)上的WSN時(shí)鐘同步標(biāo)準(zhǔn),但和TPSN一樣,F(xiàn)TSP也無法消除本身收斂速度慢等限制。
GCS(Global clock synchronization)[5]中,每個(gè)節(jié)點(diǎn)依次向鄰居廣播自己的同步申請,鄰居依次回答并包含自己的本地消息,處于本次接收中心的節(jié)點(diǎn)從時(shí)間戳中計(jì)算一個(gè)平均值并向鄰居廣播,從而得到一個(gè)基準(zhǔn),一直重復(fù),直到全網(wǎng)同步,這種分布式的策略無法補(bǔ)償時(shí)鐘扭曲,不能從根本上解決時(shí)鐘同步的效率問題。
ATS(Average Time Synchronization)[6]使用兩種一致算法以調(diào)整補(bǔ)償參數(shù),聚集所有節(jié)點(diǎn)于一個(gè)穩(wěn)定的虛擬時(shí)鐘。ATS分為兩個(gè)階段,第一階段網(wǎng)絡(luò)中各節(jié)點(diǎn)廣播一個(gè)本地時(shí)間戳,用以估計(jì)相互間的時(shí)鐘扭曲率,然后廣播節(jié)點(diǎn)自身相對一個(gè)虛擬(實(shí)際存在)時(shí)鐘扭曲率的當(dāng)前估計(jì),并接收別的節(jié)點(diǎn)的扭曲估計(jì),從而調(diào)整它們實(shí)際的時(shí)鐘。在消除偏移錯(cuò)誤時(shí)也采用同樣的原則,這種分布式協(xié)議,收斂速度較慢,且與網(wǎng)絡(luò)拓樸結(jié)構(gòu)有關(guān),還需要進(jìn)行算法改進(jìn),以提高收斂速度和對網(wǎng)絡(luò)結(jié)構(gòu)的自適應(yīng)能力。
CCS(Consensus Clock Synchronization)[7]利用平均一致算法補(bǔ)償時(shí)鐘偏移,通過在每次偏移補(bǔ)償中消除累積偏移錯(cuò)誤,節(jié)點(diǎn)能夠從一致時(shí)間中獲得自己的時(shí)鐘扭曲,這一信息可以用于自身的糾正,從這一意義上說CCS是一種增強(qiáng)型的ATS,提供了一種分布式的解決方案,其缺點(diǎn)仍然是收斂速度不快。
本文的方法和CCS相近,是一種分布式的利用節(jié)點(diǎn)本地信息修正時(shí)鐘參數(shù)的算法,不同之處在于采用了指數(shù)方式逐次逼近的方式補(bǔ)償時(shí)鐘扭曲和偏移參數(shù),這樣能像集中式那樣收斂速度快,同時(shí)隨著網(wǎng)絡(luò)規(guī)模的增長收斂時(shí)間呈線性變化,且在消息丟失和節(jié)點(diǎn)失效時(shí)具有較高的可靠性。
2 數(shù)學(xué)準(zhǔn)備
為實(shí)現(xiàn)最終結(jié)果全網(wǎng)各節(jié)點(diǎn)逼近一個(gè)統(tǒng)一的值,合理的策略是找到一個(gè)基準(zhǔn)時(shí)鐘,對于相差較大的節(jié)點(diǎn)調(diào)整大,相差較小的節(jié)點(diǎn)調(diào)整小,保證向一個(gè)統(tǒng)一的時(shí)鐘逼近,最終實(shí)現(xiàn)同步。
為實(shí)現(xiàn)節(jié)點(diǎn)時(shí)鐘與基準(zhǔn)時(shí)鐘相差越大,所需的修正參數(shù)就越大。本算法采用修正參數(shù)與平均值的差值大小指數(shù)對應(yīng)關(guān)系,即越接近平均值的節(jié)點(diǎn)偏移,調(diào)整的修正參數(shù)越小。指數(shù)方式的調(diào)整方式能夠優(yōu)化節(jié)點(diǎn)調(diào)整的效率和可靠性,從而得到更佳的收斂速度和可靠性,設(shè)第某節(jié)點(diǎn)本身的偏移值為β,所需要逼近的值為 β-,λ=β-β-,設(shè)調(diào)整因子為γ=min(β,β-)max(β,β-),顯然0≤γ<1,則某節(jié)點(diǎn)所需調(diào)整的參數(shù)為:
調(diào)整因子和修正值關(guān)系如圖1所示,當(dāng)調(diào)整因子越大,表明與標(biāo)準(zhǔn)值越接近,所調(diào)整的比例便越小,即節(jié)點(diǎn)與標(biāo)準(zhǔn)值差值λ為0時(shí),節(jié)點(diǎn)不需要對自己的值作任何改動(dòng),而節(jié)點(diǎn)自身值與平均值相差越大時(shí),節(jié)點(diǎn)所需調(diào)整的參數(shù)越大。在實(shí)際執(zhí)行時(shí),可以設(shè)置λ′的一個(gè)閾值RT,使得需要調(diào)整的數(shù)值在某一范圍內(nèi)時(shí),即 λ′小于某一規(guī)定值時(shí),節(jié)點(diǎn)可在一定時(shí)間內(nèi)不調(diào)整,這樣可以在很大程度上避免由于某個(gè)新的節(jié)點(diǎn)參數(shù)與別的節(jié)點(diǎn)參數(shù)相差太大時(shí),導(dǎo)致整個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)調(diào)整的情況。RT值的設(shè)置與網(wǎng)絡(luò)規(guī)模對同步收斂速度的要求有關(guān)。
圖1 調(diào)整因子和修正值關(guān)系圖
3 算法實(shí)現(xiàn)
3.1 時(shí)鐘模型
WSN中各節(jié)點(diǎn)的時(shí)鐘主要包括一個(gè)統(tǒng)一的基準(zhǔn)時(shí)鐘,一個(gè)相對于基準(zhǔn)時(shí)鐘的偏移,和由于時(shí)鐘頻率不一致而導(dǎo)致的扭曲。定義c(t)為一個(gè)參考時(shí)鐘,是一個(gè)統(tǒng)一穩(wěn)定的基準(zhǔn)值。每個(gè)節(jié)點(diǎn)有自己的時(shí)鐘,是一個(gè)關(guān)于t的函數(shù)ci(t),每個(gè)節(jié)點(diǎn)的本地時(shí)鐘相對基準(zhǔn)時(shí)鐘的偏移是指由于長期累積而導(dǎo)致的時(shí)鐘不一致,扭曲是指由于石英晶體振蕩器振蕩頻率不一致,從而導(dǎo)致了時(shí)鐘與基準(zhǔn)時(shí)鐘之間存在差別。
設(shè)兩個(gè)節(jié)點(diǎn)的時(shí)鐘分別為ci(t)和cj(t),如果時(shí)鐘在時(shí)間t完全正確,則ci(t)=cj(t)=c(t),但是在實(shí)際中兩個(gè)時(shí)鐘往往是不相等的。這是由于晶體振蕩器本身技術(shù)原因和外部工作環(huán)境(如溫度、壓力)等因素引起的,因此,t時(shí)刻每個(gè)節(jié)點(diǎn)的時(shí)鐘模型為:ci(t)=αit+βi,其中αi為晶體振蕩器自身頻率的不一致而帶來的扭曲,βi為時(shí)鐘長期積累的偏移。
為達(dá)到時(shí)鐘一致,最關(guān)鍵的問題是使得任何節(jié)點(diǎn)的ci(t)=c(t),即補(bǔ)償時(shí)鐘的扭曲αi和時(shí)鐘偏移βi,在任何時(shí)刻各節(jié)點(diǎn)的時(shí)鐘不再偏移,且振蕩頻率也完全一致。
3.2 算法實(shí)現(xiàn)
TSMA要達(dá)到的目標(biāo)是內(nèi)部一致。在每個(gè)同步循環(huán),算法更新每個(gè)節(jié)點(diǎn)的補(bǔ)償參數(shù),通過這樣的方式使時(shí)鐘達(dá)到一致:limt→∞ci(t)=cv(t)。其中cv(t)是本算法的虛擬時(shí)鐘,虛擬時(shí)鐘并不是一個(gè)現(xiàn)實(shí)中存在的時(shí)鐘,而是所有節(jié)點(diǎn)以之為基準(zhǔn)的一個(gè)時(shí)鐘,是由本算法在運(yùn)行過程中產(chǎn)生的。虛擬時(shí)鐘有相對于實(shí)際時(shí)鐘的扭曲率和相對偏移。各節(jié)點(diǎn)對本節(jié)點(diǎn)扭曲和偏移進(jìn)行補(bǔ)償,從而同步于虛擬時(shí)鐘,實(shí)現(xiàn)全網(wǎng)同步。
設(shè)虛擬時(shí)鐘為cv(t)=α·t+β,為使得各節(jié)點(diǎn)時(shí)鐘最后同步于虛擬時(shí)鐘,需要采用修正參數(shù),設(shè)對于扭曲的修正參數(shù)為α′,對于偏移的修正參數(shù)為β′,則運(yùn)行過程中,通過修正參數(shù)使得時(shí)鐘保持一致的條件為:limt→∞(α′ci(t)+β′)=cv(t)=α·t+β,即limt→∞(α′ αit+α′βi+β′)=α·t+β,由此可得到修正參數(shù)為:
為得到補(bǔ)償各節(jié)點(diǎn)的時(shí)鐘扭曲和偏移,每個(gè)節(jié)點(diǎn)在算法執(zhí)行周期內(nèi)完成對兩種參數(shù)的修正。修正主要包括兩個(gè)過程:第一個(gè)過程為扭曲修正,通過修正扭曲值使得節(jié)點(diǎn)與虛擬時(shí)鐘頻率一致;第二個(gè)過程為偏移修正,通過修正偏移值確保全網(wǎng)時(shí)鐘同步。
3.2.1 扭曲修正
扭曲修正的目的是確保時(shí)鐘在相同的振蕩頻率下工作,即limt→∞α′αi=α。對扭曲參數(shù)的修正采用指數(shù)逼近的方式,以將所有的時(shí)鐘扭曲趨近于α,每個(gè)節(jié)點(diǎn)執(zhí)行的算法如下:
?、?運(yùn)行同步算法前,節(jié)點(diǎn)設(shè)置扭曲估計(jì)αi為1,同時(shí)準(zhǔn)備搜索鄰居節(jié)點(diǎn)的時(shí)鐘扭曲信息。
?、?由于各節(jié)點(diǎn)并不一定知道鄰居節(jié)點(diǎn)的存在,在節(jié)點(diǎn)廣播自己的時(shí)鐘信息時(shí),有可能別的節(jié)點(diǎn)也在廣播時(shí)鐘信息,從而導(dǎo)致廣播失敗,因此在MAC層需要一個(gè)類似CSMA/CD的協(xié)議,以確保各節(jié)點(diǎn)能正確廣播自己的時(shí)鐘信息。
?、?設(shè)共有n個(gè)節(jié)點(diǎn),第i(1≤i≤n)個(gè)節(jié)點(diǎn)存儲(chǔ)并廣播自己的時(shí)間信息(αi,Ti),其中Ti為本節(jié)點(diǎn)當(dāng)前時(shí)間值,由于節(jié)點(diǎn)距離和傳輸速度是已知的,所以接收到廣播的節(jié)點(diǎn)根據(jù)Ti確定接收時(shí)的時(shí)間是可行的。
?、?節(jié)點(diǎn)i收到第j(1≤j≤n)個(gè)節(jié)點(diǎn)的廣播包,包含了節(jié)點(diǎn)j的時(shí)間信息(αi,Tj),如果第j個(gè)節(jié)點(diǎn)是第1次出現(xiàn),則節(jié)點(diǎn)i只存儲(chǔ)節(jié)點(diǎn)j的時(shí)間信息,直到收到節(jié)點(diǎn)j的下一個(gè)時(shí)間信息(αj+1,Tj+1)。
⑤ 此時(shí)比較節(jié)點(diǎn)i和節(jié)點(diǎn)j的扭曲,計(jì)算R1=αi(Tj+1-Tj)和R2=αj(Ti+1-Ti),若R1》R2,則需要對節(jié)點(diǎn)i的扭曲率進(jìn)行修正,設(shè)兩者的差值為λi=αi-αj,調(diào)整因子為σ=min(αi,αj)max(αi,αj),設(shè)置扭曲率和校正值為λ′i=λi(e-eσ)(e- 1),設(shè)置修正值調(diào)整的閾值RT,當(dāng)節(jié)點(diǎn)i首次出現(xiàn)λ′i低于閾值要求時(shí)不作調(diào)整,以避免部分失效節(jié)點(diǎn)重新進(jìn)入網(wǎng)絡(luò)時(shí)對鄰居節(jié)點(diǎn)造成影響。則節(jié)點(diǎn)i新的扭曲值為
則αi=α,同時(shí)保留最新的節(jié)點(diǎn)i和節(jié)點(diǎn)j的時(shí)間信息T,即Ti=Ti+1,Tj=Tj+1。
⑥ 節(jié)點(diǎn)重復(fù)步驟②~⑤,直到R1=R2,兩節(jié)點(diǎn)扭曲率一致,此時(shí)節(jié)點(diǎn)已經(jīng)更新了自己的時(shí)鐘扭曲率,只需要保持偏移一致,即可達(dá)到時(shí)鐘同步。
3.2.2 偏移修正
修正完扭曲率后,需要對偏移進(jìn)行修正,以達(dá)到節(jié)點(diǎn)時(shí)鐘同步。修正偏移值的關(guān)鍵是找到合適的偏移值,使得各節(jié)點(diǎn)能夠同步到一個(gè)統(tǒng)一的偏移值,從而統(tǒng)一于一個(gè)虛擬的時(shí)鐘。設(shè)每個(gè)節(jié)點(diǎn)的偏移值為βi,1≤i≤n,則節(jié)點(diǎn)i在接收到鄰居節(jié)點(diǎn)的偏移值后,很容易得到一個(gè)平均值β-1n∑ni=1βi,顯然這一平均值即為要找的虛擬時(shí)鐘的偏移值,當(dāng)各節(jié)點(diǎn)同步于這一偏移值,便實(shí)現(xiàn)了全網(wǎng)時(shí)鐘同步。由于部分節(jié)點(diǎn)的時(shí)鐘偏移值較大,同時(shí)每次更新的節(jié)點(diǎn)為一跳內(nèi)的節(jié)點(diǎn),采用一次調(diào)整偏移值至平均值的方法并不能以最快的速度使得全網(wǎng)節(jié)點(diǎn)偏移同步,而采用逐次指數(shù)逼近的方式,對偏移相差較大的節(jié)點(diǎn)修正參數(shù)較大,偏移相差較小的節(jié)點(diǎn)修正參數(shù)較小,使得全網(wǎng)所有節(jié)點(diǎn)逼近統(tǒng)一的偏移值。本算法采用了如下步驟:
?、?節(jié)點(diǎn)i首先估計(jì)自己的偏移值βi,1≤i≤n,并開始收聽廣播,和扭曲修正一樣,廣播已經(jīng)考慮了沖突避免。
?、?節(jié)點(diǎn)收集一跳內(nèi)的鄰居偏移值,得到偏移平均值β-1n∑ni=1βi。
③ 節(jié)點(diǎn)i計(jì)算與平均偏移值的差值λi=βi-β-,設(shè)調(diào)整因子為γi=min(βi,β-)max(βi,β-),顯然0≤γi≤1,則某節(jié)點(diǎn)所需調(diào)整的參數(shù)為λ′i=λi(e-eγi)(e-1)。設(shè)置修正值調(diào)整的閾值RT,當(dāng)節(jié)點(diǎn)i首次出現(xiàn)λ′i低于閾值要求時(shí)不作調(diào)整,以避免部分失效節(jié)點(diǎn)重新進(jìn)入網(wǎng)絡(luò)時(shí)對鄰居節(jié)點(diǎn)的影響。新的偏移值為
則βi=β,節(jié)點(diǎn)i采用指數(shù)逼近的方法,逐次向平均值逼近。
?、?節(jié)點(diǎn)i再次收聽鄰居節(jié)點(diǎn)廣播,重復(fù)步驟②③,直到λi=βi-β-低于設(shè)定值,實(shí)現(xiàn)了全網(wǎng)同步。
由于指數(shù)逼近的方式在節(jié)點(diǎn)偏移相差較大時(shí)調(diào)整較大,節(jié)點(diǎn)偏移相差較小時(shí)調(diào)整較小,適用于網(wǎng)絡(luò)中有新節(jié)點(diǎn)出現(xiàn)時(shí)導(dǎo)致偏移相差較大的情況。采用指數(shù)逼近方式后,與平均值誤差較大的節(jié)點(diǎn)調(diào)整大,加快了收斂速度,與平均值相差小的節(jié)點(diǎn)調(diào)整小,控制了向鄰居節(jié)點(diǎn)擴(kuò)散偏移調(diào)整的范圍。同時(shí),在全網(wǎng)節(jié)點(diǎn)偏移一致后,指數(shù)逼近的方式使得節(jié)點(diǎn)調(diào)整幅度小,避免了由于某一個(gè)時(shí)鐘節(jié)點(diǎn)失誤而帶來的大范圍時(shí)鐘偏移調(diào)整,保證了全網(wǎng)時(shí)鐘同步的穩(wěn)定性。
4 仿真
本文采用指數(shù)逼近的方式調(diào)整各節(jié)點(diǎn)時(shí)鐘扭曲和偏移參數(shù),使得各節(jié)點(diǎn)修正時(shí)鐘扭曲和偏移,最終同步于一個(gè)統(tǒng)一的時(shí)鐘,為顯示算法有效性和可靠性,用 Matlab進(jìn)行了仿真。仿真環(huán)境為在8×8的格狀網(wǎng)絡(luò)里放置64個(gè)節(jié)點(diǎn),每個(gè)格子包含一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)處于每個(gè)格子的中央?yún)^(qū)域,設(shè)每個(gè)節(jié)點(diǎn)用于校準(zhǔn)的晶振參考值是32 768 Hz,即一個(gè)振蕩周期為30.5 μs,小于一個(gè)周期的時(shí)鐘誤差是無法識(shí)別的,因此用1 tick =30.5 μs來表示時(shí)鐘誤差的最小單位。每個(gè)節(jié)點(diǎn)的扭曲率服從平均值為1、方差為10-5的正態(tài)分布,節(jié)點(diǎn)的初始偏移在0~1000隨機(jī)分布。具體得到:節(jié)點(diǎn)扭曲 ——平均值為1,方差為10-5的正態(tài)分布,即N(1,10-5);初始偏移——在0~1000 tick間隨機(jī)分布。
在運(yùn)行過程中,每個(gè)節(jié)點(diǎn)運(yùn)行扭曲和偏移的修正協(xié)議,網(wǎng)絡(luò)中沒有一個(gè)實(shí)際的基準(zhǔn)時(shí)鐘,而是在運(yùn)行過程中逐漸收斂到一個(gè)統(tǒng)一的時(shí)鐘,從而實(shí)現(xiàn)節(jié)點(diǎn)同步。
設(shè)同步每個(gè)循環(huán)周期為30 s,節(jié)點(diǎn)在每個(gè)循環(huán)期間隨機(jī)廣播自己的同步幀,節(jié)點(diǎn)的傳輸距離為2個(gè)單位,即節(jié)點(diǎn)距離相差不超過2時(shí)可以收到對方消息。為避免網(wǎng)絡(luò)穩(wěn)定運(yùn)行時(shí)部分偏差較大的節(jié)點(diǎn)導(dǎo)致網(wǎng)絡(luò)中大部分節(jié)點(diǎn)同時(shí)調(diào)整參數(shù),仿真中對首次出現(xiàn)的調(diào)整參數(shù)低于10%的修正參數(shù)不作調(diào)整。為驗(yàn)證本算法的對多種網(wǎng)絡(luò)拓?fù)涞倪m應(yīng)性,設(shè)置了不同的網(wǎng)絡(luò)狀況,以檢驗(yàn)算法的有效性和可靠性。
圖2演示了節(jié)點(diǎn)使用本算法在網(wǎng)絡(luò)運(yùn)行初期、穩(wěn)定工作狀態(tài)、部分節(jié)點(diǎn)忽然失效或主動(dòng)停止工作時(shí)的性能。每個(gè)同步周期設(shè)置為30 s。仿真持續(xù)時(shí)間為30 min,分為A、B、C、D四個(gè)不同區(qū)域。區(qū)域A所有節(jié)點(diǎn)均工作,由于各節(jié)點(diǎn)運(yùn)行本算法前時(shí)鐘偏差較大,前3個(gè)同步階段,節(jié)點(diǎn)根據(jù)收到的偏移值調(diào)整參數(shù),偏移校正效果不明顯,從第3個(gè)周期開始,節(jié)點(diǎn)開始補(bǔ)償時(shí)鐘偏移和扭曲,經(jīng)過9個(gè)循環(huán)周期的補(bǔ)償,所有節(jié)點(diǎn)到達(dá)同步狀態(tài),即任意兩節(jié)點(diǎn)間的時(shí)鐘偏差在10個(gè)節(jié)拍以內(nèi)。在區(qū)域B的開始階段,50%的節(jié)點(diǎn)選擇隨機(jī)關(guān)閉,又隨機(jī)工作,一但一個(gè)節(jié)點(diǎn)打開,即開始運(yùn)用本算法,因?yàn)椴捎弥笖?shù)逼近的方式,節(jié)點(diǎn)一但開始工作時(shí)即開始執(zhí)行本算法,由于大部分節(jié)點(diǎn)已經(jīng)同步,新加入的節(jié)點(diǎn)的時(shí)鐘調(diào)整不會(huì)對已經(jīng)同步的節(jié)點(diǎn)造成影響,由圖中可以看出節(jié)點(diǎn)能夠在開始工作后迅速進(jìn)入同步狀態(tài)。在區(qū)域C中,30%的節(jié)點(diǎn)停止工作。在區(qū)域D,這30%的節(jié)點(diǎn)開始工作,由于沒有時(shí)鐘調(diào)整,剛開始工作時(shí)與別的節(jié)點(diǎn)時(shí)鐘無法同步,此時(shí)能夠看到,各節(jié)點(diǎn)開始工作后時(shí)鐘很快收斂,實(shí)現(xiàn)了全網(wǎng)時(shí)鐘同步。
圖2 動(dòng)態(tài)網(wǎng)絡(luò)下時(shí)鐘同步的性能
結(jié)語
從WSN時(shí)鐘同步的發(fā)展趨勢來看,隨著WSN節(jié)點(diǎn)數(shù)量的增加,采用基于本地信息的分布式同步策略,能夠提高WSN節(jié)點(diǎn)工作效率和穩(wěn)定性。本算法在動(dòng)態(tài)網(wǎng)絡(luò)結(jié)構(gòu)下實(shí)現(xiàn)了較快的收斂速度,未來的工作集中在網(wǎng)絡(luò)穩(wěn)定運(yùn)行后如何減少由于時(shí)鐘同步帶來的非必要消耗,從而提高節(jié)點(diǎn)生存時(shí)間和網(wǎng)絡(luò)生命周期。
評論
查看更多