譚朝琪 龍毅宏
摘 ?要: 提出了一種基于Java語言的數控沖床控制系統的設計方案。方案采用Java SWT/Jface搭建操作系統界面,利用監聽器對界面事件進行監聽和處理;利用JNI在Java程序中調用運動控制卡中的庫函數實現系統對機床加工的狀態監視和運動控制。該系統可運行于普通PC上,PC機作為上位機對系統進行任務管理,而運動控制卡實時完成上位機發出的任務請求。利用Java作為開發工具,不僅能滿足一般廠商對于數控沖床系統的要求,且系統具有開發周期短、穩定性好、易于拓展等優勢。
關鍵詞: 數控系統;Java;運動控制卡;數控沖床
中圖分類號: TP311.52 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.041
本文著錄格式:譚朝琪,龍毅宏. 基于Java的數控沖床系統的研究與開發[J]. 軟件,2019,40(5):212215
【Abstract】: A design scheme of CNC punching control system based on Java language is proposed. The scheme uses Java SWT/Jface to build the operating system interface, and uses the listener to monitor and process the interface events. Using JNI to call the library function in the motion control card in the Java program to realize the state monitoring and motion control of the machine tool processing. The system can run on a normal PC, the PC acts as a host computer to perform task management on the system, and the motion control card completes the task request issued by the host computer in real time. Using Java as a development tool can not only meet the requirements of general manufacturers for CNC punching systems, but also has the advantages of short development cycle, good stability and easy expansion.
【Key words】: Numerical control system; Numerical control punch press; Java; Motion control card
0 ?引言
數控沖床是鈑金加工設備之一,常用于薄板結構類零件的生產加工。通過特定的模具,可進行沖壓、落料、拉深、成型等工藝加工,應用領域從傳統的制造業到汽車、航空航天范圍之大,幾乎涵蓋了當代制造業的全部行業[1]。數控系統作為設備的核心,影響著零件加工的質量和效率。但是傳統的數控體系如 FANUC、SIEMENS、ABB,采用封閉式結構,使用專用的嵌入式硬件,人機界面不夠友好,需要經過長期培訓的的人員才能熟練操作,具有一定的操作難度,制造成本和培訓成本較高[2]。而隨著自動化需求的增長,數控系統向著領域普及化、操作簡單化、設備智能化發展[3]。因此傳統的數控沖床系統無法滿足數控系統功能多樣性的市場需求和適應快速變化的市場環境。新型的開放式數控體系大多采用PC嵌入NC或者NC嵌入PC[4]。PC嵌入NC,即將PC功能嵌入到NC專用主板中,雖然允許計算機部分的二次開發,但由于其主板仍是傳統的封閉式,核心部分不夠開放,且人機界面只能是基于NC提供的API進行開發,開發自由度低,難度高[5]。NC嵌入PC型數控系統是目前應用領域最為廣泛的一種,由IPC和運動控制單元組成,用戶可根據運動控制單元提供的API進行系統軟件的開發。常用軟件的開發語言C/C++,但由于其語言自身的缺陷性,開發難度高,且有存在著軟件不夠安全穩定的隱患,移植難度高,基本只能運行于單一平臺。傳統的運動控制器大多選用PLC,但隨著運動控制卡的發展,運功控制卡在滿足加工精度要求的同時,價格比PLC低廉,“運動控制卡+PC機”的體系結構開始受到設備生產廠商們的青睞。
本文針對某基于PLC的轉塔數控沖床設備存在的成本較高、系統開發周期長、后期維護和升級難度大等問題,對操作和控制系統重新設計,提出了一種基于Java語言和運動控制卡的數控沖床系統的設計方案,成功開發了一套NC嵌入PC的開放式數控沖床系統。該系統成本更低,可用于普通PC,易于移植到不同的操作系統。在滿足設備加工精度要求的同時,提升了操作的簡易性、降低了后期維修及升級的難度和成本。
1 ?數控系統的開發工具的選擇
理論上,任何一門高級語言都能開發出一套數控系統,目前市場上常見的基于PC的數控系統大多是采用C++開發的。但C++代碼沒有垃圾自動回收機制,容易內存泄漏,不夠安全,語法和文法比較晦澀繁瑣,開發周期長。Java作為一種完全面對對象的語言,運行于虛擬機而不依賴于平臺,吸收了C++語言的許多優點,同時也摒棄了C++的多繼承、指針等概念[6],相較之下具有很多優勢:
(1)安全可靠。在Java語言中,內存的分配和回收都是自動進行的,程序員無須考慮內存碎片的問題,且Java提供了許多異常處理(Exception- Throw)方法,提升了了Java的可靠性和穩定性。
(2)簡單直接。Java語言對通過底層進行封裝,語法清晰,規模更小,而且Java SWT/Jface提供了許多控件(Control)、事件(Event)和監聽器(Listener),可直接利用組件進行編程,開發簡單直接[7]。
(3)易于移植。Java天生的優勢便是方便跨平臺,因此基于Java開發的數控系統更易于移植到其它平臺上。
2 ?控制系統的硬件設計
轉塔數控沖床系統硬件結構如圖1所示,沖床具有5個伺服軸:X軸、Y軸、T軸、C軸和P軸。X、Y軸夾帶板材做縱橫運動,用于板材定位;T軸帶動轉塔旋轉,用于模具選擇;C軸為旋轉軸,帶動模具旋轉以實現模具起始和加工時的方向控制;P軸為沖壓軸。PC機機通過EtherCAT與控制卡連接,實現100 Mbps的數據傳輸速率。控制卡的32路數字輸入量連接外部各種按鈕開關、電磁信號,48路數字輸出量連接電磁閥用于夾鉗,定位銷等外部組件的控制。本次實例所用控制卡最多可控制6軸伺服/步進電機,將X、Y、T、W軸的驅動器連接至控制卡軸接口用于實現電機的脈沖輸入、伺服使能和檢測伺服報警。主軸是直驅伺服電機,通過RS232接口實現PC機與主軸伺服的點對點數據通訊,用于上位機設置和查詢伺服的沖壓參數。伺服的位置信號、送料信號、應答信號連接到控制卡的32位輸入口用于檢測沖頭的運行狀態和位置,沖壓信號、原點/預壓位切換信號連接至控制卡的48位輸出用于控制沖頭的工作狀態。
3 ?控制系統的軟件設計
本轉塔數控系統的軟件用Java編寫而成,因Java SWT/Jface結合了Java Swing和Java AWT,具有豐富的圖形庫和事件監聽器,易于平臺移植,運行穩定且速率快,所以被用做系統GUI的主要設計工具。
3.1 ?基于Java數控系統的設備驅動
本系統所使用的運動控制卡提供了動態鏈接庫(DLL),通過調用庫函數實現對軸的控制以及I/O信號讀寫,Java無法直接使用。JNI(Java Native Interface)提供了可讓Java與其它語言的代碼交互的若干API。為實現Java程序驅動設備,采用C++重新封裝系統需要使用的庫函數,使之符合JNI標準,生成新的動態鏈接庫(DLL),Java通過加載該動態庫,便可實現對動態庫函數的使用。
主軸所用的是直驅伺服電機,需要通過RS232串口連接PC機實現上位機與伺服的通訊,以此來讀取或寫入主軸伺服驅動的參數[8]。對于Java驅動RS232串口有許多第三方jar包,本系統選用rxtx- 2.2.jar包,成功實現了PC機對伺服驅動數據讀取和寫入。
3.2 ?系統的軟件體系結構
該系統是利用Java環境開發的。采用人機交互界面,在滿足設備所需功能的同時,簡單直觀,易學易用。整個系統采用模塊化設計,如圖2所示,系統主要包含加工控制、模具庫管理、參數設置、信號檢測模塊[9]。為提高運行效率且能實時檢測設備狀態采用了多線程技術[10]。由于需要存儲模具參數、機床參數和用戶參數,采用了Java dom4j創建XML文件對數據進行讀寫。
(1)信號檢測:通過調用本地函數,實時檢測控制卡的輸入和輸出信號并顯示在界面上。主要起到四方面的作用:其一測試各個信號的完好性,用于機床的調試;其二保證加工步驟邏輯的合理性,如在控制T軸轉動時,需檢測T銷出信號,必須保證T銷先出來后才能使T軸運動,其三起保護作用,在運行中若檢測到有損設備或者威脅人身安全的情況發生時,需要及時停止設備運行;其四通過輸出信號對設備進行手動控制。
(2)參數設置:用來設置機床的各個參數,分為機床參數和用戶參數。機床參數屬于出廠時由設備生產廠商設定且不允許用戶再次修改的參數,如脈沖當量、最大加速度、最大速度等。同時能通過修改部分機床參數,該系統便可適用于不同的轉塔數控沖床,如16位轉塔數控和32位轉塔數控。用戶參數屬于用戶可定義和修改的參數,如不同材料下的進給速度、不同型號的模具的沖壓速度、沖壓深度等。用戶通過設定合理的參數使設備在不同的加工環境和加工要求下,能保證加工的精度和工作效率。
(3)模具庫管理:轉塔數控沖床的一大優勢便多工位模具的自動更換,常見的有16位轉塔數控和32位轉塔數控。為了滿足不同模具對加工要求的不同,同時起到保護摸具的作用,建立了模具庫管理模具的參數信息,如模具是否屬于旋轉模、上下模具的高度、模具的保護值、模具間隙、模具最大承受沖壓速度、模具形狀、模具壽命等[11]。在設備加工更換模具時,載入模具參數,系統根據得到的模具信息調整相關運行參數值,避免模具遭到損壞,提高加工的精度和模具的使用壽命。
(4)加工模塊:加工模塊分為加工控制和界面顯示兩部分,作為整個控制系統的核心部分,充分考慮機床實際加工情況,將加工模式分為手動加工、半自動加工、自動加工。設計了G代碼解釋器,在設備加工前對加工程序進行預讀處理,將程序轉換成加工指令如軸運行位置、進給速讀、輔助功能等,并進行語法和預加工位置檢查,以防加工時位置超程或沖頭沖到夾鉗等情況的發生[12]。在進行加工的時,定期讀取控制卡的位置寄存器、錯誤寄存器,以確定機床的當前的運行狀態、位置、速度等,并實時顯示在界面上。為了使用戶能更直觀的了解當前加工狀態,添加了圖像顯示功能,在機床工作的同時,模擬顯示出加工圖形和當前工件所在位置[13]。
3.3 ?應用結果
按照上述方案搭建好硬件環境、完成軟件設計后進行測試,經測試,由Java SWT/Jface編寫的界面簡潔美觀、操作簡單直接、實時反饋設備狀態,用戶體驗較好。在長時間運行和高速運行測試中,系統運行穩定,精度高,能滿足廠商對于設備加工的要求。
4 ?結論
本文針對當前數控系統開放度不夠、系統界面不夠美觀、開發周期長的問題,提出了一種基于Java語言的數控沖床系統設計方案,按照該方案設計的系統在滿足運行穩定,加工精度高,操作簡單直觀等設備基本要求的同時,具有以下優勢:
(1)Java語言安全可靠,語法簡單直接,對開發者要求低,基于Java開發的數控沖床系統開發周期短、開發成本低。
(2)由于Java可跨平臺的優勢,根據此方案設計的系統易于移植應用到其它平臺,能為廠商提供更多的平臺選擇。
(3)基于Java開發的數控系統拓展性強,便于廠商的后期更新升級。
(4)采用NC嵌入PC的開放式結構,PC作為上位機,運動控制卡作為控制單元,易于后期設備的檢修和維護。
參考文獻
[1] 李靜. 數控沖床在鈑金加工中的應用[J]. 機械管理開發, 2012(2): 86-87.
[2] 王謙. 開放式數控系統的發展現狀與展望[J]. 科技經濟導刊, 2018(15).
[3] XU X W, NEWMAN S T. Making CNC machine tools more?open, interoperable and intelligent: a review of the technologies[M]. Elsevier Science Publishers B. V. 2006.
[4] 趙春紅, 秦現生, 唐虹. 基于PC的開放式數控系統研究[J]. 機械科學與技術, 2005, 24(9): 1108-1113.
[5] 楊筍. NC嵌入PC結構的開放式數控系統研究[J]. 自動化應用, 2011(4): 1-3.
[6] 郭克華. Java 語言程序設計[M]. 清華大學出版社, 2012.
[7] 趙姝菊. Java GUI 事件處理機制之探究[J]. 濟南職業學院學報, 2010(2): 98-99.
[8] 李良, 朱善安. 基于Java的串口通信[J]. 電子器件, 2007, 30(2): 714-716.
[9] XU X M, LI Y, SUN J H, et al. Research and Development of Open CNC System Based on PC and Motion Controller[J]. Procedia Engineering, 2012, 29(4): 1845-1850.
[10] 路勇. Java多線程同步問題分析[J]. 軟件, 2012, 33(4): 31-33
[11] 葉偉炳. 一種成套模具數據庫構建方法及數據管理系統: CN 102663013 B[P]. 2014.
[12] 寇曉雨. CAXA數控車床自動編程注意要點及難點解析[J]. 軟件, 2012, 33(5): 84-85
[13] 張小文. 基于PC的數控轉塔沖床 CAM/CNC一體化系統研究開發[D]. 南京航空 航天大學, 2007.