張克華 馬佳航 田林曉 朱苗苗
(浙江師范大學(xué)工學(xué)院,浙江金華321014)
計(jì)算機(jī)數(shù)字控制技術(shù)(computer numerical control,CNC)是一種能夠?qū)⒕哂锌刂凭幋a或其他符號(hào)指令規(guī)定的程序有邏輯地處理,并在對(duì)其譯碼后控制自動(dòng)運(yùn)行的控制技術(shù)。傳統(tǒng)的數(shù)控系統(tǒng)大多采用專用獨(dú)立控制器[1]。隨著工業(yè)自動(dòng)化的發(fā)展,以工業(yè)PC機(jī)為基礎(chǔ)的低成本開放式數(shù)控系統(tǒng)發(fā)展迅猛。相比有獨(dú)立控制器的傳統(tǒng)CNC系統(tǒng),采用帶有實(shí)時(shí)操作系統(tǒng)的PC機(jī)作為上位機(jī)的開放式CNC系統(tǒng)架構(gòu)由于不需要專用硬件,可以有效地降低成本并且具備較好的靈活性[2]。開放式數(shù)控系統(tǒng)中可應(yīng)用多種通信總線架構(gòu),其中 EtherCAT[3-5](ethernet control automation technology)以實(shí)時(shí)以太網(wǎng)標(biāo)準(zhǔn),適用性廣,具備高性能、低成本、應(yīng)用簡(jiǎn)易等優(yōu)點(diǎn),可以有效的降低成本和應(yīng)用難度,在現(xiàn)代控制領(lǐng)域中得到了廣泛的應(yīng)用。目前主要應(yīng)用的EtherCAT框架有:德國(guó)倍福的TwinCAT主站,德國(guó)IgH公司的在Linux下的EtherCAT主站協(xié)議棧IgH EtherCAT Master for Linux以及德國(guó)Acontis公司的基于ARM9架構(gòu)的 Linux嵌入式主站EC-Master等,其中IgH EtherCAT Master for Linux是一個(gè)開源的框架,已經(jīng)被集成在Linux內(nèi)核上。
開源數(shù)控系統(tǒng) LinuxCNC,是一款構(gòu)建于實(shí)時(shí)Linux操作系統(tǒng)之上的開源的純軟件數(shù)控系統(tǒng),用于數(shù)控系統(tǒng)和機(jī)器人系統(tǒng)控制,可以控制多達(dá)9軸系統(tǒng),設(shè)計(jì)便捷、靈活、易擴(kuò)展[3]。用戶可以根據(jù)特定的數(shù)控系統(tǒng)應(yīng)用要求,通過(guò)定制相應(yīng)的配置文件、HAL模塊連接以及操作界面來(lái)完成控制系統(tǒng)的開發(fā)。其主要由兩大部分組成:用戶空間和RTAI(realtime application interface)內(nèi)核空間[6]。用戶空間模塊是普通的Linux程序且不具備實(shí)時(shí)性,含有為應(yīng)用程序提供人機(jī)界面(human machine interface,HMI)的模塊,RTAI內(nèi)核空間模塊是實(shí)時(shí)運(yùn)行的,其內(nèi)核架構(gòu)不允許低優(yōu)先級(jí)的進(jìn)程搶占[7]。RTAI內(nèi)核空間中還包括含有軌跡生成和插值算法的運(yùn)動(dòng)控制實(shí)時(shí)模塊MOTMOD[8]和用來(lái)連接RTAI的硬件抽象層(HAL)模塊。使用該軟件CNC系統(tǒng),可以與市售的伺服驅(qū)動(dòng)器搭配使用且廣泛支持的標(biāo)準(zhǔn)化工業(yè)以太網(wǎng),從而實(shí)現(xiàn)用工業(yè)標(biāo)準(zhǔn)的以太網(wǎng)現(xiàn)場(chǎng)總線進(jìn)行通信來(lái)提高靈活性并降低成本[9]。即通過(guò)采用開源IgH EtherCAT master集成在PC機(jī)中搭建EtherCAT主站,采用伺服驅(qū)動(dòng)器搭建EtherCAT從站的方式,來(lái)實(shí)現(xiàn)PC機(jī)與伺服驅(qū)動(dòng)器的通訊[10-11]。
數(shù)控系統(tǒng)的實(shí)時(shí)性是衡量控制系統(tǒng)優(yōu)劣的一項(xiàng)關(guān)鍵的指標(biāo),主要體現(xiàn)在數(shù)控系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行快速而準(zhǔn)確的處理并及時(shí)作出響應(yīng)。在實(shí)際工況中,根據(jù)控制任務(wù)的不同,將實(shí)時(shí)性劃分為對(duì)應(yīng)響應(yīng)時(shí)間為100 ms及以上,5~10 ms,小于1 ms,以及100節(jié)點(diǎn)下的伺服運(yùn)動(dòng)控制小于1 ms的4個(gè)級(jí)別。其中CNC的實(shí)時(shí)性要求在第三級(jí)和第四級(jí),也就是響應(yīng)時(shí)間在1 ms及以下[12-13]。CNC需要解決實(shí)時(shí)性問(wèn)題是如何同步地向伺服驅(qū)動(dòng)器發(fā)送位置指令。理想情況下,所有伺服驅(qū)動(dòng)器都應(yīng)在同一時(shí)間接收并執(zhí)行各自的位置指令。此外,連續(xù)位置命令之間的周期應(yīng)該始終是常量。
本文所構(gòu)建的CNC系統(tǒng)采用PC機(jī)實(shí)時(shí)操作系統(tǒng)(real time operating system,RTOS)安裝開源的IgH EtherCAT主站,EtherCAT伺服驅(qū)動(dòng)器作為從站。該數(shù)控系統(tǒng)為純軟件解決方案無(wú)需任何擴(kuò)展卡或外部控制器,靈活性高,可以通過(guò)擴(kuò)展PC實(shí)現(xiàn)的數(shù)控內(nèi)核和HMI來(lái)增加新功能,并且易于實(shí)施的特點(diǎn)。本文采用Linux RTAI作為CNC控制器的實(shí)時(shí)操作系統(tǒng),通過(guò)測(cè)試其抖動(dòng)和延遲,測(cè)試滿足了數(shù)控機(jī)床對(duì)控制系統(tǒng)的1 ms及以下的實(shí)時(shí)性要求。擬提供開源、低成本和擴(kuò)展性好的滿足工業(yè)上實(shí)時(shí)要求的數(shù)控系統(tǒng)。
本文整合EtherCAT主站于LinuxCNC中的多軸純軟件數(shù)控系統(tǒng)。系統(tǒng)是基于EtherCAT搭建的,以作為主站的工控機(jī)為第一節(jié)點(diǎn),通過(guò)網(wǎng)線將作為從站的伺服驅(qū)動(dòng)器依次相連,形成一個(gè)完整的EtherCAT主從站現(xiàn)場(chǎng)總線系統(tǒng)。該數(shù)控系統(tǒng)的基本構(gòu)成,如圖1所示,整個(gè)系統(tǒng)的硬件主要包括作為主站的工控電腦(gk1037u/i5-3317u),作為從站的交流伺服驅(qū)動(dòng)器(英威騰SV-DA200),與伺服驅(qū)動(dòng)器配套的電動(dòng)機(jī)等。系統(tǒng)的軟件部分主要是LinuxCNC軟件和IgH EtherCAT Master for Linux框架。通過(guò)修改Linux RTAI中的HAL模塊實(shí)現(xiàn)LinuxCNC和EtherCAT的通信。作為從站的伺服驅(qū)動(dòng)器,在接收到主站發(fā)來(lái)的EtherCAT幀報(bào)文后,可以控制電動(dòng)機(jī)和其他輔助設(shè)備運(yùn)轉(zhuǎn)。
EtherCAT只定義了標(biāo)準(zhǔn)以太網(wǎng)結(jié)構(gòu)的七層 OSI模型中的物理層、數(shù)據(jù)鏈路層和應(yīng)用層這三層協(xié)議[9]。EtherCAT工作采用主從模式,一個(gè)主站可以控制多個(gè)從站。根據(jù)伺服驅(qū)動(dòng)器技術(shù)指南手冊(cè),將所提出的系統(tǒng)中應(yīng)用的伺服驅(qū)動(dòng)器的時(shí)間同步周期設(shè)置為4 ms[14]。開始通信時(shí),主站將 EtherCAT幀發(fā)送信號(hào)給第一個(gè)從站,當(dāng)?shù)谝粋€(gè)從站收到主站發(fā)送的EtherCAT幀后,第一個(gè)從站下載需要的數(shù)據(jù)并插入需要傳送的數(shù)據(jù)后傳送給下一個(gè)從站,一直循環(huán)至最后一個(gè)從站完成上述操作后將數(shù)據(jù)包返回主站,如圖2所示。
EtherCAT主站系統(tǒng)是模塊化構(gòu)成的,主要分為三大模塊:設(shè)備驅(qū)動(dòng)模塊、主站模塊和應(yīng)用層模塊。其中設(shè)備驅(qū)動(dòng)模塊能夠進(jìn)行以太網(wǎng)卡驅(qū)動(dòng)的配置,并通過(guò)以太網(wǎng)口使得主站模塊可以收發(fā)到EtherCAT幀。本文中主站模塊是指集成在Linux內(nèi)核中的 IgH EtherCAT Master主站內(nèi)核模塊,通常包含了一個(gè)或者是多個(gè)的EtherCAT主站對(duì)象。設(shè)備以及應(yīng)用層接口一般也集成在主站模塊中。應(yīng)用層模塊是開發(fā)者編寫的能夠控制主站模塊的關(guān)鍵模塊。程序在調(diào)用應(yīng)用層接口后,才能去控制主站模塊。
EtherCAT從站系統(tǒng)是安裝在從站軸伺服驅(qū)動(dòng)器中的。本文使用英威騰EtherCAT伺服驅(qū)動(dòng)器(型號(hào)DA200),其內(nèi)部的EtherCAT網(wǎng)絡(luò)模型如圖3所示。EtherCAT(CoE)網(wǎng)絡(luò)參考模型包括兩部分:數(shù)據(jù)鏈路層和應(yīng)用層。數(shù)據(jù)鏈路層主要負(fù)責(zé) EtherCAT通信協(xié)議,應(yīng)用層嵌入了 CANopen drive Profile(DS402)通信規(guī)約。CoE中的對(duì)象字典包括了參數(shù)、應(yīng)用數(shù)據(jù)以及PDO映射配置信息。過(guò)程數(shù)據(jù)對(duì)象(PDO)由對(duì)象字典中能夠進(jìn)行PDO映射的對(duì)象構(gòu)成,PDO映射定義了PDO數(shù)據(jù)中的內(nèi)容。由于PDO數(shù)據(jù)是周期性進(jìn)行讀寫的,所以不需要查找對(duì)象字典;而郵箱通信(SDO)的通信是非周期性的,在讀寫時(shí)需要查找對(duì)象字典[4]。
EtherCAT是主從式的結(jié)構(gòu),由于采用工業(yè)PC機(jī)作為控制主站,伺服驅(qū)動(dòng)器作為控制從站,首先需要完成EtherCAT主從站的搭建。下載安裝開源的IgH EtherCAT Master for Linux作為CNC系統(tǒng)的EtherCAT框架;在工控機(jī)中安裝EtherCAT主站代碼;測(cè)試EtherCAT的運(yùn)行情況。如圖4所示,EtherCAT成功安裝并運(yùn)行良好。
通過(guò)EtherCAT現(xiàn)場(chǎng)總線系統(tǒng),實(shí)現(xiàn)了LinuxCNC和伺服驅(qū)動(dòng)器之間的通訊,具體通訊方式,如圖5所示。在用戶將 G代碼輸入到 LinuxCNC中后,LinuxCNC中的RS-274/NGC解釋器會(huì)將G代碼解釋成數(shù)控系統(tǒng)能夠識(shí)別的數(shù)據(jù)塊;這些數(shù)據(jù)塊會(huì)通過(guò)LinuxCNC中的硬件抽象層(HAL)傳遞到EtherCAT主站系統(tǒng);之后EtherCAT主站將數(shù)據(jù)塊以EtherCAT幀的形式發(fā)送至EtherCAT從站并最終驅(qū)動(dòng)執(zhí)行元件。
為測(cè)試集成EtherCAT現(xiàn)場(chǎng)總線的開源數(shù)控系統(tǒng)的實(shí)時(shí)性能,搭建了試驗(yàn)平臺(tái),如圖6所示。測(cè)試工具是采用網(wǎng)絡(luò)截包軟件Wireshark進(jìn)行實(shí)時(shí)性抓包測(cè)試,作為EtherCAT現(xiàn)場(chǎng)總線系統(tǒng)主站的工控機(jī)與作為EtherCAT從站系統(tǒng)的軸伺服驅(qū)動(dòng)器以及安裝有Wire-Shark軟件的PC機(jī)通過(guò)工業(yè)交互機(jī)連接在一起。利用WireShark截取EtherCAT主從站系統(tǒng)通訊過(guò)程中交換的實(shí)時(shí) EtherCAT幀報(bào)文的方式,統(tǒng)計(jì)通過(guò)EtherCAT現(xiàn)場(chǎng)總線系統(tǒng)進(jìn)行通訊的數(shù)據(jù)信息,然后據(jù)此計(jì)算該EtherCAT通訊過(guò)程的抖動(dòng)和延時(shí)時(shí)間,最后與數(shù)控系統(tǒng)的實(shí)時(shí)性要求進(jìn)行比較,判斷EtherCAT通訊系統(tǒng)的實(shí)時(shí)性是否符合要求。
EtherCAT運(yùn)行測(cè)試的G代碼所需總的運(yùn)行時(shí)間為200.260 9 s,如圖7所示,主站發(fā)送報(bào)文的時(shí)間間隔(主站地址00:b4:0d:1e:00:66發(fā)送的相鄰報(bào)文的統(tǒng)計(jì)時(shí)間之差,如主站地址發(fā)送的No.2的報(bào)文統(tǒng)計(jì)時(shí)間為0.003 261 s,No.4則為0.007 260 s,兩者時(shí)間之差為0.003 999 s,也就是這兩個(gè)報(bào)文的發(fā)送時(shí)間間隔為 3 999 μs。平均為 4 ms,最大時(shí)間為 4 041 μs,最小為3 957 μs,波動(dòng)在±1.5%以內(nèi),如圖8所示。在相對(duì)時(shí)間增量一欄中可以看出從站接收?qǐng)?bào)文所需的時(shí)間,也就是報(bào)文的傳輸時(shí)間。每一個(gè)從站報(bào)文(地址為02:b4:0d:1e:00:66)相對(duì)主站發(fā)出的時(shí)間增量即為報(bào)文的傳輸時(shí)間,為了消除誤差,取每5個(gè)報(bào)文的平均傳輸時(shí)間計(jì)算,最大 779 μs,最小 0.2 μs。整體平均傳輸時(shí)間為 47.7 μs。
根據(jù)所截得的EtherCAT幀在WireShark中顯示的IO圖中也可以看出,如圖9所示,在X軸表示的截包時(shí)間刻度間隔為0.001 s,Y軸表示截包個(gè)數(shù)時(shí),報(bào)文主站運(yùn)行平穩(wěn),具有較高的可靠性。通過(guò)計(jì)算發(fā)現(xiàn)報(bào)文從站接收?qǐng)?bào)文的整體平均傳輸時(shí)間約為47.7 μs,其中99.7%的EtherCAT幀傳輸時(shí)間在0~3 μs,0.3%以下的傳輸時(shí)間在700~800 μs。通過(guò)統(tǒng)計(jì)計(jì)算,所得的通訊時(shí)間測(cè)試結(jié)果符合EtherCAT的微秒(μs)級(jí)刷新時(shí)間。表明EtherCAT通訊總線系統(tǒng)已經(jīng)很好的整合進(jìn)了LinuxCNC中。與數(shù)控系統(tǒng)的實(shí)時(shí)性要求(小于1 ms)相比,測(cè)試結(jié)果為微秒級(jí)別符合數(shù)控系統(tǒng)要求,這表明本文提出的基于Linux RTAI和IgH EtherCAT主站的開放式數(shù)控系統(tǒng)具備良好的實(shí)時(shí)性以及控制性能。
本文基于PC的集成EtherCAT于LinuxCNC的開放式數(shù)控系統(tǒng)。該CNC系統(tǒng)擁有如下特點(diǎn):(1)開源的Linux RTAI系統(tǒng)和LinuxCNC實(shí)現(xiàn)了純軟件CNC系統(tǒng),用戶可以自行修改、復(fù)制以及再分發(fā)該數(shù)控系統(tǒng)。(2)使用PC機(jī)為上位機(jī),無(wú)需專用硬件,降低了硬件成本。同時(shí),EtherCAT現(xiàn)場(chǎng)總線具有微秒(μs)級(jí)刷新時(shí)間,而且可以搭載不同廠家生產(chǎn)的EtherCAT伺服驅(qū)動(dòng)器配合使用提高通用性和降低設(shè)備成本。(3)系統(tǒng)功能靈活。純軟件性質(zhì)使得該數(shù)控系統(tǒng)能夠充分地利用PC機(jī)具備的大量計(jì)算資源實(shí)現(xiàn)數(shù)控系統(tǒng)各功能,并且可以按需求編寫軟件模塊,輕松地添加系統(tǒng)新功能。同時(shí),用戶可通過(guò)修改配置文件參數(shù)實(shí)現(xiàn)驅(qū)動(dòng)不同數(shù)目的軸伺服驅(qū)動(dòng)器和電動(dòng)機(jī),使得該數(shù)控系統(tǒng)的靈活性極大地增強(qiáng)。通過(guò)該數(shù)控系統(tǒng)集成并進(jìn)行了實(shí)時(shí)性測(cè)試,試驗(yàn)結(jié)果表明:應(yīng)用EtherCAT現(xiàn)場(chǎng)總線,系統(tǒng)數(shù)據(jù)平均傳輸時(shí)間約為47.7 μs,說(shuō)明EtherCAT主從站系統(tǒng)較好的整合在了該數(shù)控系統(tǒng)中,該數(shù)控系統(tǒng)的實(shí)時(shí)響應(yīng)時(shí)間在微秒級(jí)別,也就滿足數(shù)控系統(tǒng)實(shí)時(shí)性要求的響應(yīng)時(shí)間在1 ms級(jí)及以下,所以集成IgH EtherCAT主站與LinuxCNC純軟件數(shù)控系統(tǒng)可以很好地滿足工業(yè)機(jī)器人與通用數(shù)控機(jī)床等的要求。