中國(guó)衛(wèi)星海上測(cè)控部 丁 廣 邵 健 張建飛
江蘇省江陰廣播電視集團(tuán) 欒雁蹤
時(shí)間統(tǒng)一系統(tǒng)(簡(jiǎn)稱時(shí)統(tǒng))是遠(yuǎn)洋科學(xué)考察船(科考船)上的重要組成部分。目前,科考船時(shí)統(tǒng)的時(shí)間比對(duì)(簡(jiǎn)稱對(duì)時(shí))主要以衛(wèi)星導(dǎo)航對(duì)時(shí)校頻為主,GPS和銣?zhǔn)貢r(shí)鐘對(duì)時(shí)為輔,實(shí)現(xiàn)岸船時(shí)間同步??瓶即瑫r(shí)統(tǒng)設(shè)備輸出時(shí)間信號(hào)采用專線或者光纖方式傳送至用戶設(shè)備。這種傳輸方式穩(wěn)定可靠、抗干擾能力強(qiáng)且時(shí)間精度損失很小,但也存在一些局限性,如通過(guò)人工報(bào)時(shí)來(lái)驗(yàn)證時(shí)間的準(zhǔn)確性,增加了工作量,同時(shí)需要一臺(tái)B碼解碼顯示終端,故障點(diǎn)增多,操作維護(hù)不便??瓶荚O(shè)備計(jì)算機(jī)終端同步時(shí)鐘最簡(jiǎn)便的方法是網(wǎng)絡(luò)授時(shí),通過(guò)同步以太網(wǎng)技術(shù)實(shí)現(xiàn)時(shí)鐘同步,是一種切實(shí)可行的解決方法。局域網(wǎng)授時(shí)不存在路由器路徑延遲問題,因而授時(shí)精度理論上可以提到亞毫秒級(jí)。本文對(duì)局域網(wǎng)對(duì)時(shí)技術(shù)進(jìn)行分析研究,提出了改進(jìn)精度方法,給出一個(gè)基于計(jì)算機(jī)網(wǎng)絡(luò)同步的時(shí)鐘實(shí)現(xiàn)方案,該方案可以有效提高岸船間數(shù)據(jù)傳輸?shù)臅r(shí)鐘同步精度。
網(wǎng)絡(luò)時(shí)間協(xié)議NTP(Network Time Protocol)用于將計(jì)算機(jī)客戶或服務(wù)器的時(shí)間與另一服務(wù)器同步,使用層次式時(shí)間分布模型。在配置時(shí),NTP可以利用冗余服務(wù)器和多條網(wǎng)絡(luò)路徑來(lái)獲得時(shí)間的高準(zhǔn)確性和高可靠性。即使客戶機(jī)在長(zhǎng)時(shí)間無(wú)法與某一時(shí)間服務(wù)器相聯(lián)系的情況下,仍可提供高準(zhǔn)確度時(shí)間。
實(shí)際應(yīng)用中,還有確保秒級(jí)精度的簡(jiǎn)單的網(wǎng)絡(luò)時(shí)間協(xié)議SNTP,它主要用于那些不需要較高NTP精度網(wǎng)絡(luò)時(shí)間同步客戶機(jī)。SNTP協(xié)議已減少了網(wǎng)絡(luò)延時(shí)對(duì)校對(duì)準(zhǔn)確的影響,但沒有冗余服務(wù)器和校正時(shí)鐘頻率誤差功能。
除了認(rèn)證符字段在SNTP中一般被忽略外,SNTP的報(bào)文格式與RFC-1305中所描述的NTP格式是一致的。NTP/SNTP服務(wù)端使用固定的UDP端口號(hào)是123。表1是NTP/SNTP報(bào)文格式。
表1 NTP協(xié)議數(shù)據(jù)請(qǐng)求和應(yīng)答報(bào)文格式
NTP一般采用是Client/Server方式。如圖1所示,客戶機(jī)使用時(shí)鐘偏差來(lái)調(diào)整本地時(shí)鐘,以使其時(shí)間與服務(wù)器時(shí)間一致。T1為客戶發(fā)送NTP請(qǐng)求時(shí)間戳(以客戶時(shí)間為參照);T2為服務(wù)器收到NTP請(qǐng)求時(shí)間戳(以服務(wù)器時(shí)間為參照);T3為服務(wù)器回復(fù)NTP請(qǐng)求時(shí)間戳(以服務(wù)器時(shí)間為參照);T4為客戶收到NTP回復(fù)包時(shí)間戳(以客戶時(shí)間為參照);客戶機(jī)用上述4個(gè)時(shí)間參數(shù)就能夠計(jì)算出2個(gè)關(guān)鍵參數(shù):NTP包的往返延遲d和客戶機(jī)與服務(wù)器之間的時(shí)鐘偏差t。d1為NTP請(qǐng)求包傳送延時(shí);d2為NTP回復(fù)包傳送延時(shí);t為服務(wù)器和客戶端之間的時(shí)間偏差;d為NTP包的往返延遲時(shí)間。
圖1 Clint/Server方式下NTP授時(shí)原理
現(xiàn)已知T1,T2,T3,T4,希望求得t以調(diào)整客戶時(shí)鐘
假設(shè)NTP請(qǐng)求和回復(fù)包傳遞時(shí)延相等,即d1=d2,則可解得
根據(jù)式(1),t也可表示為
可以看出,t,d只與T2,T1及T3,T4差值相關(guān),而與T2,T3差值無(wú)關(guān),即最終的結(jié)果與服務(wù)器處理請(qǐng)求所需的時(shí)間無(wú)關(guān)。據(jù)此,客戶端即可通過(guò)T1,T2,T3,T4計(jì)算出時(shí)差去調(diào)整本地時(shí)鐘。
NTP授時(shí)精度與NTP服務(wù)器與用戶間的網(wǎng)絡(luò)狀況有關(guān),主要取決于NTP包往返路由的延時(shí)對(duì)稱程度,往返路由的延時(shí)不對(duì)稱值最大不超過(guò)網(wǎng)絡(luò)延時(shí)。式(2)是在假設(shè)NTP請(qǐng)求和回復(fù)包在網(wǎng)上傳送延時(shí)相等,即d1=d2=d/2的情況下得出的,而d1,d2的取值范圍在(0…d)間,由式(3)可以得出最大授時(shí)誤差是±d/2。一般廣域網(wǎng)的網(wǎng)絡(luò)延時(shí)在10ms~500ms之間;局域網(wǎng)的網(wǎng)絡(luò)延時(shí)在計(jì)時(shí)操作系統(tǒng)內(nèi)核處理延遲的情況下通常小于1ms。
假定局域網(wǎng)內(nèi)NTP延時(shí)小于1ms,理論上授時(shí)誤差小于0.5ms,但對(duì)于Windows操作系統(tǒng)內(nèi)置的NTP客戶和NTP服務(wù),并不能達(dá)到此精度。Windows NTP時(shí)鐘分辨率因操作系統(tǒng)和硬件不同而有所不同,時(shí)鐘分辨率通常為10ms或15ms?;赪indows操作系統(tǒng)內(nèi)置的NTP授時(shí)精度最高不超過(guò)10ms。
為了解決測(cè)量和控制應(yīng)用的分布網(wǎng)絡(luò)定時(shí)同步的需要,2000年底成立網(wǎng)絡(luò)精密時(shí)鐘同步委員會(huì)通過(guò)IEEE1588標(biāo)準(zhǔn)。IEEE1588的全稱是“網(wǎng)絡(luò)測(cè)量和控制系統(tǒng)的精密時(shí)鐘同步協(xié)議標(biāo)準(zhǔn)”,IEEE1588協(xié)議是通用提升網(wǎng)絡(luò)系統(tǒng)定時(shí)同步能力的規(guī)范,在起草過(guò)程中主要參考以太網(wǎng)來(lái)編制,使分布式通信網(wǎng)絡(luò)能夠具有嚴(yán)格的定時(shí)同步,并且應(yīng)用于工業(yè)自動(dòng)化系統(tǒng)?;緲?gòu)思是通過(guò)硬件和軟件將網(wǎng)絡(luò)設(shè)備(客戶機(jī))的內(nèi)時(shí)鐘與主控機(jī)的主時(shí)鐘實(shí)現(xiàn)同步,提供同步建立時(shí)間小于10μs的運(yùn)用,整個(gè)網(wǎng)絡(luò)的定時(shí)同步指標(biāo)有顯著的改善。在這里簡(jiǎn)要說(shuō)明IEEE1588的特點(diǎn):
早期的網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)只有軟件,而IEEE1588既使用軟件,也同時(shí)使用硬件和軟件配合,獲得更精確的定時(shí)同步;一個(gè)1588精密時(shí)鐘(PTP)系統(tǒng)包括多個(gè)節(jié)點(diǎn),每一個(gè)都代表一個(gè)時(shí)鐘,時(shí)鐘之間經(jīng)由網(wǎng)絡(luò)連接。按工作原理,時(shí)鐘可以分為普通時(shí)鐘和邊界時(shí)鐘兩種。二者的區(qū)別是普通時(shí)鐘只有一個(gè)PTP端口,而邊界時(shí)鐘包括多個(gè)PTP端口。在網(wǎng)絡(luò)中,每一個(gè)時(shí)鐘都可能處于下面3種狀態(tài):從屬時(shí)鐘(SLAVE)、主時(shí)鐘(MASTER)和原主時(shí)鐘(PASSIVE)。每個(gè)時(shí)鐘所處的狀態(tài)是根據(jù)最優(yōu)化的時(shí)鐘算法決定的。
PTP體系結(jié)構(gòu)的特別之處在于硬件部分與協(xié)議的分離,以及軟件部分與協(xié)議的分離,因此,運(yùn)行時(shí)對(duì)處理器的要求很低。如圖2所示,PTP的體系結(jié)構(gòu)是一種完全脫離操作系統(tǒng)的軟件結(jié)構(gòu)。
圖2 PTP協(xié)議體系結(jié)構(gòu)
IEEE 1588是一種主從式的時(shí)間同步技術(shù),通過(guò)定義基于消息的精確時(shí)間同步協(xié)議(PTP),提供了一種解決以太網(wǎng)實(shí)時(shí)性不足的有效方法。其原理是主時(shí)鐘周期性的向網(wǎng)絡(luò)中所有從時(shí)鐘發(fā)送同步消息報(bào)文;從時(shí)鐘以主時(shí)鐘為參照,通過(guò)解析接收到的同步消息報(bào)文計(jì)算與主時(shí)鐘之間的時(shí)間差異,并進(jìn)行同步校正,實(shí)現(xiàn)系統(tǒng)同步。PTP協(xié)議能夠把時(shí)間源Master的時(shí)間精確地傳送到用時(shí)設(shè)備Slave,兩者之間同步誤差能夠達(dá)到亞微秒級(jí)。Peer-to-Peer模式下PTP的基本原理如圖3所示。
圖3 PTP授時(shí)原理
首先做如下兩個(gè)設(shè)定:一是假定主時(shí)鐘到交換機(jī)的鏈路時(shí)延為d1,報(bào)文在交換機(jī)中的駐留時(shí)延為d2,交換機(jī)到從時(shí)鐘的鏈路時(shí)延為d3。二是假定主時(shí)鐘的時(shí)間原點(diǎn)為A,交換機(jī)的時(shí)間原點(diǎn)為B,從時(shí)鐘的時(shí)間原點(diǎn)為C。主時(shí)鐘與交換機(jī)之間時(shí)間偏差為Q1,交換機(jī)與從時(shí)鐘的時(shí)間偏差為Q2,這樣,主時(shí)鐘與從時(shí)鐘的時(shí)間偏差為Q1+Q2。
時(shí)延計(jì)算如下:
(1)時(shí)延d1的計(jì)算
交換機(jī)在t1a時(shí)刻發(fā)出Pdelay_req報(bào)文,這個(gè)報(bào)文在t2a時(shí)刻被主時(shí)鐘收到;主時(shí)鐘在時(shí)刻t3a發(fā)送Pdelay_resp報(bào)文,該報(bào)文在時(shí)延t4a時(shí)刻被交換機(jī)收到
(2)sync報(bào)文穿過(guò)交換機(jī)的駐留時(shí)延d2的計(jì)算
(3)時(shí)延d3的計(jì)算
交換機(jī)在t1b時(shí)刻發(fā)出Pdelay_req報(bào)文,這個(gè)報(bào)文在t2b時(shí)刻被從時(shí)鐘收到;從時(shí)鐘在時(shí)刻t3b發(fā)送Pdelay_resp報(bào)文,該報(bào)文在時(shí)延t4b時(shí)刻被交換機(jī)收到
(4)交換機(jī)與主時(shí)鐘之間時(shí)間偏差
(5)從時(shí)鐘與交換機(jī)之間的時(shí)間偏差
(6)綜合式(7)~式(8)進(jìn)行推算
式中,t1為sync報(bào)文從主站發(fā)出的時(shí)間;t2為sync報(bào)文被從時(shí)鐘收到的時(shí)間。
只要計(jì)算出了Q1+Q2,主時(shí)鐘和從時(shí)鐘的偏差就知道了。通過(guò)調(diào)整從時(shí)鐘的時(shí)間,就可以達(dá)到主從時(shí)間統(tǒng)一的目的。
從推導(dǎo)可以看出,PTP授時(shí)精度取決于時(shí)間戳的精度。而提高時(shí)間戳精度的方法就是利用專用硬件電路打時(shí)間戳。目前,市場(chǎng)上已經(jīng)出現(xiàn)了能夠支持IEEE1588的以太網(wǎng)PHY和嵌入式處理器。為采用IEEE1588標(biāo)準(zhǔn)規(guī)定的PTP(Precision Time Protocol)網(wǎng)絡(luò)精確對(duì)時(shí)技術(shù)的應(yīng)用,提供廣闊的拓展空間。
通用PC機(jī)自帶兩類時(shí)鐘源:硬件時(shí)鐘和軟件時(shí)鐘(或稱為系統(tǒng)時(shí)鐘)。不論是硬件時(shí)鐘還是軟件時(shí)鐘,都是由石英晶體振蕩器驅(qū)動(dòng)的,通過(guò)累計(jì)石英晶體振蕩器輸出脈沖數(shù),換算出時(shí)間。所以計(jì)算機(jī)時(shí)鐘的準(zhǔn)確度取決于晶振頻率準(zhǔn)確度。受溫度變化、電壓、芯片老化等因素影響,晶振頻率會(huì)發(fā)生小幅度波動(dòng),其中溫度對(duì)晶振頻影響最大。由于工藝和材料的原因,同一生產(chǎn)線上標(biāo)稱頻率相同的石英晶體,其實(shí)際頻率是不同的,實(shí)際頻率與標(biāo)稱頻率偏差率從10-4量級(jí)到10-9量級(jí)不等。以10-4量級(jí)為例,時(shí)鐘每天至少誤差8.64s。
時(shí)鐘頻率偏差是時(shí)鐘長(zhǎng)期計(jì)時(shí)累積誤差的主要原因,要提高時(shí)鐘長(zhǎng)期計(jì)時(shí)精度,必須補(bǔ)償時(shí)鐘頻率偏差。聯(lián)網(wǎng)的計(jì)算機(jī)可采用NTP方式,可非常方便地校準(zhǔn)時(shí)鐘頻率偏差,其原理如圖4所示。以NTP服務(wù)器時(shí)鐘為標(biāo)準(zhǔn)時(shí)間,在某一時(shí)刻設(shè)置NTP客戶機(jī)時(shí)間為NTP服務(wù)器當(dāng)前時(shí)間T0,經(jīng)過(guò)一段時(shí)間后,NTP服務(wù)器時(shí)間為T0+tsn,NTP客戶端時(shí)間為T0+tcn。因?yàn)榇嬖跁r(shí)鐘頻率偏差,tsn與tcn并不相等。NTP客戶端時(shí)間tcn需乘以時(shí)鐘頻率偏差系數(shù)k才等于tsn,即tsn=k×tcn,所以k=tsn/tcn。
圖4 計(jì)算時(shí)鐘頻率偏差k原理
任何晶振實(shí)際工作頻率都是不穩(wěn)定的,只是程度不同而已。即使溫度補(bǔ)償?shù)木д?,在常溫范圍?nèi)(攝氏10℃~35℃)也有大約5×10-7~2×10-6的誤差。晶振實(shí)際頻率是受外界多種因素(溫度、電壓、老化等)影響而改變的。因此,時(shí)鐘頻率偏差系數(shù)k并非恒定不變的。每隔一定時(shí)間,NTP客戶機(jī)要對(duì)時(shí)鐘頻率偏差系數(shù)k進(jìn)行校正,才能保證計(jì)時(shí)精度。為了減少溫度引起晶振頻率漂移對(duì)時(shí)鐘準(zhǔn)確度的影響,可以采用數(shù)字溫漂補(bǔ)償方法,提高時(shí)鐘長(zhǎng)期計(jì)時(shí)準(zhǔn)確度。先測(cè)出工作溫度范圍內(nèi)溫度對(duì)應(yīng)的溫漂補(bǔ)償系數(shù),工作時(shí)每隔一定時(shí)間,根據(jù)實(shí)際溫度查出對(duì)應(yīng)補(bǔ)償系數(shù)動(dòng)態(tài)地修正時(shí)間。
局域網(wǎng)內(nèi)100MB以太網(wǎng)幀在百兆網(wǎng)絡(luò)物理層單向延時(shí)理論值約8μs,要精確測(cè)量NTP包網(wǎng)絡(luò)延時(shí),提高授時(shí)精度,時(shí)間分辨率必須達(dá)到或高于μs級(jí)。Windows系統(tǒng)常用的多個(gè)與時(shí)間有關(guān)的API,其時(shí)間分辨率最高精度只能達(dá)到ms級(jí)。其中,time,gmtime,localtime的時(shí)間值精確到s級(jí);函數(shù)GetTickCount返回值時(shí)間精確到10ms或15ms。
Windows計(jì)算機(jī)系統(tǒng)有一個(gè)高精度性能定時(shí)器。函數(shù)QueryPerformanceFrequency可得到這個(gè)定時(shí)器的頻率。函數(shù)QueryPerformanceCounter可得到定時(shí)器的當(dāng)前值。利用2次獲得的計(jì)數(shù)之差及時(shí)鐘頻率,就可以計(jì)算出事件經(jīng)歷的精確時(shí)間。缺點(diǎn)是:讀取速度相對(duì)慢,與CPU速度關(guān)系不大。在使用時(shí)要注意它的實(shí)用分辨率大約只有2μs。
計(jì)算機(jī)CPU中,有一個(gè)稱為“時(shí)間戳(Time Stamp)”的部件,它以64bit無(wú)符號(hào)整型數(shù)的格式,記錄了自CPU上電以來(lái)所經(jīng)過(guò)的時(shí)鐘周期數(shù),提供了1條機(jī)器指令RDTSC(Read Time Stamp Counter)來(lái)讀取這個(gè)時(shí)間戳。但實(shí)際執(zhí)行約需200個(gè)時(shí)鐘周期,對(duì)于1GHz處理器實(shí)用分辨率約0.2μs。
用高精度性能定時(shí)器或RDTSC均可為網(wǎng)絡(luò)延時(shí)測(cè)量提供μs級(jí)計(jì)時(shí),但要根據(jù)系統(tǒng)的具體情況選擇一個(gè)最合適的。
局域網(wǎng)絡(luò)時(shí)延相對(duì)較大的原因在于時(shí)間戳一般都是在應(yīng)用層加戳。為減少操作系統(tǒng)內(nèi)核處理延時(shí)的影響提高NTP授時(shí)精度,發(fā)/收NTP包時(shí)間戳應(yīng)盡量接近主機(jī)真實(shí)發(fā)/收包時(shí)刻。在不改變硬件的條件下,一個(gè)可行的辦法是修改網(wǎng)卡驅(qū)動(dòng)程序,將記錄NTP包發(fā)/收時(shí)間戳從應(yīng)用程序移至網(wǎng)卡驅(qū)動(dòng)程序處,可消除操作系統(tǒng)內(nèi)核處理延時(shí)不確定而引入的誤差。
對(duì)于科考船,時(shí)間傳遞技術(shù)主要是指船內(nèi)時(shí)間傳遞,其主要的傳遞技術(shù)包括基于PTP協(xié)議網(wǎng)絡(luò)時(shí)間傳遞和光纖時(shí)間傳遞。主要由岸船對(duì)時(shí)、定時(shí)校頻、時(shí)間統(tǒng)一、時(shí)間服務(wù)器和時(shí)頻傳輸網(wǎng)絡(luò)等子系統(tǒng)組成,系統(tǒng)組成如圖5所示。
圖5 時(shí)頻服務(wù)子系統(tǒng)設(shè)計(jì)
科考船對(duì)時(shí)方案可通過(guò)同步以太網(wǎng)技術(shù),基于EEE 1588技術(shù)實(shí)現(xiàn)時(shí)間同步。時(shí)鐘振蕩器隨時(shí)間產(chǎn)生漂移,需要標(biāo)準(zhǔn)授時(shí)系統(tǒng)作校準(zhǔn),校準(zhǔn)過(guò)程要簡(jiǎn)短和安全可靠。目前常用的有GPS(全球定位系統(tǒng))和IRIG-B(國(guó)際通用時(shí)間格式碼),IRIG-B每秒發(fā)送一個(gè)幀脈沖和10MHz基準(zhǔn)時(shí)鐘,實(shí)現(xiàn)主控機(jī)/客戶機(jī)的時(shí)鐘同步。IEEE1588采用時(shí)間分布機(jī)制和時(shí)間調(diào)度概念,客戶機(jī)可使用普通振蕩器,通過(guò)軟件調(diào)度與主控機(jī)的主時(shí)鐘保持同步,過(guò)程簡(jiǎn)單可靠,節(jié)約大量時(shí)鐘電纜。岸船對(duì)時(shí)子系統(tǒng)中,科考船定時(shí)校頻以岸船衛(wèi)星雙向?qū)r(shí)為主用手段,北斗/GPS為輔用手段,實(shí)現(xiàn)岸船高精度時(shí)間同步,對(duì)時(shí)精度優(yōu)于10ns。在提高兩點(diǎn)間的岸船對(duì)時(shí)的精度的基礎(chǔ)上,通過(guò)建立岸船多點(diǎn)編隊(duì)對(duì)時(shí)網(wǎng)絡(luò),進(jìn)一步提高岸船對(duì)時(shí)精度。定時(shí)校頻子系統(tǒng)在科考船安裝高精度頻率源,并通過(guò)岸船對(duì)時(shí)信號(hào)對(duì)高穩(wěn)頻率源進(jìn)行定時(shí)校頻。時(shí)間統(tǒng)一子系統(tǒng)以高穩(wěn)頻率源為基礎(chǔ),產(chǎn)生含有同步信息和時(shí)間信息的IRIG-B時(shí)間碼、1pps信號(hào)以及相關(guān)高穩(wěn)頻率信號(hào)。時(shí)間服務(wù)器子系統(tǒng)接收本地時(shí)統(tǒng)IRIG-B時(shí)間碼校準(zhǔn)、1pps以及10MHz頻標(biāo)信號(hào),采用PTP協(xié)議通過(guò)IP承載網(wǎng)絡(luò)為用戶提供亞微秒級(jí)的時(shí)間信息服務(wù)。
綜上所述,科考船采用基于同步以太網(wǎng)技術(shù)的同步技術(shù),以太網(wǎng)通過(guò)物理層芯片從串行數(shù)據(jù)碼流中恢復(fù)出發(fā)送端的時(shí)鐘。同步以太網(wǎng)采用實(shí)時(shí)報(bào)文方式(RTP)在主從結(jié)點(diǎn)間提供網(wǎng)絡(luò)連接和基于信息報(bào)的同步服務(wù),網(wǎng)絡(luò)時(shí)間服務(wù)器以時(shí)間報(bào)文方式向用戶發(fā)布時(shí)間信息,終端節(jié)點(diǎn)進(jìn)行時(shí)頻同步,并產(chǎn)生IRIG-B時(shí)碼,送給所需服務(wù)的設(shè)備;時(shí)頻信號(hào)傳輸范圍廣,可利用率高;網(wǎng)絡(luò)中可利用時(shí)間信號(hào)用于網(wǎng)絡(luò)維護(hù)、控制與管理,因此應(yīng)用可擴(kuò)展性強(qiáng)。
見www.dcw.org.cn