張克華 馬佳航 田林曉 朱苗苗
(浙江師范大學工學院,浙江金華321014)
計算機數字控制技術(computer numerical control,CNC)是一種能夠將具有控制編碼或其他符號指令規定的程序有邏輯地處理,并在對其譯碼后控制自動運行的控制技術。傳統的數控系統大多采用專用獨立控制器[1]。隨著工業自動化的發展,以工業PC機為基礎的低成本開放式數控系統發展迅猛。相比有獨立控制器的傳統CNC系統,采用帶有實時操作系統的PC機作為上位機的開放式CNC系統架構由于不需要專用硬件,可以有效地降低成本并且具備較好的靈活性[2]。開放式數控系統中可應用多種通信總線架構,其中 EtherCAT[3-5](ethernet control automation technology)以實時以太網標準,適用性廣,具備高性能、低成本、應用簡易等優點,可以有效的降低成本和應用難度,在現代控制領域中得到了廣泛的應用。目前主要應用的EtherCAT框架有:德國倍福的TwinCAT主站,德國IgH公司的在Linux下的EtherCAT主站協議棧IgH EtherCAT Master for Linux以及德國Acontis公司的基于ARM9架構的 Linux嵌入式主站EC-Master等,其中IgH EtherCAT Master for Linux是一個開源的框架,已經被集成在Linux內核上。
開源數控系統 LinuxCNC,是一款構建于實時Linux操作系統之上的開源的純軟件數控系統,用于數控系統和機器人系統控制,可以控制多達9軸系統,設計便捷、靈活、易擴展[3]。用戶可以根據特定的數控系統應用要求,通過定制相應的配置文件、HAL模塊連接以及操作界面來完成控制系統的開發。其主要由兩大部分組成:用戶空間和RTAI(realtime application interface)內核空間[6]。用戶空間模塊是普通的Linux程序且不具備實時性,含有為應用程序提供人機界面(human machine interface,HMI)的模塊,RTAI內核空間模塊是實時運行的,其內核架構不允許低優先級的進程搶占[7]。RTAI內核空間中還包括含有軌跡生成和插值算法的運動控制實時模塊MOTMOD[8]和用來連接RTAI的硬件抽象層(HAL)模塊。使用該軟件CNC系統,可以與市售的伺服驅動器搭配使用且廣泛支持的標準化工業以太網,從而實現用工業標準的以太網現場總線進行通信來提高靈活性并降低成本[9]。即通過采用開源IgH EtherCAT master集成在PC機中搭建EtherCAT主站,采用伺服驅動器搭建EtherCAT從站的方式,來實現PC機與伺服驅動器的通訊[10-11]。
數控系統的實時性是衡量控制系統優劣的一項關鍵的指標,主要體現在數控系統對數據進行快速而準確的處理并及時作出響應。在實際工況中,根據控制任務的不同,將實時性劃分為對應響應時間為100 ms及以上,5~10 ms,小于1 ms,以及100節點下的伺服運動控制小于1 ms的4個級別。其中CNC的實時性要求在第三級和第四級,也就是響應時間在1 ms及以下[12-13]。CNC需要解決實時性問題是如何同步地向伺服驅動器發送位置指令。理想情況下,所有伺服驅動器都應在同一時間接收并執行各自的位置指令。此外,連續位置命令之間的周期應該始終是常量。
本文所構建的CNC系統采用PC機實時操作系統(real time operating system,RTOS)安裝開源的IgH EtherCAT主站,EtherCAT伺服驅動器作為從站。該數控系統為純軟件解決方案無需任何擴展卡或外部控制器,靈活性高,可以通過擴展PC實現的數控內核和HMI來增加新功能,并且易于實施的特點。本文采用Linux RTAI作為CNC控制器的實時操作系統,通過測試其抖動和延遲,測試滿足了數控機床對控制系統的1 ms及以下的實時性要求。擬提供開源、低成本和擴展性好的滿足工業上實時要求的數控系統。
本文整合EtherCAT主站于LinuxCNC中的多軸純軟件數控系統。系統是基于EtherCAT搭建的,以作為主站的工控機為第一節點,通過網線將作為從站的伺服驅動器依次相連,形成一個完整的EtherCAT主從站現場總線系統。該數控系統的基本構成,如圖1所示,整個系統的硬件主要包括作為主站的工控電腦(gk1037u/i5-3317u),作為從站的交流伺服驅動器(英威騰SV-DA200),與伺服驅動器配套的電動機等。系統的軟件部分主要是LinuxCNC軟件和IgH EtherCAT Master for Linux框架。通過修改Linux RTAI中的HAL模塊實現LinuxCNC和EtherCAT的通信。作為從站的伺服驅動器,在接收到主站發來的EtherCAT幀報文后,可以控制電動機和其他輔助設備運轉。

EtherCAT只定義了標準以太網結構的七層 OSI模型中的物理層、數據鏈路層和應用層這三層協議[9]。EtherCAT工作采用主從模式,一個主站可以控制多個從站。根據伺服驅動器技術指南手冊,將所提出的系統中應用的伺服驅動器的時間同步周期設置為4 ms[14]。開始通信時,主站將 EtherCAT幀發送信號給第一個從站,當第一個從站收到主站發送的EtherCAT幀后,第一個從站下載需要的數據并插入需要傳送的數據后傳送給下一個從站,一直循環至最后一個從站完成上述操作后將數據包返回主站,如圖2所示。

EtherCAT主站系統是模塊化構成的,主要分為三大模塊:設備驅動模塊、主站模塊和應用層模塊。其中設備驅動模塊能夠進行以太網卡驅動的配置,并通過以太網口使得主站模塊可以收發到EtherCAT幀。本文中主站模塊是指集成在Linux內核中的 IgH EtherCAT Master主站內核模塊,通常包含了一個或者是多個的EtherCAT主站對象。設備以及應用層接口一般也集成在主站模塊中。應用層模塊是開發者編寫的能夠控制主站模塊的關鍵模塊。程序在調用應用層接口后,才能去控制主站模塊。

EtherCAT從站系統是安裝在從站軸伺服驅動器中的。本文使用英威騰EtherCAT伺服驅動器(型號DA200),其內部的EtherCAT網絡模型如圖3所示。EtherCAT(CoE)網絡參考模型包括兩部分:數據鏈路層和應用層。數據鏈路層主要負責 EtherCAT通信協議,應用層嵌入了 CANopen drive Profile(DS402)通信規約。CoE中的對象字典包括了參數、應用數據以及PDO映射配置信息。過程數據對象(PDO)由對象字典中能夠進行PDO映射的對象構成,PDO映射定義了PDO數據中的內容。由于PDO數據是周期性進行讀寫的,所以不需要查找對象字典;而郵箱通信(SDO)的通信是非周期性的,在讀寫時需要查找對象字典[4]。
EtherCAT是主從式的結構,由于采用工業PC機作為控制主站,伺服驅動器作為控制從站,首先需要完成EtherCAT主從站的搭建。下載安裝開源的IgH EtherCAT Master for Linux作為CNC系統的EtherCAT框架;在工控機中安裝EtherCAT主站代碼;測試EtherCAT的運行情況。如圖4所示,EtherCAT成功安裝并運行良好。

通過EtherCAT現場總線系統,實現了LinuxCNC和伺服驅動器之間的通訊,具體通訊方式,如圖5所示。在用戶將 G代碼輸入到 LinuxCNC中后,LinuxCNC中的RS-274/NGC解釋器會將G代碼解釋成數控系統能夠識別的數據塊;這些數據塊會通過LinuxCNC中的硬件抽象層(HAL)傳遞到EtherCAT主站系統;之后EtherCAT主站將數據塊以EtherCAT幀的形式發送至EtherCAT從站并最終驅動執行元件。
為測試集成EtherCAT現場總線的開源數控系統的實時性能,搭建了試驗平臺,如圖6所示。測試工具是采用網絡截包軟件Wireshark進行實時性抓包測試,作為EtherCAT現場總線系統主站的工控機與作為EtherCAT從站系統的軸伺服驅動器以及安裝有Wire-Shark軟件的PC機通過工業交互機連接在一起。利用WireShark截取EtherCAT主從站系統通訊過程中交換的實時 EtherCAT幀報文的方式,統計通過EtherCAT現場總線系統進行通訊的數據信息,然后據此計算該EtherCAT通訊過程的抖動和延時時間,最后與數控系統的實時性要求進行比較,判斷EtherCAT通訊系統的實時性是否符合要求。

EtherCAT運行測試的G代碼所需總的運行時間為200.260 9 s,如圖7所示,主站發送報文的時間間隔(主站地址00:b4:0d:1e:00:66發送的相鄰報文的統計時間之差,如主站地址發送的No.2的報文統計時間為0.003 261 s,No.4則為0.007 260 s,兩者時間之差為0.003 999 s,也就是這兩個報文的發送時間間隔為 3 999 μs。平均為 4 ms,最大時間為 4 041 μs,最小為3 957 μs,波動在±1.5%以內,如圖8所示。在相對時間增量一欄中可以看出從站接收報文所需的時間,也就是報文的傳輸時間。每一個從站報文(地址為02:b4:0d:1e:00:66)相對主站發出的時間增量即為報文的傳輸時間,為了消除誤差,取每5個報文的平均傳輸時間計算,最大 779 μs,最小 0.2 μs。整體平均傳輸時間為 47.7 μs。

根據所截得的EtherCAT幀在WireShark中顯示的IO圖中也可以看出,如圖9所示,在X軸表示的截包時間刻度間隔為0.001 s,Y軸表示截包個數時,報文主站運行平穩,具有較高的可靠性。通過計算發現報文從站接收報文的整體平均傳輸時間約為47.7 μs,其中99.7%的EtherCAT幀傳輸時間在0~3 μs,0.3%以下的傳輸時間在700~800 μs。通過統計計算,所得的通訊時間測試結果符合EtherCAT的微秒(μs)級刷新時間。表明EtherCAT通訊總線系統已經很好的整合進了LinuxCNC中。與數控系統的實時性要求(小于1 ms)相比,測試結果為微秒級別符合數控系統要求,這表明本文提出的基于Linux RTAI和IgH EtherCAT主站的開放式數控系統具備良好的實時性以及控制性能。
本文基于PC的集成EtherCAT于LinuxCNC的開放式數控系統。該CNC系統擁有如下特點:(1)開源的Linux RTAI系統和LinuxCNC實現了純軟件CNC系統,用戶可以自行修改、復制以及再分發該數控系統。(2)使用PC機為上位機,無需專用硬件,降低了硬件成本。同時,EtherCAT現場總線具有微秒(μs)級刷新時間,而且可以搭載不同廠家生產的EtherCAT伺服驅動器配合使用提高通用性和降低設備成本。(3)系統功能靈活。純軟件性質使得該數控系統能夠充分地利用PC機具備的大量計算資源實現數控系統各功能,并且可以按需求編寫軟件模塊,輕松地添加系統新功能。同時,用戶可通過修改配置文件參數實現驅動不同數目的軸伺服驅動器和電動機,使得該數控系統的靈活性極大地增強。通過該數控系統集成并進行了實時性測試,試驗結果表明:應用EtherCAT現場總線,系統數據平均傳輸時間約為47.7 μs,說明EtherCAT主從站系統較好的整合在了該數控系統中,該數控系統的實時響應時間在微秒級別,也就滿足數控系統實時性要求的響應時間在1 ms級及以下,所以集成IgH EtherCAT主站與LinuxCNC純軟件數控系統可以很好地滿足工業機器人與通用數控機床等的要求。