林雄民,楊劍鋒,郭成城,何澤瑞
(武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430072)
基于TDMA的工業(yè)無線網(wǎng)時(shí)間同步算法改進(jìn)與實(shí)現(xiàn)
林雄民,楊劍鋒,郭成城,何澤瑞
(武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430072)
摘要:基于TDMA機(jī)制的MAC層接入?yún)f(xié)議在工業(yè)控制網(wǎng)絡(luò)的實(shí)時(shí)性保證方面具有極大的優(yōu)勢(shì)。然而要保證該機(jī)制微秒級(jí)的時(shí)隙調(diào)度,網(wǎng)絡(luò)中所有的節(jié)點(diǎn)必須保持時(shí)間同步的高精度。針對(duì)現(xiàn)有的一些同步算法并不能完全滿足這種高精度時(shí)間同步要求的問題,在傳統(tǒng)的時(shí)間同步算法基礎(chǔ)上,添加時(shí)鐘漂移預(yù)測(cè)與補(bǔ)償機(jī)制,改進(jìn)得到一種具有同步精度高、能量消耗低等優(yōu)點(diǎn)的同步算法——ITR(Improved Wireless Sensor Networks Time Synchronization Algorithm Based On TPSN and RBS),并在RouterBOARD493G路由節(jié)點(diǎn)上進(jìn)行實(shí)驗(yàn)測(cè)試。實(shí)驗(yàn)結(jié)果表明ITR同步算法的平均同步誤差比傳統(tǒng)同步算法降低了約52%。
關(guān)鍵詞:TDMA;時(shí)間同步算法;時(shí)鐘漂移;ITR;ath9k
IEEE802.11協(xié)議標(biāo)準(zhǔn)是由IEEE(國際電氣和電子工程協(xié)會(huì))制定于1997年的無線局域網(wǎng)絡(luò)標(biāo)準(zhǔn),因其高速靈活的特點(diǎn)而成為工業(yè)無線控制網(wǎng)的首選技術(shù)[1]。然而該協(xié)議標(biāo)準(zhǔn)在數(shù)據(jù)鏈路層采用載波偵聽多路訪問/沖突退避(CarrierSenseMultipleAccesswithCollisionAvoidance,CSMA/CA)通信機(jī)制。雖然CSMA機(jī)制具有高靈活性和高能量效率等特點(diǎn),但其采用信道檢測(cè)沖突退避的機(jī)制難以保證通信時(shí)延。TDMA機(jī)制的無競(jìng)爭信道接入方式可以有效地提高信道利用率,避免碰撞沖突,保障嚴(yán)格的時(shí)延要求[2]。在TDMA機(jī)制能夠進(jìn)一步地應(yīng)用于現(xiàn)代工業(yè)控制網(wǎng)絡(luò)的過程中,時(shí)間同步算法起到了重要作用。
時(shí)間同步算法一般有3類:參考廣播時(shí)間同步算法(如RBS算法等)、雙向時(shí)間同步算法(如TPSN算法等)和單向時(shí)間同步算法(如FTSP算法、DMTS算法等)[3]。這3種同步算法適用的場(chǎng)景不同,各方面也有所差異。
在RBS(ReferenceBroadcastSynchronization)算法的過程中,同步并不是在發(fā)送節(jié)點(diǎn)與接收節(jié)點(diǎn)之間進(jìn)行,而是在被動(dòng)接收的節(jié)點(diǎn)之間進(jìn)行,發(fā)送同步消息報(bào)文的節(jié)點(diǎn)并不是全網(wǎng)的標(biāo)準(zhǔn)同步源,接收節(jié)點(diǎn)收到消息包后立即記錄本地時(shí)鐘值,然后根據(jù)該時(shí)間值來判斷計(jì)算待同步節(jié)點(diǎn)間的時(shí)間偏差,兩個(gè)進(jìn)行同步的節(jié)點(diǎn)中的一個(gè)根據(jù)時(shí)間偏差值來調(diào)整本地時(shí)鐘來實(shí)現(xiàn)同步[4]。
然而RBS算法具有同步精度不高、在大規(guī)模多跳網(wǎng)絡(luò)中擴(kuò)展性不好等缺點(diǎn),而且由于在實(shí)際應(yīng)用中發(fā)送節(jié)點(diǎn)也需要進(jìn)行同步,必須尋找網(wǎng)絡(luò)中另一節(jié)點(diǎn)作為發(fā)送節(jié)點(diǎn),造成了同步的復(fù)雜度和能耗提高。
TPSN(Timing-syncProtocolforSensorNetworks)算法的核心思想是,為網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)分配具有唯一性的ID號(hào),節(jié)點(diǎn)間的時(shí)間同步通過雙向交換帶時(shí)間值的消息來進(jìn)行[5]。在網(wǎng)絡(luò)中,以一個(gè)根節(jié)點(diǎn)的時(shí)鐘作為全網(wǎng)的基準(zhǔn)時(shí)鐘,所有子節(jié)點(diǎn)的時(shí)間都和根節(jié)點(diǎn)的時(shí)間保持同步。TPSN算法的同步過程可以分為層次發(fā)現(xiàn)階段與時(shí)間同步階段。TPSN算法采用在同步消息即將要發(fā)往無線信道的時(shí)候才在MAC層添加時(shí)間戳的方式,來消除由訪問時(shí)間帶來的時(shí)間同步延遲,實(shí)現(xiàn)更高的同步精度。此外,TPSN算法還消除或降低了傳播時(shí)間延遲和接收時(shí)間延遲,進(jìn)一步提高了同步精度。
但是TPSN算法最大缺陷就是,如果根節(jié)點(diǎn)失效,網(wǎng)絡(luò)的時(shí)間同步將無法進(jìn)行。此外,當(dāng)有新的節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí),需要對(duì)整個(gè)網(wǎng)絡(luò)重新進(jìn)行分層,在能耗極大增加的同時(shí),算法穩(wěn)定性也降低了[6]。
因此,本文在RBS算法和TPSN算法的基礎(chǔ)上,添加了時(shí)鐘漂移預(yù)測(cè)和在非同步周期進(jìn)行補(bǔ)償?shù)臋C(jī)制,并在能量消耗、同步精度及穩(wěn)定性方面做出一些優(yōu)化,改進(jìn)得到了適用于多跳網(wǎng)絡(luò)的時(shí)間同步算法——ITR(ImprovedWirelessSensorNetworksTimeSynchronizationAlgorithmBasedOnTPSNandRBS)。通過在硬件平臺(tái)RB494G上進(jìn)行實(shí)驗(yàn)測(cè)試,驗(yàn)證了ITR算法的高同步精度和高能耗效率。
1改進(jìn)的時(shí)間同步算法ITR
ITR算法通過加入時(shí)鐘漂移預(yù)測(cè)與補(bǔ)償機(jī)制,適當(dāng)增大了同步周期,在提高算法同步精度的同時(shí),也降低了節(jié)點(diǎn)能耗。該算法的實(shí)現(xiàn)過程分兩個(gè)階段:網(wǎng)絡(luò)分層階段和時(shí)間同步階段。
1.1網(wǎng)絡(luò)分層階段
該階段的主要目的是使網(wǎng)絡(luò)形成一個(gè)多層次的拓?fù)浣Y(jié)構(gòu),為每個(gè)節(jié)點(diǎn)分配一個(gè)層次號(hào)。首先,選取某一個(gè)節(jié)點(diǎn)作為根節(jié)點(diǎn),并為該節(jié)點(diǎn)分配一個(gè)層次號(hào)0。然后該節(jié)點(diǎn)廣播分層消息報(bào)文,報(bào)文中包含該節(jié)點(diǎn)的ID和層次號(hào)。當(dāng)根節(jié)點(diǎn)廣播范圍之內(nèi)的其他子節(jié)點(diǎn)收到消息報(bào)文時(shí),提取出其中的層次號(hào),并檢查本節(jié)點(diǎn)是否已經(jīng)擁有層次號(hào)。如果沒有,就將提取得到的層次號(hào)加上1作為本節(jié)點(diǎn)的層次號(hào);如果有,并且本節(jié)點(diǎn)的層次號(hào)比提取得到的層次號(hào)小1,則將發(fā)送消息的節(jié)點(diǎn)的ID添加到子節(jié)點(diǎn)表中;如果有,并且層次號(hào)比提取得到的層次號(hào)大或者相等,那么就不做處理。重復(fù)以上過程,最后整個(gè)網(wǎng)絡(luò)形成了一個(gè)樹型的多層次拓?fù)浣Y(jié)構(gòu),且每個(gè)非葉子節(jié)點(diǎn)都有自己廣播范圍內(nèi)的下層子節(jié)點(diǎn)的ID號(hào),如圖1所示。
圖1 層次生成樹
當(dāng)新節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí),ITR算法不需要對(duì)網(wǎng)絡(luò)重新進(jìn)行分層。新節(jié)點(diǎn)向樹型拓?fù)渚W(wǎng)廣播包含本節(jié)點(diǎn)ID的層次號(hào)請(qǐng)求消息,鄰居節(jié)點(diǎn)接收到該請(qǐng)求包后,將回復(fù)一個(gè)響應(yīng)消息,該消息中含有本節(jié)點(diǎn)的ID和層次號(hào)。新節(jié)點(diǎn)收到響應(yīng)消息以后,提取其中的層次號(hào),并將層次號(hào)最小的節(jié)點(diǎn)作為父節(jié)點(diǎn),從而完成新節(jié)點(diǎn)加入到原本穩(wěn)定的拓?fù)渚W(wǎng)絡(luò)中。
1.2時(shí)間同步階段
本階段采用發(fā)送端—接收端雙向交換時(shí)間值的方式來計(jì)算時(shí)間偏差,然后根節(jié)點(diǎn)通過單向參考廣播的方式向下層的子節(jié)點(diǎn)廣播時(shí)間偏差值,子節(jié)點(diǎn)根據(jù)偏差值進(jìn)行相應(yīng)修改。同步逐層進(jìn)行,直至全網(wǎng)節(jié)點(diǎn)都完成與根節(jié)點(diǎn)的同步。首先,根節(jié)點(diǎn)選擇與一個(gè)最近的子節(jié)點(diǎn)來進(jìn)行雙向同步(例如圖1中的根節(jié)點(diǎn)A選擇與子節(jié)點(diǎn)C進(jìn)行同步),以減小節(jié)點(diǎn)間的物理距離引起的傳輸延遲,提升同步精度。根節(jié)點(diǎn)向網(wǎng)絡(luò)廣播同步分組報(bào)文,該報(bào)文的信息包含有根節(jié)點(diǎn)的ID、層次號(hào)、指定應(yīng)答的子節(jié)點(diǎn)ID和根節(jié)點(diǎn)的發(fā)送時(shí)間值T1。在根節(jié)點(diǎn)廣播范圍里所有的一跳子節(jié)點(diǎn)收到了該消息后,記錄接收到該消息時(shí)的本地時(shí)間值T2'。但是只有消息中指定ID的子節(jié)點(diǎn)進(jìn)行應(yīng)答,應(yīng)答消息中包含該子節(jié)點(diǎn)ID、層次號(hào)、時(shí)間值T1、時(shí)間值T2(該應(yīng)答子節(jié)點(diǎn)收到廣播同步消息報(bào)文時(shí)的本地時(shí)鐘值)以及發(fā)送應(yīng)答消息時(shí)的本地時(shí)間值T3。根節(jié)點(diǎn)收到應(yīng)答消息后,記錄下本地時(shí)間值T4。于是根節(jié)點(diǎn)就得到4個(gè)時(shí)間值:T1,T2,T3和T4。
根節(jié)點(diǎn)計(jì)算節(jié)點(diǎn)時(shí)間偏差值Offset與傳播延遲Delay的過程如圖2所示,其中用D表示傳播時(shí)延,用F表示時(shí)間偏差。
圖2 雙向時(shí)鐘同步算法原理
由關(guān)系式T1+D+F=T2與T3+D-F=T4可得到
(1)
(2)
接著,根節(jié)點(diǎn)再向網(wǎng)絡(luò)廣播一個(gè)同步消息包,該消息中含有該節(jié)點(diǎn)的ID、時(shí)間值T2和式(2)所計(jì)算得到的時(shí)間偏差F。一跳范圍內(nèi)的子節(jié)點(diǎn)根據(jù)該消息包中的時(shí)間偏差值F來調(diào)整本地時(shí)鐘。每個(gè)子節(jié)點(diǎn)將消息中提取得到的T2值與之前記錄下的T2′值進(jìn)行比較,得到一個(gè)參考性的時(shí)間差值F′=T2′-T2,F(xiàn)′表示本節(jié)點(diǎn)與同層次中被指定應(yīng)答的節(jié)點(diǎn)的時(shí)鐘偏差,最后一跳范圍內(nèi)所有的子節(jié)點(diǎn)修改本地時(shí)鐘值為T-F-F′,T為修改前的本地時(shí)鐘值。使用同樣的方法,最后網(wǎng)絡(luò)中的所有子節(jié)點(diǎn)都與根節(jié)點(diǎn)完成了同步。
1.3時(shí)鐘漂移估計(jì)與補(bǔ)償
一般的時(shí)間同步算法(如TPSN、RBS算法)僅能保證在同步時(shí)刻的精度,卻沒有考慮非同步周期內(nèi)時(shí)鐘漂移的影響[7]。為保證節(jié)點(diǎn)同步間隙內(nèi)的時(shí)間同步的準(zhǔn)確性,本文的ITR算法加入了時(shí)鐘漂移的估計(jì)與補(bǔ)償技術(shù)。同步節(jié)點(diǎn)根據(jù)之前接收到的時(shí)鐘偏差值F來動(dòng)態(tài)地估算下一次同步操作時(shí)刻的時(shí)鐘偏移量,并且在非同步周期內(nèi)根據(jù)該估算值進(jìn)行補(bǔ)償,從而有效地控制時(shí)間誤差在兩次同步之間的自由增長,進(jìn)一步提高精度。此外,這一技術(shù)使節(jié)點(diǎn)的時(shí)間同步不需要完全按照同步周期進(jìn)行,在不影響正常通信的前提下,可適當(dāng)增大同步周期,以減少節(jié)點(diǎn)的同步信息發(fā)送量,降低能耗,延長節(jié)點(diǎn)的壽命。
本文采用加權(quán)平均的方式來估算時(shí)鐘偏移量,即距離當(dāng)前時(shí)刻越遠(yuǎn)的時(shí)間偏差的權(quán)重越小,而距離當(dāng)前時(shí)刻越近的時(shí)間偏差權(quán)重越大。同步節(jié)點(diǎn)根據(jù)估算得到的下次同步操作時(shí)的時(shí)鐘偏差量,再根據(jù)本地的時(shí)間值和同步周期來做補(bǔ)償[8]。
(3)
式中:x表示權(quán)值,其大小關(guān)系滿足xN>xN-1>…>x3>x2>x1且xN+xN-1+…+x3+x2+x1=1。
通過上式估算出的時(shí)鐘漂移值,在非同步周期完成時(shí)鐘補(bǔ)償。補(bǔ)償?shù)姆椒ㄊ?/p>
(4)
2ITR時(shí)間同步算法的實(shí)現(xiàn)
2.1ITR時(shí)間同步算法的程序流程
2.1.1根節(jié)點(diǎn)
根節(jié)點(diǎn)開機(jī)啟動(dòng)后進(jìn)行系統(tǒng)初始化,然后完成網(wǎng)絡(luò)分層和時(shí)間同步。具體流程如圖3所示。
圖3 根節(jié)點(diǎn)同步流程
2.1.2子節(jié)點(diǎn)
子節(jié)點(diǎn)先判斷是否加入了網(wǎng)絡(luò)中,即檢查是否擁有一個(gè)層次號(hào)。如果沒有,就向網(wǎng)絡(luò)發(fā)送一個(gè)層次號(hào)請(qǐng)求包,進(jìn)行加入網(wǎng)絡(luò)的過程。接著進(jìn)行同步過程,具體流程如圖4所示。
圖4 子節(jié)點(diǎn)同步流程
2.2修改ath9k網(wǎng)卡驅(qū)動(dòng)實(shí)現(xiàn)ITR時(shí)間同步算法
ITR時(shí)間同步算法的實(shí)現(xiàn)采用的是硬件時(shí)間戳法。Atheros無線網(wǎng)卡芯片自帶TSF定時(shí)器,它是一個(gè)64bit的定時(shí)器,工作頻率1MHz,每計(jì)一次數(shù)的時(shí)間是1μs。為了達(dá)到時(shí)間同步的要求,發(fā)送端應(yīng)能夠在其物理層信標(biāo)幀上的24~31byte打上時(shí)間戳,即TSF定時(shí)器的計(jì)數(shù)值。而接收端則提取出信標(biāo)幀內(nèi)包含的TSF值的低32位并記錄下來。在實(shí)現(xiàn)雙向時(shí)間同步算法時(shí),通過帶有TSF值的beacon幀來完成時(shí)間戳值的交換,然后計(jì)算時(shí)間偏差值,所以需要對(duì)beacon幀的結(jié)構(gòu)做出相應(yīng)的修改。
對(duì)于根節(jié)點(diǎn),需要在發(fā)送時(shí)間同步信息時(shí)附需帶本節(jié)點(diǎn)的時(shí)間值,即在廣播beacon幀時(shí),需要在幀結(jié)構(gòu)的可添加字段上添加TSF計(jì)數(shù)值。這可以通過修改OpenWrt路由操作系統(tǒng)ath9k驅(qū)動(dòng)中beacon.c文件下的ath9k_beacon_generate函數(shù)及ath9k_beacon_tasklet函數(shù)來實(shí)現(xiàn)。先增加一個(gè)structath_hw*ah函數(shù)參數(shù),再在函數(shù)中添加提取得到的TSF值到timestamp時(shí)戳中:
mgmt_hdr->u.beacon.timestamp=cpu_to_le64(ath9k_hw_gettsf64(ah))
這其中的ath9k_hw_gettsf64函數(shù)用于獲取本地的TSF定時(shí)器計(jì)數(shù)值[9]。
對(duì)于參與同步的子節(jié)點(diǎn),在收到根節(jié)點(diǎn)廣播的beacon同步信息幀時(shí),首先通過if(ID_num== 0x01)檢查該幀是否來自根節(jié)點(diǎn)。這里通過ID號(hào)來過濾識(shí)別,只對(duì)目標(biāo)根節(jié)點(diǎn)的beacon幀進(jìn)行處理。之后提取出beacon幀中的數(shù)據(jù)以及時(shí)間偏差值:
u64q_tsf0 = 0;
structieee80211_mgmt*mgmt= (void*)skb->data;
q_tsf0=le64_to_cpu(mgmt->u.beacon.timestamp);
最后重置本地的TSF定時(shí)器計(jì)數(shù)值:
ath9k_hw_settsf64(ah,q_tsf0);
其中ath9k_hw_settsf64函數(shù)的功能是通過對(duì)硬件寄存器寫入來完成重置TSF計(jì)數(shù)值。
上文中提出的時(shí)鐘漂移估計(jì)與補(bǔ)償機(jī)制,也是在底層驅(qū)動(dòng)ath9k中實(shí)現(xiàn)的。下面的Clock_Drift_Prediction和Clock_Modify偽代碼分別實(shí)現(xiàn)時(shí)鐘漂移估計(jì)和時(shí)鐘漂移補(bǔ)償。
u64Clock_Drift_Prediction(u64F[],intn)
處理之前得到的n個(gè)時(shí)鐘偏差值
{
intF_sum= 0;
for(inti=0;i { F_sum=F_sum+F[i] *pow(1/2,n+1-i); } u64F_Pre=F_sum/n; returnF_Pre; } Clock_Drift_Prediction中的時(shí)鐘漂移預(yù)測(cè)權(quán)值的基準(zhǔn)為1/2,最近的權(quán)值(即最大權(quán)值)為1/2,下一個(gè)為1/2的平方,再下一個(gè)為1/2的三次方,依次按1/2的n次方對(duì)權(quán)值進(jìn)行指數(shù)遞減設(shè)置。 voidClock_Modify(structath_hw*ah,u64F_Pre,u64Tb,u64Tb0,u64T) { u64F_Mod; F_Mod=F_Pre*(Tb-Tb0)/T; ath9k_hw_settsf64(ah,F(xiàn)_Mod); } Modify_Time函數(shù)參數(shù)中的preF參數(shù)是時(shí)鐘漂移預(yù)測(cè)值,Tb為當(dāng)前節(jié)點(diǎn)的本地時(shí)鐘值,Tb0為上一次同步操作時(shí)刻的本地時(shí)鐘值,T則為時(shí)間同步的周期。 3實(shí)驗(yàn)過程及結(jié)果分析 實(shí)驗(yàn)場(chǎng)景如圖5所示,3個(gè)與便攜式計(jì)算機(jī)相連并運(yùn)行OpenWrt系統(tǒng)的RB493G路由器作為節(jié)點(diǎn),節(jié)點(diǎn)A為根節(jié)點(diǎn),節(jié)點(diǎn)B和節(jié)點(diǎn)C為同步子節(jié)點(diǎn),其中節(jié)點(diǎn)C被指定為應(yīng)答的子節(jié)點(diǎn)。 圖5 實(shí)驗(yàn)場(chǎng)景圖 實(shí)驗(yàn)過程中,根節(jié)點(diǎn)A每隔200ms向網(wǎng)絡(luò)廣播同步beacon幀,beacon幀中附帶本節(jié)點(diǎn)的發(fā)送時(shí)間值T1,子節(jié)點(diǎn)B和子節(jié)點(diǎn)C收到該beacon幀后,分別讀取本地的TSF計(jì)數(shù)值并記錄下來,若此時(shí)子節(jié)點(diǎn)B和子節(jié)點(diǎn)C的TSF值分別為T2′和T2,之后子節(jié)點(diǎn)C回復(fù)根節(jié)點(diǎn)A一個(gè)消息包,且該消息中帶有子節(jié)點(diǎn)C發(fā)送回復(fù)消息時(shí)的時(shí)間值T3,當(dāng)根節(jié)點(diǎn)A收到來自子節(jié)點(diǎn)C的應(yīng)答消息包時(shí)記錄下本地時(shí)間值T4,這樣根節(jié)點(diǎn)A與子節(jié)點(diǎn)C間的同步操作就完成了。此時(shí)在根節(jié)點(diǎn)A處會(huì)有4組時(shí)間值,即T1,T2,T3和T4,然后根據(jù)上文的計(jì)算式得到根節(jié)點(diǎn)A與子節(jié)點(diǎn)C之間的時(shí)間偏差 (5) 之后根節(jié)點(diǎn)A再向網(wǎng)絡(luò)廣播一個(gè)包含時(shí)間值T2與時(shí)間偏差值F的同步廣播消息,子節(jié)點(diǎn)B接收到該消息后,先提取出T2值,計(jì)算出子節(jié)點(diǎn)B與子節(jié)點(diǎn)C的時(shí)鐘偏差值F′=T2′-T2,再根據(jù)子節(jié)點(diǎn)C與根節(jié)點(diǎn)A的時(shí)間偏移值F做出相應(yīng)的調(diào)整,修改本地時(shí)間為:T=t-F-F′,其中t表示子節(jié)點(diǎn)B調(diào)整之前的本地時(shí)間值,T表示子節(jié)點(diǎn)B調(diào)整之后的時(shí)間值。到此,一跳范圍內(nèi)的所有節(jié)點(diǎn)的時(shí)間同步操作就完成了。 進(jìn)行50次時(shí)間同步測(cè)試,并記錄得到的時(shí)間偏差值,處理后得到的同步算法精度圖如圖6所示。由圖可以看出,根節(jié)點(diǎn)A與子節(jié)點(diǎn)C每次同步后的時(shí)間差的范圍在6μs到10μs,計(jì)算得到50次同步的平均精度約為8μs。 圖6 ITR同步算法的精度 由于ITR算法采用交換雙向同步消息報(bào)文的方法來計(jì)算時(shí)間偏差F,降低了傳播延遲對(duì)同步精度帶來的影響。此外,在對(duì)時(shí)間戳值進(jìn)行的標(biāo)記和提取的時(shí)刻上也作出相應(yīng)改進(jìn),發(fā)送消息時(shí)間值的添加不是在應(yīng)用層進(jìn)行,而是在消息即將發(fā)往無線信道中的時(shí)候才在MAC層打上時(shí)間戳,以消除發(fā)送時(shí)間延遲的影響;同樣,當(dāng)消息到達(dá)MAC層時(shí)立刻提取時(shí)間值,以消除接收處理時(shí)間延遲的影響。另外,本算法也采用了廣播參考同步消息報(bào)文的方式來同步應(yīng)答節(jié)點(diǎn)之外的其他節(jié)點(diǎn),有效地降低了發(fā)送延遲和訪問延遲帶來的誤差影響。同時(shí),還添加了時(shí)鐘漂移與補(bǔ)償?shù)臋C(jī)制來進(jìn)一步提高精度。因此,ITR算法的同步精度比傳統(tǒng)的TPSN算法大為提高。 對(duì)于能耗問題,ITR同步算法結(jié)合了雙向同步信息交換的機(jī)制與單向廣播參考同步消息的機(jī)制,在提高時(shí)間同步精度的同時(shí),也大大減少了節(jié)點(diǎn)的數(shù)據(jù)發(fā)送次數(shù),而節(jié)點(diǎn)數(shù)據(jù)接收時(shí)產(chǎn)生的能耗遠(yuǎn)小于數(shù)據(jù)發(fā)送時(shí)產(chǎn)生的能耗[10]。節(jié)點(diǎn)的能耗表示如下 E=ECommunicate+EProcess (6) 式中:ECommunicate是發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的能耗,EProcess是處理數(shù)據(jù)的能耗。 RBS算法中兩個(gè)待同步的節(jié)點(diǎn)之間需要傳遞3次信息,如果多個(gè)節(jié)點(diǎn)需要進(jìn)行同步,那么進(jìn)行同步信息傳遞的次數(shù)將成倍增長。TPSN算法同步中兩個(gè)節(jié)點(diǎn)需要傳遞2次信息。因此,TPSN算法的ECommunicate能耗比RBS算法的能耗小[11]。 假設(shè)在網(wǎng)絡(luò)中,待同步節(jié)點(diǎn)的個(gè)數(shù)為N,那么ITR算法和TPSN算法發(fā)送數(shù)據(jù)的次數(shù)和接收數(shù)據(jù)的次數(shù)如表3所示。由此可見ITR算法的ECommunicate能耗更小。 表3ITR算法和TPSN算法同步消息交換次數(shù) 算法類別發(fā)送數(shù)據(jù)次數(shù)接收數(shù)據(jù)次數(shù)TPSN算法2N2NITR算法22N+1 對(duì)于EProcess,傳統(tǒng)雙向同步算法中,各個(gè)同步子節(jié)點(diǎn)都要進(jìn)行時(shí)鐘偏差值的計(jì)算,而ITR算法的時(shí)鐘偏差值的計(jì)算是在根節(jié)點(diǎn)完成,然后廣播發(fā)送給子節(jié)點(diǎn)。在如圖5所示的實(shí)驗(yàn)場(chǎng)景中,對(duì)于TPSN算法,子節(jié)點(diǎn)B和C都要完成一次時(shí)鐘偏差值的計(jì)算處理;但是對(duì)于ITR算法,則只需要在根節(jié)點(diǎn)A完成一次時(shí)鐘偏差值的計(jì)算處理。隨著一跳范圍內(nèi)同步節(jié)點(diǎn)數(shù)目的增加,TPSN算法的計(jì)算量會(huì)不斷增大,而ITR算法的計(jì)算量則保持不變。因此ITR同步算法在能量效率方面更高。 3種同步算法的能耗和精度對(duì)比結(jié)果如表4所示。 表43種時(shí)間同步算法對(duì)比 算法實(shí)驗(yàn)平臺(tái)同步方式復(fù)雜度同步誤差/μs能耗RBSMICA接收—接收較高29.13高TPSNMICA發(fā)送—接收一般16.90中ITR自建發(fā)送—接收一般8.00低 4結(jié)束語 本文在RBS算法和TPSN算法的基礎(chǔ)上,改進(jìn)得到ITR時(shí)間同步算法。ITR同步算法相比于傳統(tǒng)時(shí)間同步算法在同步精度上有大幅提高,平均同步誤差控制在8μs左右,并且能耗大為降低。目前,基于TDMA機(jī)制的工業(yè)無線控制網(wǎng)絡(luò)的時(shí)隙調(diào)度長度一般都在10μs[12]以上,并且相鄰兩個(gè)調(diào)度的時(shí)隙之間都會(huì)有一定的保護(hù)間隔來避免同步誤差帶來的影響,而這種保護(hù)間隔的長度一般都在幾十微秒以上。因此,ITR算法的8μs左右的同步誤差完全能夠達(dá)到基于TDMA機(jī)制的時(shí)隙調(diào)度的誤差要求,滿足工業(yè)無線控制網(wǎng)絡(luò)高實(shí)時(shí)性、高可靠性的要求。 參考文獻(xiàn): [1]楊雨沱,梁煒,張曉玲,等. 面向工廠自動(dòng)化無線網(wǎng)絡(luò)的時(shí)間同步方法[J]. 計(jì)算機(jī)研究與發(fā)展,2014,51(3):511-518. [2]林俊如,曾鵬,于海斌. 面向高速工業(yè)無線網(wǎng)絡(luò)的TDMAMAC協(xié)議設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)科學(xué),2011,38(10):299-304. [3]孫新偉,申興發(fā),張能貴. 無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)周期性休眠時(shí)間同步研究[J].機(jī)電工程,2010,27(5):75-77. [4]周婭,郎朗,陳孟元.無線傳感器網(wǎng)絡(luò)的多跳時(shí)間同步優(yōu)化算法[J].計(jì)算機(jī)工程與應(yīng)用,2015,51(4):96-99. [5]陶志勇,胡明. 基于等級(jí)層次結(jié)構(gòu)的TPSN算法改進(jìn)[J]. 傳感技術(shù)學(xué)報(bào),2012,25(5):691-695. [6]張春梅,白鳳山,王梅,等.一種改進(jìn)的TPSN時(shí)間同步算法的實(shí)現(xiàn)[J].內(nèi)蒙古大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,44(3):316-319. [7]MARCELB.Handlingtimeandreactivityforsynchronizationandclockdriftcalculationinwirelesssensor/actuatornetworks[C]//Proc.the3rdInternationalConferenceonSensorNetworks. [S.l.]:IEEEPress,2014:63-72. [8]楊朔. 無線傳感器網(wǎng)絡(luò)時(shí)間同步算法研究[D].長沙:中南大學(xué),2014. [9]GASTMS. 802.11OReilly802.11Wirelessnetworksthedefinitiveguide[M]. 2nded.Nanjing:SoutheastUniversityPress,2007. [10]張韜. 無線傳感器網(wǎng)絡(luò)節(jié)能數(shù)據(jù)傳輸問題研究[D].南京:南京大學(xué),2012. [11]GANERIWALS,KUMARR,SRIVASTAVAMB.Timing-syncprotocolforsensornetworks[C]//Proc.the1stInternationalConferenceonEmbeddedNetworkedSensorSystems.NewYork:ACMPress,2003:138-149. [12]曲金鑫.AdHoc網(wǎng)絡(luò)TDMA動(dòng)態(tài)時(shí)隙分配算法研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013. ImprovementandimplementationofindustrywirelessnetworksynchronizationalgorithmbasedonTDMAmechanism LINXiongmin,YANGJianfeng,GUOChengcheng,HEZerui (Electronic Information School, Wuhan University, Wuhan 430072, China) Abstract:The MAC layer access protocol based on TDMA mechanism has great advantage to guarantee timeliness in industry control network. But in order to guarantee slot time scheduling in microsecond level, all the nodes in the network must keep high precision in time synchronization. Aiming at the problem that some current synchronization algorithms could not meet the requirement of high precision, on the base of traditional synchronization algorithms, adding the mechanism of clock drift forecasting and compensation, get an improved synchronization algorithm with high precision and low power consumption——ITR (Improved Wireless Sensor Networks Time Synchronization Algorithm Based on TPSN and RBS), and then do test on route node RouterBOARD493G. The result demonstrates that synchronization algorithm ITR’s average synchronization error decreases about 52% than traditional synchronization algorithm. Key words:TDMA; time synchronization algorithm; clock drift; ITR; ath9k 中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A DOI:10.16280/j.videoe.2016.03.012 基金項(xiàng)目:國家“863”計(jì)劃項(xiàng)目(2012AA010904);四川省科技計(jì)劃項(xiàng)目(2013GZ0016);成都大學(xué)項(xiàng)目(20804) 作者簡介: 林雄民(1990— ),碩士,主要研究方向?yàn)闊o線網(wǎng)絡(luò)與嵌入式系統(tǒng); 楊劍鋒(1976— ),副教授,主要研究方向?yàn)闊o線網(wǎng)絡(luò)與嵌入式系統(tǒng)。 責(zé)任編輯:許盈 收稿日期:2015-11-08 文獻(xiàn)引用格式:林雄民,楊劍鋒,郭成城,等. 基于TDMA的工業(yè)無線網(wǎng)時(shí)間同步算法改進(jìn)與實(shí)現(xiàn)[J].電視技術(shù),2016,40(3):54-59. LINXM,YANGJF,GUOCC,etal.ImprovementandimplementationofindustrywirelessnetworksynchronizationalgorithmbasedonTDMAmechanism[J].Videoengineering,2016,40(3):54-59.