開放式上位數控軟件架構及其組件間解耦問題研究
2018-3-1 來源:燕山大學 河北省計算機 北京機床所 作者:李志明 李衛超 田夢 吳榮華 王瓊瓊
摘要:在分析上位數控軟件功能特點的基礎上。考慮開放式數控系統中關鍵部件更換時軟件適應性,提出一種分層的開放式上位數控系統軟件架構,并簡述了各層及模塊之間的交互關系;將依賴注入機制應用于開放式上位數控軟件各組件間的解耦問題中,以后置處理模塊內部、以及后置處理模塊與代碼仿真及干涉檢測模塊間的解耦問題為例。分別說明了構造子注入、設值注入的使用方法。
關鍵詞:開放式數控系統;軟件架構;依賴注入;解耦
數控系統在諸多高端裝備中均處于核心地位,直接影響著裝備性能的優劣。專用數控系統的封閉性致使無法將最新的軟硬件技術成果融人數控系統之中,嚴重地阻礙了數控技術的發展,使之難以適應互聯網+、中國制造2025等新戰略要求。因此,開放式數控系統逐漸成為了數控技術發展的主流,其應用也日益廣泛。
在常見的3種開放式數控系統結構中,“IPC+開放式運動控制器”方式,憑借其自身硬軟件平臺良好的開放性及便捷性,應用較多。在該方式中,開放式數控系統軟件具有統領性作用,且其復雜程度較高,例如各坐標軸運動狀態、機床狀態等信息顯示、NC代碼編輯與下載,運動軌跡預覽及仿真、參數設置、外圍設備控制與檢測等,均需通過數控系統的UI界面加以體現;此外,還有許多用戶不可見的重要功能模塊,如NC代碼語法檢查、機床運動坐標變化、路徑優化及NC代碼生成等模塊。
目前,我國在開放式數控系統軟件架構方面的研究開展的較少,缺乏該方面軟件架構實施的資料和規范,尚未形成完善的、統一的架構體系心J。此外,在開放式數控系統軟件研發過程中,某項功能的實現往往需要多個模塊協作完成;模塊與模塊之間的耦合難以避免,而過度的耦合則會嚴重影響開放式數控系統軟件的擴展性、移植性、維護性。
本文以項目組研發的開放式精密激光切割數控系統平臺為基礎,對開放式上位數控系統軟件架構問題進行研究,并將依賴注入原理(又稱控制反轉)運用到組件間的解耦問題之中,以期建立一個模塊化、可重構、可擴展的開放式數控系統平臺。
1 、基于UMAC的開放式數控系統硬件架構
本文中開放式數控系統硬件架構以IPC和UMAC為基礎構建,其硬件結構示意如圖l所示。在該架構中,用戶可充分利用IPC的軟硬件資源,融合最新的信息技術及個性化需求,對運行于IPC中的上位數控軟件進行自主開發。上位數控軟件的作用主要是實現實時性要求不是很高的人機交互功能;UMAC運動控制器一般由電源模塊、通用CPU板、軸擴展卡、I/O卡和具有特定功能的附件板卡等構成,是該架構的核心所在,主要實現實時性要求很高的NC代碼解釋、插補運算、運動控制、軟PLC程序執行等功能。該硬件架構兼具靈活性和穩定性,開發效率高,可滿足專用數控系統難以滿足的個性化功能需求。

圖1開放式敦控系統硬件平臺示意
從圖l中可以發現,上位數控軟件是重要的人機接口之一,對整個數控系統具有統領性作用;其穩定性、可靠性對整套數控裝備的性能具有重要的影響。軟件架構決定了軟件的品質,在軟件開發中占有重要地位。因此,在開放式數控系統方興未艾之時,對上位數控軟件的架構問題展開研究顯得尤為必要。
2、開放式數控系統軟件架構
開放式數控系統軟件由IPC中的上位數控軟件和UMAC中的下位軟PLC程序兩部分組成,是開放式數控裝備的靈魂所在。UMAC中的軟PLC程序的架構問題詳見文獻[3];IPC中的上位數控軟件架構及組件間解耦問題是本文的研究重點。
2.1上位數控軟件功能
軟件的開放性是開放式數控系統的特點之一,也就是說,開放式數控系統允許用戶開發常規的、個性化的數控功能以及軟件系統集成。就常規功能而言,可分為用戶可見的人機交互功能和用戶不可見的數據及業務處理功能;本文分別稱之為顯性功能和隱性功能。常見的顯性功能有CNC各類狀態顯示、參數設置、工藝檔案、NC代碼仿真、MDI等功能;常見的隱性功能有后置處理、NC代碼語法檢查、故障診斷與報警、連鎖控制邏輯、與運動控制器及外設交互等。為了配合開放式數控系統的硬件開放性,增強上位數控軟件的生命力,還應從架構角度著重考慮軟件對核心設備及部件更換的適應能力,如運動控制器、激光器的更換情況。
由此可見,開放式數控系統的功能模塊繁多,且模塊間依賴關系復雜。因此,要開發一套穩定可靠、性能良好,適應性及可擴展性強,易維護的上位數控軟件,架構問題則應是要考慮的首要問題。
2.2上位數控軟件架構研究
常用的軟件架構類型有MVC架構、分層架構H J、微內核架構”J、元模型架構∞o和管道一過濾器架構等。
在上位數控軟件架構類型選取時,從用戶數量、界面復雜程度、人機交互頻度、業務邏輯復雜度以及系統的擴展性、移植性和互換性等角度考慮,最終選取分層架構模式。分層架構中各層之間通過定義好的接口進行通信。上層僅使用下層提供的服務而無需知道下層的細節,這使得在接口不變的前提下可以對某一層或者某層中的部分功能進行無損替換,從而降低系統間的依賴程度并在較大程度上保證了系統的可擴展性。分層架構將原本復雜的系統分開,有利于分化系統的復雜性,使開發人員可以專注于某一層的細節。
本文通過對上位數控系統整個流程進行研究,并綜合考慮開放程度和集成代價,得到“系統一模塊一組件”的組成結構,將開放式上位數控系統軟件分為人機交互層、業務邏輯層、通訊協議層和數據服務層。上位數控軟件架構分層如圖2所示。

圖2開放式致控系統上位機軟件架構
圖2中,人機交互層主要用于用戶操作指令與數控系統狀態和參數之間的交互,如坐標及速度顯示、機床狀態顯示、參數設置、工藝檔案管理等。
業務邏輯層負責對相關數據進行數控業務知識的處理,是對數控領域內各對象的抽象,由后置處理、故障診斷、代碼仿真及檢測、權限管理等模塊組成,具有承上啟下的作用,是整個上位數控軟件的核心部分。
通訊協議層負責上位數控軟件與UMAC、外設、以及數據庫之間的通訊工作,由運動控制器通訊協議包、網絡通訊協議和數據庫操作封裝等組成。通訊協議層對上層服務接口的定義,應考慮不同主流廠商的設備通訊協議,盡量定義一致的接口,從而增強設備更換時的系統適應性,如開放式運動控制器的更換、激光加工系統中激光器的更換等。
數據服務層的主要功能是實現數據存儲,如工藝檔案、材料檔案、機床特性、系統故障診斷表等。圖2中所示的開放式上位數控系統各層及模塊間的交互關系如圖3所示。

圖3開放式數控系統各層及模塊問的交互關系
通常,分層架構與依賴注入機制一起使用,實現層與層之間的“可替換”式設計。在此基礎上,本文還將依賴注入應用到了組件間的解耦之中,從而在很大程度上降低了上位數控軟件中各組件之間的耦合度。
3、組件間的解耦設計
耦合度是指模塊或組件間的依賴關系,包括控制關系、調用關系、數據傳遞關系。對于絕大部分軟件來說,在軟件設計階段便確定了各模塊的控制關系、調用關系和數據傳遞關系;在編碼階段中,控制關系和數據傳遞關系造成的耦合無法進一步優化,而調用關系造成的耦合則可以通過使用合適的設計模式得到很大程度的改善。
在常規的軟件開發過程中,組件的實例化通常在其他相關組件中完成。這種依賴關系造成的耦合降低了組件的可移植性和可替換性。針對這個問題,本文將依賴注入設計模式應用于上位數控軟件的各組件的設計之中,從而有效降低了組件間的耦合度。
3.1依賴注入模式簡介
依賴注入[71有3種模式:接口注人、設值注入和構造子注入;其中設值注入和構造子注入是目前主流的實現模式。設值注入方式簡潔、便利,適宜在組件依賴關系較為復雜時使用。構造子注入在構造組件時完成依賴關系的設定,能讓組件在被創建后就處于相對穩定的狀態,適宜在組件的依賴關系相對簡單時使用。在實際開發中,以構造子注人為主,設值注入為輔,會達到較好的效果坤J。
Castle是基于.NET平臺的開源項目,囊括了ORM、IoC容器、MVC框架、AOP等,為開發人員構建應用程序提供了強大的支持。Windsor Container是Castle的IoC容器,可以實現對組件生命周期、組件間依賴關系的管理。
3.2應用構造子注入解耦示例
后置處理模塊根據當前機床特性信息、系統特性信息和刀位文件信息生成正確的NC代碼。圖4為后置處理模塊最初的依賴關系圖,圖5為運用依賴注入原理將依賴關系提取后的依賴關系。

圖4后置處理的原始依慧關系

圈5后置處理應用構造子注入后的依藏關系
機床特性信息組件、系統特性信息組件和刀位文件信息組件在容器中完成實例化,之后由容器將實例化后的對象注入到后置處理組件中。后置處理組件對于機床特性信息、系統特性信息和刀位文件信息的依賴是固定不變的,適合使用構造子注入的注入方式,這樣使得組件被創建后就具備了正確運行必要的參數,使組件處于相對穩定的狀態。
后置處理組件中構造子注人代碼示例如下:

3.3應用設值注入解耦示例
代碼仿真與干涉檢測模塊負責對后置處理模塊產生的NC代碼進行仿真和干涉檢測,檢測通過后的NC代碼才能在機床上實際運行。此時,代碼仿真與干涉檢測模塊依賴于后置處理模塊,圖6為二者最初的依賴關系,圖7為應用依賴注入原理將依賴關系提取后,后置處理組件和代碼仿真與干涉檢測組件的依賴關系。后置處理功能組件在容器中進行實例化,之后該實例由容器注入到代碼仿真與干涉檢測組件中,由于代碼的仿真及干涉檢測不但支持對后置處理功能所生成NC代碼的檢測,還支持用戶自己編寫NC代碼的檢測,并且對于程序中使用的某些第三方類庫而言,可能要求組件必須提供一個默認的構造函數,此時構造子注入模式就體現出其局限性‘9|,此時合適的依賴注入方式應為設值注人。


代碼仿真及干涉檢測組件中設值注入代碼示例如下:


文中采用的Windsor container容器可以自動管理組件間的依賴關系,無需用戶去編寫XML配置文件或者通過Attribute來指定容器之間的依賴關系舊o,當某個功能模塊的接口有新的實現時只需要修改容器中相應代碼即可。這種設計方法降低了相關組件間的耦合度,提高了功能模塊的復用性,便于功能模塊的替換及擴展,使系統的設計結構更加清晰。
4、結語
依托IPC+UMAC的開放式數控系統架構中軟件開放性的特點,在分析了上位數控軟件功能特點及考慮了硬件設備更換時的系統適應性的基礎上,提出了一種分層的上位數控系統軟件架構,并闡述了各層及模塊之間的交互關系。之后,將依賴注入機制應用于開放式上位數控軟件各組件問的解耦問題中,結合后置處理模塊內部、以及后置處理模塊和代碼仿真及干涉檢測模塊間的解耦問題,分別示例了構造子注入、設值注入的應用。依賴注入機制的使用降低了上位數控軟件各組件間的耦合度,提高了軟件各模塊的復用性。在開放式數控系統應用興起之初,本文對構建模塊化、可重構、可擴展的開放式上位數控軟件具有一定的參考價值。
投稿箱:
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com
更多相關信息