張 偉,劉 葵,謝正武,周德民,方振紅
(中國兵器工業集團江山重工研究院有限公司,湖北 襄陽 441057)
Unigraphics NX[1-3](簡稱UG NX)是集CAD/CAE/CAM于一體的三維參數化軟件系統,其在數控編程方面是目前市場上功能較強、使用非常廣泛的集成系統,加工編程功能包含車削加工編程、線切割加工編程、3~5軸(多軸)銑削加工編程等,該系統包括前置處理和后置處理兩大部分。由于機械產品千變萬化,需要針對具體的對象在UG NX系統中的NX/Post后置處理器基礎上,結合TCL腳本語言和UG/POST Builder后處理構造器進行二次開發,針對特定產品來設計出界面友好、功能強大、使用方便、格式規范、內容精簡的NC程序式,即可定制各種TCL腳本語言命令,以滿足所需的特殊NC指令。
UG NX的后置處理[4]是數控加工編程過程中一個重要的環節,其主要任務是利用NX/Post將UG NX系統生成的加工刀軌(前置處理部分)轉換成特定機床可以接受的NC代碼,以驅動機床運動,同時保證加工質量。根據制造需要,UG NX的后置處理可以實現個性化定制,這也是UG NX系統功能強大的重要體現之一。
UG/POST Builder后處理構造器是一個非常方便的可創建和修改后置處理的工具,用戶可以交互式地靈活定義NC程序的格式和輸出內容,以及程序開頭和程序結尾、換刀、循環等每一個事件的處理方式。通過它來創建和修改事件處理文件,進行客戶化后置處理。
TCL腳本語言[5]經常被用于快速原型開發、腳本編程、GUI和測試等方面。實際包含兩部分:1個語言和1個庫。具有如下特點:1)任何東西都是一條命令;2)任何事物都可以重新定義和重載;3)所有的數據類型都可以看作字符串;4)語法規則相當簡單;5)代碼緊湊,易于維護。
POST Builder后處理構造器使用TCL腳本語言作為其命令語言有三大好處:1)TCL提供了標準語法,一旦掌握了TCL就可以容易地發布命令給基于TCL的程序;2)TCL實現了很多功能,使創建和修改后處理變得方便;3)TCL可作為程序間的通信接口。
數控程序[6-8]中含有變量的程序稱為宏程序。它的基本原理是用戶用變量作為數據進行編程,變量在編程中充當“媒介”作用,在后續程序中可以重新再賦值,原來內容被新賦的值所取代,利用系統對變量值進行計算和可以重新賦值的特性,使變量隨程序的循環自動增加并計算,實現加工過程的自動循環(見圖1)。
宏程序[9]具有如下幾項特點:1)可以進行變量的算術運算、邏輯運算和函數的混合運算,還可以使用循環語句、分支語句和子程序調用語句;2)宏程序能依據變量,用事先指定的變量代替直接給出的數值,在調用宏程序或宏程序本身執行時,得到計算好的變量值;3)在數控編程中,宏程序編程靈活、高效、快捷,是加工編程的重要補充,宏程序可以實現像子程序那樣功能,例如,型腔加工宏程序、固定加工循環宏程序、球面加工宏程序、錐面加工宏程序等。
變量分為局部變量、公共變量和系統變量,實際加工編程中最常用的是局部變量,變量號范圍#1~#33。
宏程序的構成[10]:1)變量;2)算術或邏輯運算(=)的程序段;3)控制語句(例如:IF、GOTO、DO、END)的程序段;4)宏程序調用指令(G65、G66、G67或其他G代碼,M代碼調用宏程序)的程序段。
宏程序的適用加工范圍和場合:形狀類似但大小不同,大小相同但位置不同,特殊形狀(橢圓、球等)。
在實際數控加工制造過程中,經常會遇到平面銑削恒定分層、重復有規律等的刀具路徑,UG NX系統自帶的后置處理編制的數控程序會因恒定、重復具有一定規律走刀的原因,導致NC程序容量大、語句反復出現、參數修改工作量大、易出錯等問題。針對上述難題,筆者進行了思考,利用宏程序變量的特點和UG NX的后置處理個性化定制功能來實現系統的二次開發,即通過將宏程序變量、算術公式及條件轉移等參數預先植入UG后處理構造器,對后處理構造器功能進行二次定義,使其在數控程序后置處理時系統內部就能自動完成邏輯運算、程序循環等,最終達到簡化刀路、優化程序的目的。后置處理二次開發流程圖如圖2所示。
下面具體介紹創建UG NX宏程序后置處理開發全過程的方法和步驟。
1)新建UG后置處理文件(見圖3)。注:UG后置處理文件名的命名一定要有特定性并配有注釋,便于開發完成的宏程序后置處理技術的后期查閱。
注意:為了方便轉換,且最大限度地保證UG NX系統中原有的后置處理功能的安全性、可靠性和完整性,每段定制命令開始前,都設置有激活和關閉二次開發宏程序后置處理功能選項的判斷語句,如果條件滿足,執行宏程序后置處理,否則退出。
global iii
set iii 0
global iii
if {iii==2} {
MOM_suppress Once Z FG_motion(“MOM”表示NXMOM事件;“mom”表示NX mom變量)
MOM_disable_address Z
globalmom_feed_approach_value(逼近移動的進給率)
globalmom_feed_engage_value(切削移動的進給率)
globalmom_mcs_goto(刀軌轉至點將輸出到一個CLSF)
globalmom_nxt_mcs_goto(絕對轉至坐標中下一mcs轉至的值)
globalkkk
setkkk [expr mom_mcs_goto(2)-mom_nxt_mcs_goto(2)]
if {kkk!=0} {
MOM_output_literal "#3=#1"
globalmom_seqnum
globalxzwn
setxzwn mom_seqnum
MOM_set_seq_on
MOM_output_literal "G00 Z [#1+[format "%.2f" kkk]]"
MOM_add_to_address_buffer F start "Z#1"
MOM_add_to_address_buffer F End "M08"
}
if {kkk==0} {
globalmom_seqnum
globalxzwn
setxzwn mom_seqnum
MOM_output_literal "G0 Z[ #1+3.0]"(循環起始位置)
MOM_set_seq_on(如果在定義文件中給出SEQUENCE說明符,則允許輸出序號,在執行命令時返回序列設置)
MOM_output_literal "G1 Z#1 Fmom_feed_approach_value M08"
(開始下刀以及定義逼近移動的進給率和打開M08)
}
globalmom_pos
globalxzwx
globalxzwy
setxzwx mom_pos(0)
setxzwy mom_pos(1)
}
globalmom_Instruction
globaliiijjj
set jjj [string match #?=* mom_Instruction](判斷用戶定義事件是否輸入)
set iii [expr iii+jjj]
MOM_output_literal "mom_Instruction"(將用戶定義事件中的文字作為單行輸出)
global iii
if {iii==2} {
globalmom_last_pos
globalxzwzz
setxzwzz mom_last_pos(2)
globalmom_mcs_goto
global xzwzz2
set xzwzz2 mom_mcs_goto(2)
MOM_forceOffG_motion G
}
global iii
if {iii==2} {
globalxzwn
globalxzwzz xzwzz2
globalddd
set ddd [expr xzwzz2-xzwzz]
if {ddd>0} {
MOM_output_literal "Z[#1+[format "%.2f" ddd]]"
}
globalxzwxxzwy
MOM_output_literal "X[format "%.3f" xzwx] Y[format "%.3f" xzwy]"(返回循環X方向和Y方向的起始位置)
MOM_output_literal "#1=#1-#2"(將文字“#1=#1-#2”作為單行輸出)
globalmom_pos
MOM_output_literal "IF[#1>=[format "%.2f" xzwzz]] GOTO[format"%.f" xzwn]"
MOM_output_literal "G0 Z[format "%.2f" mom_pos(2)]"(Z方向退刀)
}
1)新建一個UG加工文檔(見圖4)。
2)定義進刀量:機床控制→開始刀軌事件→【Insert】選項卡輸入(見圖5)。#1=-0.5,為初始進刀量;#2=0.5,為每刀進刀步距。
3)選定制作的UG后置處理如圖6所示。
4)驗證自制后置處理的結果如圖7所示。
5)實例驗證,UG NX系統自帶后置處理與UG NX系統二次開發后的宏程序后置處理制作的數控程序效果對比如圖8所示。
本文介紹了UG NX系統中宏程序后置處理的二次開發技術的研究與運用,在不破壞原程序的基礎上,利用宏程序編程原理,將后置處理進行二次挖掘,通過自動判斷語句,激活或關閉宏程序后置處理的定制事件,促使刀具路徑直接轉化為NC宏程序,NC程序基本不用修改,可直接傳輸到機床使用。后置處理器的二次開發后生成的NC程序具有語句簡短、格式規范、查找方便、自動運算等特點,解決了原有NC程序容量大、語句反復出現、參數修改工作量大、出錯率高等多項短板,這在實際制造過程中具有較強現實意義,在數控制造領域具有一定的創新性和推廣性。