張 亞,張勤河,付秀琢
(1.山東大學機械工程學院,山東濟南250061;2.山東輕工業學院機械與汽車工程學院,山東濟南250035)
電火花加工技術具有無切削力、放電密度大、加工時間短、對工件材料的影響小等優點,特別適合加工一些硬、脆、可導電的材料。壓電自適應微細電火花加工技術繼承了傳統電火花加工的優點[1],并通過壓電制動器的自適應振動帶動工具電極振動,能自動消除短路和拉弧放電,且電極的振動改善了加工的排屑條件,大大提高了微細電火花加工的效率和加工穩定性,具有廣闊的應用前景。針對自主研制的壓電自適應微細電火花加工平臺開發了專用的加工軟件,以實現壓電自適應微細電火花加工的自動化,并提高加工效率,減少操作人員的工作量。
壓電自適應微細電火花加工平臺結構如圖1所示。其主要由宏動軸、旋轉主軸、工具電極、工件、工作液槽、壓電制動器及外殼、機床基座和電源、調節電阻組成。宏動軸帶動旋轉主軸運動,工具電極安裝在旋轉主軸上。壓電制動器安裝于機床基座上,其上端與工作液槽連接,可帶動工作液槽振動。工件固定于工作液槽內。本平臺的伺服驅動系統采用德國PI微米定位系統,可實現精度為1 μm的最小進給量,定位精度也為1 μm。該定位系統的運動控制卡為德國PI的C863控制器。
在該平臺進行微細電火花加工的過程為:接通系統電源后,通過宏動軸的運動來控制工具電極的位置,使工具電極位于待加工工件的正上方,并和工件有一定的距離,使其達到合適的間隙。由于初始時刻工具電極和工件處于開路狀態,因此初始時刻壓電制動器兩端的電壓等于電源電動勢。而壓電制動器本身具有一定的電容,因此電源會對壓電制動器充電。壓電制動器在逆壓電效應下開始伸長,并推動工作液槽向上運動。由于工件固定于工作液槽中,隨著工作液槽的運動,工件和工具電極間的距離逐漸變小。當二者之間的距離達到放電間隙時便開始放電。在放電的瞬間整個電路短路,壓電制動器兩端的電壓降為0,于是壓電制動器開始回縮并帶動工作液槽和工件回退。當回退的距離足夠大時,便切斷了工具電極和工件間的放電。此時工具電極和工件間的電壓再次恢復為電源電動勢,開始下一次放電。如此反復,直到工件和工具電極間不再放電時,控制宏動軸再次進給一定距離,如此便實現了壓電自適應微細電火花加工。

圖1 壓電自適應微細電火花加工平臺
為了實現壓電自適應微細電火花連續加工,開發了壓電自適應微細電火花加工軟件,實現了基本的數控功能。
針對壓電自適應微細電火花加工平臺的特點,開發出數控加工軟件,以實現電火花加工的自動化。本系統借助于Windows操作系統友好的人機界面,以Windows XP系統為平臺,使用VC++2010為開發工具,利用Mercury公司提供的gcscommond.dll函數庫完成該系統軟件的開發。Windows XP操作系統基于Windows NT,繼承了NT操作系統的安全性、穩定性等優點,且易用性有了極大的提高。本系統基于 Windows XP操作系統,充分利用了Windows操作系統的各種功能。VC++2010是微軟Visual studio集成開發環境中的一個C++開發模塊,包括了文本和資源編輯器、編譯器、項目管理器和調試工具,且可利用MFC類庫進行快速開發Windows風格的程序,極大方便了用戶。PI_Mercury_GCS_DLL.dll是Mercury公司提供的和PI運動平臺配套的動態連接庫。該動態連接庫提供了70多個函數,提供了速度控制、加速度控制、運動控制及位置檢測、錯誤查詢等功能。該函數庫能很好地工作于Windows操作系統及VC編譯器下。
Windows操作系統是一個多任務操作系統,支持多線程編程。通過多線程編程可實現多個任務并行處理,大大提高了程序的效率[2-4]。在VC++中實現多線程程序,既可通過MFC提供的函數,也可通過 Windows API進行編程。在本程序中通過WindowsAPI中的CreateThread()函數創建線程,對于一些不能立即返回的線程函數,則利用Msg-WaitForMultipleObjects()函數等待線程返回。為了使主線程在等待子線程返回的過程中仍可相應對界面進行操作,利用PeekMessage()、TranslateMessage()和 DispatchMessage()函數來收集和轉送Windows消息,使所有的消息得到及時有效的處理。
VC++有多種方式實現串口編程。常用的有通過ActiveX控件編程和通過Windows API進行編程。本程序中采用Windows API進行串口編程以實現壓電自適應微細加工平臺中的接觸感知功能。先利用CreateFile()函數以異步方式打開串口,異步方式打開串口不會阻塞線程。用SetupComm()函數設置緩沖區大小,然后用SetCommState()函數設定其他參數,并設定當串口接收到“>”字符時觸發事件。之后向串口發送數據查詢狀態。如果狀態正常則進入等待狀態;當收到“>”字符后觸發事件,進行相應的停止、回退操作。
軟件的結構如圖2所示。程序運行后會自動進行初始化,之后根據所選擇的不同操作啟動不同的線程。當進行手動加工時,程序僅啟動手動加工線程,并在界面實時顯示工具電極的坐標,工具電極的坐標由手動加工線程獲得。當進行數控加工時,程序會啟動數控加工線程和電壓檢測線程。電壓檢測線程實時高速檢測壓電自適應微細電火花加工機床的放電電壓,并將檢測到的電壓發送到數控加工線程;數控加工線程負責控制壓電自適應微細電火花加工的全過程。該線程創建之后會自動讀取數控加工代碼并譯碼,然后根據用戶設定的加工參數進行數控加工。加工過程中,數控加工線程根據從電壓檢測線程接收到的數據來判斷兩者之間距離的大小,進而控制微細電火花加工的放電間隙大小,并在系統無法自動消除短路或拉弧放電時,控制電極快速回退以消除不良加工狀態。在加工過程中,運動控制器返回的坐標參數被發送到主線程以實時顯示工具電極坐標。

圖2 主程序流程圖
數控加工線程流程圖如圖3所示。其工作過程如下:線程創建成功以后自動讀取數控加工代碼文件,并存儲于計算機內存中。本程序采用C++標準模板庫中的Vector容器存儲數控代碼。Vector容器為一種數據類型,比數組更安全,使用更方便。之后線程提取存儲于內存中的一行數控代碼,并進行譯碼。如果該行代碼為非加工代碼(加工代碼為G01,G02,G03,G10),線程僅進行相關操作(選擇平面、設定刀補等)后繼續讀取下一行代碼;如代碼為加工代碼,則線程根據刀具補償變量的值判斷是否進行刀具補償。刀具補償變量為布爾類型變量,其值決定是否進行刀具補償。此處的刀具補償為半徑補償。如不需要進行刀具補償,線程將調用加工子函數進行加工;如需進行刀具補償,則線程調用刀具補償子函數進行刀具半徑補償,然后根據計算出來的新曲線調用加工子函數進行加工。加工子函數分為直線加工子函數和圓弧加工子函數。線程根據待加工曲線的類型調用不同的加工子函數。加工子函數會調用相應的插補子函數進行插補運算,并將運算結果存儲于計算機內存中。加工子函數根據插補運算的結果和系統設置的加工參數進行數控加工。當曲線加工完成之后,線程繼續讀取下一行數控加工代碼進行處理;當處理完所有代碼之后,線程結束。

圖3 數控線程流程圖
利用以上計算機技術和思路,完成了壓電自適應微細電火花加工軟件的開發。在實際開發過程中,根據需要增加了加工參數的記錄,人為終止或開始道具補償、暫停加工等功能。最終開發出的軟件界面如圖4所示。

圖4 軟件界面
利用壓電自適應微細電火花加工平臺及開發的軟件,進行了一系列孔、槽的加工實驗。圖5為加工的陣列孔和橢圓槽。加工采用鎢電極,工件為Cr17Ni7鋼。實驗結果表明,開發的軟件滿足壓電自適應微細電火花加工的要求。

圖5 加工工件
簡單分析了基于運動控制卡的壓電自適應微細電火花加工平臺的工作原理,研究了數控加工軟件的結構流程,充分利用Windows操作系統的多任務特性,采用多線程編程和串口編程技術,以VC++開發工具成功開發出了壓電自適應微細電火花加工軟件,并進行了一些孔、槽的加工實驗。實驗結果表明,開發的軟件界面友好,操作方便,能實現加工過程的精確控制,滿足壓電自適應微細電火花加工的要求。
[1] 付秀琢,張勤河,張建華,等.壓電自適應微細電火花加工系統特性分析[J].機械工程學報,2011,47(9):164-168.
[2] 齊文,王勇前,曹志剛.用Visual C++實現工控設備多線程控制程序[J].電子技術應用,2001(3):13-16.
[3] 付永紅,熊飛麗,龍佑喜,等.基于Windows下數控軟件設計與實現[J].機電一體化,2001(1):28-31.
[4] 尹家凡,王孫安.基于PC的開放式數控系統的研究[J].機床與液壓.機床與液壓,2003(2):88-90.