李 享,何 方,韓文澤
(1.中國科學(xué)院大學(xué),北京 100049;2.中國科學(xué)院 沈陽計算技術(shù)研究所 高檔數(shù)控國家工程研究中心,沈陽 110171;3.沈陽高精數(shù)控智能技術(shù)股份有限公司,沈陽 110171)
隨著工業(yè)控制領(lǐng)域?qū)λ俣?、實時性等要求的逐漸提高,傳統(tǒng)的現(xiàn)場總線已經(jīng)難以滿足需求,多種實時工業(yè)以太網(wǎng)現(xiàn)場總線已經(jīng)投入使用并得到了日益的重視。其中由德國Beckhoff自動化公司提出的EtherCAT技術(shù),完全符合以太網(wǎng)標準,支持多種拓撲結(jié)構(gòu),高速、高效率、實時性好,較其他的實時工業(yè)以太網(wǎng)現(xiàn)場總線協(xié)議有明顯的優(yōu)勢,已被廣泛應(yīng)用于工業(yè)控制領(lǐng)域。
EtherCAT利用分布時鐘機制,在實時性方面具有明顯的優(yōu)勢[1-3]。目前很多同步方案中主站選用了實時操作系統(tǒng),由于主站延時函數(shù)誤差較大,產(chǎn)生了較嚴重的丟包現(xiàn)象[4]。本文重點研究了分布時鐘技術(shù)中嵌入式主站的實現(xiàn)方案,優(yōu)點在于主站實時性能好、精度高,同時該方案可以直接插入初始化流程中,不影響原有的主站軟件。
EtherCAT數(shù)據(jù)幀通過特殊的幀類型0x88A4,直接使用以太網(wǎng)數(shù)據(jù)幀傳輸,充分利用了以太網(wǎng)的全雙工特性[1]。單個以太網(wǎng)幀最多可以進行1486字節(jié)的過程數(shù)據(jù)交換,耗時僅為300μs,100個伺服軸的通訊也僅需100μs,分布時鐘技術(shù)使得軸的同步偏差小于1μs[2]。如圖1所示,在邏輯上,EtherCAT網(wǎng)段內(nèi)所有從站設(shè)備構(gòu)成一個開口的環(huán)形總線[1,5]。主站可直接發(fā)送以太網(wǎng)數(shù)據(jù)幀,并在另一端接收處理后的數(shù)據(jù)幀。
圖1 EtherCAT運行原理
這樣設(shè)計的好處在于,主站可以輕易地獲取從站拓撲結(jié)構(gòu),精確地測量各從站的傳輸延時等信息。分布時鐘技術(shù)即以此設(shè)計為基礎(chǔ)。
EtherCAT支持的分布時鐘機制參考了IEEE1588標準,使得所有從站都同步于同一個時鐘,使用相同的系統(tǒng)時間,用來控制各個設(shè)備的同步執(zhí)行。與主站相連的第一個支持分布時鐘的從站被用作參考從站,以參考從站時鐘來同步其他從站設(shè)備及主站時鐘[4,6]。
分布時鐘初始化時首先需要測量參考從站到其他設(shè)備之間的傳輸延時,同時計算出其他設(shè)備時鐘與參考時鐘之間的初始偏移量,并將其寫入各從站。分布時鐘初始化流程如圖2所示。
主站首先使用APRD命令讀所有從站的0x0008~0x0009,獲得從站DC特征信息,判斷從站是否支持64位或32位分布時鐘;讀0x0110~0x0111,判斷正在使用的從站端口,獲得網(wǎng)段拓撲結(jié)構(gòu)。隨后主站發(fā)送BWR命令,寫所有從站0x0900。
圖2 分布時鐘初始化流程圖
綜上所述,從站到參考從站的傳輸延時為:
從站i本地時鐘與參考時鐘之間的初始偏移量為:
最后,主站使用ARMW命令,讀取參考從站的系統(tǒng)時間寄存器0x0910~0x0917,并將獲得的當(dāng)前系統(tǒng)時間τref_local寫入其后的從站。主站需要連續(xù)發(fā)送ARMW數(shù)據(jù)幀直至同步性基本滿足需求(可以通過讀系統(tǒng)時間差寄存器0x092C~0x092F來判斷是否滿足需求)。從站則據(jù)此計算自身的時鐘漂移量:
Δτ(i)=τlocal(i)-[τref_local+Toffset(i)+Tdelay(i)]
如果Δτ(i)>0,說明從站i的本地時鐘運行比參考從站時鐘快,ESC控制本地時鐘減慢運行;如果Δτ(i)<0,說明從站i的本地時鐘運行比參考從站時鐘慢,ESC控制本地時鐘加快運行[1,10]。
綜上可以看出,系統(tǒng)運行后,主站僅需要周期性發(fā)送ARMW數(shù)據(jù)幀實時調(diào)整主從站同步情況。因此,控制主站發(fā)送ARMW數(shù)據(jù)幀的時刻對于時鐘同步至關(guān)重要。
本文設(shè)計了一個EtherCAT系統(tǒng),并在其上實現(xiàn)了EtherCAT分布時鐘。系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 EtherCAT系統(tǒng)結(jié)構(gòu)
EtherCAT主站在ARM上實現(xiàn)所有EtherCAT的功能,利用FPGA實現(xiàn)PCI總線接口和DPRAM[11]。主站和人機系統(tǒng)間的交互通過PCI總線完成,主站與從站間通過以太網(wǎng)通信。
為了優(yōu)化從站同步性能,主站應(yīng)當(dāng)保證數(shù)據(jù)幀先于SYNC0信號一段時間到達從站。從站可以利用這段時間完成數(shù)據(jù)交換及控制計算,等待SYNC0信號到達后立即執(zhí)行輸出操作。從站的本地周期是由SYNC0信號觸發(fā)的,為了保證實時性,主站必須使數(shù)據(jù)幀在SYNC0事件前到達,因此需要保證主站在固定的時間窗口內(nèi)完成數(shù)據(jù)幀的發(fā)送。
為了達到這一結(jié)果,主站需要不斷調(diào)整自身的定時器,利用主站的本地定時器控制主站發(fā)送數(shù)據(jù)幀時刻,使得從站接收數(shù)據(jù)幀時刻與從站的SYNC0信號間保持恒定的相位差。主站利用ARM中一組定時器計數(shù)器來記錄當(dāng)前時間。為了擴大時鐘周期調(diào)整范圍,計數(shù)器的計數(shù)上限應(yīng)該較大。由圖4可知,主站應(yīng)該每個周期計算主站定時器剩余時間,并依據(jù)該結(jié)果修改主站定時器計數(shù)器。
由圖4可知,主站定時器的剩余時間為:
綜上,需要設(shè)定的主站定時器計數(shù)器的值為:
其中,Tmax為計數(shù)器的計數(shù)上限。主站實際上執(zhí)行Tremain后觸發(fā)中斷,進入下一次定時器事件,與Tmax的大小無關(guān)。
圖4 分布時鐘的主從站通信時序
測試平臺如圖5所示,采用1個主站6個從站,所有從站均支持分布時鐘,即以1號從站為參考從站。
設(shè)定SYNC信號周期為2ms,SYNC0偏移為500μs。通過采集參考從站周期運行開始時間寄存器(0x0990)、本地系統(tǒng)時間寄存器(0x0910),計算二者的差值,就可以知道實際的SYNC0偏移。測試結(jié)果如圖6所示。
圖5 分布時鐘測試平臺
圖6 參考從站的實際SYNC0偏移
由圖6可以看出,實際上SYNC0偏移分布在500μs上下,且抖動不大。通過示波器采集參考從站接收ARMW數(shù)據(jù)幀時刻、SYNC0信號發(fā)生時刻也能得到相同結(jié)論。如圖7所示。
圖7中的抖動范圍為5.46μs,SYNC0偏移則穩(wěn)定分布在490μs左右。這與ESC緩存模式有關(guān)。主站數(shù)據(jù)幀到達從站后,首先寫入由存儲同步管理通道(SyncManager,SM)管理的三個緩存區(qū)中的第一個。寫成功后,會在SM狀態(tài)寄存器中設(shè)置中斷事件請求。這一模式會使中斷發(fā)生時刻比真實接收數(shù)據(jù)幀時刻偏晚,導(dǎo)致了測得的SYNC0偏移偏小。
主站選用了實時操作系統(tǒng)的同步方案,通常通過增加系統(tǒng)延時來調(diào)整主站發(fā)送數(shù)據(jù)幀的時間[4]。這種方案使用的延時函數(shù)通常誤差較大時鐘分辨率往往在百微秒量級,導(dǎo)致SYNC0抖動范圍大。當(dāng)延時過長時,主站會在SYNC0信號產(chǎn)生后發(fā)送數(shù)據(jù)幀,從站不能處理而頻繁產(chǎn)生丟包。本方案直接調(diào)整主站定時器計數(shù)器,在主站時鐘頻率為204MHz的情況下,系統(tǒng)時間的分辨率僅為4.9ns,SYNC0抖動范圍很小。由圖7可以看出,主站可以保證在SYNC0事件前完成數(shù)據(jù)幀的發(fā)送。實際測試中,系統(tǒng)長時間連續(xù)運行,未出現(xiàn)丟包現(xiàn)象。可以認為主站實時性的需要得到了保證。
圖7 參考從站收幀與2號從站SYNC0信號發(fā)生時刻
用示波器采集參考從站和2號從站的SYNC信號發(fā)生時刻,如圖8所示。圖中可以看出,兩個從站的SYNC發(fā)生時刻的誤差在30ns以下,SYNC信號的抖動范圍為16.2ns。可以認為從站的同步性得到了保證。
圖8 參考從站與2號從站SYNC0信號發(fā)生時刻
針對不同SYNC信號周期(2ms、3ms、5ms、10ms),系統(tǒng)進入運行階段后,每60個周期采集一次2號從站的系統(tǒng)時間差寄存器的值。對于每組采集到的2000個數(shù)據(jù),去除符號位后,統(tǒng)計結(jié)果如表1所示。
表1 不同時鐘周期下2號從站系統(tǒng)時間差寄存器值的統(tǒng)計結(jié)果
從表中可以看出,在一定范圍內(nèi),無論時鐘周期如何變化,從站的時鐘平均誤差都在同一區(qū)域內(nèi)。但是如果時鐘周期變大,從站時鐘的誤差抖動也會增大。這是因為在下一次同步前,從站獨立運行的時間變長了,與參考時鐘出現(xiàn)較大誤差的機率也提升了。所以主站的時鐘周期應(yīng)當(dāng)盡可能小。
為了驗證發(fā)送ARMW數(shù)據(jù)幀的時間間隔對時鐘同步的影響,將主站改成每周期發(fā)送2次ARMW數(shù)據(jù)幀。在4ms的時鐘周期下,采集2號從站的系統(tǒng)時間差寄存器的值,與2ms同步1次的結(jié)果進行對比。對比結(jié)果如表2所示。
表2 2ms同步1次與4ms同步2次下2號從站的系統(tǒng)時間差寄存器值的統(tǒng)計結(jié)果對比
與2ms同步1次相比,4ms同步2次在同步的頻率上是一致的。但是發(fā)送ARMW數(shù)據(jù)幀的時間間隔會隨傳輸時間的變化而變。從表中可以看出,4ms同步2次時誤差的平均值與波動都變大了。這表明,發(fā)送ARMW數(shù)據(jù)幀的時間間隔的穩(wěn)定性對同步效果影響較大。所以主站應(yīng)當(dāng)盡可能保證發(fā)幀間隔的穩(wěn)定。與主站選用了實時操作系統(tǒng)的同步方案[4]相比,本文提出的方案在發(fā)幀間隔的穩(wěn)定性上有明顯的改善,能夠獲得更好的時鐘同步效果。
本文基于ARM平臺,重點對EtherCAT時鐘同步機制進行了研究,詳細探究了主站保證實時性的實現(xiàn)方案,并進行了仿真測試。測試結(jié)果證明了該方案下EtherCAT時鐘同步的誤差滿足實時性的需求。同時,測試了SYNC信號周期、發(fā)送ARMW數(shù)據(jù)幀的時間間隔的穩(wěn)定性對時鐘同步效果的影響。對進一步優(yōu)化主站同步方案有重要意義。
[參考文獻]
[1] 郇極,劉艷強.工業(yè)以太網(wǎng)現(xiàn)場總線EtherCAT驅(qū)動程序設(shè)計及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[2] 樊留群.實時以太網(wǎng)及運動控制總線技術(shù)[M].上海:同濟大學(xué)出版社,2009.
[3] CENA G, BERTOLOTTI I C, SCANZIO S, et al. Evaluation of EtherCAT Distributed Clock Performance[J]. IEEE Transactions on Industrial Informatics,2012,8(1):20-29.
[4] 劉輝.高速工業(yè)以太網(wǎng)時鐘同步技術(shù)的研究[D].深圳:哈爾濱工業(yè)大學(xué),2014.
[5] ETG.1000.4S(R)v1.0.2,EtherCAT Specification-Part 4:Data Link Layer protocols specification[S]. 2013.
[6] 李啟宗,周侗.一種面向運動控制領(lǐng)域的時鐘同步算法的分析與NCNET網(wǎng)絡(luò)實現(xiàn)[J].儀器儀表學(xué)報,2010,31(S2):198-201.
[7] 戴俊良,王文格.EtherCAT網(wǎng)絡(luò)控制中從站間傳輸延時研究[J].工程設(shè)計學(xué)報,2014, 21(5):494-498.
[8] 胡國傳,沈杰,劉彬,等.基于PROFINET IO的延遲和抖動研究[J].儀器儀表學(xué)報,2011, 32(9):2153-2160.
[9] 汪雅楠,譚南林.EtherCAT時鐘同步的誤差仿真分析[J].自動化技術(shù)與應(yīng)用,2011, 30(7):22-26.
[10] ORFANUS D, INDERGAARD R. Recovery of distributed clock in EtherCAT with redundancy for time-drift sensitive applications[C]//Emerging Technology and Factory Automation. IEEE, 2015:1-4.
[11] 陳灝,宋寶,唐小琦.EtherCAT精確時鐘同步技術(shù)的實現(xiàn)[J].組合機床與自動化加工技術(shù),2014(5):69-72.