陳傳偉,付 鑠,韓振宇,富宏亞
(哈爾濱工業(yè)大學 機電工程學院,哈爾濱 150001)
與傳統(tǒng)數控系統(tǒng)相比,嵌入式數控系統(tǒng)具有低成本,穩(wěn)定性、可靠性高等優(yōu)勢[1]。近年來,隨著嵌入式多核處理器的出現和發(fā)展,嵌入式處理器性能大幅提升,為嵌入式數控系統(tǒng)的發(fā)展提供了有力的支持,使其能夠朝著高速高精、復合加工、多通道多軸聯(lián)動、智能化等方向[2]發(fā)展,圍繞多核調度算法、并行數控系統(tǒng)等方向的研究相繼展開。文獻[3]對嵌入式實時操作系統(tǒng)uC/OS-II進行擴展,實現了其對嵌入式對稱多核處理器多任務調度的支持。文獻[4]針對數控系統(tǒng)各任務間數據流不平衡問題題建立了數據流反饋調度模型。文獻[5]提出了基于多處理器的最早截止期優(yōu)先調度算法的測試方法。
本文對并行數控系統(tǒng)實時任務調度需求進行分析,針對數據依賴任務間數據流不平衡問題,提出了一種混合實時任務算法,基于嵌入式實時操作系統(tǒng)eCos設計并實現了該調度器,其能自動維持數據流平衡,具有良好的負載平衡性和加速比。對GRBL串行數控系統(tǒng)進行多任務劃分,并基于嵌入式對稱多核處理器S698PM[6]和混合實時任務調度器搭建了并行數控系統(tǒng)實驗平臺。
數控系統(tǒng)任務分為實時任務與非實時任務,本文主要研究實時任務調度。
本文提出的并行數控系統(tǒng)實時內核架構見圖1。其中,虛線框內任務鏈上的任務具有嚴格的時序,G代碼必須依次經過譯碼任務、擬合任務、前瞻規(guī)劃任務、前加減速規(guī)劃任務、插補任務的處理,才能得到正確的運動控制指令,任務間還存在數據依賴關系,即下游任務的執(zhí)行必須依賴上游任務產生的數據,本文稱這類任務為數據依賴任務,通過在任務間構建循環(huán)隊列形成多級流水線結構,實現各任務間解耦,各數據依賴任務在滿足調度條件的前提下,可在多核處理器各處理核心上并發(fā)執(zhí)行。此外,并行數控系統(tǒng)實時內核中還存在傳統(tǒng)的周期性實時任務,該類任務由定時器驅動,按一定的任務周期執(zhí)行,如位置發(fā)送任務,按插補周期將位置指令發(fā)送至伺服電機驅動器,控制電機運動,又如機床狀態(tài)檢測任務,對機床狀態(tài)、標志量等進行周期性檢測,并進行相應的機床狀態(tài)切換和I/O操作。由此,將并行數控系統(tǒng)實時內核任務分為周期性實時任務和數據依賴任務,本文將周期性實時任務用二元組(P,T)描述,其中P為任務優(yōu)先級,T為任務周期(ms),將數據依賴任務用三元組(O,UL,DL)描述,O為在任務鏈上的位置索引,UL為上游緩存數據量,DL為下游緩存數據量,這兩類實時任務對應的任務集的合集構成混合實時任務集。
并行數控系統(tǒng)在處理G代碼的過程中,由于每條G代碼對應的插補曲線類型、長度不定,造成各任務消耗與產生數據量之比為1:N(N>=1)。如擬合任務對圓弧指令的處理,該任務需按照弦高誤差將圓弧劃分為連續(xù)的直線微段,以滿足圓弧精度的要求,不同的弧長及弦高誤差會導致直線微段數量N的變化,故擬合任務一次作業(yè)時間隨插補曲線類型、長度變化而變化,造成了任務鏈上數據流波動。數據流波動會直接影響加工連續(xù)性,進而影響數控機床加工質量,需要對數據流波動進行有效調節(jié)。
為充分利用對稱多核處理器的運算能力,保證各處理核心負載平衡,同時實現周期性實時任務與數據依賴任務統(tǒng)一調度,保證任務鏈上數據流平衡,需要設計相應的任務調度器,以滿足并行數控系統(tǒng)實時內核混合任務集的調度需求,如圖1所示。
圖1 并行數控系統(tǒng)實時內核架構
首先,根據調度需求分析了混合實時任務調度器的調度依據,設計了調度流程,并在分析嵌入式實時操作系統(tǒng)eCos多級隊列調度器的基礎上,對其進行改造,實現了混合實時任務調度器,并根據該調度器提出了數據依賴任務通用框架。
任務調度器的作用是計算調度時刻優(yōu)先級最高的就緒任務并執(zhí)行上下文切換,實現任務調度,故首先應當確定調度依據。
混合實時任務集中的周期性任務可由eCos多級隊列調度器進行調度,而任務鏈上的數據依賴任務需根據調度需求設計調度算法完成調度。圖2為某一時刻任務鏈上數據流狀態(tài),縱坐標表示數據量,橫坐標從左至右表示任務鏈上游至下游,各任務消耗數據量與生產數據量之比為1:N(N>=1),任務每執(zhí)行一次,任務上下游數據量差值減N+1。為維持數據流平衡,需要使任務上下游數據量差值向0逼近,故任務鏈上擁有最大上下游數據量差值的任務應當優(yōu)先執(zhí)行,即圖2中Task1。結合任務上下游緩存數據量大小、多核處理器特性可總結出四條調度依據:①根據任務是否正在某CPU上運行決定是否調度;②根據任務上游緩存是否有數據,下游緩存是否有剩余空間決定該任務是否調度;③計算任務上下游數據量差值,優(yōu)先執(zhí)行差值最大的任務;④若存在幾個任務有相同的最大差值,優(yōu)先執(zhí)行上游任務。
圖2 某時刻任務鏈上數據流狀態(tài)
根據以上數據依賴任務的調度依據,設計出數據依賴任務調度算法流程,如圖3所示,即從任務鏈上游至下游依次遍歷各數據依賴任務,根據數據依賴任務調度依據,計算得到優(yōu)先級最高的任務并進行調度。
圖3 數據依賴任務調度算法流程圖
本文基于嵌入式實時操作系統(tǒng)eCos實現混合實時任務調度器。首先對其原有調度器進行分析。eCos通過多級隊列調度算法[7]實現對SMP多核多任務調度的支持。多級隊列表示eCos支持多個不同優(yōu)先級,默認優(yōu)先級為0~31,每個優(yōu)先級對應了一個雙向循環(huán)任務鏈表。其調度算法流程如圖4所示,其中pending[i]表示優(yōu)先級為i的任務鏈表中被掛起的任務數目,pending_map的第i位狀態(tài)表示優(yōu)先級為i的任務鏈表中是否有被掛起的任務,eCos通過這兩個變量的共同作用實現SMP多核多任務調度。
為基于eCos多級隊列調度器實現混合實時任務調度器,將在[0,CRI_N)區(qū)間內的優(yōu)先級定義為周期性任務優(yōu)先級,將[CRI_N,31)區(qū)間內優(yōu)先級定義為數據依賴任務在任務鏈上的位置索引。優(yōu)先級為31的任務為系統(tǒng)空閑任務?;旌先蝿照{度算法流程如圖5所示,若任務鏈表中存在就緒的周期性實時任務,根據多級隊列調度算法,調度優(yōu)先級最高的周期性任務,調度結束;若沒有就緒的周期性實時任務,根據數據依賴任務調度算法遍歷任務鏈上的數據依賴任務任務,找到優(yōu)先級最高的數據依賴任務,調度該任務,若沒有滿足調度條件的數據依賴任務,則調度系統(tǒng)空閑任務。由此,基于eCos多級隊列調度器構建了混合實時任務調度器。
圖4 eCos多級隊列調度算法流程圖
圖5 混合實時任務調度算法
根據混合實時任務調度器的調度原理,提出數據依賴任務通用框架,其示意圖如圖6所示。按該架構定義各數據依賴任務,從而與混合實時任務調度器相適應。
圖6 數據依賴任務通用架構
本文基于GRBL串行數控系統(tǒng)構建并行數控系統(tǒng),在深入分析GRBL內核的基礎上,對其進行多任務劃分,并在任務間引入循環(huán)隊列實現各任務解耦。由于嵌入式處理器內存空間有限,在上位機與數控系統(tǒng)之間建立了G代碼動態(tài)批處理機制。
并行數控系總體統(tǒng)架構如圖7所示,上位機向數控系統(tǒng)發(fā)送G代碼,開關量控制指令等。選用嵌入式對稱多核處理器S698PM運行并行數控系統(tǒng),該處理器基于SPARC架構設計,含有4個處理器核心,最高主頻可達500MHz。數控系統(tǒng)采用數據采樣插補,將插補得到的各軸進給量通過網絡端口發(fā)送給POWERLINK[8]通信卡,通信卡將位置信息轉換為POWERLINK協(xié)議幀,發(fā)送給支持POWERLINK協(xié)議的伺服電機驅動,從而控制電機運動。電氣控制柜如圖8所示,三軸銑床如圖9所示。
圖7 并行數控系總體統(tǒng)架構示意圖
圖8 控制柜 圖9 三軸銑床
首先對GRBL串行數控系統(tǒng)內核架構進行分析。其工作流程可概括如下:PC通過串口向GRBL發(fā)送G代碼,GRBL接收到一個完整的G代碼段后,進行譯碼。譯碼結束后,對于接收到的插補指令,首先按精度要求將曲線擬合成連續(xù)直線段,并對直線段序列進行前瞻規(guī)劃,得到各直線段滿足電機加減速性能的最大入口速度,接著對直線段進行前加減速規(guī)劃,得到具體的速度曲線,再進行粗插補,計算插補時間及距離增量,放入微段緩存segment_buffer[N]中,如圖10所示。微段緩存由定時器中斷服務函數進行處理,其過程如圖11所示,根據各微段的粗插補時間及距離增量計算脈沖序列的頻率,采用基準脈沖插補法,利用Bresenham[9]法生成脈沖序列,實現對步進電機的速度及位置控制。
圖10 GRBL內核架構示意圖
圖11 定時器中斷處理過程
將GRBL串行數控系統(tǒng)劃分為圖12所示的各個數據依賴任務,通過在任務間構建循環(huán)隊列實現任務解耦和數據傳遞,從而在嵌入式對稱多核處理器上實現多級流水線數據并行產銷,最后由周期性任務位置發(fā)送任務按插補周期向伺服電機驅動器發(fā)送位置指令。由于各循環(huán)隊列的上下游任務可能同時對其進行訪問,需通過互斥量[10]對循環(huán)隊列進行保護,保證運算過程的正確性。
圖12 并行數控系統(tǒng)架構
由于數控系統(tǒng)的G代碼存儲空間有限,而G代碼大小與工件復雜程度相關,為防止數控系統(tǒng)G代碼的存儲空間溢出,須在上位機數控系統(tǒng)之間建立G代碼動態(tài)批處理機制。首先根據數控系統(tǒng)G代碼存儲空間大小設置上溢值和下溢值,啟動上位機發(fā)送G代碼后,數控系統(tǒng)在接收G代碼的同時,檢測G代碼存儲空間的數據量,當數據量超過上溢值時,向上位機發(fā)送停止發(fā)送指令,此時數控系統(tǒng)繼續(xù)消耗G代碼,當檢測到數據量小于下溢值時,向上位機發(fā)送啟動發(fā)送指令,從而實現G代碼動態(tài)批處理。
首先對調度器進行測試,驗證其正確性及數據流平衡效果,測試了負載平衡性和加速比。通過加工實驗驗證了并行數控系統(tǒng)的正確性。
圖13 各緩存數據量變化情況
為驗證混合實時任務調度器的正確性,建立了2個周期性任務,其參數為(0,500),(1,500),同時建立了6個數據依賴任務,其在任務鏈上的位置索引依次為16、17、18、19、20、21。各任務每執(zhí)行一次將對應指示燈取反。測試程序運行后,周期性任務按500ms周期執(zhí)行。當在最上游緩存放置數據時,數據依賴任務按位置關系順序執(zhí)行,驗證了混合實時任務調度器的正確性。
為驗證調度過程中任務鏈上數據流平衡效果,基于QT[11]編寫了數據流狀態(tài)演示軟件,在最上游緩存放入150個待處理數據,調度過程中各緩存數據量趨于平衡,如圖13所示,驗證了調度器的數據流平衡效果。
用硬延時語句for循環(huán)1千萬次模擬任務的數據處理過程,在最上游緩存內放置150個待處理的數據,統(tǒng)計程序執(zhí)行過程中各CPU執(zhí)行各任務的次數,由于各任務數據處理過程相同,執(zhí)行次數可類比于CPU運行時間,統(tǒng)計結果如表1所示。實驗表明,該條件下,各CPU執(zhí)行次數占總執(zhí)行次數基本相同,驗證了各CPU負載平衡。
通過定時器測試各任務執(zhí)行時間及并行時間,單位為ms,測試結果如表2所示,測得并行時間為17649ms,加速比為3.895,具有較好的加速效果。
表1 各CPU任務執(zhí)行情況統(tǒng)計
表2 加速比測試
為驗證并行數控系統(tǒng)的正確性,進行了加工實驗,設定插補周期為2ms,進給速度100mm/min,加速度72000mm/min2,選用4mm直徑銑刀,加工軌跡如圖14所示,將并行數控系統(tǒng)安裝至三軸銑床,進行蠟模加工,其實際加工效果如圖15所示。由此,驗證了并行數控系統(tǒng)系統(tǒng)的正確性。
圖14 加工軌跡 圖15 加工效果
本文在分析并行數控系統(tǒng)任務調度需求的基礎上提出了混合實時任務調度器,通過改造嵌入式實時操作系統(tǒng)eCos實現了該任務調度器,并基于嵌入式對稱多核處理器S698PM搭建了并行數控系統(tǒng)實驗平臺。實驗結果明,混合實時任務調度器實現了周期性任務與數據依賴任務統(tǒng)一調度,能自動維持數據流平衡,保證良好的負載平衡性和加速比,在調度數控系統(tǒng)實時任務方面具有眾多優(yōu)點,基于該調度器的并行數控系統(tǒng)能正確運行,證明了該調度器具備實用性。未來將繼續(xù)完善該并行數控系統(tǒng),以體現出多核并行數控系統(tǒng)在運算性能方面的優(yōu)勢。
[參考文獻]
[1] 劉建康. 基于ARM+FPGA的嵌入式數控系統(tǒng)硬件設計[D]. 哈爾濱: 哈爾濱工業(yè)大學, 2013.
[2] 劉大煒, 湯立民. 國產高檔數控機床的發(fā)展現狀及展望[J]. 航空制造技術, 2014(3): 40-43.
[3] 章承科. 基于多核處理器的實時操作系統(tǒng)的擴展[D]. 成都: 電子科技大學, 2006.
[4] 秦承剛. 開放式數控系統(tǒng)的實時操作系統(tǒng)優(yōu)化技術研究與應用[D]. 北京: 中國科學院大學, 2012.
[5] Theodore P Baker. An Analysis of EDF Schedulability on a Multiprocessor[J]. IEEE Transactions on Parallel and Distributed Systems, 2005, 16(8): 760- 768.
[6] 顏軍. SPARC嵌入式系統(tǒng)設計與開發(fā)[M]. 北京: 中國標準出版社, 2013.
[7] 蔣句平. 嵌入式可配置實時操作系統(tǒng)eCos開發(fā)與運用[M]. 北京: 機械工業(yè)出版社, 2008.
[8] 肖維榮, 王瑾秋, 宋華振. 開源實時以太網Powerlink詳解[M]. 北京: 機械工業(yè)出版社, 2015.
[9] Liu X W, Cheng K. Three-dimensional extension of Bresenham's algorithm and its application in straight-line interpolation[J]. Proceedings of Institution of Mechanical Engineers Part B Journal of Engineering Engineering Manufacture, 2002, 216(3): 459-463.
[10] Anthony J Massa. 嵌入式配置實時操作系統(tǒng)eCos軟件開發(fā)[M]. 顏若麟,譯. 北京: 北京航空航天大學出版社, 2006.
[11] 吳純赟, 欒勇, 杜少華,等. 基于Qt的數控系統(tǒng)測試軟件的設計與實現[J]. 組合機床與自動化加工技術, 2016(11): 76-79.