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