孟祥輝,叢 凱,李 祺
(1.中國人民解放軍92228部隊,北京 100854; 2.海裝駐北京地區第三軍事代表室,北京 100074;3.北京機電工程研究所,北京 100074)
隨著信息技術的高速發展,許多系統都需要建立在分布式網絡的基礎之上,人們對分布式、網絡化測量系統的需求越來越高,對設備之間時鐘同步的要求也越來越高[1]。分布式網絡將節點分散在區域內,一定程度上提高了系統的穩定性和可靠性,各個設備(從節點)通過有線或無線的方式與中央處理器(主節點)進行信息交互,能夠共同完成復雜任務[2]。網絡中的各個設備節點分布在不同的位置,同時還配有獨立的時鐘,由于設備工作環境的復雜多樣,可能會出現設備節點時鐘之間不同步的情況,由此可能會導致部分工作無法正常進行。尤其是部分要求進行實時調度和控制的分布式系統,對于時鐘同步的要求更為嚴格。所以,網絡中各設備能夠在統一的時鐘節拍下進行工作,是分布式應用的重要前提。
為了能夠給分布式網絡中的各個節點設備提供一個統一的時鐘,使得各節點的時鐘可以實現精確的時間同步,本文提出一種時鐘同步技術,利用北斗衛星導航系統的授時服務與單向時鐘同步技術,將兩者結合,實現不同情況下的時鐘同步,最后基于LabVIEW設計仿真程序,對方案進行了驗證。
在典型的分布式無線網絡中,目前使用最廣泛的是分布式無線傳感器網絡[3],而對于時鐘同步算法的研究也主要針對無線傳感網絡[4]。其中具有代表性的算法有RBS算法、TPSN算法和FTSP算法[5]。
RBS(reference broadcast synchronization)算法是基于接收端-接收端的同步機制,引入了參考節點,任意兩個待同步節點在接收到參考節點的廣播后,記錄下收到消息的本地時間,然后與其他節點交換自己記錄下的時間[6]。這種方法的優點在于減小了發射端發送時間對精度的影響,缺點在于信息交換次數多,造成了額外的開銷,而且也不適合點對點通信的網絡[7]。
TPSN(time synchronization protocol for sensor network)算法采用雙向成對同步技術[8],它的特點在于,同步之前,還有一個層次建立的階段,在這個階段,通過信息傳遞,保證每個節點都有自己的層數標識,然后進入同步階段,由根節點開始逐層往下進行雙向時鐘同步,每一級節點只與其上一級的父節點進行同步[9]。這種算法具有較強的可擴展性,相比RBS算法同步精度更高,但缺點在于所有節點都以根節點作為同步標準,一旦根節點失效,重新進行層次建立和同步會增大能耗[10]。
FTSP(flooding time synchronization)算法是一種基于發送者—接收者機制的同步算法[11],通過參考節點與待同步節點單向廣播同步消息的方式來實現全網同步。發送節點廣播同步信息,在廣播范圍內的接收節點根據同步信息解析其中的時間戳,計算自身與發送節點間的時鐘偏差,調整本地時鐘,完成同步。算法整體采用泛洪廣播的同步機制,傳輸信息量較大,能耗多,計算復雜度也較高[12]。
上述幾種算法的同步過程可粗略地劃分為單向時鐘同步和雙向時鐘同步。單向時鐘同步的信息傳遞是單向進行的,由兩個節點中的一方發給另一方,而收到信息的一方不需要向發送方返回任何信息,例如RBS算法和FTSP算法。收到時間信息后,作為收端的一方對信息做適當處理,求出時鐘偏移量,然后調整本地時鐘。而雙向時鐘同步類似于握手機制,假設節點A與節點B進行同步,節點A向節點B發出同步請求,請求中包含了節點A發送時刻的本地時間,節點B收到請求時,記下此刻的時間,然后將這一時間信息和要發送確認信息時的本地時間都加入數據包,一并發送給節點A,節點A收到消息后即可求出與節點B之間的時延及時鐘偏移,然后根據時鐘偏移調整本地時鐘。一般來說,雙向時鐘同步的精度都會高于單向時鐘同步,但通常也會伴隨著更多的信息交換或者更高的計算復雜度。
為了實現高精度的時鐘同步,本設計采用北斗衛星導航系統作為主同步機制,而在極少數情況下,由于建筑物的遮蔽,接收設備對于北斗信號的接收可能會受到影響,從而導致時鐘同步無法正常進行,此時需要利用其他時鐘同步技術作為輔助手段完成時鐘同步。
北斗衛星導航系統由我國自主研制,可以為用戶提供全球范圍內的全天候、全天時的定位、導航和授時等服務,穩定度和準確度與GPS相當[13]。
北斗授時傳遞的是國家授時中心發播的標準時間信號,也就是目前國際通用的標準時間——協調世界時(UTC, universal time coordinated)。北斗授時技術主要包括RDSS(radio determination satellite service)單向授時、RDSS雙向授時和RNSS(radio navigation satellite service)授時[14]。
RDSS單向授時的原理是在用戶終端位置已知的前提下,地面測量控制中心站將導航電文通過衛星傳遞給用戶終端(如圖1所示),用戶終端收到信號并解出即可得到本地時間與系統時間的時間偏差。授時誤差主要由對信號傳播時延的估計決定,在位置已知的情況下,信號傳播時延是可以測量的,但該時延受信號傳輸路徑的影響較大。用戶終端通常在估算此延遲時存在較大誤差,一般精度只能控制在100.6 ns以下[10]。
RDSS雙向授時的原理是通過用戶終端和北斗中心站之間的信息交換來測量信號的傳輸時延,從而得出時鐘差值。北斗中心站通過如圖2所示的信息交流,獲得與用戶終端之間的單向傳輸時延,之后中心站將這個時延發送給用戶終端,用戶終端利用這個時延,結合導航電文校正本地時鐘,調整本地時鐘,從而實現與中心站之間的時鐘同步。這種方法可以避免授時終端天線位置誤差、電離層或對流層改造殘差等諸多不確定因素引起的單向授時偏差[15],授時精度可達20 ns[16]。但由于存在時間信息的交換,衛星和北斗中心站需要響應用戶的同步需求,這會占用衛星和北斗中心站的資源,因此對用戶容量有限制[17]。
RNSS授時也是一種單向授時方法。如圖3所示,用戶終端與中心站之間沒有信息交互,只需接收衛星發播的授時信號,計算衛星到用戶終端之間的傳輸時延,即可獲得衛星時間[18]。還可以利用不同衛星的時間來進一步減小下行傳輸時延的估計誤差,這個誤差一般在20 ns以內。由于衛星時間與系統時間之間的誤差非常小,經過計算,RNSS授時的誤差,即用戶終端與北斗系統之間的誤差可以控制在23.7 ns以內[10]。
可將以上3種授時方法簡單地分為單向授時和雙向授時。相比于單向授時,雙向授時可以更精確地反映時延信息,具有較高的授時精度。針對單向授時和雙向授時的不同特點,為了更好地發揮系統的性能,通常會采取單向授時和雙向授時獨立工作或組合工作的形式。在一般情況下,單向授時負責保持定時用戶機和中心站系統的時間同步,雙向授時則間隔一個較長時間周期進行,用于修正這一時間周期內各環節產生的誤差[19]。也就是用盡可能少的雙向授時與單向授時結合使用,以達到接近雙向授時的精度[20]。
利用北斗衛星導航系統可以實現納秒級別的高精度的時鐘同步,并且對接收設備要求簡單,每個接收設備配備北斗接收模塊即可,這種接收模塊在市面上很常見,無需特別定制。
隨著北斗系統在民用領域的不斷應用,各個芯片制造商也開發了基于北斗衛星系統的授時模塊,給各行各業的用戶提供北斗授時服務,實現其在各行業各自具有特殊需要的時間、日期的同步。
從表1中可以看出,北斗授時時間精度都較高;不同制造商,授時精度略有差異。

表1 市售芯片授時性能
在大多數情況下,北斗導航系統都能與授時模塊正常進行通信,但是在有較高建筑物遮蔽的情況下,授時模塊可能無法正常接收北斗衛星信號,進而導致時鐘同步無法順利進行。此時需要利用其他時鐘同步技術作為輔助同步機制完成時鐘同步。本設計中,輔助同步機制以主同步機制為基礎,獲取傳輸時延,再利用單向同步技術,傳遞時間信息,得出時鐘偏移,使得設備間能達到高精度的同步。
在單向時鐘同步中,主節點向從節點發送含有本地發送時間的消息,從節點收到后將接收時刻的本地時間與主節點的發送時刻的時間信息做處理。如圖4所示,是單向時鐘同步信息傳輸過程。
tA表示主節點的本地時間,tB表示從節點的本地時間,offset表示主從節點間的時鐘偏移,Δt表示整個傳輸過程產生的時延,可得到下式:
tB-tA=offset+Δt
(1)
Δt主要由以下幾個部分組成:收發端處理時延、傳播時延和發送時延。收發端處理時延是指發端和收端對信息做編碼解碼等處理所需的時間;傳播時延是指信號在空中傳播的時間,由于電磁波傳播速度極快,這部分時延通常忽略不計;發送時延是指發出信息所需的時間,主要受信息長度和發送速率的影響。
傳統的方法是信號在空中傳播的所需的時間忽略不計,通過數據長度和發射速率估算發送時延和處理時延[21],得到整個傳輸過程的時延Δt之后,根據公式(1)也就可以求出時鐘偏移量。但由于部分時延是通過估算得到,導致這種方法的對時精度不高。為了更高的對時精度,本文提出另一種方法實現更高精度的單向時鐘同步。
在主從節點都與北斗衛星校準的時候,需要進行信息傳遞,獲取相關時間信息,為輔助同步機制打下基礎。如圖5所示,具體過程如下:
1)在節點設備與北斗衛星系統完成時鐘同步的前提下,主節點向從節點發送含有本地發送時刻的信息。
2)從節點收到后將這一信息與本地接收時刻的時間信息做處理,求出傳輸時延。由于雙方時鐘是經過校準的,時鐘偏移offset可以看作是0,根據公式(1)即可求出整個過程的傳輸時延Δt,從節點將這個時延數據Δt記錄下來。
3)在需要利用輔助同步機制時,進行如圖4所示的單向時鐘同步,從節點在對時間信息進行處理時,將前面記下的Δt當作已知值,代入公式(1)即可求出時鐘偏移量offset。從節點根據這個偏移量調整本地時鐘,完成時鐘同步。
本文基于LabVIEW環境設計仿真程序,主要以一條簡單的傳輸鏈路作為信息傳遞的基礎(如圖6所示),發送端相當于主節點,接收端相當于從節點,模擬不同的場景對方案進行驗證。由于北斗授時精度主要由選用的北斗衛星信號接收模塊所決定,且精度為納秒級別,所以主要對輔助同步機制進行驗證。程序如圖7所示。
由于時間信息在LabVIEW中的數據格式為“時間戳”(Timestamp,LabVIEW中一種表示絕對時間的數據類型),為了便于信息的傳遞和處理,在發端將其轉換為二進制數據進行傳輸,相應地,在收端也有恢復時間信息的子程序。之后,將轉換后的二進制信息進行串并變換,得到兩路并行的數據,然后進入調制模塊,把兩組數據分別與sinωct和cosωct相乘,得到的數據再經加法器相加得到QPSK調制信號。然后調制信號進入高斯白噪聲信道,之后再進入解調模塊進行相干解調,將輸入信號分別與兩個頻率相同且正交的載波相乘,得到兩組數據,再將兩組數據進行判決,然后將兩個支路的并行數據恢復成串行數據,最后經過信息恢復模塊,將二進制信息轉換為時間戳信息,再對其進行相關處理,得出時延。
仿真步驟如下:首先在前面板中(如圖8(a)所示)按表2設置相關參數,在選項卡中選擇“北斗同步”,“添加偏移”是指為了讓效果更明顯而手動添加的收端與發端的時鐘偏移量,此時設為0,運行程序,然后觀察運行結果,可得到所測時延,將這個時延數據記錄下來。然后在選項卡中選擇“輔助同步機制”,如圖8(b)所示,“添加偏移”設為2,將上一步記錄的時延數據輸入“已知的時延”,運行程序,觀察運行結果。

表2 仿真參數
仿真具體實現過程如下:當選項卡中選擇“北斗同步”,“添加偏移”設為0時,此時發端和收端共用同一個主機時鐘源,模擬收發端與北斗衛星正常進行同步的情況,然后運行程序,在程序中,發端向收端發送含有本地發送時刻的信息,收端收到后,解出信息并處理,得出整個過程耗費的時延Δt,如圖9所示。
收端將這個時延數據記下。在之后使用輔助同步機制時,將這個時延作為已知條件。
利用輔助同步機制進行時鐘同步時,需在選項卡中選擇“輔助同步機制”,同時,“添加偏移”設為2 ms,此時雖然發端和收端仍然使用相同的主機時鐘源,但是由于人為地添加了時鐘偏移,使得發端時鐘比收端時鐘“慢”了2 ms,也就模擬了實際應用中出現的不同步的情況。將圖9中測得的時延作為已知條件在前面板輸入,如圖10所示。
運行程序,可以得到如圖11所示的結果。
可以看到程序輸出的結果offset為2.001 ms,說明通過輔助同步機制求出的時鐘偏移為2.001 ms,而程序運行前人為添加的偏移量為2 ms,兩者十分接近。
通過以上仿真可以看到,通過輔助同步機制求得的時鐘偏移與實際偏移之間存在0.001 ms的誤差,這是由于軟件環境波動導致的不穩定現象,方案的可行性仍然可以得到證明。
而在實際情況中,輔助同步機制的誤差一部分來自于北斗導航系統。因為設備在正常情況下與北斗衛星導航系統實現了同步,我們將此時的時鐘偏移offset看作了0,以此為前提求得了時延Δt,然后將時延應用在了輔助同步機制中。但實際上,雖然網絡中的各節點設備與北斗衛星進行了同步,設備之間仍然存在時鐘偏移,雖然偏移量很小,但卻被當作0來處理,由此導致了輔助同步機制的誤差。但是又由于北斗衛星同步精度為納秒級,使得輔助同步機制下的這一部分誤差也為納秒級,這一量級的誤差是可以接受的。而另一部分誤差來自于傳輸環境的波動。在利用輔助同步機制進行同步時,之前測得的Δt被當作已知值代入了公式進行計算,也就相當于把Δt看作了此時的整體傳輸時延。若傳輸鏈路出現了波動,導致此時整個傳輸過程的時延不等于Δt,就會使得最終的offset出現誤差。但若傳輸鏈路始終處于一個相對穩定的環境下,那這一部分誤差是完全可以接受的。
與以往的時鐘同步技術相比,本方案沒有將整個過程產生的時延劃分為不同的部分分別去計算或者測量,而是將所有時延看作一個整體進行處理,解決了收發端處理時延難以估算的問題。但是輔助同步機制的前提是需要在設備與北斗衛星進行正常同步時,進行信息傳遞,獲取設備間的傳輸時延。這在一定程度上增加了信息交換次數,帶來了能量損耗。但是若網絡長期處在一個穩定條件下,一次信息交換得到的傳輸時延在很長一段時間內都是適用的,因此在主同步機制能夠正常運行的情況下,主從節點設備間可以周期性地傳遞信息,獲取傳輸時延,為輔助同步機制做準備。
本文提出的用于分布式網絡的時鐘同步方法,在北斗衛星授時的基礎上,利用單向時鐘同步技術,確保網絡內的節點設備任何時刻都能夠實現高精度的同步。利用LabVIEW設計的仿真程序驗證了方案的可行性,只要收發雙方之間建立了穩定的可以互相傳遞信息的傳輸鏈路,即可利用該方案獲得高精度的時鐘同步。同步誤差主要來自于傳輸環境的穩定性和北斗授時精度。傳輸環境的穩定性主要受傳輸鏈路和外界環境的影響,因此需要選擇可靠的不易波動的傳輸鏈路,以及盡可能地使傳輸鏈路始終處于相對穩定的環境中。而北斗授時精度與選擇的授時模塊有關,不同廠商制造的授時模塊精度有所差異。在實際應用中應根據實際需求,選擇合適的硬件模塊以達到理想效果。