方遠東,劉建群,梁學勝,高偉強
(廣東工業(yè)大學,廣東省微納加工技術與裝備重點實驗室,廣東廣州 510006)
目前雕銑機數(shù)控系統(tǒng)多采用PC加運動控制卡或者嵌入式控制器等方案,其系統(tǒng)軟硬件專用、結構較復雜、可拓展性低、硬件成本高、難以適應機床功能多變的需求。隨著數(shù)控系統(tǒng)技術的日益成熟,基于PC的全軟件數(shù)控系統(tǒng)成為發(fā)展主流,它憑借結構簡單、平臺資源強大、靈活性強等特點,成為目前性價比很高的數(shù)控系統(tǒng)之一。
國內(nèi)外針對全軟件數(shù)控系統(tǒng)的研究,主要有基于Windows系統(tǒng)的開發(fā)和基于Linux系統(tǒng)的開發(fā)。石永華和華磊采用PC+FPGA的方式,在Windows平臺上開發(fā)出一種全軟件多軸運動控制器。畢俊喜等基于ServoWorks SDK在Windows平臺上開發(fā)出一種全軟件四軸聯(lián)動數(shù)控系統(tǒng)。楊嘯等人基于IntervalZero的RTX工具在Windows平臺上開發(fā)一種全軟件運動控制器,具有通用運動控制平臺的高性能特點。WANG等采用RTLinux系統(tǒng)作為開發(fā)平臺,設計了一種實時全軟件數(shù)控系統(tǒng),實現(xiàn)了數(shù)控系統(tǒng)線性、圓弧插補等功能。
以上研究中,基于Windows開發(fā)的數(shù)控系統(tǒng),由于借助了其他廠商的產(chǎn)品進行二次開發(fā),具有一定的封閉性。而基于RTLinux開發(fā)的數(shù)控系統(tǒng),具有用戶態(tài)響應不足的缺點,難以滿足數(shù)控系統(tǒng)的定制化需求。
本文作者提出一種基于PC的全軟件雕銑機數(shù)控系統(tǒng)的實現(xiàn)方案。在硬件上,以PC為控制器,采用EtherCAT工業(yè)以太網(wǎng)總線的控制方式,直接控制硬件,無須控制卡協(xié)助,從而簡化硬件結構。在軟件上,以Linux+Xenomai雙內(nèi)核方式構建實時系統(tǒng),運用模塊化設計方法,在Linux域中使用Qt、OpenGL開發(fā)雕銑機數(shù)控系統(tǒng)軟件,在Xenomai域中使用IgH EtherCAT協(xié)議棧開發(fā)硬件驅動程序。
雕銑機硬件結構如圖1所示。圖中PC機、伺服驅動器和I/O從站通過千兆網(wǎng)線串連。伺服驅動器采用臺達ASD-A2-0221E驅動器、I/O從站采用倍福的EK1100模塊,均支持EtherCAT協(xié)議。主軸電機采用翰琪GDZ系列高速主軸電機,搭配愛德利ATL-AS2-115R變頻器,主軸轉速可達20 000 r/min,適用于無冷卻液加工。
圖1 雕銑機硬件結構
為滿足系統(tǒng)運算速度和內(nèi)存需要,PC機搭載英特爾I5 2400@3.0 GHz處理器和4 GB的DDR3內(nèi)存。同時,為充分發(fā)揮EtherCAT通信的性能以及IgH協(xié)議棧對Intel網(wǎng)卡驅動的優(yōu)化支持,PC機的網(wǎng)口選用英特爾82574L千兆網(wǎng)卡,該網(wǎng)卡傳輸速率可達1 200 Mb/s。
數(shù)控系統(tǒng)基于Linux系統(tǒng)開發(fā),采用Xenomai實時拓展對Linux進行實時化改造。Xenomai是一種以Adeos為基礎的強實時擴展,它和Linux內(nèi)核共同建立在Adeos環(huán)境上,并由Adeos管理硬件中斷。Adeos根據(jù)內(nèi)核域的優(yōu)先級執(zhí)行相應域的中斷服務程序,從而使Xenomai內(nèi)核獲得實時性。這種方式與RTLinux通過截獲所有硬件中斷控制來獲得實時性的方式相比,Adeos的中斷管理機制可使Xenomai支持更完全的、性能更優(yōu)異的用戶態(tài)實時性,同時可讓Xenomai兼容多種常見的商業(yè)實時操作系統(tǒng)。
經(jīng)改造后的Linux系統(tǒng),需要在Linux域和Xenomai域兩個系統(tǒng)域中分別進行軟件開發(fā)。數(shù)控系統(tǒng)軟件結構如圖2所示。Linux域中使用Qt Creator進行軟件開發(fā),軟件結構劃分為UI界面模塊、邏輯處理模塊、運動控制模塊和功能接口模塊。Xenomai域中使用由Xenomai內(nèi)核提供的實時函數(shù)庫進行軟件開發(fā),軟件結構劃分為進程通信模塊和定時驅動模塊。
圖2 數(shù)控系統(tǒng)軟件結構
Linux域程序架構如圖3所示。本文作者運用面向對象的思想設計各個模塊,減少各模塊間的耦合,增強程序的可重用性和拓展性。
圖3 Linux域程序架構
UI界面模塊負責人機交互的功能,運用Qt Designer制作各個界面。為增強靈活性,邏輯功能不在UI界面中實現(xiàn),而是直接從UI界面發(fā)出信號,讓邏輯處理模塊根據(jù)接收到的信號調度各項工作。模塊中的各子界面由CUIWidget基類派生,CUIWidget基類負責與邏輯處理模塊中的任務調度器CDispatcher建立信號和槽的連接。利用Qt信號和槽的特殊機制,各子界面通過基類發(fā)出的信號都會得到相應的處理。通過這種“分散觸發(fā),集中處理”的方式,可將UI空界面和其界面功能獨立開來,分別進行開發(fā)。因此,系統(tǒng)可隨意更換和升級UI界面而不影響系統(tǒng)的基本功能,這大大增加了系統(tǒng)的靈活性和重用性。
邏輯處理模塊連接UI界面模塊和運動控制模塊,起到消息中轉處理作用。由于運動控制模塊運行在子線程中,并且采用死循環(huán)的運行方式,無法響應信號和槽,因此邏輯處理模塊和運動控制模塊之間采用雙通道隊列緩存機制進行數(shù)據(jù)交換。邏輯處理模塊在接收到UI界面模塊觸發(fā)的動作信號后,將信號轉譯成運動控制模塊的操作指令。這些指令保存在雙通道隊列緩存中,由讀寫隊列接口類CCtrlInterface來管理和編寫。運動控制模塊查取隊列中的指令,將執(zhí)行結果寫入讀隊列緩存,并發(fā)出完成信號。邏輯處理模塊接收到信號后,讀取反饋結果,并將它精準發(fā)回給特定UI界面,從而實現(xiàn)消息中轉循環(huán)。
運動控制模塊管理數(shù)控系統(tǒng)的各種數(shù)控任務,包括急停任務、讀寫I/O任務、點動任務、G代碼解釋任務、對刀任務、回零任務等,這些任務大部分都是長耗時任務,需要不斷監(jiān)聽硬件狀態(tài),因此運動控制模塊必須時刻保持運行,并且運行在子線程中。為使各項任務有序進行,并且實現(xiàn)對任務的模塊化封裝,將運動控制模塊設計成如圖4所示的運行模式。將每種任務封裝成一個類,由CHanderBase基類派生,派生類需根據(jù)任務內(nèi)容重實現(xiàn)基類中的初始化函數(shù)、就緒函數(shù)、啟動函數(shù)、停止函數(shù)、重啟函數(shù)以及結束函數(shù),這些函數(shù)分別對應模塊的初始化、就緒、啟動、停止、重啟、結束等6種狀態(tài)。運動控制模塊會根據(jù)任務的狀態(tài)執(zhí)行對應的函數(shù),并且有序地切換狀態(tài)。對于執(zhí)行哪一類任務,由基類指針在運行時動態(tài)綁定派生類的方式來決定。通過這種機制,系統(tǒng)可以方便快捷地拓展新的數(shù)控任務以及修改任務內(nèi)容,增強了系統(tǒng)的拓展性和靈活性。運動控制模塊的運行模式如圖4所示。
圖4 運動控制模塊的運行模式
功能接口模塊提供了數(shù)控系統(tǒng)的基本功能接口,封裝了Xenomai域程序的服務。它負責進行跨域通信,將指令和數(shù)據(jù)打包發(fā)送至Xenomai域程序,同時反饋Xenomai域程序的處理結果。功能接口模塊實現(xiàn)了數(shù)控系統(tǒng)底層功能的封裝。
Xenomai域程序是數(shù)控系統(tǒng)設計的核心內(nèi)容,負責實現(xiàn)系統(tǒng)的底層功能。它運用IgH EtherCAT協(xié)議棧實現(xiàn)了EtherCAT報文的收發(fā),通過編程實現(xiàn)了系統(tǒng)自動識別和控制多種EtherCAT從站。
Xenomai域程序架構如圖5所示。Xenomai域程序需要和Linux域程序進行跨域通信,為避免頻繁的系統(tǒng)調用帶來的花銷影響實時性,本文作者將Xenomai程序設計成進程通信模塊和定時驅動模塊兩個模塊,每個模塊單獨建立一個線程,并將定時驅動模塊設置為最高優(yōu)先級,允許它優(yōu)先搶占系統(tǒng)資源,確保主站的實時性。
圖5 Xenomai域程序架構
進程通信模塊通過Xenomai的XDDP協(xié)議與Linux域程序通信,其通信內(nèi)容可保存在“/dev/rtp0”或“/dev/rtp1” 緩存設備中。為提高通信效率,該系統(tǒng)中將前者設置為只讀、后者設置為只寫,構成雙通道緩存機制,讀寫互不影響。
為方便管理和拓展,本文作者將通信內(nèi)容劃分為寫、讀、控制三類指令。其中,寫指令主要完成I/O置位、EtherCAT主從站配置、系統(tǒng)配置、系統(tǒng)狀態(tài)轉換、寫插補緩存等操作;讀指令主要完成掃描從站信息、讀取各軸狀態(tài)、讀取伺服編碼器位置、伺服速度信息和報警信息以及讀取程序運行狀態(tài)等操作;控制指令主要用于指示任務的啟動、急停、暫停和重啟工作。指令執(zhí)行后會立即將反饋結果發(fā)送給Linux域程序,做到迅速響應。
定時驅動模塊負責插補運算、EtherCAT報文收發(fā)和EtherCAT分布時鐘同步等操作。此模塊設置了1 ms的實時運行周期,定期不停地運行。為使各種數(shù)控任務有序執(zhí)行,本文作者將此模塊設置為有限狀態(tài)機的工作模式。該有限狀態(tài)機包括8種狀態(tài):空閑(IDLE)、初始化(INIT)、就緒(PREPARE)、運行(RUNNING)、暫停(PAUSE)、重啟(RESTART)、急停(STOP)和結束(OVER)。模塊依據(jù)不同的條件進行狀態(tài)的有序切換,在不同狀態(tài)下完成不同的任務,圖6所示為模塊在實際運行中歷經(jīng)的各種狀態(tài)和切換條件。在長耗時任務的運行過程中,模塊的狀態(tài)切換由運行參數(shù)決定,在進程通信模塊上可通過修改運行參數(shù)來控制定時驅動模塊的狀態(tài),從而實現(xiàn)急停、暫停、重啟等功能。
圖6 定時驅動模塊的有限狀態(tài)機模型
圖7展示了數(shù)控加工過程中,從G代碼文件到具體的EtherCAT報文輸出的流程,整個流程需要兩個程序相互配合完成。加工開始后,Linux域程序首先會解釋G代碼文件,提取G代碼數(shù)據(jù)并保存至緩存中;然后,對緩存中的運動數(shù)據(jù)進行S形曲線速度前瞻運算;最后,將完成前瞻的運動數(shù)據(jù)打包下發(fā)至Xenomai程序。為確保前瞻有數(shù)據(jù)可運算,程序需先解釋一些G代碼,確保緩存中有50條以上的數(shù)據(jù)才能開啟速度前瞻運算。
圖7 數(shù)控加工流程
Xenomai 域程序通過進程通信模塊接收運動數(shù)據(jù),并保存到插補緩存中。定時驅動模塊取得運動數(shù)據(jù),需先進行預處理運算:根據(jù)前瞻結果和S形速度曲線公式計算出線段的總運行時間,然后按插補周期取整,計算平攤量。完成插補的預處理計算后,再采用基于時間分割法的插補算法對直線或圓弧進行插補運算,算出各軸的位移量,然后將這個位移量轉化為各軸編碼器的絕對位置,最終通過EtherCAT報文發(fā)送到各個伺服從站中執(zhí)行。
操作系統(tǒng)的實時性能主要取決于系統(tǒng)上下文切換所花費的延遲時間。Xenomai提供了cyclictest、latency等工具來測試用戶態(tài)、內(nèi)核態(tài)、內(nèi)核定時器中斷模式下的上下文切換延時。本文作者選用latency工具測試系統(tǒng)內(nèi)核的實時性??紤]PC機系統(tǒng)實際運行負載可能會很高,為獲得準確的性能評估,在Linux終端先執(zhí)行stress-v-c 8-i 10-d 8命令使CPU進入滿負載狀態(tài),然后在滿負載狀態(tài)下分別執(zhí)行3次命令latency-tX-s-T600-h,3次命令中X值分別為0、1、2,代表用戶態(tài)、內(nèi)核態(tài)、內(nèi)核定時器中斷模式。測試時間為600 s、采樣周期為100 μs,實驗結果如表1所示??煽闯觯?種狀態(tài)下平均延遲均低于3 μs、最大延遲低于15 μs,此延遲相對于1 ms的定時周期可忽略不計,由此說明內(nèi)核實時性能上的延遲幾乎不影響數(shù)控系統(tǒng)實時性能。
表1 3種模式下latency工具的600 s測試結果
主站抖動是指主站周期性連續(xù)發(fā)出數(shù)據(jù)時,相鄰兩個周期之間的時間間隔大小的變化。時間間隔越大,抖動越大,影響任務的實時性。測試主站抖動的方法主要有網(wǎng)絡分析儀方法以及編程測試法。本文作者采用編程測試法測試主站抖動。編寫測試程序,記錄相鄰兩周期發(fā)送EtherCAT報文的時間間隔與1 ms周期的差值。經(jīng)過多次加工實驗,分析實驗數(shù)據(jù),得出主站的平均抖動為0.265 μs,最大抖動為24 μs,與文獻[15]中測試得到的平均抖動0.25 μs接近,其性能滿足工業(yè)運動控制應用的要求。
在本文作者提出的全軟件數(shù)控系統(tǒng)架構下,開發(fā)雕銑機數(shù)控系統(tǒng),系統(tǒng)交互界面如圖8所示。利用Qt支持OpenGL的特性,成功運用PC機的GPU資源,在雕銑機系統(tǒng)中開發(fā)刀路仿真的功能,可實現(xiàn)刀路的三維動畫展示。
圖8 系統(tǒng)交互界面
本文作者通過加工一個三維小海豚模型的G代碼文件來檢驗數(shù)控系統(tǒng)運動控制算法的正確性及其實際加工性能。加工材料采用代木材料,設置機床加工速度為50 mm/s、加速度為500 mm/s、加加速度為5 000 mm/s、主軸轉速為12 000 r/min。實驗結果如圖9所示,經(jīng)過分析,加工出的模型輪廓分明、表面光滑,表明該數(shù)控系統(tǒng)具有良好的實時性和穩(wěn)定性,其性能可以滿足雕銑機加工的實際要求。
圖9 小海豚模型加工實驗
EtherCAT工業(yè)以太網(wǎng)總線技術憑借其獨特的運行原理,使通用PC機成為了真正的運動控制器,而無需控制卡協(xié)助,極大地簡化了硬件結構,降低了硬件成本?;贓therCAT技術在通用PC機上開發(fā)數(shù)控系統(tǒng),憑借PC機強大的平臺資源,大大增強了數(shù)控系統(tǒng)的拓展性和通用性,使開發(fā)出多功能、定制化、通用化的數(shù)控系統(tǒng)成為可能。本文作者基于Linux+Xenomai雙內(nèi)核實時系統(tǒng),運用EtherCAT總線技術,在PC平臺上開發(fā)了全軟件雕銑機數(shù)控系統(tǒng)。實驗結果表明:該數(shù)控系統(tǒng)實時性好,能滿足實際加工要求,具有一定的應用價值和借鑒價值,同時有利于EtherCAT技術和全軟件數(shù)控系統(tǒng)的推廣。