馬 平,劉勝旺,蘇攀杰,蔣 峰
(廣東工業大學機電工程學院,廣東 廣州 510006)
隨著“智能制造與工業4.0”以及中國制造2025實施制造強國戰略發展的大潮,在晉升傳統制造企業的途中,也越來越重視自動化及柔性化生產。在工業領域的控制系統中,通信時會造成時間抖動,是由于時鐘的不同步造成的,這種影響不可避免,系統性能會受到一定程度的影響,因此時鐘精確的同步對于各種控制領域非常重要。EtherCAT現場總線協議是德國倍福(Beckhoff)公司在2003年提出的一種開放實時以太網協議;其完全符合以太網標準,實時性和確定性高,適用于對同步性能較高的控制系統。例如德國舒勒公司的快速驅動和液壓控制系統,也是基于EtherCAT技術實現了一套有自主產權的液壓控制系統;華南理工大學也使用了DC同步技術,在使用EtherCAT作為通信層的基礎上,完成了DC機制在六軸工業機器人的控制系統的應用,且實現了從站之間收獲了ns級別的同步。總的來說EtherCAT擁有比較完美的同步性能,該機制采用分布式時鐘同步機制(Distributed Clock),能夠完成EtherCAT設備之間精準的時鐘同步。簡單高效的DC機制,可以保證EtherCAT網絡時鐘同步精度小于1μs。因此EtherCAT的DC機制的應用,不僅提高了工業機器人系統中各從站的時鐘同步能力,對整體性能也起到了決定性的作用。采用嵌入式工控機為硬件平臺,采用Linux+Xenomai實時機制,并搭建開源主站IGH EtherCATMaster來實現分布時鐘同步的技術方案。
首先在EtherCAT中,主站和從站有自己獨立的硬件時鐘源,而EtherCAT分布時鐘同步技術選用的參考時鐘(Reference Clock)為主站連接的第一個具有DC功能的從站,當同步所有的從站時鐘(Slave Clock)時鐘時,都要以這個參考時鐘為基準,主站時鐘(Master Clock)仍需與參考時鐘保持同步。分布時鐘機制主要分為:系統時間的同步,即為主站時鐘、參考時鐘與其余從站時鐘之間的同步。
在此過程中,分布時鐘補償主要由三個部分組成:第一個為傳輸延時(Transmission Delays)的補償。傳輸延時是因為數據幀在網線上的傳輸和從站對數據幀的處理和收發而造成的。每個從站網絡口都有一個寄存器,開始測量傳輸延時時,對從站網絡口0的寄存器執行寫操作,在每一個數據包收到時,寄存器會自動將此時的系統時間保存起來,接著主站會將這個時間點讀出,通過相關計算得出時間延遲(從站間的)。最終通過相關的計算方法將從站到參考時鐘的時間延遲得出后,將這些得到的值放入所對應的寄存器中,并處理好相關數據,以完成傳輸延時的時間補償。第二個為時鐘偏移(Time Offset)的補償,其是由于各個從站不一致的上電時間引起的。EtherCAT主站將主站的系統時間(System Time)減去從站的內部時鐘得到時鐘的偏移值,系統時間偏移寄存器(System Time Offset)每個從站提供了一個,以對消時鐘偏差的補償。第三個階段是時鐘漂移(Drift)的補償。是由于從站時鐘晶振的微小硬件差異而造成各個從站的時鐘速率不一樣。對系統時間(System Time)寄存器進行寫操作會將寫入的時間和當前系統時間進行比較,計算出Time Error,依據算出來的值來改變時鐘速度的快慢,以補償時鐘漂移。同步過程,如圖1所示。

圖1 同步過程圖Fig.1 Synchronization Process Diagram
實例來看,如圖2所示。在通過測量、計算和分析傳輸延時的過程中,如果參考時鐘為從站1,從站4的數據在內部沒有中斷,網絡傳輸時從站的物理網絡口的接口類型都相同,tWXY=tWYX,即在網線的傳輸延時是均勻的,而且一切從站的tP相同,tF也都相同,所以tDIFF也相同。

圖2 EtherCAT傳輸延時結構Fig.2 EtherCAT Transmission Delay Structure
基于以上假設,根據圖2可以得出最后兩個相鄰的從站3和從站4之間的傳輸延時t34由一個處理延時和一個網線延時組成即:

又由于假設了所有的從站處理延時均相同,所以可得:

從站(n-1)的A/B網絡口的接受時間關系如下:

所以從站(n-1)和n之間的傳輸延時為:

線形網絡中任意兩個相鄰的從站的傳輸延時(只要不是線性網絡中的最后兩個和最開始的兩個從站即可)從站2和3之間的傳輸延時(t23和t32)可由以下公式計算得到:

假定從站3的處理延時和轉發延時之間的差值為:

由于從站的處理延時相同可得:

從站2的兩個網絡口(網絡口A和網絡口B)的接收時間有以下關系:

從而得到從站B和C之間的傳輸延時為:

圖2中最開始的兩個從站的傳輸延時的計算:按照以上公式可以得到,傳輸延時從站A和B之間為:

參考從站與各個從站之間的傳輸延時計算如下:

將公式帶入公式化簡得:

由歸納法可得,在圖2中第i個從站x到參考從站A的傳輸延時為:

式中:tPx—從站x的處理延時;tFx—從站x的轉發延時;tWXY—從站x到從站y的網線傳輸延時;tXA/B—從站x的網絡口A/B的接受時間;tEX—從站x的EtherCAT處理單元的接收時間;tP—處理延時;tF—轉發延時;tDIFF—處理延時與轉發延時的差。
首先此偏差是由于某個從站的本地時鐘和參考時鐘上電時間差異所引起的。且此次的補償只做一次,以補償從站和參考從站之間上電的初始時鐘偏差。為了抵消此偏差,從站會提供系統時鐘偏移寄存器,就能得到tOFF的值,假設此時tLOCAL>tSYS_REF,即得到如下:

式中:tLOCAL—本地時鐘;tSYS_REF—系統參考時鐘;tOFF—時鐘偏差。
由于不同時間讀寫寄存器而導致很小的時間偏移誤差等原因,通過時鐘漂移來進行補償。傳輸延時和時鐘偏移是通過相關的計算與測量得到的,主站發送相關報文,將tSYS_REF值從從站的相關寄存器讀出來后,寫入相應的從站,且從站提供了一個寄存器,其功能就是備份寄存器的值tSYS_LOCAL,而后將得到的參考時鐘和從站本地時鐘進行如下計算,得到時鐘偏移補償:

式中:tSYS_LOCAL—從站本地時鐘;tDELAY—從站的延遲時間。
參考時間與本地系統時間要維持同步關系,即可得到tSYS_LOCAL=tSYS_REF,變化成如下公式:

根據從站算出來的Δt,以改變本地時鐘的速度大小,來完成對時鐘的漂移補償。假設Δt>0,則說明從站的本地時鐘更快,ESC會控制并改變其時間,每10μs改變為9μs;假如Δt<0,表現為參考時鐘更加快,ESC則控制時間每10μs變為11μs。
EtherCAT主站是由研華的嵌入式工控機配上igb以太網網卡等完成了的主站硬件環境的搭建。主站的軟件設計是基于Linux的雙內核(Xenomai)方案,在應用程序中將系統的實時任務讓Xenomai來管理,在Linux端管理非實時的任務,并在其上完成EtherCAT協議;主要任務是Xenomai和IGHEtherCAT主站的移植,igb網卡的移植,以及應用程序的設計三個部分,總體框架,如圖3所示。
詳細的程序設計,與EtherCAT主站DC相關的主要分為兩步:第一步為主站,時鐘等相關初始化和配置,第二步為實時任務周期運行和dc同步。
在此階段要完成申請主站等相關配置后才進入任務周期運行,其流程,如圖4所示。
首先調用ecrt_request_maste(r)函數申請主站,再通過相關API創建數據域,配置從站和相關sdo、pdos。然后設置主站的傳輸周期調用ecrt_master_set_send_interva(l),此周期時間設置為1ms,與任務周期時間相同。ecrt_slave_config_dc()用來配置從站dc信號及相關參數。本程序選擇從站為參考時鐘,而沒采用以主站為參考時鐘的方案,是因為從站定時器精度更高,更利于完成精確的同步過程。dc_ini(t)函數設置了dc補償周期,時間為1ms,并用啟用定時器計時,以初始化主站時的時間。在所有的配置和初始化結束后,開始運行主站通信,并執行實時任務。
首先主站先讀取數據幀,并處置收到的報文,判斷報文的狀態,如圖5所示。然后讀取相關數據,并根據讀取出的狀態字,來選擇對應下發寫入的特定指令。函數sync_dc()中調用相關函數來同步從站時鐘,并獲得參考時鐘的時間,設置此時應用的時間調用ecrt_master_application_time()。然后通過上圖API,對收到的報文進行提交和發送。最后一步的主要工作是通過參考時鐘來調整主站時鐘,以完成對時鐘的漂移補償。

圖5 任務運行階段Fig.5 Task Run Phase
在搭建的硬件平臺中,采用嵌入式工控機作為硬件平臺,選用自主開發的開源主站,通信的模式設為分布時鐘同步模式,且周期的運行時間為1ms,并以科爾摩根的伺服以及配套電機作為從站,以完成硬件平臺的搭建。并且經過交換機來連接工控機、伺服驅動器和裝有Wireshark的PC進行EtherCAT數據幀的抓取和分析,時鐘同步性能的測試主要是在于分布時鐘的同步和sync事件產生的時間。
當EtherCAT主站的應用程序運行后,主站從pre-op狀態轉換到operation狀態,則可以進行周期性通信,通信周期設置為1ms。使用Wireshark抓包軟件,監控分析伺服通信時的情況,相關的硬件測試環境,如圖6所示。

圖6 網絡通信測試平臺Fig.6 Network Communication Test Platform
利用wireshark捕獲主站發出和接受到的數據幀,判別主站是否完成收發EtherCAT數據幀。在主站程序運行后,軟件分析結果,如圖7所示。發送數據包時發了7條命令,且Cnt為0,在接受數據包后,Cnt為非0。經過圖7中對比分析可以知道,主從站間的通信正常,并且成功返回相關數據,可靠的證明了數據的有效性。

圖7 Wireshark測試圖Fig.7 Wireshark Test Chart
在科爾摩根的伺服驅動器ESC芯片中,寄存器記錄了從站系統時間偏差的值,其值等于從站本地時間減去參考時間,當從站系統時間差值的絕對值越小,則說明時鐘同步的效果越好。在這里的調試階段,EtherCAT主站控制器通過周期性的通信來讀取從站系統時間偏差的值,每隔1ms讀取一次,時間間隔和任務運行周期一致,并對其值做4000次讀取,測得的數值通過終端打印出來并統計數據。時鐘同步性能測試的結果,如圖8所示。

圖8 從站間的時間差Fig.8 Time Difference between Stations
在圖8中可以看出在同步前時的時鐘偏差大概為530μs,在初始化運行一段時間后,時間偏差呈現先遞減再遞增最后遞減的規律,總體表現為在經過1800次左右的讀取后,時間差值趨于穩定,并在運行一段時間后同步后的時鐘偏差的絕對值趨于穩定。根據測試結果可以得到,在剛開始通信時,從站間只完成粗略的同步,誤差相對較大,在DC補償開始運行時,作用明顯,使得參考時鐘和從站時鐘的時間偏差逐漸減小,時間偏差的值穩定在70ns內。
伴隨著工業以太網現場總線的發展,EtherCAT技術由于有著得天獨厚的優勢,普遍的應用在工業機器人領域。不僅分析了主站的DC同步機制,在實現了對主站協議棧IGH EtherCAT移植的基礎上,詳細的完成了DC同步的軟件設計。完成了主從站之間的同步,利用分布時鐘機制,并實際測試了參考時鐘和從站時鐘之間的同步精度。實踐結果表明同步表現較之前GSK RP/PT系列機器人,同步后從站間時鐘偏差降低了30ns,滿足了工業機器人的應用需求。