精確的時(shí)間同步技術(shù)在控制系統(tǒng)中占有重要地位,隨著嵌入式控制系統(tǒng)應(yīng)用范圍的不斷增長(zhǎng)和應(yīng)用規(guī)模的不斷擴(kuò)大,同步系統(tǒng)內(nèi)各分散節(jié)點(diǎn)的時(shí)鐘同步變得越來(lái)越重要。IEEE 1588協(xié)議的發(fā)展和成熟提供了一種低成本高精度的網(wǎng)絡(luò)時(shí)鐘同步解決方案。
它利用以太網(wǎng)絡(luò)使終端設(shè)備同步,僅靠軟件實(shí)現(xiàn)就可達(dá)到亞微秒級(jí)精度,在硬件支持下可達(dá)到納秒級(jí)。同時(shí),IEEE 1588協(xié)議對(duì)資源要求非常低,易于高中低端設(shè)備之間的兼容。因此,嵌入式IEEE 1588精確時(shí)鐘同步技術(shù)也成為了實(shí)時(shí)控制系統(tǒng)非常關(guān)心的研究課題。
本文在IEEE 1588協(xié)議研究的基礎(chǔ)上,通過(guò)軟件和硬件相結(jié)合的途徑,并采用硬件輔助實(shí)現(xiàn)IEEE 1588標(biāo)準(zhǔn)的精確時(shí)間同步協(xié)議(PTP)方法,設(shè)計(jì)了嵌入式IEEE 1588時(shí)鐘同步軟硬件系統(tǒng),在平臺(tái)測(cè)試中取得了高精度的時(shí)鐘同步,測(cè)試結(jié)果能很好的滿足工業(yè)控制、通信、電力等行業(yè)對(duì)時(shí)鐘同步精度的要求。
IEEE 1588時(shí)鐘同步系統(tǒng)工作于主從模式,借助時(shí)鐘同步報(bào)文完成時(shí)鐘校準(zhǔn)。主時(shí)鐘周期性發(fā)送同步報(bào)文,從時(shí)鐘根據(jù)接收到的報(bào)文的時(shí)間戳信息,計(jì)算出主從線路報(bào)文傳輸?shù)臅r(shí)間延遲和主從時(shí)鐘的時(shí)鐘偏移,并相應(yīng)地調(diào)整本地時(shí)間,使從時(shí)鐘保持與主時(shí)鐘一致的時(shí)間基準(zhǔn)。IEEE 1588時(shí)鐘同步過(guò)程由時(shí)鐘偏移測(cè)量和網(wǎng)絡(luò)延遲測(cè)量2個(gè)階段組成。
如圖1所示,在時(shí)鐘偏移測(cè)量階段,主時(shí)鐘相繼發(fā)送同步報(bào)文和跟隨報(bào)文給從時(shí)鐘,從時(shí)鐘接收?qǐng)?bào)文并記錄時(shí)間戳。在網(wǎng)絡(luò)延遲測(cè)量階段,從時(shí)鐘發(fā)送延時(shí)請(qǐng)求報(bào)文和接收相應(yīng)的響應(yīng)報(bào)文,并分別記錄發(fā)送和接收?qǐng)?bào)文的時(shí)間戳。從時(shí)鐘根據(jù)一個(gè)同步周期內(nèi)所記錄的四個(gè)時(shí)間戳計(jì)算出時(shí)鐘偏差和網(wǎng)絡(luò)延遲并以此修正本地時(shí)鐘,系統(tǒng)不斷重復(fù)這個(gè)過(guò)程,保持時(shí)鐘同步。
圖1 IEEE 1588同步原理
1 時(shí)鐘同步模塊
嵌入式時(shí)鐘同步模塊分為主控模塊和網(wǎng)絡(luò)通信模塊兩個(gè)部分。其硬件實(shí)物如圖2所示,在該時(shí)鐘同步模塊中,主控模塊(圖2右側(cè))搭載了微控制器和實(shí)時(shí)時(shí)鐘、串口和USB接口等;網(wǎng)絡(luò)通信模塊配置有電源模塊、網(wǎng)口模塊和必要的GPIO接口等。
圖2 支持IEEE 1588協(xié)議的嵌入式控制模塊
主控模塊選取提供MII接口的主控芯片STM32F107VC。以太網(wǎng)通信模塊PHY芯片選取支持IEEE 1588精確時(shí)鐘同步功能的DP83640[5,6]。該芯片內(nèi)配置有高精度IEEE 1588時(shí)鐘,并設(shè)有由硬件執(zhí)行的時(shí)間標(biāo)記功能,可在物理層為接收及發(fā)送的信息包打上時(shí)間標(biāo)記。在所有的工作模式下均能確定報(bào)文收發(fā)的精確時(shí)間,將理論對(duì)時(shí)精度提高到了8ns。
2 系統(tǒng)軟硬件設(shè)計(jì)
提高IEEE 1588時(shí)鐘同步的精度關(guān)鍵在于提高時(shí)間戳的精度。如圖3所示,我們可以在A、B、C三個(gè)位置標(biāo)記時(shí)間戳(其中A和B處為軟件標(biāo)記時(shí)間戳,C處為硬件標(biāo)記時(shí)間戳),而越接近物理層,時(shí)間戳的精度越高,同步系統(tǒng)可達(dá)到的同步精度越高。
物理層芯片DP83640集成了能夠?qū)κ瞻l(fā)數(shù)據(jù)包并加蓋時(shí)間戳的硬件(即可在C處標(biāo)記時(shí)間戳),它能夠準(zhǔn)確的反映IEEE 1588報(bào)文的實(shí)際發(fā)送和接收時(shí)間,可以消除協(xié)議棧的延時(shí)和抖動(dòng),從而計(jì)算得到的報(bào)文在傳輸路徑上的延時(shí)和主從時(shí)鐘偏差也更精確。
基于此,本實(shí)驗(yàn)時(shí)鐘同步模塊采用硬件標(biāo)記時(shí)間戳的方式實(shí)現(xiàn)IEEE 1588協(xié)議,以GPS時(shí)鐘為參考時(shí)鐘源,并通過(guò)UDP/IP通信完成系統(tǒng)時(shí)鐘同步。該時(shí)鐘同步模塊結(jié)構(gòu)如圖3所示。
圖3 時(shí)鐘同步模塊結(jié)構(gòu)
時(shí)鐘同步模塊軟件部分由驅(qū)動(dòng)層、協(xié)議層、應(yīng)用層組成,分別完成底層硬件控制、通信與同步、人機(jī)交互等功能。
其中,驅(qū)動(dòng)層分為標(biāo)準(zhǔn)驅(qū)動(dòng)、以太網(wǎng)驅(qū)動(dòng)以及PTP時(shí)鐘驅(qū)動(dòng)三部分;協(xié)議層分為TCP/IP協(xié)議與PTP協(xié)議兩部分;應(yīng)用層分為串口通信、以太網(wǎng)通信、實(shí)時(shí)時(shí)鐘、精確時(shí)間同步等部分。
在協(xié)議層中,嵌入式的TCP/IP協(xié)議棧采用LwIP實(shí)現(xiàn),LwIP協(xié)議棧以太網(wǎng)信息接收采取中斷響應(yīng)機(jī)制,當(dāng)MAC接收到網(wǎng)絡(luò)信號(hào)之后將引發(fā)以太網(wǎng)中斷,主控芯片進(jìn)入中斷函數(shù),先跳入相關(guān)底層處理函數(shù),再進(jìn)入?yún)f(xié)議棧做相應(yīng)處理;而LwIP協(xié)議棧以太網(wǎng)信息發(fā)送則由應(yīng)用層協(xié)議通過(guò)協(xié)議棧逐層向下傳遞信息,至MAC層后,調(diào)用相關(guān)底層處理函數(shù)進(jìn)行發(fā)送。
在PTP實(shí)現(xiàn)過(guò)程中,采用本地時(shí)鐘算法。時(shí)鐘同步系統(tǒng)上電后,各模塊進(jìn)入主從時(shí)鐘判定程序,首先確定各模塊的主、從時(shí)鐘工作狀態(tài),進(jìn)而通過(guò)UDP收發(fā)報(bào)文,記錄各報(bào)文時(shí)間戳,計(jì)算主從時(shí)鐘偏差修正本地時(shí)鐘。圖4軟件系統(tǒng)流程圖(a、b)中列出了主從時(shí)鐘模塊的同步工作過(guò)程。
圖4 軟件系統(tǒng)流程圖
1 基于IEEE 1588時(shí)鐘同步測(cè)試平臺(tái)
基于IEEE 1588時(shí)鐘同步系統(tǒng)測(cè)試平臺(tái)如圖5所示,該系統(tǒng)工作在主從模式,采取點(diǎn)對(duì)點(diǎn)通信,精確時(shí)鐘源由GPS授時(shí)模塊提供,該時(shí)間作為PTP時(shí)鐘源信號(hào)提供給IEEE 1588時(shí)鐘同步模塊,并將該模塊時(shí)鐘端口配置為主時(shí)鐘狀態(tài),與之相對(duì)應(yīng)的時(shí)鐘模塊配置為從時(shí)鐘狀態(tài)。在平臺(tái)測(cè)試中,將兩個(gè)時(shí)鐘同步模塊的PPS輸出口接至數(shù)字示波器,來(lái)比較主從時(shí)鐘節(jié)點(diǎn)的同步誤差,測(cè)量該系統(tǒng)時(shí)鐘同步精度。
圖5 基于IEEE 1588時(shí)鐘同步測(cè)試平臺(tái)
2 測(cè)試結(jié)果及分析
基于IEEE 1588時(shí)鐘同步測(cè)試平臺(tái)系統(tǒng)建立之后,需要對(duì)時(shí)鐘同步系統(tǒng)的性能進(jìn)行測(cè)試分析。本文根據(jù)同步報(bào)文發(fā)報(bào)周期取不同時(shí)間值(標(biāo)準(zhǔn)周期默認(rèn)為2s),主要進(jìn)行3次測(cè)試,實(shí)驗(yàn)同步報(bào)文發(fā)報(bào)周期分別取4s、2s、1s,對(duì)主從時(shí)鐘同步模塊進(jìn)行IEEE 1588時(shí)鐘同步測(cè)試。
圖6 時(shí)鐘同步測(cè)試結(jié)果
圖7 測(cè)試結(jié)果對(duì)比圖
測(cè)試結(jié)果如圖6所示,其中圖中a、b、c分別為同步報(bào)文發(fā)報(bào)周期為4s、2s、1s時(shí)的同步誤差分布圖,圖7為不同同步報(bào)文發(fā)送周期時(shí)的測(cè)試結(jié)果對(duì)比圖,在此我們可以更直觀的觀測(cè)不同同步報(bào)文發(fā)送周期下的系統(tǒng)時(shí)鐘同步誤差。
由圖6、7測(cè)試結(jié)果表明:當(dāng)同步報(bào)文發(fā)報(bào)周期取4s時(shí),主從時(shí)鐘節(jié)點(diǎn)之間IEEE 1588同步精度測(cè)試結(jié)果優(yōu)于200ns;當(dāng)同步報(bào)文發(fā)報(bào)周期取2s時(shí),主從時(shí)鐘節(jié)點(diǎn)之間IEEE 1588同步誤差在100ns以內(nèi);當(dāng)同步報(bào)文發(fā)報(bào)周期取1s時(shí),主從時(shí)鐘節(jié)點(diǎn)之間IEEE 1588同步精度能夠達(dá)到50ns。
表1 不同同步報(bào)文發(fā)送周期下的時(shí)鐘同步測(cè)試結(jié)果
表1中列出了同步報(bào)文不同發(fā)送周期下的時(shí)鐘同步測(cè)試結(jié)果,同步報(bào)文發(fā)送周期越短,時(shí)鐘同步精度越高,但隨著同步報(bào)文發(fā)送周期的減小,系統(tǒng)內(nèi)網(wǎng)絡(luò)流量隨之增加,在實(shí)際應(yīng)用中網(wǎng)絡(luò)負(fù)擔(dān)也會(huì)隨之加重,在運(yùn)行中可能會(huì)降低系統(tǒng)時(shí)鐘同步性能。
本文在對(duì)IEEE 1588精確時(shí)間同步原理進(jìn)行分析的基礎(chǔ)上,設(shè)計(jì)了嵌入式IEEE 1588時(shí)鐘同步軟硬件系統(tǒng),并在平臺(tái)測(cè)試中實(shí)現(xiàn)了高精度時(shí)鐘同步,提高了分布式系統(tǒng)中各節(jié)點(diǎn)的同步性能,可以極好地滿足了工業(yè)控制中分布式通信系統(tǒng)高精度同步要求,從應(yīng)用成本和時(shí)鐘同步精度等方面來(lái)考慮,可廣泛應(yīng)用于數(shù)字化變電站、智能電網(wǎng)、工業(yè)控制和通信等行業(yè)領(lǐng)域。
(編自《電氣技術(shù)》,作者為周峰、劉迎澍 等。)