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