趙漢啟 胡立生
(上海交通大學電子信息與電氣工程學院)
基于硬件授時的精確時鐘同步方法①
趙漢啟 胡立生
(上海交通大學電子信息與電氣工程學院)
介紹精確時鐘同步技術的同步原理,說明了目前研究的實現過程中采用軟件授時方法會產生較大時間偏差這一問題。進而通過使用BCM54296芯片實現更為精確的硬件授時,并提出了提高硬件授時精度的方法。最后通過比較兩種方法的同步精度證明了硬件授時方法的有效性。
時鐘同步 硬件授時 BCM54296 同步精度
時鐘同步指的是系統內的節點與時鐘源進行時間同步的技術[1]。在自動控制、電力、測量及交通運輸等系統中一般都包含很多儀表或者控制器,這些組件大多配備有獨立時鐘,所以整個系統里面會有很多互相獨立的時鐘。但是工業系統的各個環節往往具有嚴格的執行順序,如果這些時鐘沒有一個一致的時間基準,很有可能導致系統運行混亂進而發生事故。因此,為了保證系統各環節可以按照既定順序依次執行,整個系統中的所有時鐘都必須和同一個時鐘源同步,即實現時鐘同步。目前使用較為廣泛的同步方法有網絡時間同步技術和精確時鐘同步技術[2]。
精確時鐘同步技術利用工業以太網在兩個設備之間交換帶有時間值的消息來實現高同步精度的時鐘同步技術。在目前使用較為廣泛的時鐘同步技術中,精確時鐘同步技術由于具有成本低和精度高的優勢而在工業系統中大量應用[3]。
目前針對精確時鐘同步技術的研究主要集中在軟件授時和提高軟件授時精度的方法上,但是如果所獲取的時間戳本身就存在誤差,則無論授時精度如何提高,都會導致時鐘同步精度下降。針對這一情況,筆者通過使用Broadcom公司的BCM54296芯片來實現硬件授時,同時還提出了提高硬件授時精度的方法。實際數據表明,應用硬件授時方法的精確時鐘同步技術使得主從時間偏差更小,同步精度更高。
精確時鐘同步技術定義了一種可以獲得很高同步精度的主從同步技術。它依賴于一個準確的主時鐘周期性地同步所有從時鐘的時間。當主從層級建立后,主、從時鐘會交換帶有時間戳的消息使得從時鐘可以測量出主時鐘的時間值然后對從時鐘進行調整。同步過程主要包含兩步:計算路徑延時和時間偏差。具體執行過程有如下4個步驟[4]:
a. 主時鐘周期性地(一般為2s)向從時鐘發送同步消息,消息中包含發送時間T1;
b. 從時鐘接收到同步消息后,記下接收時間T2;
c. 從時鐘周期性地向主時鐘發送延遲測量請求消息,并記下消息發送時間T3;
d. 主時鐘收到延遲測量請求消息后記下消息的接收時間T4,并馬上給從時鐘回復延遲測量應答消息,該消息中含有T4的值。
經過以上步驟,從時鐘獲得了T1、T2、T3、T4的值,由這4個參數可計算出消息由主時鐘傳遞到從時鐘耗費的時間Tms與消息由從時鐘傳遞到主時鐘耗費的時間Tsm之和:
Tms+Tsm=T4-T1-(T3-T2)
(1)
協議假設Tms和Tsm是相等的,則消息在主、從時鐘之間的傳遞時間delay為:

(2)
同步消息被從時鐘接收那一刻,主時鐘時間值是T1+delay,而從時鐘時間值是T2,因此主、從時鐘之間的偏差offset為:
offset=T2-(T1+delay)


(3)
得到主、從時鐘偏差之后,接下來就可以調整從時鐘的時間值,消除主、從時鐘的偏差,最終完成主、從時鐘的同步。
由同步原理可知,PTP協議主從之間會交換帶有時間戳的消息、記錄同步消息和延遲請求消息的收發時間,通過這些時間值計算出主從偏差和路徑延時,進而完成時鐘同步,所以時間戳的精度很大程度上決定了主、從時鐘的同步精度。當使用軟件授時方法記錄消息的收發時間時,一般是在應用層將時間戳嵌入到事件消息中,如圖1所示。帶有時間戳的消息會穿過整個網絡協議傳輸棧傳送到網卡上,由網卡把消息發送出去。協議棧的處理能力受系統處理能力和系統負載的約束。如果系統處理能力較差或者在短時間內有較多網絡數據需要處理,則消息穿過協議棧會花費較長的時間,所以消息在協議棧中的處理時間可能會產生較大的抖動,而且這些抖動的產生具有隨機性。那么在計算由協議棧傳輸延時和物理線路上傳輸延時組成的路徑延時時,就會產生較大的偏差,使得主、從時鐘的同步精度大幅降低。

圖1 軟件授時方法消息傳輸過程
消息穿過通信協議棧的處理時間會出現抖動,其原因是軟件授時方法在應用層標記時間戳,之后消息還需要經過通信協議棧處理。所以只有在盡量低的協議層標記時間戳才能消除這個過程帶來的風險。筆者采用BCM54296芯片來實現精確時鐘同步技術的硬件授時方法。芯片實現授時精度可以達到1ns,很好地支持了精確時鐘同步技術的高精度要求。BCM54296芯片物理層獲取和標記時間戳的原理如圖2所示。
BCM54296芯片包含一個網絡同步引擎(NSE),NSE由一個時間戳計數器(NCO)和鎖相環(DPLL)組成。NCO和DPLL的狀態可以通過幀脈沖來初始化或者更新。幀脈沖的產生方式有兩種,一種是通過CPU寫寄存器來模擬幀脈沖的產生,另外一種是通過GPIO直接產生幀脈沖。通過CPU模擬幀脈沖的產生會對寄存器進行多次讀寫操作,所耗時間會增大芯片寄存器中時間值與CPU時間值之間的偏差,所以筆者采用通過GPIO直接產生幀脈沖的方法來減小偏差。如果只在初始化時同步芯片與CPU的時間,由于CPU晶振頻率與BCM54296芯片晶振頻率的不同會導致NCO中的時間與CPU時間的偏差越來越大,所以筆者通過周期性地同步芯片與CPU的時間,使得二者之間的偏差變化呈鋸齒狀[3],如圖3所示。
主時鐘發送同步消息和從時鐘發送延遲測量請求消息的時刻控制在芯片與CPU時鐘同步之后,使得發送消息中的時間戳與真實時間之間的偏差可以忽略不計,但是接收同步報文和延遲請求報文的時間無法確定,所獲取的時間戳可能和CPU時間之間存在較大的誤差,為了實現更高的同步精度,較好的辦法是對芯片獲取的時間戳進行補償,把補償后的計算值作為接收時間值來使用。

圖2 BCM54296芯片獲取和標記時間戳原理

圖3 CPU、芯片時間曲線
下面詳細說明CPU與芯片時間值補償量的計算方式。由于在每個周期開始時都進行了CPU與芯片的時鐘同步,所以從理論上認為它們的偏差為零。在這個條件下只需要求解Cs(t)對應的真實時間段t,通過幾何關系即可得到CPU的時間值Cc(t)。設第n個同步周期開始時刻,CPU與芯片時鐘的時間值均為T(n) ,而結束時刻芯片的時鐘時間值為T2(n) 。根據圖3,有:
Val(n)=T2(n)-T(n)
(4)
由幾何關系得:

(5)
即 :

(6)
可以在同步周期開始時將T(n)記錄下來,但Val(n) 值的獲取是在Cs(t)時刻之后,所以目前是未知量。由以上的分析過程可以知道,不同的同步周期中,芯片時間值的變化量Val在理論上是相等的。因此可以通過之前幾個周期所記錄的Val值來估計Val(n)。但是在實際情況下,在不同周期內的Val值會出現小幅變化,所以采用對多個Val值求均值的方法來減小抖動的影響。結合以上分析有:
(7)
結合式(6),最后得:

(8)
同理,可以由幾何關系得到:

(9)

(10)
最終求得經過補償的t時刻可用時間值:

(11)
為驗證以上提出的硬件授時方法的實際效果,筆者在真實環境中搭建了時鐘同步技術運行模型。該模型會按照第1節中描述的精確時鐘同步技術的同步過程對兩個時鐘進行時鐘同步。
在此模型上,分別使用軟件授時方法和硬件授時方法。在硬件授時的實驗過程中讀取接收同步報文和延遲請求報文的時間值,按照式(11)進行偏差補償。分別得到如圖4所示的主、從同步精度。圖4中,使用軟件授時方法同步精度在500ns線上下存在較大的波動;使用硬件授時方法并且對所使用時間值進行補償之后,同步精度在300ns線上下有較小的波動。 由此說明以上的硬件授時方法達到了較好的效果,能夠切實提高主、從時鐘的同步精度而且可以保證較小的波動幅度。

圖4 軟、硬件授時方法同步精度比較
精確時鐘同步技術以其成本低、精度高的優勢而得到了廣泛應用。但大多采用軟件授時的方法使得主從時鐘同步精度不高而且會產生較大波動。 筆者通過采用硬件授時方法并對所使用時間值進行補償,提高了同步精度,減小了波動范圍。驗證結果表明:硬件授時方法可以有效提高主、從時鐘的同步精度,減小同步精度的波動,可為工業生產中精確時間同步方案的設計提供參考。
[1] 卓巖,白濤.基于 PTP 協議的提高工業以太網時鐘同步精度的方法研究[J].化工自動化及儀表,2016,43(8):949~952.
[2] 尹捷,胡立生.統計方法在IEEE 1588同步協議中的應用[J].化工自動化及儀表,2016,43(5) :505~507.
[3] 張濤.冗余工業以太網時鐘同步方法研究[D].上海:上海交通大學,2014.
[4] IEEE Std 1588, Precision Clock Synchronization Protocol for Networked Measurement and Control Systems[S]. New York: Institute of Electrical and Electronic Engineers, 2008.
TheMethodofPrecisionTimeSynchronizationBasedonHardwareTiming
ZHAO Han-qi, HU Li-sheng
(SchoolofElectronicInformationandElectricalEngineering,ShanghaiJiaotongUniversity)
The working principle of precision time synchronization was introduced; and the software timing method applied in the current implementation process can lead to great deviation was explained. Having BCM54296 chip adopted for hardware timing was implemented and a method to improve hardware timing accuracy was proposed. Comparing synchronization precision of these two methods proves the effectiveness of hardware timing method.
time synchronization, hardware timing, BCM54296, synchronization precision
趙漢啟(1993-),碩士研究生,從事控制工程的研究,zhaohanqi93@sina.com。
TP39
A
1000-3932(2017)06-0595-05
2016-11-20,
2016-12-21)