韓洪征,朱穎,孫琳
(1. 中航發沈陽黎明航空發動機有限責任公司,遼寧 沈陽 110034; 2. 沈陽工學院,遼寧 沈陽 110034)
在發動機的生產中,車加工占比很大。車加工數控程序的仿真是一個細致、耗時的過程,現有的成熟仿真軟件如VERICUT,憑借其強大的后處理功能,能夠以三維實體狀態模擬實際加工,分析干涉、碰撞等。但進行數控程序復查時只能在程序運行結束后,運行“自動比較”命令比較設計模型與VERICUT輸出模型,進行過切或殘留檢查。由于無法設定過切、殘留值測量方向,測量的結果往往達不到理想要求。
針對這些問題,基于AutoCAD軟件,使用AutoLISP語言編程[1]開發出數控車加工仿真功能,起到對VERICUT進行補充作用:
1) 借助AutoCAD軟件的縮放功能實時檢查刀軌與部件輪廓的相對位置,并可隨意方向測量過切殘留。相比于VERICUT軟件的數控程序復查功能(圖1),AutoCAD可以隨時隨意對工件外廓與刀軌圖像進行縮放和平移,以檢查二者的相對位置(如圖2);
2) 無需復雜后置處理,靈活運用,通用性強,可支持臥車、立車,Fanuc系統、Siemens系統的仿真;

圖1 利用VERICUT軟件復查程序

圖2 使用開發功能進行車加工程序仿真
3) 零件尺寸進行微調、更改,無需進行繁雜的模型轉換,只需在CAD上更改后的二維輪廓圖上采點生成程序段,反應迅速,方便準確。
數控程序是控制機床運動的語言,常見的語言系統有Fanuc以及Siemens,由于二者有很大的共通性,以Fanuc系統數控車加工程序為例分析,其他系統以此類推。
圖3為工件輪廓圖。程序零點設在大端面中心,刀片采用VBMT160408(35°菱形刀片),刀尖半徑為0.8mm。輪廓編程,程序如表1所列。

圖3 工件輪廓圖

程序段注釋O1234(REV.A,R0.8)程序號以及注釋G97M03 S30指定轉速G40重置半徑補償方式G0Z500.快速進給G1G42X32.75F50.直線插補,刀半徑補償Z400.F20.直線插補,更改進給Z100.F10.直線插補,更改進給Z61.446F0.2直線插補,更改進給,開始切削G2X33.562 Z59.69R4.圓弧插補G1X53.052 Z39.741直線插補G2X98.517 Z25.546R25.3圓弧插補G1X150.直線插補G0G40Z500.快速進給,半徑補償重置M05主軸停M30機床停
仿真一個程序,主要包括兩個部分內容:一是還原出刀具運行的軌跡,并與工件輪廓進行對比驗證;二是標識出每段軌跡運行時所對應的轉速、進給、刀補方向等輔助信息。
a) 刀軌模擬
控制車刀運動的準備功能字是“G00”、“G01”、“G02”、“G03”,其中“G00”表示快速定位到指定坐標位置;“G01”是以給定進給量(以“F”輔助功能字引出)進行直線插補運動到指定坐標位置;“G02”、“G03”準備功能字表示分別以順時針或逆時針方向進行圓弧插補。這些準備功能字決定刀具軌跡的形狀。輔助功能字“X”,“Z”決定軌跡的坐標選擇,并引出具體坐標值,對于圓弧插補,還要提供輔助功能字“R”來標明轉動圓弧半徑。
b) 輔助信息標識
轉速、進給、刀補方向需要在每一段程序中標識出來。轉速以“S”輔助功能字引出;進給以“F”輔助功能字引出;刀具半徑補償準備功能字為“G40”,“G41”以及“G42”,由于數控程序有輪廓、刀心編程方式的分別,在仿真過程中,需要體現出程序軌跡對應的補償方向。
圖4為程序設計流程圖,從圖4上可以看出,讀入程序后主要進行兩個方面的內容:一是繪出刀具軌跡,二是在每一條軌跡上做出注釋。

圖4 程序設計流程圖
AutoLISP可以利用命令“getfiled”打開文本文檔[2],因此,將程序保存在文本文檔里,在AutoCAD的命令欄里輸入“lathe”命令,程序打開一個對話框供用戶選擇程序,如圖5所示。

圖5 用戶選擇仿真的程序
選擇程序后,對話框關閉,程序開始仿真,仿真過程如圖6所示,每按下一次空格,軟件讀取一條程序段顯示在命令行的輸入框,并將已執行完畢的程序段自動傳遞到輸入歷史框里。與此同時,執行的程序對應的刀軌按照插補方式的不同以圖層區分并繪制在工件輪廓圖上。仿真完畢后,將鼠標放在刀具軌跡線上方,即可通過“超鏈接”[3]方式顯示出該段程序的輔助信息。如圖6所示的超鏈接信息“S30F0.2G42”,表示轉速30r/min,進給0.2mm/r,程序沿前進方向右偏置。通過鼠標滾輪的縮放并CAD的測量功能,可以測量刀具軌跡與工件輪廓的任意方向的距離,以此得到任意方向的過切量或殘留量。

圖6 仿真結果展示
從流程圖中可以看出,程序運行的方式就是在程序段中搜尋功能字如“G、F、X、Z、R、S”。下面列出尋址“F”功能字并獲得“F”后面引出的進給值的程序偽代碼:
(提取程序段data)
(setqF_code(vl-string-position70data))
;搜尋程序中的“F”字的位置代號
(setqF_value"")
;存放進給值的變量F_value置空
(whileF_code
;當存在“F”字進行如下操作
(setqF_code(1+F_code))
;設置“F”后字符位置代號
(setqaddF_value(vl-string-eltdataF_code))
;析出“F”后一位字符
(cond
((>addF_value57) (setqF_codenil))
(( ((=addF_value47) (setqF_codenil)) ;若不為數字或小數點,則退出循環 (t(progn (setqF_value(strcatF_value(chraddF_value)))) (if(>= (1+F_code) (strlendata)) (setqF_codenil))) ;若為數字或小數點則放入F_value并搜尋下一個,直到程序段最后則退出循環 ) ) (if(/=F_value"") (setqF_cord(atofF_value))) ;如存在F值,賦值給F_cord。 當新建工件程序,或者工件尺寸發生變化時需要重編程序,使用UG或Mastercam比較繁瑣,對于更改局部程序,需要手動去計算點位坐標。由于增加了人為干擾因素,容易造成程序錯誤。針對這一不便,基于AutoCAD使用AutoLISP編程開發出采點功能[4],直接在工件輪廓上采集線條端點位置信息,并將該位置信息按照機床代碼格式直接以程序段輸出。 采集CAD圖形上的點位的坐標可以使用“getpoint”命令得到一個點位的列表,分別用“car”和“cadr”取得該點位的X坐標和Y坐標。為防止點位捕捉錯誤,可在“對象捕捉”中使用命令(setvar"osmode" 4133)[5]設置捕捉模式為端點、圓心、交點、延伸選項。 機床的坐標與CAD的坐標有著一一對應關系,表2列出了這種對應關系。 表2 CAD坐標與機床坐標對應關系 根據表中對應坐標關系進行坐標轉換,并將坐標值以程序語句形式保存成字符串[6]。 (vl-load-com) ;調用VLISP擴展功能 (setqmynote(vlax-create-object"htmlfile")) ;建立html (setqRESULT(vlax-invoke(vlax-get(vlax-getmynote'PARENTWINDOW) 'CLIPBOARDDATA) 'SETDATA"Text"STR)) ;賦值給RESULT (vlax-release-objectmynote) ;關閉html 按以上程序代碼將坐標點轉換的程序語句輸出到粘貼板。如圖7所示,分別選取圖中的1,2兩點,對應的程序語句如圖中信息提示,將坐標信息粘貼到文本編輯器中并添加準備功能字等便可以形成數控程序。 圖7 采點結果展示 數控程序仿真功能[7],針對一些非宏普通程序,不需要檢查碰撞等復雜工況的條件下,能夠很好地對數控車加工程序進行仿真驗證,相對一些大型仿真軟件,能夠避免過于復雜的后置設置[8],并且在自動比較分析時可以在任意方向進行余量分析。兼容Fanuc和Siemens仿真系統,運用靈活,通用性強。 數控程序采點功能,可以簡化程序局部更改過程,對于尺寸變化需要更改程序的情況,使用采點功能直接在工件二維圖上采集坐標點,并將其自動轉化為機床程序坐標語句,后續添加準備功能字等即可變成程序段[9],避免在CAD/CAM軟件上重新畫圖,重新出程序的復雜過程。3 程序創建及更改采點功能開發
3.1 點位采集
3.2 坐標轉換與程序段輸出


4 結語