當(dāng)前位置:首頁(yè)檢測(cè)中心基礎(chǔ)知識(shí) │ NTP時(shí)鐘同步原理及誤差簡(jiǎn)析

NTP時(shí)鐘同步原理及誤差簡(jiǎn)析

  • 瀏覽次數(shù):14197次
  • 發(fā)布時(shí)間:2017/11/20 17:11:46
  • 作者:pl_yinhe

  在我們某試驗(yàn)系統(tǒng)方案設(shè)計(jì)中,由于數(shù)據(jù)同步性的要求,需要將我們WP4000變頻功率分析儀的時(shí)鐘與客戶的NI系統(tǒng)的時(shí)鐘進(jìn)行同步,對(duì)于WP4000變頻功率測(cè)試系統(tǒng)而言,多臺(tái)分析儀之間可通過同步光纖接口達(dá)到嚴(yán)格同步,同步時(shí)序達(dá)us級(jí)。但要求WP4000變頻功率測(cè)試系統(tǒng)與其它系統(tǒng)之間保持同步,在同步性要求不是特別高的情況下,可以采用NTP時(shí)鐘同步的方式進(jìn)行多系統(tǒng)間的同步,以下就NTP時(shí)鐘同步系統(tǒng)誤差進(jìn)行簡(jiǎn)析。

NTP協(xié)議簡(jiǎn)介

  網(wǎng)絡(luò)時(shí)間協(xié)議NTP(Network Time Protocol)的主要開發(fā)者是美國(guó)特拉華大學(xué)的MILLS David L教授設(shè)計(jì)實(shí)現(xiàn)的,由時(shí)間協(xié)議、ICMP時(shí)間戳消息及IP時(shí)間戳選項(xiàng)發(fā)展而來(lái)。NTP用于將計(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(Simple Network Time Protocol)。SNTP是NTP的一個(gè)子集,主要用于那些不需要NTP的精度以較高實(shí)現(xiàn)復(fù)雜性的網(wǎng)絡(luò)時(shí)間同步客戶機(jī)。SNTP協(xié)議已減少了網(wǎng)絡(luò)延時(shí)對(duì)校對(duì)準(zhǔn)確的影響,但沒有冗余服務(wù)器和校正時(shí)鐘頻率誤差功能。

  一般的計(jì)算機(jī)和嵌入式設(shè)備在時(shí)鐘度方面沒有明確的指標(biāo)要求, 時(shí)鐘精度只有10-4~10-5,每天可能誤差達(dá)十幾秒或更多,如果不及時(shí)校正,其累積時(shí)間誤差不可忽視。許多工業(yè)控制過程需要高準(zhǔn)確度時(shí)間,如:電力系統(tǒng)內(nèi)眾多的計(jì)算機(jī)監(jiān)控系統(tǒng)、保護(hù)裝置、故障錄波器等時(shí)間同步要在ms級(jí)以內(nèi)。

  聯(lián)網(wǎng)計(jì)算機(jī)同步時(shí)鐘最簡(jiǎn)便的方法是網(wǎng)絡(luò)授時(shí)。網(wǎng)絡(luò)授時(shí)分為廣域網(wǎng)授時(shí)和局域網(wǎng)授時(shí)。廣域網(wǎng)授時(shí)精度通常能達(dá)50ms級(jí),但有時(shí)超過500ms,這是因?yàn)槊看谓?jīng)過的路由器路徑可能不相同。現(xiàn)在還沒有更好的辦法將這種不同路徑延遲的時(shí)間誤差完全消除。局域網(wǎng)授時(shí)不存在路由器路徑延遲問題,因而授時(shí)精度理論上可以提到亞毫秒級(jí)。Windows內(nèi)置NTP服務(wù),在局域網(wǎng)內(nèi)其最高授時(shí)精度也只能達(dá)10ms級(jí)。因此,提高局域網(wǎng)NTP授時(shí)精度成為一個(gè)迫切需要解決的問題。

NTP授時(shí)原理

  NTP最典型的授時(shí)方式是Client/Server方式。如下圖1所示,客戶機(jī)首先向服務(wù)器發(fā)送一個(gè)NTP 包,其中包含了該包離開客戶機(jī)的時(shí)間戳T1,當(dāng)服務(wù)器接收到該包時(shí),依次填入包到達(dá)的時(shí)間戳T2、包離開的時(shí)間戳T3,然后立即把包返回給客戶機(jī)??蛻魴C(jī)在接收到響應(yīng)包時(shí),記錄包返回的時(shí)間戳T4??蛻魴C(jī)用上述4個(gè)時(shí)間參數(shù)就能夠計(jì)算出2個(gè)關(guān)鍵參數(shù):NTP包的往返延遲d和客戶機(jī)與服務(wù)器之間的時(shí)鐘偏差t??蛻魴C(jī)使用時(shí)鐘偏差來(lái)調(diào)整本地時(shí)鐘,以使其時(shí)間與服務(wù)器時(shí)間一致。

Client/Server方式下NTP授時(shí)原理

圖1 Client/Server方式下NTP授時(shí)原理

  圖1中: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í)間為參照);d1為NTP請(qǐng)求包傳送延時(shí),d2為NTP回復(fù)包傳送延時(shí);t為服務(wù)器和客戶端之間的時(shí)間偏差,d為NTP包的往返時(shí)間。

  現(xiàn)已經(jīng)T1、T2、T3、T4,希望求得t以調(diào)整客戶方時(shí)鐘:

a....................................................式(1)

  假設(shè)NPT請(qǐng)求和回復(fù)包傳送延時(shí)相等,即d1=d2,則可解得“

b.....................................式(2)

  根據(jù)式(1),t也可表示為:t=(T2-T1)+d1=(T2-T1)+d/2.....................式(3)

  可以看出,t、d只與T2、T1差值及T3、T4差值相關(guān),而與T2、T3差值無(wú)關(guān),即最終的結(jié)果與服務(wù)器處理請(qǐng)求所需的時(shí)間無(wú)關(guān)。因此,客戶端即可通過T1、T2、T3、T4計(jì)算出時(shí)差t去調(diào)整本地時(shí)鐘。

NTP授時(shí)精度分析

  NTP授時(shí)精度與NTP服務(wù)器與用戶間的網(wǎng)絡(luò)狀況有關(guān),主要取決于NTP包往返路由的延時(shí)對(duì)稱程度,往返路由的延時(shí)不對(duì)稱值最大不超過網(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í)在10 ms~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í)精度最高不超過10ms。

基于NTP減少計(jì)算機(jī)時(shí)鐘偏差

01計(jì)算機(jī)時(shí)鐘偏差分析

  通用PC機(jī)自帶兩類時(shí)鐘源:硬件時(shí)鐘和軟件時(shí)鐘(或稱為系統(tǒng)時(shí)鐘)。不論是硬件時(shí)鐘還是軟件時(shí)鐘,都是由石英晶體振蕩器驅(qū)動(dòng)的,通過累計(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.64 s。

02基于NTP減少計(jì)算機(jī)時(shí)鐘頻率偏差

  時(shí)鐘頻率偏差是時(shí)鐘長(zhǎng)期計(jì)時(shí)累積誤差的主要原因,要提高時(shí)鐘長(zhǎng)期計(jì)時(shí)精度,必須補(bǔ)償時(shí)鐘頻率偏差。聯(lián)網(wǎng)的計(jì)算機(jī)可采用NTP方式,可非常方便地校準(zhǔn)時(shí)鐘頻率偏差。以NTP服務(wù)器時(shí)鐘為標(biāo)準(zhǔn)時(shí)間,在某一時(shí)刻設(shè)置NTP客戶機(jī)時(shí)間為NTP服務(wù)器當(dāng)前時(shí)間T0,經(jīng)過一段時(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。

  任何晶振實(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í)精度。

進(jìn)一步提高NTP授時(shí)精度的方法

  局域網(wǎng)絡(luò)延相對(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í)不確定而引入的誤差。這種方法在局域網(wǎng)中可大幅提高NTP授時(shí)精度至μs級(jí)。

  為了減少溫度引起晶振頻率漂移對(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í)間。

  時(shí)鐘頻率偏差和時(shí)鐘分辨率低是局域網(wǎng)NTP授時(shí)精度不高的主要原因。


Copyright 2010-2017 www.zjjiangshan.cn, All Rights Reserved 湖南銀河電氣有限公司 版權(quán)所有 湘ICP備09002592號(hào)-5