張玉龍 張春雷 王亞熙 朱中慶
(四川大學 機械工程學院,成都 610065)
EtherCAT技術具有實時性好、抗干擾能力強以及拓撲結構靈活等優勢[1],廣泛適用于機器人、機床以及半導體制造機器等領域。目前,EtherCAT主站技術主要有倍福的TwinCAT、Acontis、IGH、SOEM、KPA和RSM-ECAT[2]。其中,開源技術架構有EtherLAB推出的IGH EtherCAT和RT-LAB推出的SOEM。研究采用的G主站是基于IGH實現的EtherCAT主站方案。IGH EtherCAT提出了域(Domain)的概念,用來管理過程數據映射和管理交換過程數據對象(Process Data Object,PDO)的數據報結構。目前,使用的G主站使用一個域來進行映射管理所有從站的過程數據。
EtherCAT總線可以連接多個不同支持EtherCAT協議的伺服從站或者輸入輸出模塊,而其中不同從站之間執行任務所需要的同步周期并不相同。當從站過多、過程數據量接近一以太網幀時,使用現有的數據傳輸方式將因為數據超幀無法實現對從站的配置而導致系統出現錯誤。此時,顯示錯誤的信息為“EtherCAT ERROR:Failed receive FMMC clearing datagram”,結果是從站無法從PreOP轉變到SafeOP直至OP。同時,在這種傳輸方案下,所有從站使用同一個周期進行數據交互,有些過程數據變化緩慢,不需要高的交換速度,導致帶寬浪費,降低了從站控制的靈活性。
為了解決現有傳輸方案中數據超以太網幀時無法正常工作的問題,結合IGH原理提出新的傳輸方案,通過在主站側創建多個域完成對從站的過程數據映射。
EtherCAT運行過程中,主站發送數據,數據幀從主站出發,依次通過每個從站節點再返回到主站[3]。主站是唯一允許發送幀的節點,從站只能轉發數據幀,同時將主站發送給該從站的指令獲取復制到內存區域,以及將需要發送給主站的數據放入數據幀。EtherCAT傳輸原理如圖1所示。

圖1 EtherCAT傳輸原理
從站的輸入輸出過程數據是通過域進行映射的。所有從站的過程數據由一個域進行映射的傳輸方式是目前G主站正在使用的,而通過將不同從站進行分組,映射到不同的域,然后周期性地交替發送不同從站組的過程數據,以避免數據幀超出以太網幀的限制。在周期性過程數據傳輸中,也會通過郵箱數據傳輸進行主從站配置。
1.2.1 周期性過程數據傳輸
在周期性過程數據傳輸中,主站和從站有自由運行模式(簡稱Free Run模式)、同步于數據輸入或輸出事件模式(簡稱SM模式)和同步于分布時鐘同步時間模式(簡稱DC模式)3種同步運行模式[4]。因為一般多采用DC模式或者SM模式,所以以這兩種同步模式為基礎來分析周期性過程數據傳輸。
EtherCAT數據幀到達從站后,從站設備收到一個邏輯尋址的EtherCAT數據子報文,ESC通過檢查是否出現FMMU地址與數據幀數據地址對應的情況。若需要給該從站寫入數據或需要從該從站讀取數據,將該段數據復制到從站的RAM區域或者將SM3緩存區數據復制到數據幀[5]。此時,同步管理產生相應中斷,通知應用層等待處理實時數據,利用同步信號保證所有從站的同步性。接收過程數據后,根據同步管理器分配對象的描述,將獲取的過程數據對象賦值到從站的PDO應用對象中。
1.2.2 非周期性郵箱數據傳輸
EtherCAT非周期性數據傳輸也稱為郵箱數據傳輸,用于配置周期性過程數據通信或者其他非周期性服務。通常郵箱數據通信只對應一個從站,報文采用設置尋址模式。EtherCAT數據幀到達從站后,對比地址與數據幀中的站點地址是否一致,一致則與從站內部RAM區域進行交換數據,通過工作計數器數值是否增加來判斷是否成功讀寫命令[6]。獲取數據后,根據協議規定進行數據解析,實現對非周期性過程數據的處理。
在主從站之間建立通信,在進行數據傳輸前做好主從站之間的配置。采用的主站程序的初始化配置流程圖,如圖2所示。先請求EtherCAT主機,接著創建進程數據域domain(s)。為了能夠進行周期性過程數據交換,至少需要創建一個過程數據域。一般采用一個域來進行映射和管理過程數據對象。進行必要的配置工作獲取從站配置,如配置PDO、DC等[7]。應用層通過從站配置(預期的從站非實體從站)告知主站從站的拓撲結構(連接方式星型環形之類的連接)。參數有總線位置(別名和位置),一般別名設置為0,還包括生產商id和產品碼。主站檢查該位置處是否有一個匹配的實際從站設備,如果有,從站的相應配置將附加到實際的從站設備上進行配置。主站激活后,針對從站PDO的配置才會實際分配每個域的邏輯地址,域再對從站FMMU進行邏輯地址分配。主站激活后可以進入周期性任務。主從站進入OP狀態后,從站能夠接收輸入數據,同時傳遞輸入過程數據。

圖2 主站初始化配置過程
考慮從站后續用途和測試需要,需要增加某一從站模塊過程數據量,而新修改的從站需要有一個自己的xml文件,或者選擇B1E的xml作為基礎進行添加修改。B1E原使用RxPDO(0x1600)和TxPDO(0x1A00),共44 Bytes數據。增加0x1601和0x1A01作 為RxPDO2和TxPDO2,利 用xmlspy軟件打開B1E的ESI.xml文件,修改Dictionary下的DataTypes和Objects,增加自定義的DT1601和DT1A01數據類型,同時在Objects增加若干PDO對象條目對象在0x1600、0x1601、0x1A00和0x1A01中。DT1C12和DT1C13都增加一個子項目,變成兩個子項目。在0x1c12和0x1c13分別增加數據1601和1A01。在RxPDO和TxPDO元素下添加并修改PDO Entry,修改完成后,利用Twincat將新的ESI.xml加載到從站的EEPROM中,在Twincat中檢查是否出現錯誤,并且是否能夠進入OP。
主站啟動后與從站建立聯系,待進入OP狀態后,進行周期性任務流程,即周期性讀寫數據并發送給各從站。受以太網幀的限制,過程數據要限制在1 300 Bytes以內,保證整個數據幀在1 516 Bytes內。原有傳輸方案PDO傳輸如圖3所示。

圖3 原有傳輸方案PDO傳輸
為了在移植后的主站上控制較多從站,從站總過程數據量超過1 300 Bytes。在原有單幀無法順利傳輸周期性數據的情況下,使用兩個域管理映射從站。如圖4所示,將從站分配給domain1和domain2兩個域。主從站之間的初始化配置過程與原有方式類似,區別在于過程數據映射到兩個域中,可以在兩個數據幀中進行傳輸,因此可以避免多過程數據傳輸出現超幀的問題。由于兩個域可以采取不同的周期進行傳輸,應用中盡可能利用帶寬,減少因高頻次數據交換可低頻次交換數據造成的帶寬浪費。

圖4 多域傳輸方案PDO傳輸
根據新的需求修改主從站應用程序,運行應用程序即可啟動主站,因為一般從站過程數據量不大。為了實現超以太網數據幀的效果,將B1E從站模塊的過程數據量增加到500 Bytes。一方面需要保證從站能夠進入OP狀態,軸從站可以進行運動,另一方面通過ET2000和Wireshark抓包工具分析修改后主從站通信過程的實時性能否滿足原有要求。主從站設置DC同步模式,同步周期設置為2 ms,軸從站設置為CSP模式。Wireshark抓取的數據報文是通過ET2000抓取的,每條報文有ET2000打上的時間戳,最小分辨率為1 ns。通過Wireshark抓取的報文周期,分析對比修改后的實時性能否滿足要求,測試方案如圖5所示。首先將ET2000串聯到主從站之間,其次ET2000的千兆網口連接到PC端,再次PC端運行Wireshark網絡分析工具,最后通過使用Wireshark對總線上的數據幀進行抓取,并將其存儲在PC上以便進一步分析[8]。啟動時,主站程序會記錄主站端周期。為保證從站運行時和Wireshark抓包計算抖動有共同的基準位置,從進入OP后開始計算。

圖5 測試方案
先驗證在移植后的主站上使用雙域控制從站的可能性,以及其實時特性是否能夠滿足要求。驗證時采用4臺A1E,將其分成domain1映射一臺A1E,domain2映射3臺A1E。使用domain1的設置為任務1,使用domain2的設置為任務2,采取任務1和任務2同時執行、交替執行或者任務2每周期執行,任務1隔一周期執行一次,經驗證此方法可行。此次,采取一次傳輸domain1映射的過程數據,一次傳輸domain1和domain2映射的數據,同時抓取domain1和domain2映射過程數據進行交替傳輸。
在前一步的基礎上進行驗證更多從站控制的可能性,利用多域控制的特點,解決總過程數據量加上其他子報文超出一以太網幀的情況。實驗中,驗證27臺A1E加上1臺B1E從站仍能夠進入OP狀態并且正常工作,再增加1臺A1E就會使有些周期總數據量超過以太網幀的限制,出現EtherCAT錯誤。按照圖4提到的傳輸方案進行實驗驗證,將28臺A1E和B1E分別映射到domain1和domain2中。
通過ET2000和Wireshark抓取數據幀,將進行周期性讀寫PDO的數據保存,并利用編寫的程序導出,此時每兩條數據幀時間戳的差值就是EtherCAT過程數據發送周期。單域目前只能實現控制27個A1E從站和1個B1E從站,每個A1E過程數據總數據量為30 Bytes,無法映射控制28臺A1E和B1E的情況。使用雙域按照多域傳輸方案進行映射從站并傳輸。這兩種情況的抖動數值如圖6、圖7和表1所示。圖6表明,主站在單域情況下的最大抖動在200 ns內。經過修改使用雙域解決超幀問題時,主站抖動在6 000 ns內,見圖7。可見,相對于單域進行傳輸,雙域在數據實時性方面存在不足。

表1 單域傳輸和雙域傳輸抖動情況對比

圖6 單域映射27臺A1E和B1E傳輸抖動

圖7 雙域映射28臺A1E和B1E傳輸抖動
本文研究了多域映射從站控制下的主站應用程序的流程和周期任務的實現,以及增加從站模塊B1E的過程數據量,利用原有已開發的主站進行驗證實驗,驗證通過雙域控制的可行性和通過雙域控制可以在以太網幀長度限制下盡可能控制更多的從站以實現傳輸的靈活性,同時實現了IGH設計domain節約帶寬的需求。與原有主站控制相比,它適用于一些有實時性要求的場合,后續會根據抖動情況做進一步改進。