孟祥輝,叢 凱,李 祺
(1.中國人民解放軍92228部隊,北京 100854; 2.海裝駐北京地區(qū)第三軍事代表室,北京 100074;3.北京機電工程研究所,北京 100074)
隨著信息技術(shù)的高速發(fā)展,許多系統(tǒng)都需要建立在分布式網(wǎng)絡(luò)的基礎(chǔ)之上,人們對分布式、網(wǎng)絡(luò)化測量系統(tǒng)的需求越來越高,對設(shè)備之間時鐘同步的要求也越來越高[1]。分布式網(wǎng)絡(luò)將節(jié)點分散在區(qū)域內(nèi),一定程度上提高了系統(tǒng)的穩(wěn)定性和可靠性,各個設(shè)備(從節(jié)點)通過有線或無線的方式與中央處理器(主節(jié)點)進行信息交互,能夠共同完成復(fù)雜任務(wù)[2]。網(wǎng)絡(luò)中的各個設(shè)備節(jié)點分布在不同的位置,同時還配有獨立的時鐘,由于設(shè)備工作環(huán)境的復(fù)雜多樣,可能會出現(xiàn)設(shè)備節(jié)點時鐘之間不同步的情況,由此可能會導(dǎo)致部分工作無法正常進行。尤其是部分要求進行實時調(diào)度和控制的分布式系統(tǒng),對于時鐘同步的要求更為嚴格。所以,網(wǎng)絡(luò)中各設(shè)備能夠在統(tǒng)一的時鐘節(jié)拍下進行工作,是分布式應(yīng)用的重要前提。
為了能夠給分布式網(wǎng)絡(luò)中的各個節(jié)點設(shè)備提供一個統(tǒng)一的時鐘,使得各節(jié)點的時鐘可以實現(xiàn)精確的時間同步,本文提出一種時鐘同步技術(shù),利用北斗衛(wèi)星導(dǎo)航系統(tǒng)的授時服務(wù)與單向時鐘同步技術(shù),將兩者結(jié)合,實現(xiàn)不同情況下的時鐘同步,最后基于LabVIEW設(shè)計仿真程序,對方案進行了驗證。
在典型的分布式無線網(wǎng)絡(luò)中,目前使用最廣泛的是分布式無線傳感器網(wǎng)絡(luò)[3],而對于時鐘同步算法的研究也主要針對無線傳感網(wǎng)絡(luò)[4]。其中具有代表性的算法有RBS算法、TPSN算法和FTSP算法[5]。
RBS(reference broadcast synchronization)算法是基于接收端-接收端的同步機制,引入了參考節(jié)點,任意兩個待同步節(jié)點在接收到參考節(jié)點的廣播后,記錄下收到消息的本地時間,然后與其他節(jié)點交換自己記錄下的時間[6]。這種方法的優(yōu)點在于減小了發(fā)射端發(fā)送時間對精度的影響,缺點在于信息交換次數(shù)多,造成了額外的開銷,而且也不適合點對點通信的網(wǎng)絡(luò)[7]。
TPSN(time synchronization protocol for sensor network)算法采用雙向成對同步技術(shù)[8],它的特點在于,同步之前,還有一個層次建立的階段,在這個階段,通過信息傳遞,保證每個節(jié)點都有自己的層數(shù)標識,然后進入同步階段,由根節(jié)點開始逐層往下進行雙向時鐘同步,每一級節(jié)點只與其上一級的父節(jié)點進行同步[9]。這種算法具有較強的可擴展性,相比RBS算法同步精度更高,但缺點在于所有節(jié)點都以根節(jié)點作為同步標準,一旦根節(jié)點失效,重新進行層次建立和同步會增大能耗[10]。
FTSP(flooding time synchronization)算法是一種基于發(fā)送者—接收者機制的同步算法[11],通過參考節(jié)點與待同步節(jié)點單向廣播同步消息的方式來實現(xiàn)全網(wǎng)同步。發(fā)送節(jié)點廣播同步信息,在廣播范圍內(nèi)的接收節(jié)點根據(jù)同步信息解析其中的時間戳,計算自身與發(fā)送節(jié)點間的時鐘偏差,調(diào)整本地時鐘,完成同步。算法整體采用泛洪廣播的同步機制,傳輸信息量較大,能耗多,計算復(fù)雜度也較高[12]。
上述幾種算法的同步過程可粗略地劃分為單向時鐘同步和雙向時鐘同步。單向時鐘同步的信息傳遞是單向進行的,由兩個節(jié)點中的一方發(fā)給另一方,而收到信息的一方不需要向發(fā)送方返回任何信息,例如RBS算法和FTSP算法。收到時間信息后,作為收端的一方對信息做適當處理,求出時鐘偏移量,然后調(diào)整本地時鐘。而雙向時鐘同步類似于握手機制,假設(shè)節(jié)點A與節(jié)點B進行同步,節(jié)點A向節(jié)點B發(fā)出同步請求,請求中包含了節(jié)點A發(fā)送時刻的本地時間,節(jié)點B收到請求時,記下此刻的時間,然后將這一時間信息和要發(fā)送確認信息時的本地時間都加入數(shù)據(jù)包,一并發(fā)送給節(jié)點A,節(jié)點A收到消息后即可求出與節(jié)點B之間的時延及時鐘偏移,然后根據(jù)時鐘偏移調(diào)整本地時鐘。一般來說,雙向時鐘同步的精度都會高于單向時鐘同步,但通常也會伴隨著更多的信息交換或者更高的計算復(fù)雜度。
為了實現(xiàn)高精度的時鐘同步,本設(shè)計采用北斗衛(wèi)星導(dǎo)航系統(tǒng)作為主同步機制,而在極少數(shù)情況下,由于建筑物的遮蔽,接收設(shè)備對于北斗信號的接收可能會受到影響,從而導(dǎo)致時鐘同步無法正常進行,此時需要利用其他時鐘同步技術(shù)作為輔助手段完成時鐘同步。
北斗衛(wèi)星導(dǎo)航系統(tǒng)由我國自主研制,可以為用戶提供全球范圍內(nèi)的全天候、全天時的定位、導(dǎo)航和授時等服務(wù),穩(wěn)定度和準確度與GPS相當[13]。
北斗授時傳遞的是國家授時中心發(fā)播的標準時間信號,也就是目前國際通用的標準時間——協(xié)調(diào)世界時(UTC, universal time coordinated)。北斗授時技術(shù)主要包括RDSS(radio determination satellite service)單向授時、RDSS雙向授時和RNSS(radio navigation satellite service)授時[14]。
RDSS單向授時的原理是在用戶終端位置已知的前提下,地面測量控制中心站將導(dǎo)航電文通過衛(wèi)星傳遞給用戶終端(如圖1所示),用戶終端收到信號并解出即可得到本地時間與系統(tǒng)時間的時間偏差。授時誤差主要由對信號傳播時延的估計決定,在位置已知的情況下,信號傳播時延是可以測量的,但該時延受信號傳輸路徑的影響較大。用戶終端通常在估算此延遲時存在較大誤差,一般精度只能控制在100.6 ns以下[10]。
RDSS雙向授時的原理是通過用戶終端和北斗中心站之間的信息交換來測量信號的傳輸時延,從而得出時鐘差值。北斗中心站通過如圖2所示的信息交流,獲得與用戶終端之間的單向傳輸時延,之后中心站將這個時延發(fā)送給用戶終端,用戶終端利用這個時延,結(jié)合導(dǎo)航電文校正本地時鐘,調(diào)整本地時鐘,從而實現(xiàn)與中心站之間的時鐘同步。這種方法可以避免授時終端天線位置誤差、電離層或?qū)α鲗痈脑鞖埐畹戎T多不確定因素引起的單向授時偏差[15],授時精度可達20 ns[16]。但由于存在時間信息的交換,衛(wèi)星和北斗中心站需要響應(yīng)用戶的同步需求,這會占用衛(wèi)星和北斗中心站的資源,因此對用戶容量有限制[17]。
RNSS授時也是一種單向授時方法。如圖3所示,用戶終端與中心站之間沒有信息交互,只需接收衛(wèi)星發(fā)播的授時信號,計算衛(wèi)星到用戶終端之間的傳輸時延,即可獲得衛(wèi)星時間[18]。還可以利用不同衛(wèi)星的時間來進一步減小下行傳輸時延的估計誤差,這個誤差一般在20 ns以內(nèi)。由于衛(wèi)星時間與系統(tǒng)時間之間的誤差非常小,經(jīng)過計算,RNSS授時的誤差,即用戶終端與北斗系統(tǒng)之間的誤差可以控制在23.7 ns以內(nèi)[10]。
可將以上3種授時方法簡單地分為單向授時和雙向授時。相比于單向授時,雙向授時可以更精確地反映時延信息,具有較高的授時精度。針對單向授時和雙向授時的不同特點,為了更好地發(fā)揮系統(tǒng)的性能,通常會采取單向授時和雙向授時獨立工作或組合工作的形式。在一般情況下,單向授時負責保持定時用戶機和中心站系統(tǒng)的時間同步,雙向授時則間隔一個較長時間周期進行,用于修正這一時間周期內(nèi)各環(huán)節(jié)產(chǎn)生的誤差[19]。也就是用盡可能少的雙向授時與單向授時結(jié)合使用,以達到接近雙向授時的精度[20]。
利用北斗衛(wèi)星導(dǎo)航系統(tǒng)可以實現(xiàn)納秒級別的高精度的時鐘同步,并且對接收設(shè)備要求簡單,每個接收設(shè)備配備北斗接收模塊即可,這種接收模塊在市面上很常見,無需特別定制。
隨著北斗系統(tǒng)在民用領(lǐng)域的不斷應(yīng)用,各個芯片制造商也開發(fā)了基于北斗衛(wèi)星系統(tǒng)的授時模塊,給各行各業(yè)的用戶提供北斗授時服務(wù),實現(xiàn)其在各行業(yè)各自具有特殊需要的時間、日期的同步。
從表1中可以看出,北斗授時時間精度都較高;不同制造商,授時精度略有差異。
表1 市售芯片授時性能
在大多數(shù)情況下,北斗導(dǎo)航系統(tǒng)都能與授時模塊正常進行通信,但是在有較高建筑物遮蔽的情況下,授時模塊可能無法正常接收北斗衛(wèi)星信號,進而導(dǎo)致時鐘同步無法順利進行。此時需要利用其他時鐘同步技術(shù)作為輔助同步機制完成時鐘同步。本設(shè)計中,輔助同步機制以主同步機制為基礎(chǔ),獲取傳輸時延,再利用單向同步技術(shù),傳遞時間信息,得出時鐘偏移,使得設(shè)備間能達到高精度的同步。
在單向時鐘同步中,主節(jié)點向從節(jié)點發(fā)送含有本地發(fā)送時間的消息,從節(jié)點收到后將接收時刻的本地時間與主節(jié)點的發(fā)送時刻的時間信息做處理。如圖4所示,是單向時鐘同步信息傳輸過程。
tA表示主節(jié)點的本地時間,tB表示從節(jié)點的本地時間,offset表示主從節(jié)點間的時鐘偏移,Δt表示整個傳輸過程產(chǎn)生的時延,可得到下式:
tB-tA=offset+Δt
(1)
Δt主要由以下幾個部分組成:收發(fā)端處理時延、傳播時延和發(fā)送時延。收發(fā)端處理時延是指發(fā)端和收端對信息做編碼解碼等處理所需的時間;傳播時延是指信號在空中傳播的時間,由于電磁波傳播速度極快,這部分時延通常忽略不計;發(fā)送時延是指發(fā)出信息所需的時間,主要受信息長度和發(fā)送速率的影響。
傳統(tǒng)的方法是信號在空中傳播的所需的時間忽略不計,通過數(shù)據(jù)長度和發(fā)射速率估算發(fā)送時延和處理時延[21],得到整個傳輸過程的時延Δt之后,根據(jù)公式(1)也就可以求出時鐘偏移量。但由于部分時延是通過估算得到,導(dǎo)致這種方法的對時精度不高。為了更高的對時精度,本文提出另一種方法實現(xiàn)更高精度的單向時鐘同步。
在主從節(jié)點都與北斗衛(wèi)星校準的時候,需要進行信息傳遞,獲取相關(guān)時間信息,為輔助同步機制打下基礎(chǔ)。如圖5所示,具體過程如下:
1)在節(jié)點設(shè)備與北斗衛(wèi)星系統(tǒng)完成時鐘同步的前提下,主節(jié)點向從節(jié)點發(fā)送含有本地發(fā)送時刻的信息。
2)從節(jié)點收到后將這一信息與本地接收時刻的時間信息做處理,求出傳輸時延。由于雙方時鐘是經(jīng)過校準的,時鐘偏移offset可以看作是0,根據(jù)公式(1)即可求出整個過程的傳輸時延Δt,從節(jié)點將這個時延數(shù)據(jù)Δt記錄下來。
3)在需要利用輔助同步機制時,進行如圖4所示的單向時鐘同步,從節(jié)點在對時間信息進行處理時,將前面記下的Δt當作已知值,代入公式(1)即可求出時鐘偏移量offset。從節(jié)點根據(jù)這個偏移量調(diào)整本地時鐘,完成時鐘同步。
本文基于LabVIEW環(huán)境設(shè)計仿真程序,主要以一條簡單的傳輸鏈路作為信息傳遞的基礎(chǔ)(如圖6所示),發(fā)送端相當于主節(jié)點,接收端相當于從節(jié)點,模擬不同的場景對方案進行驗證。由于北斗授時精度主要由選用的北斗衛(wèi)星信號接收模塊所決定,且精度為納秒級別,所以主要對輔助同步機制進行驗證。程序如圖7所示。
由于時間信息在LabVIEW中的數(shù)據(jù)格式為“時間戳”(Timestamp,LabVIEW中一種表示絕對時間的數(shù)據(jù)類型),為了便于信息的傳遞和處理,在發(fā)端將其轉(zhuǎn)換為二進制數(shù)據(jù)進行傳輸,相應(yīng)地,在收端也有恢復(fù)時間信息的子程序。之后,將轉(zhuǎn)換后的二進制信息進行串并變換,得到兩路并行的數(shù)據(jù),然后進入調(diào)制模塊,把兩組數(shù)據(jù)分別與sinωct和cosωct相乘,得到的數(shù)據(jù)再經(jīng)加法器相加得到QPSK調(diào)制信號。然后調(diào)制信號進入高斯白噪聲信道,之后再進入解調(diào)模塊進行相干解調(diào),將輸入信號分別與兩個頻率相同且正交的載波相乘,得到兩組數(shù)據(jù),再將兩組數(shù)據(jù)進行判決,然后將兩個支路的并行數(shù)據(jù)恢復(fù)成串行數(shù)據(jù),最后經(jīng)過信息恢復(fù)模塊,將二進制信息轉(zhuǎn)換為時間戳信息,再對其進行相關(guān)處理,得出時延。
仿真步驟如下:首先在前面板中(如圖8(a)所示)按表2設(shè)置相關(guān)參數(shù),在選項卡中選擇“北斗同步”,“添加偏移”是指為了讓效果更明顯而手動添加的收端與發(fā)端的時鐘偏移量,此時設(shè)為0,運行程序,然后觀察運行結(jié)果,可得到所測時延,將這個時延數(shù)據(jù)記錄下來。然后在選項卡中選擇“輔助同步機制”,如圖8(b)所示,“添加偏移”設(shè)為2,將上一步記錄的時延數(shù)據(jù)輸入“已知的時延”,運行程序,觀察運行結(jié)果。
表2 仿真參數(shù)
仿真具體實現(xiàn)過程如下:當選項卡中選擇“北斗同步”,“添加偏移”設(shè)為0時,此時發(fā)端和收端共用同一個主機時鐘源,模擬收發(fā)端與北斗衛(wèi)星正常進行同步的情況,然后運行程序,在程序中,發(fā)端向收端發(fā)送含有本地發(fā)送時刻的信息,收端收到后,解出信息并處理,得出整個過程耗費的時延Δt,如圖9所示。
收端將這個時延數(shù)據(jù)記下。在之后使用輔助同步機制時,將這個時延作為已知條件。
利用輔助同步機制進行時鐘同步時,需在選項卡中選擇“輔助同步機制”,同時,“添加偏移”設(shè)為2 ms,此時雖然發(fā)端和收端仍然使用相同的主機時鐘源,但是由于人為地添加了時鐘偏移,使得發(fā)端時鐘比收端時鐘“慢”了2 ms,也就模擬了實際應(yīng)用中出現(xiàn)的不同步的情況。將圖9中測得的時延作為已知條件在前面板輸入,如圖10所示。
運行程序,可以得到如圖11所示的結(jié)果。
可以看到程序輸出的結(jié)果offset為2.001 ms,說明通過輔助同步機制求出的時鐘偏移為2.001 ms,而程序運行前人為添加的偏移量為2 ms,兩者十分接近。
通過以上仿真可以看到,通過輔助同步機制求得的時鐘偏移與實際偏移之間存在0.001 ms的誤差,這是由于軟件環(huán)境波動導(dǎo)致的不穩(wěn)定現(xiàn)象,方案的可行性仍然可以得到證明。
而在實際情況中,輔助同步機制的誤差一部分來自于北斗導(dǎo)航系統(tǒng)。因為設(shè)備在正常情況下與北斗衛(wèi)星導(dǎo)航系統(tǒng)實現(xiàn)了同步,我們將此時的時鐘偏移offset看作了0,以此為前提求得了時延Δt,然后將時延應(yīng)用在了輔助同步機制中。但實際上,雖然網(wǎng)絡(luò)中的各節(jié)點設(shè)備與北斗衛(wèi)星進行了同步,設(shè)備之間仍然存在時鐘偏移,雖然偏移量很小,但卻被當作0來處理,由此導(dǎo)致了輔助同步機制的誤差。但是又由于北斗衛(wèi)星同步精度為納秒級,使得輔助同步機制下的這一部分誤差也為納秒級,這一量級的誤差是可以接受的。而另一部分誤差來自于傳輸環(huán)境的波動。在利用輔助同步機制進行同步時,之前測得的Δt被當作已知值代入了公式進行計算,也就相當于把Δt看作了此時的整體傳輸時延。若傳輸鏈路出現(xiàn)了波動,導(dǎo)致此時整個傳輸過程的時延不等于Δt,就會使得最終的offset出現(xiàn)誤差。但若傳輸鏈路始終處于一個相對穩(wěn)定的環(huán)境下,那這一部分誤差是完全可以接受的。
與以往的時鐘同步技術(shù)相比,本方案沒有將整個過程產(chǎn)生的時延劃分為不同的部分分別去計算或者測量,而是將所有時延看作一個整體進行處理,解決了收發(fā)端處理時延難以估算的問題。但是輔助同步機制的前提是需要在設(shè)備與北斗衛(wèi)星進行正常同步時,進行信息傳遞,獲取設(shè)備間的傳輸時延。這在一定程度上增加了信息交換次數(shù),帶來了能量損耗。但是若網(wǎng)絡(luò)長期處在一個穩(wěn)定條件下,一次信息交換得到的傳輸時延在很長一段時間內(nèi)都是適用的,因此在主同步機制能夠正常運行的情況下,主從節(jié)點設(shè)備間可以周期性地傳遞信息,獲取傳輸時延,為輔助同步機制做準備。
本文提出的用于分布式網(wǎng)絡(luò)的時鐘同步方法,在北斗衛(wèi)星授時的基礎(chǔ)上,利用單向時鐘同步技術(shù),確保網(wǎng)絡(luò)內(nèi)的節(jié)點設(shè)備任何時刻都能夠?qū)崿F(xiàn)高精度的同步。利用LabVIEW設(shè)計的仿真程序驗證了方案的可行性,只要收發(fā)雙方之間建立了穩(wěn)定的可以互相傳遞信息的傳輸鏈路,即可利用該方案獲得高精度的時鐘同步。同步誤差主要來自于傳輸環(huán)境的穩(wěn)定性和北斗授時精度。傳輸環(huán)境的穩(wěn)定性主要受傳輸鏈路和外界環(huán)境的影響,因此需要選擇可靠的不易波動的傳輸鏈路,以及盡可能地使傳輸鏈路始終處于相對穩(wěn)定的環(huán)境中。而北斗授時精度與選擇的授時模塊有關(guān),不同廠商制造的授時模塊精度有所差異。在實際應(yīng)用中應(yīng)根據(jù)實際需求,選擇合適的硬件模塊以達到理想效果。