WFL 車銑複合(hé)機床(chuáng)除了有強大(dà)的多(duō)軸(zhóu)加工功(gōng)能,還能自動找正零件和在線測量零件(jiàn)。有了這些功能,車(chē)銑複合機床(chuáng)不僅能夠大大提高零件的加工精度(dù),而且能夠大大提高零件的加工效率。
WFL 車銑複合機床的功能比較強大、效率比較高,不(bú)僅有車、多軸銑和鏜孔,還有多種測量循環(huán),因此(cǐ)編程就比較複雜。實際生(shēng)產中,雖然手工編(biān)程也能實現(xiàn)這些功能,但是手工編程也有一定局限性,因此實現車銑複合機床的電腦自動編程,是一件很有意義的事情。
以下就以WFL 機床的一個簡單的測量循(xún)環“PROBE”為例,敘述如(rú)何(hé)使用NX軟件編程,以及後(hòu)置處理輸出WFL車銑(xǐ)複合機床測量循環(huán)的方(fāng)法。
一、機床測量循環的代碼定義
要寫出能輸出“PROBE”的正確的(de)後置處理程序,首先必須要理解WFL 車(chē)銑複合機床測量循環“PROBE”的含義———該測量循環的含義是在隨機軸上測量軌跡點。該測量循環的格式為:PROBE(AX,DIS,MP,NUM),各參數的含義如下。
◎AX:測量軸。測(cè)頭由AX 定義的運動軸以很(hěn)快的進給率(一般(bān)是以G0的速度(dù)) 接近工件,然後進行測量,在WFL車銑複合(hé)機床上(shàng)有三個測量軸,X1、Y1和(hé)Z1,即機床的X、Y 和Z軸。
◎DIS:測頭移動的距離。測(cè)量軌跡點(即零件上要測量的點)到起始點(開始(shǐ)執行G1的點(diǎn)) 之間的(de)距離必須(xū)在DIS定義的距離之內,即二者(zhě)距離必須小(xiǎo)於該值。如果測量軌跡點與起始(shǐ)點之間的距離大於該值時,測頭是測(cè)量不到測量軌(guǐ)跡點的。DIS 值可以為正也可以為負,分別表(biǎo)示測(cè)量軌跡的運動方向是沿著測量軸的正方向還是(shì)負方向。
◎NUM:在第一次測量軌跡點之後,測頭(tóu)會沿(yán)測量軸稍回撤,然後以正常(cháng)的測(cè)量進(jìn)給率重複測軌跡點,重複的次數由NUM指(zhǐ)定(dìng),一般是測量3次。
◎MP:是指定(dìng)測量結(jié)果的存儲(chǔ)位置。測(cè)量結果輸出到機床的內存單元MC_P〔0〕中,同時被存儲到以MP為下標的機床內存中,變成測量點MC_POINT〔MP〕。
我們隻要在後置處理的程序中正確定義了這(zhè)4 個參數,並實(shí)現其輸出,就可以輸出該測量循(xún)環的正確機床(chuáng)代碼。以下的一段機(jī)床代碼就是PROBE 應用的一個實際的例(lì)子,測量的零件和測量點如圖1所示。
…
N035 G54
N040 G0 X1=48 Y1=0 C1=0 Z1=10
N045 PROBE (“Z1”,-15,1,3)
N050 G0 X1=93
N055 G0 Z1=-50
N060 PROBE (“Z1”,-15,2,3)
在這段機床代碼中,PROBE(“Z1”,-15,1,3) 的測量點為MP1,MP1的位置由該代碼的上一句程序指定。該例中測量點MP1的位置為(48,0,0),測頭沿機床Z1軸的(de)負方向進行測量,定義的測頭移動距離(lí)為15,測頭的測量起始點為(wéi)Z1=10 的位(wèi)置,測量軌跡點自Z1=0 的位置,測(cè)量軌跡點到測量起始點之(zhī)間的距離為10,小於測頭移動距離15,測量結果存儲在機(jī)床內存MC_P〔0〕和存儲單元MC_POINT〔1〕中,重複測量3次。
PROBE(“Z1”,-15,2,3) 的測(cè)量點是MP2,MP2 的位(wèi)置由該代碼(mǎ)的前兩句程序指定,該例中測量點(diǎn)MP2 的(de)位置為(93,0,0),測(cè)頭沿機床Z1軸的(de)負(fù)方向進行測量,定義的測(cè)頭移(yí)動距離(lí)為15,測頭的測量起始點為Z1=-50 的位(wèi)置(zhì),測量軌跡點自Z1=-60 的位置,測量軌跡點到測量(liàng)起始點之間的距離為10,小於測頭移動距離15。測量結果存儲在機床內存MC_P〔0〕和存儲單元MC_POINT〔2〕中。
此處需要(yào)注意的是:此處為堆棧存儲的(de)方式,在完成第(dì)二次測量後,MC_P〔0〕內存儲的值自動移動到MC_P〔1〕,最大(dà)能到MC_P〔3〕,該點重複測(cè)量3次。
二、如何用後置處理器實現機床代碼的正確輸出
在NX 6.0 中(zhōng)編寫該測(cè)量循環的前置比較簡單(dān),這種測量(liàng)循環在NX 6.0中(zhōng)用操作“probe_point”就很容易(yì)寫出正確的前置,後置(zhì)處理(lǐ)的任務就是把(bǎ)前置程序翻譯成WFL 車銑複合機床(chuáng)能識別的(de)機床代碼PROBE(AX,DIS,MP,NUM)。請注意:後麵所提到程序的執行(háng)程序皆為後置處理時的執行順序。以下所述就是定義並如何輸出正確的機床代碼的方法和步(bù)驟(zhòu)。
1.輸出測(cè)量軸AX
實現這一輸出的(de)後置處理程序如下(後置處理的程序皆(jiē)為TCL語言編寫)。
global mom_probe_direction
global axis
global dis
global MP
if{$ mom_probe_direction = =“XAXIS”} {
set axis X1}
if{$ mom_probe_direction = =“YAXIS”} {
set axis Y1}
if{$ mom_probe_direction = =“ZAXIS”} {
set axis Z1}
MOM_output_literal“PROBE($axis,$dis,$MP,3)”
這段(duàn)後(hòu)置處理程序用來定義輸出的主程序。mom_probe_direction 為NX 的係(xì)統變(biàn)量, 和MP 均為用戶自定義變(biàn)量。mom_probe_direction在係統裏有三個(gè)取(qǔ)值,分別為“XAXIS”、“YAXIS”和“ZAXIS”。當NX 操作裏的測量方向為X 軸時,其取值為“XAXIS”;當NX操(cāo)作裏的測量方向為Y 軸時,其(qí)取值為“YAXIS”;當NX操作裏的測量方向為Z軸時,其(qí)取值為“ZAXIS”。這樣,就可以利用這個係統變量作為條件,用if 判斷語句來進行判斷,對應輸出程序中的變(biàn)量“ ”,也(yě)就是PROBE(AX,DIS,MP,NUM)中的 “AX”的值。程序的解釋為:當(dāng)mom_probe_direction 為 “XAXIS”時,則將“X1”賦值給“axis”;當mom_probe_direction為“YAXIS”時,則將“Y1”賦值給“ ”;當mom_probe_direction 為“ZAXIS”時,則將(jiāng)“Z1”賦值給“ ”,最後輸出(chū)。
程序當中的部(bù)分參數(shù)含義為:globe 表示全局變量(liàng);if表示判斷條件(jiàn);$為取值符;set 表示賦值給其後麵的參數(具體的介紹請參考TCL 語言的教材)。
2.輸出DIS
“DIS”的輸出要分為以下三個步驟:
(1)計算測量起始點的值。在進行每次測量循環操作前,運行下列程序,可以(yǐ)計算出起始點的X、Y 和Z坐標值(其值用參(cān)數為X1_bofore、Y1_bofore 和Z1_bofore 定(dìng)義,皆為用戶自定(dìng)義變量)。在下麵的TCL 程序中,mom_mcs_goto 為NX 的係統變量,其存儲方式是一個數組(zǔ),其(qí)中mom_mcs_goto
(0) 自動存儲當前加工坐標係X 的值,mom_mcs_goto
(1) 自動存儲當前加工坐標係Y 的值,mom_mcs_goto
(2)自動存儲當前加工坐標係Z的值,這些變(biàn)量與CLSF 文(wén)件中的坐標值采用的坐(zuò)標值一致。
global mom_mcs_goto
global X1_bofore
global Y1_bofore
global Z1_bofore
set X1_bofore$ mom_mcs_goto(0)
set Y1_bofore$ mom_mcs_goto(1)
set Z1_bofore$ mom_mcs_goto (2)
(2)計算測量軌跡點。在進行每(měi)次測量循環操作(zuò)後,執(zhí)行下列程序,可以計算出測量軌跡點的X、Y 和Z坐標值,其值分別用參數X1_when、Y1_ when和(hé)Z1_ when 定義(三(sān)者皆為用戶自定義變量)。
global mom_mcs_goto
global X1_ when
global Y1_ when
global Z1_ when
set X1_ when $ mom_mcs_goto (0)
set Y1_ when $ mom_mcs_goto (1)
set Z1_ when $ mom_mcs_goto(2)
(3)計算DIS。在進(jìn)行測量循環操作最後,下列程序可以計算出“DIS”。“DIS”在後置處理的(de)程序(xù)中是用用戶自定義的變(biàn)量“dis”來(lái)表示。如果測量起始點減去測量軌(guǐ)跡(jì)點的值大於零,則說明測量軌跡是沿著測量軸負向運動(dòng),此時(shí),用測量軌跡點的坐標值減去測量起始(shǐ)點(diǎn)的坐標值,再減去一個常(cháng)量得(dé)到DIS,則(zé)可以保證測頭的移動距離大於測量軌跡點到起始點之間的距離。如果測量起始點減去測(cè)量軌跡點的(de)值小於零,則說(shuō)明測量軌跡是沿著測量軸的正向運動,此時,用測量(liàng)軌跡點的坐標值減去測量(liàng)起始點的坐標值,再加上一個常量,即可得到DIS,則可以保證測頭的移動距離大於測量軌跡(jì)點到起始點之間的距離。NX後置處理程序如下。
if{$ X1_bofore-$ X1_ when>0} {
set dis [expr($ X1_ when-$ X1_bofore-10)]}
if{$ X1_bofore-$ X1_ when<0} {
set dis [expr($ X1_ when-$ X1_bofore+10)]}
if{$ Y1_bofore-$ Y1_ when>0} {
set dis [expr($ Y1_ when-$ Y1_bofore-10)]}
if{$ Y1_bofore-$ Y1_ when<0} {
set dis [expr($ Y1_ when-$ Y1_bofore+10)]}
if{$ Z1_bofore-$ Z1_ when>0} {
set dis [expr($ Z1_ when-$ Z1_bofore-10)]}
if{$ Z1_bofore-$ Z1_ when<0} {
set dis [expr($ Z1_ when-$ Z1_bofore+10)]}
3.輸出MP
在(zài)一個測量程序(xù)中,可能會測(cè)量很多個點,這就需(xū)要很多次PROBE 測量循(xún)環,每一個測量循環的結果(guǒ)都要占一個存儲內存(cún),所以每一(yī)個“MP”都應該有不同的值,因此可以用下麵的程序分(fèn)兩個步驟來輸(shū)出“MP”。
(1)初始化MP為0。在第一(yī)次測量程序開始執行(háng)之前執行下列後置處理程序:
global MP
Set MP 0
該程序將MP初始化為0。
(2)每進行一次測(cè)量循環操作,執行一次下列(liè)程序,則可以實現參數“MP”的(de)增加,因此(cǐ)可以保證每一個“MP”的值都不同,並且從“1”開始。每進(jìn)行一次測量操作,就遞增一次。
global mom_probe_cycle_type
global MP
if { $ mom_probe_cycle_type!=0 } {
set MP[expr($MP+1)]}
其中,mom_probe_cycle_type 為係統(tǒng)變(biàn)量,在執行數控程序的過程中,當有測量(liàng)循環操作時,其賦值不等於(yú)0,當沒有進行測量操作時,其賦值就是0。從NX 的第一個操作開始就(jiù)進(jìn)行掃描,每當mom_probe_cycle_type 不為零時,MP就自加(jiā)一次。因此我們就可以利用這個變量作為條(tiáo)件(jiàn),來完(wán)成“MP”的賦值和輸出。
4.輸(shū)出NUM
因為一般情況(kuàng)下,重複測軌跡的次數為3 次,所以在輸出的主程序中,已經直接定義了“NUM”為“3”,因此可以直接輸出,不再需要對該參數進行定義。
三、結(jié)束語
經驗證(zhèng),用該方法(fǎ)寫出的後置處理程序,可以輸出正確無(wú)誤的機床代(dài)碼PROBE(AX,DIS,MP,NUM),如果按照此方法將後置處理程序加以完善,就可以輸出完整、正(zhèng)確的WFL車銑複合機床(chuáng)其他測量循環的機床代(dài)碼,實現該機床(chuáng)的測量循環的電(diàn)腦編程(chéng),就可以充(chōng)分(fèn)發揮該機床的優點,大大提(tí)高加工效率和可靠性。
如果您有機床行業、企業(yè)相關(guān)新聞(wén)稿(gǎo)件發表,或進行資訊(xùn)合作,歡迎聯係本網編輯部, 郵(yóu)箱(xiāng):skjcsc@vip.sina.com