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