分布式數(shù)據(jù)采集系統(tǒng)中的時鐘同步
引言
本文引用地址:http://m.butianyuan.cn/article/85655.htm隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,各種分布式的網(wǎng)絡(luò)和局域網(wǎng)都得到了廣泛的應(yīng)用[1]。分布式數(shù)據(jù)采集系統(tǒng)廣泛應(yīng)用于船舶、飛機等采集數(shù)據(jù)多、實時性要求較高的地方。同步采集是這類分布式數(shù)據(jù)采集系統(tǒng)的一個重要要求,數(shù)據(jù)采集的實時性、準(zhǔn)確性和系統(tǒng)的高效性都要求系統(tǒng)能進行實時數(shù)據(jù)通信。因此,分布式數(shù)據(jù)采集系統(tǒng)中的一個關(guān)鍵技術(shù)就是實現(xiàn)數(shù)據(jù)的同步傳輸。
由于產(chǎn)生時鐘的晶振具有頻率漂移的特性,故對于具有多個采集終端的分布式系統(tǒng),如果僅僅在系統(tǒng)啟動時進行一次同步,數(shù)據(jù)的同步傳輸將會隨著系統(tǒng)運行時間的增長而失步。因此時鐘的同步就是保證數(shù)據(jù)同步傳輸?shù)年P(guān)鍵所在。2002年提出的IEEE1588標(biāo)準(zhǔn)旨在解決網(wǎng)絡(luò)的時鐘同步問題。它制定了將分散在測量和控制系統(tǒng)內(nèi)的分離節(jié)點上獨立運行的時鐘,同步到一個高精度和高準(zhǔn)確度時鐘上的協(xié)議。
由于分布式數(shù)據(jù)采集系統(tǒng)工作于局域網(wǎng)的環(huán)境中,于是借鑒IEEE1588標(biāo)準(zhǔn)中的思想,設(shè)計出一種針對基于局域網(wǎng)的分布式系統(tǒng)的時鐘同步的機制,成功地在分布式數(shù)據(jù)采集系統(tǒng)中實現(xiàn)了μs級的同步。
1 時鐘同步原理及實現(xiàn)
時鐘同步原理借鑒了IEEE1588協(xié)議中的同步原理。IEEE1588 定義了一個在工業(yè)自動化系統(tǒng)中的精確同步時鐘協(xié)議(PTP協(xié)議),該協(xié)議與網(wǎng)絡(luò)交流、本地計算和分配對象有關(guān)。IEEE1588時鐘協(xié)議規(guī)定,在進行時鐘同步時,先由主設(shè)備通過多播形式發(fā)出時鐘同步報文,所有與主設(shè)備在同一個域中的設(shè)備都將收到該同步報文。從設(shè)備收到同步報文后,根據(jù)同步報文中的時間戳和主時鐘到從時鐘的線路延時計算出與主時鐘的偏差,對本地的時鐘進行調(diào)整[2]。
系統(tǒng)由各個單元的系統(tǒng)控制板(簡稱“系統(tǒng)板”)來完成同步的工作。同步模型與IEEE1588時鐘協(xié)議一致,采用主從結(jié)構(gòu)。主從單元采用相同頻率的晶振,此時時鐘同步的關(guān)鍵就是解決時鐘相位對準(zhǔn)問題和時鐘漂移的問題。
系統(tǒng)中采用的時間同步算法,是借鑒IEEE1588的同步原理,主要是采用約定固定周期同步的算法。和IEEE1588同步算法一樣,同步過程分為兩個階段: 延遲測量階段和偏移測量階段。下面以一主一從模式為例介紹其原理。
1.1 延遲測量
延遲測量階段用來測量網(wǎng)絡(luò)傳輸造成的延遲時間[3]。定義一個延遲請求信息包(Delay Request Packet),簡稱“Delay_Req”。延遲測量示意圖如圖1所示。
圖1 延遲測量示意圖
為了簡化程序,采用固定的周期測量網(wǎng)絡(luò)延遲,一般系統(tǒng)每工作一個小時進行一次測量。從屬時鐘TSd 時刻發(fā)出延遲請求信息包Delay_Req,主時鐘收到Delay_ Req 后再立刻返回一個延時響應(yīng)包delay_back發(fā)送給從屬時鐘,因此從屬時鐘就可以非常準(zhǔn)確地計算出網(wǎng)絡(luò)延時:
TM2 →TS2∶Delay1 = TS2-Offset-TM2 TS3 →TM3∶Delay2 = TM3-(TS3 - Offset)
其中的Offset為從時鐘與主時鐘之間的時間偏差。
因為網(wǎng)絡(luò)延遲時間是對稱相等的,所以:
Delay =(Delay1 + Delay2)/2=((TS2-TM2)+(TM3-TS3))/2
需要說明的是,在這個測量過程中,假設(shè)傳輸介質(zhì)是對稱均勻的,且線路是對稱的[4]。
1.2 時鐘修正
時鐘修正用來修正主時鐘和從屬時鐘的時間差。在這個時間修正過程中,IEEE1588中主時鐘周期性地發(fā)出一個確定的同步信息包(Sync) (一般為每2秒1次) ,它包含一個時間印章(time stamp),精確地描述了數(shù)據(jù)包的發(fā)出時刻[3]。本案采用的簡單同步模式,主要就是約定了同步修正包的發(fā)出時刻,整秒時刻,系統(tǒng)會在整秒時刻不做其他工作,這樣就可以省掉IEEE1588中用于發(fā)送同步包預(yù)計發(fā)包時間的同步跟隨包。
假設(shè)同步前主時鐘的時間為發(fā)出時鐘Tm1=2000 s,而從屬時鐘的接收時間為Ts1=2001s。如果主從時鐘是同步的,則同步的接收時鐘是:Tm1+Delay=2 000+0.5=2 000.5。只需將時鐘調(diào)整為2000.5,即Ts′=Tm1+Delay
簡易時鐘同步的關(guān)鍵就在此。同步包內(nèi)可包含主端發(fā)出的時刻。從端收到后,即可與測得的Delay相加為自己的該時刻時鐘。
這里要說明的是:
?、?上式中的Delay 就是主時鐘與從屬時鐘之間的傳輸延遲時間,從上面的延遲測量階段得到。
?、?如果收到的同步包信息出錯,從單元可以根據(jù)自己的時刻,依據(jù)臨近取整原則推知主端發(fā)出的整秒時刻時間,與接收包進行對比。因為時間偏移一般都在μs級,如果誤差太大,則舍棄該包。
評論