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