宋 艷 ,應(yīng)斌杰 ,楊成鋼 ,郝自飛 ,毛立振
(1.國網(wǎng)浙江省電力有限公司 麗水供電公司,浙江 麗水 316021;2.杭州量泓科技有限公司,浙江 杭州 310019)
精確時(shí)間協(xié)議(Precision Time Protocol,PTP)是一種高精度網(wǎng)絡(luò)時(shí)間同步協(xié)議[1-2],具體內(nèi)容由IEEE 1588協(xié)議定義。IEEE1588 協(xié)議目前有V1 和V2 兩個(gè)版本。其支持多種形式的傳輸,比如UDP/IPv4、UDP/IPv6 以及IEEE 802.3 等。PTP 與網(wǎng)絡(luò)授時(shí)協(xié)議(Network Timing Protocol,NTP)的主要區(qū)別是,PTP 是在物理層實(shí)現(xiàn)而NTP 是在應(yīng)用層實(shí)現(xiàn)。因此,PTP 比NTP 具有更高的同步精度。PTP 可以達(dá)到亞微秒級(jí)授時(shí)精度,在網(wǎng)絡(luò)的節(jié)點(diǎn)(交換機(jī))支持PTP 協(xié)議的情況下,能夠?qū)崿F(xiàn)納秒量級(jí)的授時(shí)精度[3-4]。
PTP 授時(shí)具有成本低、精度高、網(wǎng)絡(luò)開銷小等優(yōu)點(diǎn),因此在通信、電力、軌道交通等領(lǐng)域得到了較為廣泛的應(yīng)用[5-8]。但也正因?yàn)槠涫跁r(shí)精度高,使得對(duì)PTP 授時(shí)設(shè)備授時(shí)精度的測(cè)量就顯得更為困難。PTP 授時(shí)精度從理論上來說主要受兩方面的影響,一方面是打時(shí)間戳的位置,另外是軟件同步的算法。打時(shí)間戳目前可以在物理層、數(shù)據(jù)鏈路層和應(yīng)用層上進(jìn)行,對(duì)應(yīng)的授時(shí)精度會(huì)依次降低[9-10]。目前主流的PTP 授時(shí)設(shè)備均是基于Linux系統(tǒng)的,而Linux 系統(tǒng)為非實(shí)時(shí)操作系統(tǒng),中斷響應(yīng)時(shí)間在微秒級(jí)以上,其無法獲得精確的時(shí)間戳,即便是使用了其他算法,測(cè)量精度也在100 μs 以上[11],無法對(duì)PTP 測(cè)量[12-14]。相對(duì)Linux 系統(tǒng)而言,μCOS 為實(shí)時(shí)操作系統(tǒng),能夠獲得更準(zhǔn)確的時(shí)間,可以用μCOS 系統(tǒng)加LWIP協(xié)議棧來實(shí)現(xiàn)PTP 精度測(cè)量。
PTP 授時(shí)有一步和兩步兩種模式。不管是一步還是兩步模式,都包含三個(gè)關(guān)鍵的報(bào)文,分別是同步報(bào)文Sync,延遲請(qǐng)求報(bào)文Delay_req 和延遲請(qǐng)求響應(yīng)報(bào)文Delay_resp。在兩步模式下,多一個(gè)跟隨報(bào)文Follow_up。圖1 給出了PTP 授時(shí)的基本原理,主時(shí)鐘周期性地播發(fā)Sync報(bào)文。在一步模式下,Sync 報(bào)文中除包含一個(gè)預(yù)估的時(shí)間戳tp,還包括一個(gè)校正時(shí)間tc,則準(zhǔn)確的時(shí)間戳t1=tp-tc。從時(shí)鐘接收到Sync 幀,即可獲得時(shí)間戳t1;在兩步模式下,當(dāng)Sync 報(bào)文通過網(wǎng)口發(fā)送時(shí),主時(shí)鐘會(huì)通過位于底層的時(shí)標(biāo)生成器獲得Sync 離開主時(shí)鐘的精確時(shí)刻t1,而后發(fā)送跟隨報(bào)文,該跟隨報(bào)文中包含了t1。從時(shí)鐘從跟隨報(bào)文中獲取時(shí)間戳t1。兩種模式對(duì)其他時(shí)間戳的獲得方式是相同的。從時(shí)鐘利用時(shí)標(biāo)生成器可以精確測(cè)量Sync 報(bào)文到達(dá)從時(shí)鐘的時(shí)刻t2,并向主時(shí)鐘發(fā)送延遲請(qǐng)求報(bào)文,同時(shí)記錄該報(bào)文離開從時(shí)鐘的時(shí)刻t3。主時(shí)鐘收到延遲請(qǐng)求報(bào)文后,記錄其到達(dá)主時(shí)鐘的時(shí)刻t4,并通過延遲請(qǐng)求響應(yīng)報(bào)文反饋給從時(shí)鐘。不管是主時(shí)鐘還是從時(shí)鐘,獲取的時(shí)刻都是在接近物理層打戳的。因此,認(rèn)為這種時(shí)刻是精確的。圖1 中的圓圈表示同步報(bào)文的時(shí)標(biāo)生成處。
圖1 PTP 授時(shí)原理示意圖
當(dāng)報(bào)文交換完成時(shí),從節(jié)點(diǎn)處理所有四個(gè)時(shí)間戳,用來計(jì)算從時(shí)鐘相對(duì)于主時(shí)鐘的偏移to和兩節(jié)點(diǎn)間報(bào)文的傳播時(shí)間td1和td2。
假定鏈路時(shí)延是對(duì)稱的,即td1=td2=td,其中td為鏈路平均時(shí)延,則有:
從時(shí)鐘得到偏移to后,將自己的本地時(shí)間減去to,就完成了一次與主時(shí)鐘的同步。
PTP 授時(shí)精度測(cè)量就是要測(cè)出主時(shí)鐘相對(duì)于準(zhǔn)確時(shí)間的偏差。文獻(xiàn)[15]給出的方法是,將PTP 主時(shí)鐘輸出的PPS 信號(hào)與絕對(duì)UTC 的PPS 信號(hào)進(jìn)行比對(duì),進(jìn)而得到主時(shí)鐘授時(shí)精度。這種方法顯然存在兩個(gè)問題:一是絕對(duì)的UTC 時(shí)間無法獲得,至少是極難獲得;二是PTP主時(shí)鐘輸出的PPS 信號(hào)顯然不能替代PTP 協(xié)議提供的時(shí)間。
因此,對(duì)測(cè)量設(shè)備而言,首先必須要擁有具有足夠準(zhǔn)確的時(shí)間,且根據(jù)測(cè)量需要,該時(shí)間可以在UTC 時(shí)、北京時(shí)、北斗時(shí)等時(shí)間系統(tǒng)之間選擇。作為PTP 測(cè)量設(shè)備,其扮演了從設(shè)備的角色,只不過其不向主時(shí)鐘同步時(shí)間。測(cè)量過程中,以測(cè)量設(shè)備時(shí)間為時(shí)間基準(zhǔn),獲得主設(shè)備與測(cè)量設(shè)備之間的偏差,即為PTP 授時(shí)設(shè)備的授時(shí)誤差。若認(rèn)為測(cè)量設(shè)備的時(shí)間是準(zhǔn)確的,則式(2)得到的時(shí)間偏差to,顯然就是主時(shí)鐘的授時(shí)精度。
由于t1和t4兩個(gè)時(shí)間戳都來自于主時(shí)鐘的報(bào)文,測(cè)量的問題就轉(zhuǎn)化為如何獲得t2和t3兩個(gè)時(shí)間戳。典型的方法是利用支持IEEE1588 協(xié)議的以太網(wǎng)物理層收發(fā)器專用芯片,比如DP 83640 來獲得時(shí)間戳。該芯片使用25 MHz 的外部時(shí)鐘,在芯片內(nèi)經(jīng)頻率綜合后產(chǎn)生最高位125 MHz 的PTP 時(shí)鐘。在使用125 MHz 的PTP 時(shí)鐘時(shí),計(jì)數(shù)器的增量值為8 ns,也就是使用該芯片最高可以獲得8 ns 的分辨率。使用該芯片實(shí)現(xiàn)的最大特點(diǎn)是簡(jiǎn)單。但是也存在幾個(gè)問題。一是測(cè)量的準(zhǔn)確度與PTP 時(shí)鐘的準(zhǔn)確度和穩(wěn)定度密切相關(guān),而該時(shí)鐘是由外部時(shí)鐘經(jīng)頻率綜合后產(chǎn)生的,該時(shí)鐘的漂移和抖動(dòng)都是不可控的;二是該芯片的時(shí)間戳需要通過1PPS 信號(hào)進(jìn)行同步。顯然,1PPS 的誤差會(huì)傳到給時(shí)間戳。在工程實(shí)踐上,也有人使用FPGA 來對(duì)同步報(bào)文進(jìn)行硬件標(biāo)記,這種做法需要額外的硬件邏輯設(shè)計(jì),增加了系統(tǒng)的硬件開銷和開發(fā)難度[16]。
Xilinx 公司的ZYNQ 系列SOC 芯片的以太網(wǎng)驅(qū)動(dòng)器提供了硬件PTP 時(shí)間戳記錄功能(ZYNQ 7010 不具備)。使用該芯片可以以更靈活更簡(jiǎn)單的形式,實(shí)現(xiàn)PTP 主時(shí)鐘精度測(cè)量。ZYNQ 集成了FPGA 和ARM 處理器,使用射頻芯片和必要的外圍芯片(DDR、Flash 等)加上ZYNQ就可以實(shí)現(xiàn)衛(wèi)星導(dǎo)航系統(tǒng)(Global Navigation Satellite System,GNSS)信號(hào)的接收和解算,從而獲得參考時(shí)間,而無需外部輸入1PPS 信號(hào)。只要相關(guān)算法設(shè)計(jì)得當(dāng),在接收GPS/BDS 信號(hào)時(shí),獲得的時(shí)間與絕對(duì)UTC 的偏差可以小于10 ns。在很多情況下,這個(gè)時(shí)間就可以作為測(cè)量PTP 授時(shí)精度的時(shí)間基準(zhǔn)了。
賢莊村片區(qū)水力主要是確定水泵型號(hào)后,管道輸水能力的復(fù)核。選定水泵設(shè)計(jì)流量為192 m3/h。流量調(diào)整后管線的水頭損失為14.2 m,管道地形沿程為55 m,考慮出水口剩余水頭為2.0 m,確定調(diào)整流量后輸水系統(tǒng)輸水損失為71.2 m,小于水泵額定揚(yáng)程73 m。
PTP 授時(shí)利用在物理層打時(shí)間戳實(shí)現(xiàn)時(shí)間傳遞。其時(shí)間戳包括6 字節(jié)的秒計(jì)數(shù)和4 字節(jié)的納秒計(jì)數(shù)。其中秒計(jì)數(shù)的起點(diǎn)是1970-1-1 00:00:00。ZYNQ 的納秒計(jì)數(shù)滿1 s,秒計(jì)數(shù)器進(jìn)位,納秒計(jì)數(shù)器清零。為了方便起見,下文中用納秒計(jì)數(shù)器代替這兩個(gè)計(jì)數(shù)器。納秒計(jì)數(shù)器是在PTP 時(shí)鐘驅(qū)動(dòng)下計(jì)數(shù)的,比如,PTP 時(shí)鐘是125 MHz,則一個(gè)時(shí)鐘周期為8 ns,故增量計(jì)數(shù)器為8 ns。若PTP 時(shí)鐘周期不是整數(shù)納秒,比如時(shí)鐘為120 MHz,則時(shí)鐘周期為8.33 ns。由于增量計(jì)數(shù)器無法設(shè)置小數(shù),因此只能采用折中的辦法,將兩個(gè)8 ns 和一個(gè)9 ns,也就是三個(gè)時(shí)鐘周期平均為8.33 ns。設(shè)置好增量計(jì)數(shù)器后,納秒計(jì)數(shù)器就能與時(shí)鐘周期對(duì)應(yīng)起來了。
ZYNQ 接收到來自主時(shí)鐘的Sync 數(shù)據(jù)包后,ZYNQ在物理層打上時(shí)間戳,并產(chǎn)生接收中斷,應(yīng)用層任務(wù)可以讀取該時(shí)間戳T2。需要注意的是,考慮到響應(yīng)和處理時(shí)間,無需對(duì)所有的Sync 幀都響應(yīng)。接收到Sync 幀后,ZYNQ 向主時(shí)鐘發(fā)送Dly_req 請(qǐng)求幀,該幀離開ZYNQ 網(wǎng)絡(luò)控制時(shí),ZYNQ 再次產(chǎn)生中斷,并打上時(shí)間戳T3。收發(fā)中斷產(chǎn)生后,應(yīng)用層軟件可以從容讀取這兩個(gè)時(shí)間戳。
雖然ZYNQ 可以記錄并讀取T2和T3兩個(gè)值,但是需要注意的是,納秒計(jì)數(shù)器反映的僅僅是時(shí)鐘數(shù)與增量計(jì)數(shù)器的乘積。其含義是假定PTP 系統(tǒng)時(shí)鐘絕對(duì)準(zhǔn)確的情況下,從初始值時(shí)刻至測(cè)量時(shí)刻為止流逝的時(shí)間。顯然,要想使時(shí)間戳盡可能與真實(shí)時(shí)間一致,必須要解決兩個(gè)問題,一是計(jì)數(shù)器初始值如何與真實(shí)時(shí)間保持同步,二是如何消除頻差帶來的影響。
由于ZYNQ 的納秒計(jì)數(shù)器沒有提供硬件同步機(jī)制,只能通過寄存器寫入的方式賦初值。一般情況下,在系統(tǒng)時(shí)間的整數(shù)秒將系統(tǒng)時(shí)間寫入秒寄存器并將納秒寄存器清零。如果寫入過程中沒有時(shí)延或者開銷,顯然很容易就能實(shí)現(xiàn)納秒計(jì)數(shù)器與系統(tǒng)時(shí)間的同步。然而,向寄存器寫入初值需要的時(shí)間波動(dòng)高達(dá)微秒級(jí),而且分布隨機(jī)。因此,在整秒時(shí)刻向寄存器寫初值,僅能實(shí)現(xiàn)納秒寄存器的粗同步。如圖2 所示,假定在整數(shù)秒時(shí)刻寫入,那么秒計(jì)數(shù)器寫入的是當(dāng)前秒的值,納秒計(jì)數(shù)器寫入值應(yīng)該為0。由于延時(shí)的存在,數(shù)值寫入寄存器的真正時(shí)刻是tw,而不是0,顯然納秒計(jì)數(shù)器的值比真實(shí)時(shí)刻滯后了tw。由于tw在陰影區(qū)域內(nèi)隨機(jī)變化,因此無法通過提前補(bǔ)償?shù)姆绞较龑懭霑r(shí)延帶來的誤差。tw雖然無法通過提前補(bǔ)償,但可以通過事后補(bǔ)償?shù)臋C(jī)制來處理。如圖2 所示,當(dāng)ZYNQ 完成向寄存器寫入初值后,可以通過硬件方式立刻拍得寫入完成后的時(shí)刻tr。一般情況下,這個(gè)tr與tw之間只存在一個(gè)較為固定且很小的差值Δt,即tw=tr-Δt。將tw寫入ZYNQ 的補(bǔ)償寄存器,使用這種方式補(bǔ)償,就實(shí)現(xiàn)了納秒計(jì)數(shù)器初值與系統(tǒng)時(shí)間的同步。
圖2 納秒寄存器初始值同步示意圖
雖然通過后補(bǔ)償?shù)姆绞侥軌蚪鉀Q初始值同步的問題,但是由于系統(tǒng)時(shí)鐘的不準(zhǔn)確性,隨著時(shí)間的推移,誤差會(huì)積累,這個(gè)誤差會(huì)對(duì)測(cè)量結(jié)果帶來很大影響。如圖3 所示,由于參考頻率不準(zhǔn)確,使得PTP 納秒計(jì)數(shù)器和秒計(jì)數(shù)記錄的時(shí)間都并非真正的時(shí)間。假如使用標(biāo)稱值為10 MHz,準(zhǔn)確度為1×10-13的高擋時(shí)鐘源,則1 s 由頻率偏差引入的誤差To可達(dá)100 ns。因此,這個(gè)誤差必須要進(jìn)行消除才行。
圖3 時(shí)鐘源對(duì)測(cè)量結(jié)果的影響
通過接收衛(wèi)星導(dǎo)航系統(tǒng)信號(hào),可以測(cè)量出時(shí)鐘源差σs:
這樣就得到了真實(shí)的時(shí)間。因此,T2和T3對(duì)應(yīng)的真實(shí)時(shí)刻t2、t3分別如式(7)、(8)所示。
t1、t4從來自PTP 主時(shí)鐘的數(shù)據(jù)包中獲取。利用式(2)就可以測(cè)量出待測(cè)PTP 主時(shí)鐘的授時(shí)精度了。需要注意的是,由于頻率源的不穩(wěn)定性,每秒鐘的偏差值To實(shí)際上是不一致的,在實(shí)際測(cè)試中,需要每秒都進(jìn)行相應(yīng)處理。
圖4 給出了利用ZYNQ 進(jìn)行PTP 測(cè)量的硬件組成方案。由圖可見,該測(cè)量方案的硬件組成非常簡(jiǎn)單。以ZYNQ SoC 為核心,外圍除了Flash、DDR 等保證系統(tǒng)正常運(yùn)行的硬件外,主要就是頻率綜合器和射頻通道ADC。除此之外,信號(hào)及信息的處理都在ZYNQ 中以軟件的形式完成。
圖4 PTP 測(cè)量框圖
PTP 測(cè)量的軟件流程如圖5 所示。由圖可見,首先需要完成導(dǎo)航信號(hào)的捕獲、跟蹤、解算,這一個(gè)過程實(shí)質(zhì)上就是傳統(tǒng)的導(dǎo)航接收機(jī)信號(hào)處理及解算過程。與之不同的是,當(dāng)解算完成,得出本地位置后,要進(jìn)一步進(jìn)行鐘差和頻差的計(jì)算,為準(zhǔn)確的源差測(cè)量提供保證。當(dāng)獲得了準(zhǔn)確的系統(tǒng)時(shí)間和頻差后,就能以此進(jìn)行PTP 授時(shí)精度測(cè)量了。測(cè)量的基本流程如圖6 所示(以兩步模式為例)。
圖5 軟件處理基本流程
圖6 PTP 精度測(cè)量流程圖
利用本方案實(shí)現(xiàn)的PTP 精度測(cè)量設(shè)備,對(duì)西安同步SYN2407 主時(shí)鐘授時(shí)精度進(jìn)行了超過30 min 的測(cè)量,測(cè)量數(shù)據(jù)如圖7 所示。測(cè)試結(jié)果表明,即使不考慮PTP 主時(shí)鐘精度對(duì)測(cè)量結(jié)果的影響,該方案也能獲得優(yōu)于10 ns的測(cè)量精度(圖7 中的標(biāo)準(zhǔn)差即為測(cè)量精度)。經(jīng)第三方權(quán)威機(jī)構(gòu)檢測(cè),本方案對(duì)PTP 授時(shí)設(shè)備的測(cè)量精度可達(dá)10 ns 以下(1σ)。
圖7 PTP 精度測(cè)量實(shí)測(cè)數(shù)據(jù)
隨著信息設(shè)備對(duì)時(shí)間精度需求越來越高,可以預(yù)見PTP 網(wǎng)絡(luò)授時(shí)將會(huì)應(yīng)用到更多場(chǎng)合,對(duì)PTP 授時(shí)設(shè)備的授時(shí)精度也將提出更高的要求。一文中提出的方法能夠以一種比較簡(jiǎn)單的方案實(shí)現(xiàn)PTP 授時(shí)精度測(cè)量,能夠滿足對(duì)高精度PTP 主時(shí)鐘授時(shí)精度測(cè)量的需求。