1 引言
以太網(wǎng)技術(shù)的高速發(fā)展為分布式系統(tǒng)在工業(yè)領(lǐng)域的廣泛應(yīng)用創(chuàng)造了條件。以太網(wǎng)具有成本低、可靠性高、傳輸速度快、通用性強(qiáng)、開(kāi)放性好、發(fā)展?jié)摿Υ蟮葍?yōu)點(diǎn)。但以太網(wǎng)也存在網(wǎng)絡(luò)的確定性、實(shí)時(shí)性不強(qiáng)等缺陷。隨著系統(tǒng)日益龐大復(fù)雜,分布化程度越來(lái)越高,對(duì)時(shí)鐘同步的要求也逐步提高,雖然隨著帶寬的不斷提高以及采用星形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)等減少?zèng)_突可能的技術(shù)的應(yīng)用,以太網(wǎng)的確定性、實(shí)時(shí)性有一定程度的提高,但由于以太網(wǎng)自身沖突檢測(cè)的載波幀聽(tīng)多路訪問(wèn)(CSMA/CD)機(jī)制,設(shè)備層和I/O層的數(shù)據(jù)采集與傳輸問(wèn)題,以及TCP及UDP上的誤差檢測(cè)及翻譯障礙等,以太網(wǎng)的實(shí)時(shí)性問(wèn)題并未得到根本解決。仍不能滿足精確定時(shí)的要求。
網(wǎng)絡(luò)測(cè)量和控制系統(tǒng)的精密時(shí)鐘同步協(xié)議標(biāo)準(zhǔn)IEEE1588適用于以太網(wǎng)、CAN總線和PROFIBUS等。IEEE 1588的基本功能是使分布式網(wǎng)絡(luò)內(nèi)所有從時(shí)鐘與主時(shí)鐘保持同步,該標(biāo)準(zhǔn)定義一種精確時(shí)間協(xié)議PTP(Precision rime Protocol),用于對(duì)標(biāo)準(zhǔn)以太網(wǎng)或其他采用多播技術(shù)的分布式總線系統(tǒng)中的傳感器、執(zhí)行器以及其他終端設(shè)備中的時(shí)鐘進(jìn)行微秒級(jí)同步。早期的網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)只有軟件,而PTP協(xié)議同時(shí)使用硬件和軟件,從而獲得更精確的定時(shí)同步。PTP針對(duì)相對(duì)本地化、網(wǎng)絡(luò)化的系統(tǒng),子網(wǎng)或內(nèi)部組件相對(duì)穩(wěn)定的環(huán)境,特別適合于分布式系統(tǒng)在工業(yè)自動(dòng)化方面的應(yīng)用。
2 時(shí)鐘同步原理
理論上,為每個(gè)系統(tǒng)節(jié)點(diǎn)配備GPS模塊可得到精確的時(shí)間,這樣系統(tǒng)中所有節(jié)點(diǎn)的時(shí)鐘就和標(biāo)準(zhǔn)時(shí)間一致。從而達(dá)到同步;但分布式系統(tǒng)中節(jié)點(diǎn)數(shù)量大,GPS設(shè)備成本高、能耗大,且結(jié)構(gòu)復(fù)雜,抗屏蔽性差,且出于安全性考慮排除大規(guī)模使用GPS的時(shí)鐘同步方式。而基于以太網(wǎng)的IEEE 1588是通過(guò)在分布式系統(tǒng)各節(jié)點(diǎn)間交換時(shí)間報(bào)文的方法達(dá)到整個(gè)系統(tǒng)的時(shí)間同步。IEEE 1588通過(guò)交換報(bào)文來(lái)確定主時(shí)鐘(Master)和從時(shí)鐘(Slave)之間的時(shí)間偏移及報(bào)文傳輸?shù)木W(wǎng)絡(luò)延遲。圖1為IEEE 1588原理圖。
由圖1可知,主時(shí)鐘的節(jié)點(diǎn)按照定義的間隔時(shí)間(缺省是2 s)周期性地向網(wǎng)絡(luò)上所有從時(shí)鐘節(jié)點(diǎn)發(fā)送“同步報(bào)文”(Sync),同時(shí)主時(shí)鐘節(jié)點(diǎn)記錄同步報(bào)文實(shí)際發(fā)送的時(shí)間戳,并在隨后的“跟進(jìn)報(bào)文”(Follow-up)中傳送該精確時(shí)間戳TM1。這樣,對(duì)傳遞和接收的測(cè)量與標(biāo)準(zhǔn)時(shí)間戳的傳播可以分開(kāi)。網(wǎng)絡(luò)上所有其他從時(shí)鐘節(jié)點(diǎn)收到上述報(bào)文后,記錄同步報(bào)文的接收時(shí)間戳TS1,TS1和TM1的偏差中不但包含主從時(shí)鐘的時(shí)間偏差,還包含未知的報(bào)文傳輸延遲,分布式系統(tǒng)中每個(gè)節(jié)點(diǎn)在網(wǎng)絡(luò)中所處位置、布線方式、布線長(zhǎng)度以及目前網(wǎng)絡(luò)技術(shù)中的固有問(wèn)題,也將造成測(cè)控?cái)?shù)據(jù)在傳輸過(guò)程中的不同延遲。因此需要進(jìn)一步測(cè)量并消除該傳輸延遲。與偏移測(cè)量不同,延遲測(cè)量是不規(guī)則進(jìn)行的,從時(shí)鐘節(jié)點(diǎn)按照定義的間隔時(shí)間(缺省值是4~60 s之間的隨機(jī)值)向主時(shí)鐘節(jié)點(diǎn)發(fā)送一個(gè)“延遲請(qǐng)求”(Dclay Request)報(bào)文,同時(shí)記錄該報(bào)文的實(shí)際發(fā)送時(shí)間,作為精確的發(fā)送時(shí)間戳TS2,而主時(shí)鐘接收到該報(bào)文時(shí)也記下接收時(shí)刻的精確時(shí)間戳TM2,并將該時(shí)間戳在隨后的“延遲響應(yīng)”(Delay Response)報(bào)文中發(fā)送給相應(yīng)的從時(shí)鐘節(jié)點(diǎn)。假設(shè)網(wǎng)絡(luò)延遲是對(duì)稱的,則有以下兩式:
根據(jù)偏差△,調(diào)整從時(shí)鐘,實(shí)現(xiàn)對(duì)時(shí)。
3 影響同步精度的因素
(1)網(wǎng)絡(luò)對(duì)稱性從圖1看出,分布式系統(tǒng)為計(jì)算其網(wǎng)絡(luò)延遲和時(shí)鐘偏移所進(jìn)行的4次測(cè)量都是建立在報(bào)文的傳輸延遲(Delay)在傳輸方向上是相同的基礎(chǔ)上。但這只是理想的情況,在大網(wǎng)絡(luò)負(fù)載的情況下,Delay在傳輸方向上的差異會(huì)越來(lái)越大。造成同步精度的下降。但由于工業(yè)上的分布式系統(tǒng)多為相對(duì)本地化、局域網(wǎng)的系統(tǒng),子網(wǎng)或內(nèi)部組件相對(duì)穩(wěn)定的環(huán)境,因此可忽略Delay在傳輸方向上的差異。
(2)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)系統(tǒng)測(cè)量時(shí),點(diǎn)對(duì)點(diǎn)的傳輸能提供最高的精度,網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)也會(huì)對(duì)同步精度造成影響,當(dāng)采用Hub連接時(shí),網(wǎng)絡(luò)延遲抖動(dòng)為300~400 ns,當(dāng)采用交換機(jī)時(shí),由于存儲(chǔ)-轉(zhuǎn)發(fā)機(jī)制的影響,網(wǎng)絡(luò)延遲會(huì)隨著網(wǎng)絡(luò)負(fù)載的變化而變化,因此具有較大的抖動(dòng)值,使得上述網(wǎng)絡(luò)傳輸延遲測(cè)量方法精度大大降低。為此,PTP采用邊界時(shí)鐘(Bounday Clock)的方法解決這一問(wèn)題,如圖2所示。在交換機(jī)內(nèi)部與主時(shí)鐘連接的端口可以看成從時(shí)鐘端口,在接收主時(shí)鐘發(fā)送的同步報(bào)文后調(diào)整自己的本地時(shí)鐘,然后用調(diào)整后的時(shí)鐘去同步所有與交換機(jī)主時(shí)鐘連接的從時(shí)鐘設(shè)備,這樣帶有拓?fù)浣Y(jié)構(gòu)的連接就變成簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)連接,從而有效去除交換機(jī)所造成的延遲抖動(dòng)。
(3)晶振的頻率由于產(chǎn)生時(shí)鐘的不同晶體本身的速度是不同的,而且晶體容易受溫度等影響,產(chǎn)生晶振漂移,引起誤差增大,因此需時(shí)從時(shí)鐘的晶振頻率進(jìn)行補(bǔ)償。使從時(shí)鐘的晶振頻率與主時(shí)鐘保持一致。
4 時(shí)間戳的生成
基于以上方法,可有效消除主、從時(shí)鐘偏差和報(bào)文在網(wǎng)絡(luò)中的傳輸延遲,從而實(shí)現(xiàn)分布式系統(tǒng)的時(shí)鐘同步。同步信息檢測(cè)和時(shí)間戳生成方法不同,時(shí)鐘同步精度也不一樣,IEEE802.3中規(guī)定以太網(wǎng)幀的基本結(jié)構(gòu):前導(dǎo)碼、幀起始定界符、目的MAC、源MAC、長(zhǎng)度、數(shù)據(jù)和幀校驗(yàn)序列。其中,前導(dǎo)碼由7個(gè)‘1 0’交替的8位字節(jié)組成,用于信號(hào)同步;而幀起始定界符包含6位交替的‘1 0’及末位的2個(gè)1,末位的2個(gè)1通知接收端,跟在后面的是幀的實(shí)際字段,表示一幀開(kāi)始。在以太網(wǎng)中,IEEE 1588所定義的各種時(shí)鐘報(bào)文(Sync報(bào)文等)均以UDP/IP多播包形式發(fā)送的,報(bào)文的時(shí)標(biāo)生成點(diǎn)位于幀起始定界符最后一位,如圖3所示。
IEEE 1588的同步原理決定了時(shí)鐘同步的精度主要取決于時(shí)間戳的精度。時(shí)間戳的加蓋有3種方法:
(1)硬件加蓋方式 時(shí)間戳主要加蓋在MAC層和PHY層之間的MII(media independent interface)層,這也是最精確的加蓋方式,需用硬件電路實(shí)現(xiàn)。
(2)軟件加蓋方式 時(shí)間戳加蓋在網(wǎng)絡(luò)的驅(qū)動(dòng)層,在網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序中實(shí)現(xiàn),精度略低。
(3)加蓋在應(yīng)用層 因?yàn)檫@種方式無(wú)需修改其他系統(tǒng)軟件,所以協(xié)議棧的操作延遲和負(fù)載都能對(duì)同步精度造成影響,因此同步精度最低。無(wú)論在網(wǎng)絡(luò)驅(qū)動(dòng)層還是在MII產(chǎn)生的時(shí)間戳都必須返回到PTP應(yīng)用層并經(jīng)由系統(tǒng)內(nèi)核處理,然后才發(fā)送到PTP終端,由此可以看出時(shí)間戳的生成決定了PTP協(xié)議的運(yùn)行。只有獲得精確的時(shí)間戳才能發(fā)揮IEEE 1588所能達(dá)到的時(shí)鐘同步精度。
以太網(wǎng)自身的CSMMCD機(jī)制、上一層通信(如TCP及UDP)上進(jìn)行的誤差檢測(cè)及翻譯障礙等,都占用以太網(wǎng)的時(shí)間。因此,用軟件方式產(chǎn)生時(shí)間戳,必須優(yōu)化加蓋時(shí)間戳的驅(qū)動(dòng)程序以提高系統(tǒng)內(nèi)核處理帶有時(shí)間戳報(bào)文的運(yùn)算效率,同時(shí)優(yōu)化報(bào)文發(fā)送前在網(wǎng)卡內(nèi)部的排序,減小程序運(yùn)行和網(wǎng)絡(luò)負(fù)載對(duì)收發(fā)報(bào)文的影響,從而降低報(bào)文發(fā)送過(guò)程中的軟件延遲和抖動(dòng)。
在以太網(wǎng)中,也可以在物理層放置硬件電路加蓋時(shí)間戳,這樣可以避免協(xié)議棧上部較大的時(shí)間抖動(dòng),消除報(bào)文傳輸中的網(wǎng)絡(luò)延遲。由于主從時(shí)鐘不同步的原因除了網(wǎng)絡(luò)延遲外還有時(shí)鐘偏差,可以采用頻率可調(diào)時(shí)鐘來(lái)校正從時(shí)鐘相對(duì)主時(shí)鐘的時(shí)鐘偏差,根據(jù)從時(shí)鐘處得出的自身與主時(shí)鐘的偏差計(jì)算出相應(yīng)的頻率補(bǔ)償值,從而控制時(shí)鐘計(jì)數(shù)器的數(shù)值達(dá)到與主時(shí)鐘的同步。硬件電路從物理層獲得每個(gè)發(fā)送和接收?qǐng)?bào)文的比特流,并記錄時(shí)間戳信息,判斷其是否為IEEE 1588相關(guān)協(xié)議報(bào)文,如果是相關(guān)報(bào)文,則把時(shí)間戳信息傳送給上層軟件,否則丟棄該報(bào)文的時(shí)間戳信息。對(duì)于100 M以太網(wǎng),由于采用4B/SB編碼和Scrambler技術(shù),只能在物理層與數(shù)據(jù)鏈路層之間的MII層加蓋時(shí)間戳信息。IEEE 1588時(shí)鐘同步實(shí)現(xiàn)過(guò)程如圖4所示。
5 基于FPGA的硬件同步方案
因?yàn)椴捎糜布娐帆@取時(shí)間戳,從而獲得更高的同步精度,這里采用FPGA實(shí)現(xiàn)時(shí)間戳的獲取和從時(shí)鐘相對(duì)主時(shí)鐘的頻率糾偏。分布式系統(tǒng)中節(jié)點(diǎn)時(shí)鐘同步模塊的內(nèi)部結(jié)構(gòu)如圖5所示。
每個(gè)節(jié)點(diǎn)包含CPU、以太網(wǎng)媒體訪問(wèn)控制器(MAC)、以太網(wǎng)物理層收發(fā)器(PHY)、FPGA等4種主要器件。物理層收發(fā)器和MAC控制器通過(guò)標(biāo)準(zhǔn)的MII接口相連,CPU通過(guò)總線與MAC控制器和FPGA相連。物理層收發(fā)器、MAC控制器和CPU構(gòu)成通訊協(xié)議棧完成數(shù)據(jù)包的發(fā)送和接收。
為了使從時(shí)鐘的晶振頻率與主時(shí)鐘保持一致,F(xiàn)PGA中需要有一個(gè)頻率可調(diào)的時(shí)鐘以實(shí)現(xiàn)晶振糾偏,如圖6所示,由r位頻率補(bǔ)償值寄存器、g位分頻累加器、p位系統(tǒng)時(shí)鐘計(jì)數(shù)器組成,一個(gè)普通晶體振蕩信號(hào)輸入FPGA模塊。在每個(gè)晶振周期,r位頻率補(bǔ)償值寄存器內(nèi)保存的頻率補(bǔ)償值累加到q位分頻累加器中,與累加器中的值相加。
如果發(fā)生溢出,則在下一個(gè)晶振周期,時(shí)鐘計(jì)數(shù)器增加一個(gè)增量,這個(gè)增量就是整個(gè)頻率補(bǔ)償時(shí)鐘的分辨率;如果沒(méi)有溢出,則在下一個(gè)晶振周期,時(shí)鐘計(jì)數(shù)器保持原值。計(jì)數(shù)器的當(dāng)前值即為調(diào)整后的本地時(shí)鐘。因此可以通過(guò)改變頻率補(bǔ)償值來(lái)改變時(shí)鐘計(jì)數(shù)器數(shù)值增加的頻率,實(shí)現(xiàn)對(duì)晶振頻率的補(bǔ)償。q和r越大,頻率補(bǔ)償值的改變對(duì)累加器發(fā)生溢出的頻率的影響越小,對(duì)晶振頻率的補(bǔ)償越精細(xì)。本系統(tǒng)選擇r=32,q=32,p=64。
使用FPGA不但能夠獲得最精確的時(shí)間戳,而且能夠采用數(shù)字電路的方法精確補(bǔ)償從時(shí)鐘的晶振頻率。FPGA的控制器實(shí)現(xiàn)時(shí)鐘調(diào)節(jié)算法,并由得到的時(shí)間戳和本地時(shí)鐘相比較,得到頻率補(bǔ)償值,從而控制時(shí)鐘計(jì)數(shù)器數(shù)值,補(bǔ)償晶振的頻率。而CPU則主要負(fù)責(zé)驅(qū)動(dòng)MAC控制器完成相關(guān)的通訊功能。
6 結(jié)束語(yǔ)
采用IEEE 1588精確時(shí)鐘同步協(xié)議的以太網(wǎng)時(shí)鐘同步技術(shù),解決了通用以太網(wǎng)實(shí)時(shí)性和同步性差的問(wèn)題。為基于多播技術(shù)的標(biāo)準(zhǔn)以太網(wǎng)的實(shí)時(shí)應(yīng)用提供了有效的解決方案。IEEE 1588精確時(shí)鐘同步協(xié)議的制定滿足網(wǎng)絡(luò)化分布式系統(tǒng)的需求,利用IEEE 1588時(shí)鐘同步技術(shù)可以在不增加網(wǎng)絡(luò)負(fù)荷的情況下,實(shí)現(xiàn)整個(gè)分布式系統(tǒng)的高精度時(shí)鐘同步,從而可以有效解決分布式系統(tǒng)的實(shí)時(shí)性問(wèn)題,進(jìn)而改善和提高系統(tǒng)的同步精度。
責(zé)任編輯:gt
-
FPGA
+關(guān)注
關(guān)注
1629文章
21758瀏覽量
604240 -
收發(fā)器
+關(guān)注
關(guān)注
10文章
3437瀏覽量
106065 -
控制器
+關(guān)注
關(guān)注
112文章
16397瀏覽量
178514
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論