曹陽, 劉心宇
(黑龍江省機(jī)械科學(xué)研究院,哈爾濱150040)
簡單地說,宏程序就是通過公式編程來加工數(shù)控零件的。通過數(shù)控系統(tǒng)的宏程序功能,可以運(yùn)用如算術(shù)、邏輯和函數(shù)等運(yùn)算方法進(jìn)行編程,同時(shí)宏程序還具有強(qiáng)大的循環(huán)、分支、子程序等調(diào)用功能。本文介紹了宏程序的概念、宏程序的優(yōu)勢及宏程序在非圓曲線數(shù)控加工中的應(yīng)用。對于各種不規(guī)則形狀的復(fù)雜零件加工程序的編制可以極大地減少計(jì)算量,精簡程序。
數(shù)控編程是數(shù)控加工的重要內(nèi)容之一,首先要進(jìn)行零件圖樣分析,根據(jù)分析確定加工工藝過程,如加工刀頭軌跡、控制介質(zhì)、走刀數(shù)據(jù)等,進(jìn)一步校對并確認(rèn)程序,進(jìn)行首件試加工[1]。數(shù)控編程有人工編程和自動自動編程兩種形式,對于形狀規(guī)則簡單的零件,可以進(jìn)行人工編程,但對于幾何形狀不規(guī)則或過于復(fù)雜的零部件來說,人工編程工作量大,是不適用的,此時(shí)就需要借助計(jì)算機(jī)來進(jìn)行自動編程。自動編程是通過數(shù)控編程語言進(jìn)行加工源程序的編寫,最后生成加工程序。近幾年,隨著數(shù)控加工技術(shù)的飛速發(fā)展,很多數(shù)控系統(tǒng)都為用戶提供了編程輔助功能,能夠滿足用戶需要的數(shù)控功能的擴(kuò)展,實(shí)現(xiàn)邏輯運(yùn)算及程序流程,并且應(yīng)用靈活、形式自由。
數(shù)控編程的重要部分就是宏程序,它是加工程序重要的編程語言?!昂辍痹谟?jì)算機(jī)科學(xué)里有批量處理的概念,在數(shù)控加工中也是如此。宏程序能夠很大程度地簡化編程,對于外形類似、尺寸不同、相同工藝、不同位置參數(shù)的系列零件非常好用。同時(shí)宏程序指令還適合拋物線、橢圓、雙曲線等非圓無插補(bǔ)指令的加工程序編制,應(yīng)用范圍廣。
宏程序就是采用變量的方式進(jìn)行數(shù)控編程,以達(dá)到切削復(fù)雜曲面的方法[2]。宏一般分為A類宏和B類宏,它們的區(qū)別在于格式輸入不同,在oi系統(tǒng)中B類宏的應(yīng)用更廣泛一些。宏程序最關(guān)鍵的兩個(gè)因素:宏變量和常量。舉例說明:G00 X20.0,其中20.0是不變的常量,表示在X軸作快速定位。當(dāng)引入變量#1=20.0,則#1代表一個(gè)變量。再引用G00程序,G00 X[#1],這里G00是#1,而#1是20.0,說明變量的引入后作用是等效的。二者的區(qū)別是:如果要改變刀具的位置,用G00程序就需要改變語句,而引用變量后就不需要改變程序,僅僅需要改變變量值即可。其中變量可以代表程序中的各類數(shù)據(jù),如尺寸、G指令編號、刀補(bǔ)號等。如果數(shù)值改變,只需要改變變量的值,而不用修改程序,這樣給程序設(shè)計(jì)帶來了極大的靈活性,這也是宏程序的優(yōu)點(diǎn),這樣就可以用幾行程序替代一個(gè)程序段。
編程中的變量用途主要有4個(gè):將變量賦值傳送給程序;運(yùn)算;與其他表達(dá)式的比較,決定并實(shí)現(xiàn)是否跳轉(zhuǎn)功能的條件分支;遞增(減)量。其中運(yùn)算是最主要的功能,運(yùn)算包括:算術(shù)運(yùn)算、函數(shù)運(yùn)算和比較操作。以FANUC數(shù)控系統(tǒng)為例,系統(tǒng)變量表示形式為# +(1~4位數(shù)字),宏程序變量種類有3種:
1)#0~#49代表局部變量,作用范圍是當(dāng)前程序(在同一程序號內(nèi)),用于存放當(dāng)前宏程序中的數(shù)據(jù),斷電時(shí)丟失為空。舉例:N60 #0=1和N80 #1=40×COS[#0×PI/180]。其中#1~#33代表變量,它用于自變量轉(zhuǎn)移,即在宏程序中局部使用的變量。
2)#50~#199代表全局變量,作用范圍是零件的整個(gè)加工程序,全局變量對于由主程序調(diào)用的各子程序及其他各宏程序來說,是可以通用的??梢?,名稱(編號)相同的變量,且?guī)в邢嗤闹?,不論是主程序還是子程序,就代表的是同一個(gè)變量。一旦在某個(gè)地方改變這個(gè)變量的大小,所有其它和它關(guān)聯(lián)的地方都受影響。當(dāng)電源關(guān)閉時(shí),#500~#509變量值則可以保存,#100~#149變量的值會全部被清除。如圖1所示,局部變量和全局變量的作用范圍是不同的。
圖1 局部變量和全局變量的作用
3)由# 與4位數(shù)字組成的變量,代表系統(tǒng)變量。它的作用范圍是能夠獲取機(jī)床處理器和NC內(nèi)存中的所有系統(tǒng)信息。其中,#1000~#1199 系統(tǒng)變量能獲取包括與機(jī)床處理器有關(guān)的交換參數(shù)、機(jī)床狀態(tài)獲取參數(shù)、加工參數(shù)等系統(tǒng)信息。不同的系統(tǒng)變量代表不同的特殊意義,其代表的信息是數(shù)控系統(tǒng)內(nèi)部已經(jīng)定義過的。例如,#1000變量表示的是存儲機(jī)床當(dāng)前的位置X,而#1001表示存儲機(jī)床當(dāng)前位置Y。因此,系統(tǒng)變量的數(shù)值不允許自由使用,不可以隨意改變其數(shù)值和用途。
常量與數(shù)學(xué)概念想通,即把固定的值賦予相應(yīng)的符號。例如:PI表示圓周率π;TRUE表示條件成立;FALSE表示條件不成立。
宏程序中所有的常量和變量都可以通過運(yùn)算符和表達(dá)式進(jìn)行表示。因此宏程序的運(yùn)算可通過數(shù)學(xué)符號來表示,過程類似于數(shù)學(xué)運(yùn)算與邏輯運(yùn)算。
算數(shù)運(yùn)算符:+,-,×,/;條件運(yùn)算符:EQ(=),NE(≠),GT(>),GE(≥),LT(<),LE(≤);邏輯運(yùn)算符:AND,OR,NOT;函數(shù)運(yùn)算符:SIN, COS, TAN, ATAN, ATAN2, ABS,INT, SIGN, SORT, EXP。
表達(dá)式是用運(yùn)算符連接起來的常數(shù)和宏變量構(gòu)成的表達(dá)式,因此表達(dá)式是宏程序中最有效的、最能發(fā)揮其特征的形式。
把常數(shù)或表達(dá)式的值送給一個(gè)宏變量稱為賦值。變量的賦值方法有2種,即直接賦值和引數(shù)賦值,其中直接賦值的方法較為直觀、方便,其書寫格式為:宏變量=常數(shù)或表達(dá)式。賦值后的語句就可以在程序中進(jìn)行運(yùn)算,舉例:#100=100.0,#101=30.0+20.0。
控制指令起到控制程序流向的作用。在一個(gè)程序中,可以通過GOTO、IF語句的變化來控制程序的流向,分支循環(huán)語句有有3種表達(dá)方式:GOTO語句,代表無條件分支;IF或then語句代表?xiàng)l件分支;WHILE語句while... 代表循環(huán)。條件判別語句IF、ELSE、ENDIF的執(zhí)行方式是:判斷條件是否滿足,當(dāng)條件式不滿足時(shí),向后執(zhí)行ENDm的后面的程序段。這類語句有2種形式:
宏程序是批量處理的程序,會完成一個(gè)特定的功能,因此在定義宏程序上,可以像定義子程序一樣的方法。通常定義宏程序的格式有兩種:G65 P(宏程序名)+<變量賦值>;M98 P(宏程序名)+<變量賦值>。
一般情況下,數(shù)控系統(tǒng)無法直接對橢圓、雙曲線等非圓曲線加工程序進(jìn)行插補(bǔ)加工[3]。例如,加工一個(gè)橢圓截面的手柄形狀工件。需要數(shù)學(xué)的間接處理方法:用直線段或圓弧段去逼近非圓曲線。求出每個(gè)直線段或圓弧段的起點(diǎn)和終點(diǎn),就是節(jié)點(diǎn),然后進(jìn)行直線或圓弧插補(bǔ)。
以橢圓弧加工為例:在橢圓弧上設(shè)一個(gè)節(jié)點(diǎn)M,該點(diǎn)的橫坐標(biāo)和縱坐標(biāo)都可以通過橢圓的長軸和短軸及節(jié)點(diǎn)與中心的連線與長軸夾角α獲得。程序如圖2所示。
圖2 橢圓弧加工程序調(diào)用
通過計(jì)算用變量把M點(diǎn)的X、Y坐標(biāo)賦值,然后進(jìn)行直線插補(bǔ),加工出近似橢圓弧的曲線。用幾行程序就可以加工出橢圓,足可見宏程序的便捷。
1)加工原理。以α角為主要參數(shù),1°遞進(jìn)增加,求得節(jié)點(diǎn)的坐標(biāo)。對每次得到的節(jié)點(diǎn)進(jìn)行直線插補(bǔ),讓車刀進(jìn)行車削。所有的節(jié)點(diǎn)都找到后,把所得線段連接后就得到近似橢圓。
2)編寫加工程序。如圖3所示,對橢圓曲線進(jìn)行加工程序編寫:虛線框中程序部分之前是準(zhǔn)備部分。以下為相應(yīng)的注釋:
圖3 橢圓曲線加工程序
通過以上的過程,就可以實(shí)現(xiàn)橢圓的加工成型,通過宏程序指令,用短短的7行程序就完成了加工復(fù)雜曲線的程序編制。
3)加工實(shí)例對比。以二級轉(zhuǎn)子試驗(yàn)件加工為例,加工設(shè)備為CINCINNATI CFV900四軸數(shù)控銑床,F(xiàn)ANUC操作系統(tǒng),材質(zhì)為鈦合金。普通人工編程通過取點(diǎn)描繪加工曲線,計(jì)算量大。若取點(diǎn)不夠或數(shù)量少,曲線精度不夠,導(dǎo)致加工后走刀痕跡明顯,零件表面光潔度不夠,而且容易出現(xiàn)廢品(如圖4)。通過宏程序編制加工程序,不僅比人工計(jì)算取點(diǎn)大大地減少了運(yùn)算量,而且提高了精度(如圖5)。
由此可見,對于復(fù)雜的數(shù)控加工零件,特別是非圓曲線的加工,基本上都可以用這種數(shù)學(xué)方法進(jìn)行逼近和近似處理。正如上面提到的橢圓,想要畫出精確的曲線,我們只需要在程序中定義橢圓公式,每次改變Z坐標(biāo)變量固定值,宏程序就會自動計(jì)算出相對應(yīng)的X坐標(biāo)并繪制加工曲線,進(jìn)行切削??梢哉f,宏程序并不是十分復(fù)雜,了解它的規(guī)律和應(yīng)用的特點(diǎn)后便很容易掌握,可提高加工效率。
圖4 零件精度不夠且易產(chǎn)生廢品
圖5 宏程序?qū)崿F(xiàn)的精確的曲線加工