1 引言
長期以來,異步通訊模式下不能實現(xiàn)精確的時間同步一直是制約現(xiàn)場總線方式下的全分布式控制系統(tǒng)全面廣泛應(yīng)用的一個重要因素。因而傳統(tǒng)上在各種需要分散的控制節(jié)點之間有嚴(yán)格的同步時鐘的應(yīng)用中,如傳動控制、運動控制以及分布式需要帶時標(biāo)的數(shù)據(jù)采集系統(tǒng)等,大多數(shù)都保留了各種各樣的同步通訊網(wǎng)絡(luò)接口或?qū)S玫耐綍r鐘脈沖接口。這種方式不僅價格昂貴、性價比低,而且接口的不統(tǒng)一導(dǎo)致互連、互通困難,更重要的是很難在一個下至傳感器/執(zhí)行機(jī)構(gòu),上至主控制器/服務(wù)器的異構(gòu)平臺下全面實施,從而阻礙了現(xiàn)場總線控制系統(tǒng)的進(jìn)一步推廣應(yīng)用。
但是,IEEE1588的提出徹底改變了這一切,它在總結(jié)之前各種各樣的異步通訊模式下的同步時鐘的方法的同時,開創(chuàng)性地解決了總線網(wǎng)絡(luò)下的同步時鐘問題以及跨網(wǎng)段的同步時鐘問題,同時提出了在不同層次實施該協(xié)議可得到不同等級的同步時鐘精度。本文擬從異步通訊模式下的同步時鐘的最基本原理出發(fā),通過闡述IEEE1588的基本設(shè)計思想,具體分析在協(xié)議具體實現(xiàn)過程中影響同步時鐘精度的主要因素,以求對IEEE1588的實際應(yīng)用有更為深刻的理解。
2 異步通訊模式下點對點的時間同步及其限制
最初,為了解決地理上分散的兩個控制節(jié)點之間能夠?qū)崿F(xiàn)一定精度下的時鐘同步,由于當(dāng)時還沒有普及GPS技術(shù)的應(yīng)用,同時傳統(tǒng)的同步通訊網(wǎng)絡(luò)或?qū)S猛綍r鐘脈沖電纜方式在距離超過幾公里、幾十公里,甚至上百公里的應(yīng)用上,受價格、電纜傳輸延時和信號衰減失真等因素的制約,在實踐中已變得不可行或不可用,這就促成了各種借用數(shù)字通信通道的異步通訊模式下的點對點時鐘同步技術(shù)的發(fā)展,其中最為成功就是所謂的“乒乓算法”技術(shù),這也是后來互聯(lián)網(wǎng)技術(shù)下NTP和SNTP協(xié)議的基礎(chǔ)。
首先,它假設(shè)需同步的兩個控制節(jié)點內(nèi)部均獨立按各自內(nèi)部的晶振時鐘運行,并且都具有一定時鐘精度的時鐘脈沖計數(shù)的功能,如1ms、1μs或1ns等,通常在1μs這個數(shù)量級上,因為大部分控制器的晶振時鐘在1MHz這個頻率數(shù)量級上。現(xiàn)在將一側(cè)的時鐘脈沖計數(shù)設(shè)為主時鐘,另一側(cè)為從時鐘,即其時鐘脈沖計數(shù)只要同步到與主時鐘同樣大小的時鐘脈沖計數(shù)值就可實現(xiàn)兩側(cè)的時鐘同步。由于兩側(cè)的晶振并不完全一樣,或即使兩側(cè)的晶振的技術(shù)指標(biāo)完全一樣,但實際運行時的兩側(cè)的環(huán)境溫度等條件的差異,都會使得兩側(cè)的時鐘脈沖計數(shù)值在經(jīng)過一段時間后出現(xiàn)差異,因此要維持兩側(cè)的時鐘在一定精度上的同步,即維持兩側(cè)的時鐘脈沖計數(shù)值之間的差異在一定的范圍內(nèi),則需要每隔一段時間周期性地同步一次。同時由于同步指令有關(guān)的信息幀在通信通道中傳輸時存在預(yù)先未知的傳輸時延,所以同步算法中還必須考慮傳輸時延的影響。所謂“乒乓算法”即巧妙地利用了傳輸時延的對稱性假設(shè)來解決以上問題,其具體方法如圖1所示。
圖1 乒乓算法
從時鐘側(cè)向主時鐘發(fā)送同步請求,同時記下發(fā)送這一時刻自身的計數(shù)值大小作為t1,請求信息經(jīng)過通道時延td到達(dá)主時鐘側(cè),主時鐘記下接收到請求這一時刻所對應(yīng)的自身計數(shù)值大小t2,然后經(jīng)過一定的內(nèi)部處理后,在t3時刻(主時鐘對應(yīng)的計數(shù)值大小)發(fā)送請求應(yīng)答信息,其中包含t2和t3這兩個計數(shù)值,再經(jīng)過通道延時td,請求應(yīng)答信息到達(dá)從時鐘側(cè),從時鐘側(cè)立即記下接收到信息這一時刻所對應(yīng)的自身計數(shù)值大小t4,然后將應(yīng)答信息中的t2和t3這兩個數(shù)值取出,若假設(shè)同步前兩側(cè)計數(shù)值的大小在某一時刻的差值為△t,則有以下方程成立:
t1-△t+td=t2
t3+△t+td=t4
通過解列這兩個方程,可求出:
td=1/2[(t4-t1)-(t3-t2)]
△t=1/2[(t1+t4) -(t2+t3)]
這樣在從時鐘側(cè)計數(shù)定時器上加上這個差值△t的大小即可實現(xiàn)兩側(cè)時針同步,然后每隔一定時間重復(fù)以上過程即可實時消除兩側(cè)晶振信號差異所累積的誤差。
其次,如上述所提到的,該算法成立的前提條件是假設(shè)數(shù)字通信通道的傳輸時延在兩個方向上是完全對稱相等的。這一假設(shè)在大多數(shù)情況下是成立的,特別是在總線網(wǎng)絡(luò)下由于雙方向信號都是經(jīng)過同一物理媒介,這一條件自然得到滿足。但在一些可動態(tài)進(jìn)行路由選擇配置的通信網(wǎng)絡(luò)中若雙方向信號的路由選擇不是同一物理路徑,則傳輸時延會出現(xiàn)明顯差異從而破壞了以上算法的成立條件,導(dǎo)致同步出現(xiàn)明顯的固有誤差或同步失效。在這種情況下可以通過與通信部門溝通要求與同步兩側(cè)相關(guān)的路由選擇配置為信號通道雙方向?qū)ΨQ,即經(jīng)過同一物理路徑,從而保證該算法的成立。
再次,為了保證兩側(cè)的同步誤差維持在一定精度范圍內(nèi),需要周期性地重復(fù)以上同步算法,同步周期越短,則所能達(dá)到的同步精度就越高,但同時所占用的通信通道的通信容量/帶寬比例就越大,因此需要根據(jù)具體的應(yīng)用所需要的精度和通信通道所能提供的通信帶寬選擇一個合理的同步周期。如在100ppm的晶振頻率精度下,理論上,如果1s同步一次則同步偏差可控制在100μs的范圍內(nèi),如1ms同步一次則同步誤差可控制在微秒或微秒以下的精度。
由以上原理可以看出,該“乒乓算法”最大的優(yōu)點在于可以利用各種現(xiàn)有的點對點異步通訊通道,在通信協(xié)議的應(yīng)用層完全由軟件來實現(xiàn),無需為此更改或增加任何專用的硬件配置。更進(jìn)一步,在軟件模塊化設(shè)計的控制器設(shè)計中,算法甚至可以放到控制器內(nèi)部有時間同步要求的應(yīng)用軟件模塊內(nèi),這樣當(dāng)作系統(tǒng)配置時需要該相關(guān)應(yīng)用軟件模塊該算法一同配置,而無需該功能時則整體退出配置,可以更加優(yōu)化控制器的按需配置。但其限制條件也非常明顯,除以上通道延時對稱性和周期性同步通信帶寬的要求外,t1、t2、t3、t4四個時標(biāo)的精確性也直接應(yīng)用到兩側(cè)時鐘同步的精度。由于大部分通信協(xié)議都是采用分層次來實現(xiàn),即應(yīng)用層協(xié)議的數(shù)據(jù)包發(fā)出到數(shù)據(jù)鏈路層將數(shù)據(jù)幀真正發(fā)送到物理層的網(wǎng)絡(luò)媒介上之間時存在一定的延時。對于采用無阻塞的電路連接通道,該延時比較小而且比較穩(wěn)定、分散性小,而對于共用網(wǎng)絡(luò)媒介的總線類通道,該延時隨機(jī)性很大,因為對于某一個控制器來說通道并不是每時每刻都可用,這就直接影響到以上算法的時間同步精度上限,所以一般來說,完全采用軟件實現(xiàn)的以上算法其時鐘同步精度幾乎不可能做到微秒以下的精度。另外,對于現(xiàn)場總線類的應(yīng)用,若將同一總線上所有的節(jié)點均按照以上點對點的方式來進(jìn)行相互間的時鐘同步,則網(wǎng)絡(luò)通信量和主時鐘節(jié)點控制器的負(fù)荷率將呈指數(shù)增長,使得即使要達(dá)到毫秒級的時鐘同步精度都很困難。
總之,以上算法對于點對點之間的應(yīng)用軟件時鐘同步,可以在異步通訊的模式下很好地實現(xiàn)。但對于要在現(xiàn)場總線類的應(yīng)用中同步接入總線上的所有控制器,直接采用該算法在實踐中不太可行。同時,要進(jìn)一步提高時鐘同步精度,則需要對算法作進(jìn)一步的改進(jìn)。
3 IEEE1588的設(shè)計思想及其應(yīng)用
IEEE1588第一個出發(fā)點就是要將點對點的算法擴(kuò)展到具有廣播通信功能的總線通信網(wǎng)絡(luò)上,要充分利用廣播通信特點來盡量減少用于時鐘同步的通信量。其具體原理如圖2所示。
圖2 具體原理圖
圖3 傳輸時延的測量
主時鐘控制器節(jié)點向總線上所有節(jié)點廣播帶主時鐘時標(biāo)TM1的“同步報文”(Sync),同時為了提高發(fā)送時標(biāo)的精確性,主時鐘控制器還監(jiān)視上述同步報文在網(wǎng)絡(luò)接口上實際發(fā)送的時刻作為同步報文的精確時標(biāo),并在隨后的“跟進(jìn)報文”(Follow-up)中傳送該精確時標(biāo)TM1。總線上所有其他節(jié)點作為從時鐘在收到上述報文后記下同步報文的收信時刻TS1,各自分別計算其時鐘與主時鐘的偏差(Offset),并對本地的時鐘脈沖計數(shù)作相應(yīng)的調(diào)整。但由于對報文的傳輸時延并不知道,最初只能先假設(shè)為零,然后通過與上述“乒乓算法”類似的原理進(jìn)行傳輸時延的測量,如圖3所示。
從時鐘節(jié)點向主時鐘節(jié)點發(fā)送一點對點“延時請求”(Delay Request)報文,同時監(jiān)視自己的網(wǎng)絡(luò)接口記下報文的實際發(fā)送時可作為精確的發(fā)送時標(biāo)TS3,而主時鐘接收到該報文時也記下收信時刻的精確時標(biāo)TM3,并將該時標(biāo)在隨后的“延時響應(yīng)”(Delay Response)報文中發(fā)送給相應(yīng)的從時鐘節(jié)點,從時鐘以此計算報文的實際傳輸時延(Delay),然后合并到上述同步偏差的計算公式中去。如果網(wǎng)絡(luò)傳輸延時雙向穩(wěn)定對稱,該延時測量主要在控制節(jié)點接入總線的初始化過程中進(jìn)行,系統(tǒng)進(jìn)入穩(wěn)定狀態(tài)后可以間隔很長時間才測量一次,其周期的長短對時鐘同步的精度沒有直接的影響,因此可以大幅度減少該點對點的報文通信量。通過以上兩階段同步過程的劃分,以及廣播式“同步報文”和精確時標(biāo)等措施,該方法可以在總線網(wǎng)絡(luò)上占用很少通信帶寬的情況下實現(xiàn)高精度的時鐘同步。IEEE1588的指導(dǎo)性指標(biāo)為,如“同步報文”的周期設(shè)定在2s時的同步精度可以在毫秒以下直至微秒數(shù)量級,這對一般的時鐘同步系統(tǒng)應(yīng)用已經(jīng)能夠滿足要求。
IEEE1588的第二個特點就是上述已提到的精確時標(biāo)的概念。由于通信協(xié)議是分層次實現(xiàn)的,以上同步過程中所有報文中所傳送的“發(fā)送時標(biāo)”和“收信時標(biāo)”是取自應(yīng)用層、數(shù)據(jù)鏈路層還是直接在物理層上采用輔助硬件電路,很大程度上決定了該協(xié)議所能達(dá)到的最高時鐘同步精度。越接近物理硬件底層,時標(biāo)越精確,系統(tǒng)可能達(dá)到的精度則越高。在采用合適的輔助硬件電路的情況下,如在周期性調(diào)整時鐘脈沖計數(shù)的偏差之外,增加可調(diào)整時鐘脈沖計數(shù)的速率,同時直接記錄網(wǎng)絡(luò)接口的物理層發(fā)送時標(biāo)和收信時標(biāo),其同步精度甚至可以實現(xiàn)納秒數(shù)量級的高精度,這比傳統(tǒng)的同步通信系統(tǒng)以及同步脈沖專用系統(tǒng)所能達(dá)到的精度還要高。反過來,系統(tǒng)應(yīng)用也可以根據(jù)自己的同步精度要求,來選擇在哪一層次上實現(xiàn)協(xié)議的精確時標(biāo),從而達(dá)到最佳的技術(shù)性價比。
圖4 “邊界時鐘”的解決方案
IEEE1588的第三個發(fā)展就是跨網(wǎng)段系統(tǒng)的全系統(tǒng)同步問題,即發(fā)展了“邊界時鐘”的概念。由于以太網(wǎng)技術(shù)的推廣和交換式以太網(wǎng)技術(shù)的發(fā)展,使得以太網(wǎng)無論是在通信容量還是數(shù)據(jù)的實時響應(yīng)性能都得到很大的提高,因此將以太網(wǎng)技術(shù)應(yīng)用到工業(yè)控制的現(xiàn)場總線已成為一種必然的趨勢。但以太網(wǎng)交換機(jī)和路由器的存儲轉(zhuǎn)發(fā)機(jī)制卻使得以太網(wǎng)信息幀的傳輸延時在不同的通信負(fù)荷率下呈現(xiàn)出較大的分散性,從零點幾微秒到一百甚至幾百微秒,因此這無疑限制了以上同步算法在交換式以太網(wǎng)和多網(wǎng)段以太網(wǎng)應(yīng)用系統(tǒng)的時鐘同步精度。IEEE1588為解決這一問題提出了“邊界時鐘”的解決方案,如圖4所示。
即在交換機(jī)或路由器的端口上增加一簡單的時鐘同步輔助硬件電路,使得每一端口既能作為點對點的主時鐘又能作為從時鐘,這樣又將以太網(wǎng)總線式網(wǎng)絡(luò)的工作模式可以近似回到每一端口按點對點模式工作,而且物理媒介是點對點直通模式,無中間轉(zhuǎn)接點,因此其傳輸延時非常穩(wěn)定而且小,也就是說可以將時鐘同步的精度上限大大提高,甚至到納秒數(shù)量級。
IEEE1588本身只是一個單一功能―時鐘同步算法的協(xié)議規(guī)范,并不是一個獨立完整的現(xiàn)場總線協(xié)議,因此若要將該功能推廣到現(xiàn)場總線系統(tǒng)的應(yīng)用中去,需要將該算法結(jié)合到具體的現(xiàn)場總線協(xié)議來實現(xiàn)。如ODVA組織就在其原有的現(xiàn)場總線協(xié)議―CIP協(xié)議的基礎(chǔ)上,擴(kuò)展了IEEE1588協(xié)議的功能性成了CIPSync協(xié)議,并進(jìn)行了相應(yīng)的原型驗證試驗,如圖5所示。即在一典型的三軸聯(lián)動的全分布式運動控制應(yīng)用系統(tǒng)中,采用具有“邊界時鐘”功能的以太網(wǎng)交換機(jī)連接控制各運動軸的三臺獨立控制器,各控制器之間通過CIPSync協(xié)議進(jìn)行時間同步和協(xié)同工作。試驗的結(jié)果表明,該原型試驗的時鐘同步精度可以將各控制器之間時鐘誤差控制在200ns以內(nèi),從而可以滿足大部分運動控制系統(tǒng)的應(yīng)用要求。而之前實現(xiàn)這樣的應(yīng)用系統(tǒng),都要配置專用的時鐘脈沖同步網(wǎng)絡(luò),系統(tǒng)復(fù)雜、價格昂貴。相比而言,IEEE1588與眾多現(xiàn)有的現(xiàn)場總線的有效結(jié)合,可以實現(xiàn)不同層次不同同步精度的時間同步系統(tǒng),充分顯示了IEEE1588的應(yīng)用潛力。
圖5 原型驗證試驗
4 結(jié)論
IEEE1588在總結(jié)之前的各種異步通訊模式下的時間同步算法的基礎(chǔ)上,擴(kuò)展和發(fā)展了適合在現(xiàn)場總線網(wǎng)絡(luò)下的協(xié)議規(guī)范,并針對多網(wǎng)段情況下的交換機(jī)和路由器等系統(tǒng)元件所帶來的新問題提出了“邊界時鐘”的解決方案。CIPSync的原型驗證試驗表明,IEEE1588協(xié)議與現(xiàn)有的現(xiàn)場總線的有效結(jié)合,在通信協(xié)議的不同層次的實現(xiàn)其同步算法可以得到不同的時鐘同步精度,在一定的配置條件下可以提供與傳統(tǒng)同步專用網(wǎng)絡(luò)相當(dāng)?shù)臅r鐘同步精度。