姜廣美
(鎮(zhèn)江高等職業(yè)技術(shù)學(xué)校,江蘇 鎮(zhèn)江 212000)
數(shù)控編程是數(shù)控加工中一項(xiàng)關(guān)鍵的技術(shù),程序的質(zhì)量決定了加工零件的精度和工作的效率。隨著數(shù)控行業(yè)不斷向高精密和高效發(fā)展,對(duì)編程的要求越來(lái)越高。
目前,在數(shù)控機(jī)床上常用的編程方式為手工編程和自動(dòng)編程,但這兩種編程方式已經(jīng)無(wú)法滿足數(shù)控行業(yè)的飛速發(fā)展,宏程序指令應(yīng)運(yùn)而生。運(yùn)用宏程序可以簡(jiǎn)化程序,縮短編程時(shí)間,提高工作效率。本文以FANUC 數(shù)控系統(tǒng)為例,結(jié)合具體實(shí)例,介紹宏程序在數(shù)控加工中的應(yīng)用。
以一組子程序的形式存儲(chǔ)并帶有變量的程序稱為用戶宏程序,簡(jiǎn)稱宏程序。調(diào)用宏程序的指令稱為“用戶宏程序指令”,或“宏程序調(diào)用指令”(簡(jiǎn)稱宏指令),常態(tài)下,宏指令通常作為子程序放在存儲(chǔ)器中,如果主程序有需要,通過(guò)調(diào)用子程序指令進(jìn)行運(yùn)用,宏程序可以實(shí)現(xiàn)變量運(yùn)算、判斷和條件裝換的作用,使程序更靈活更方便[1]。
在常規(guī)的主程序和子程序內(nèi),總是將一個(gè)具體的數(shù)值賦給一個(gè)地址。為了使程序更具通用性、更加靈活,在宏程序中設(shè)置了變量,即將變量賦給一個(gè)地址。在宏程序里,可以根據(jù)實(shí)際需要,設(shè)置多個(gè)變量,以符號(hào)來(lái)判別關(guān)系。
變量一般分為空變量、局部變量、全局變量和系統(tǒng)變量(如表1 所示)[2]。
表1 變量類型及含義
(1)全局變量是指在主程序和主程序調(diào)用的各用戶宏程序內(nèi)部都有效的變量。
(2)局部變量只能在宏程序內(nèi)部使用,用于保存數(shù)據(jù),如運(yùn)算結(jié)果等,當(dāng)電源關(guān)閉時(shí),局部變量被清空,而當(dāng)宏程序被調(diào)用時(shí),調(diào)用參數(shù)被賦值給局部變量。
(3)系統(tǒng)變量是系統(tǒng)固定用途的變量,可被任何程序使用,有些是只讀變量,有些可以賦值或修改。
(4)空變量總為空。
變量的算術(shù)運(yùn)算或邏輯運(yùn)算同于計(jì)算機(jī)中高級(jí)編程語(yǔ)言,如:賦值:#i=#j;減:#i=#j-#k。
變量的運(yùn)算次序依次為:(1)函數(shù);(2)乘、除類運(yùn)算(* 、/、AND);(3)加、減類運(yùn)算(+ 、- 、OR、XOR)。
轉(zhuǎn)移和循環(huán)在程序中,使用GOTO 語(yǔ)句和IF 語(yǔ)句可以改變控制的流向。有3 種轉(zhuǎn)移和循環(huán)操作可供使用:
(1)無(wú)條件轉(zhuǎn)移(GOTO 語(yǔ)句)
執(zhí)行完GOTO 語(yǔ)句后,使程序轉(zhuǎn)移到標(biāo)有順序號(hào)為n 的程序段;例如:GOTO 90、GOTO#6。
(2)條件轉(zhuǎn)移(IF 語(yǔ)句)
IF 之后指定條件表達(dá)式。如果指定的條件表達(dá)式滿足時(shí),轉(zhuǎn)移到標(biāo)有順序號(hào)n 的程序段。如果指定的條件表達(dá)式不滿足,則執(zhí)行下個(gè)程序段。
(3)循環(huán)(WHILE 語(yǔ)句)
在WHILE 后指定一個(gè)條件表達(dá)式,當(dāng)指定條件滿足時(shí),執(zhí)行從DO 到END 之間的程序,否則,轉(zhuǎn)到END 后的程序段。
(1)非模態(tài)調(diào)用G65
格式G65 P- L-〈自變量賦值〉;
其中:P 為指定宏程序號(hào);L 為重復(fù)調(diào)用次數(shù)(1~9 999,1 次時(shí)L 可省略);自變量賦值是由地址及數(shù)值構(gòu)成,用以對(duì)宏程序中的局部變量賦值。
(2)模態(tài)調(diào)用G66、G67
一旦指定G66,那么在以后的含有軸移動(dòng)命令的段執(zhí)行之后,地址P 所指定的宏被調(diào)用,直到發(fā)出G67 命令,該方式被取消。
格式G66 P- L-〈自變量賦值〉,含義同G65。
在宏程序中通過(guò)指定變量替代給出的數(shù)值,實(shí)現(xiàn)加工。如圖1 所示加工一螺旋槽,它在旋轉(zhuǎn)的過(guò)程中,從起點(diǎn)開(kāi)始螺旋線到圓心的距離時(shí)刻在變化,每一點(diǎn)的坐標(biāo)很難計(jì)算,運(yùn)用宏程序就十分簡(jiǎn)單。
圖1 螺旋槽圖
宏程序如下:
在一個(gè)零件加工過(guò)程中,若要加工螺旋槽,只要在主程序中調(diào)用語(yǔ)句G65OXXXX, 當(dāng)加工參數(shù)發(fā)生變化時(shí),如起點(diǎn)、終點(diǎn)、位置等,只要改變調(diào)用程序中相應(yīng)的參數(shù)就可以滿足要求。
這就說(shuō)明加工一組同類零件,我們可以通過(guò)編制宏程序,把同類零件中變化參數(shù)用變量表達(dá),調(diào)用程序時(shí),根據(jù)實(shí)際值賦給相對(duì)應(yīng)的變量,從而實(shí)現(xiàn)同類零件的加工,使程序簡(jiǎn)化。
3.2.1 中斷型用戶宏程序
在數(shù)控機(jī)床里,執(zhí)行加工程序時(shí),需要輸入一個(gè)中斷信號(hào)來(lái)調(diào)用另一程序,這個(gè)功能稱為中斷型宏程序。使用中斷型宏程序,在用戶執(zhí)行任何一個(gè)程序時(shí),都可以調(diào)用另一個(gè)程序,滿足即時(shí)需要[3]。
3.2.2 中斷型程序應(yīng)用格式
M96PXXXX(用戶宏程序中斷生效)
M97(用戶宏程序中斷取消)
當(dāng)加工程序中出現(xiàn)M96PXXXX 時(shí),輸入中斷信號(hào)(UINT),轉(zhuǎn)而執(zhí)行PXXXX 程序,當(dāng)出現(xiàn)M97,中斷信號(hào)的輸入被忽略,回到原程序,并且在中斷程序執(zhí)行期間,不得輸入中斷信號(hào),如圖2 所示。
圖2 中斷型用戶宏程序功能
加工時(shí)刀具與工件接觸會(huì)產(chǎn)生磨擦,刀具產(chǎn)生磨損或破損,直接導(dǎo)致零件質(zhì)量下降,加工效率降低。通過(guò)刀具的監(jiān)測(cè)系統(tǒng)進(jìn)行跟蹤,并運(yùn)用宏指令中斷功能可以及時(shí)發(fā)現(xiàn)問(wèn)題。當(dāng)發(fā)現(xiàn)刀具出現(xiàn)問(wèn)題,無(wú)法繼續(xù)加工時(shí),刀具監(jiān)測(cè)系統(tǒng)首先發(fā)出信號(hào),接著執(zhí)行中斷程序功能實(shí)現(xiàn)換刀,再加工,程序如下:
由于宏程序是運(yùn)用變量作為參數(shù)進(jìn)行編程,并能對(duì)變量進(jìn)行讀取,因此利用宏程序可以提高加工效率,完善和擴(kuò)展機(jī)床的功能,可解決一些用常規(guī)編程方法無(wú)法解決的問(wèn)題。