張衛(wèi)東
(吉林工程技術(shù)師范學(xué)院 機(jī)械工程學(xué)院,長(zhǎng)春 130052)
宏程序編程的優(yōu)點(diǎn)及在數(shù)控車(chē)床加工中的應(yīng)用
張衛(wèi)東
(吉林工程技術(shù)師范學(xué)院 機(jī)械工程學(xué)院,長(zhǎng)春 130052)
通過(guò)對(duì)FANUC-oi數(shù)控系統(tǒng)B類(lèi)用戶(hù)宏程序編程特點(diǎn)的介紹,與其他編程方式相比的優(yōu)點(diǎn),并通過(guò)具體的編程實(shí)例,來(lái)說(shuō)明宏程序在數(shù)控車(chē)床生產(chǎn)加工實(shí)踐中仍然具有其他編程方式所不具備的優(yōu)勢(shì),在數(shù)控加工領(lǐng)域,尤其是數(shù)控車(chē)加工領(lǐng)域,依然具有廣泛的應(yīng)用空間。
宏程序;優(yōu)點(diǎn);數(shù)控車(chē)床;應(yīng)用
一組以子程序的形式存儲(chǔ)且?guī)в凶兞康某绦蚪凶龊瓿绦?,或叫用?hù)宏程序。調(diào)用宏程序的指令叫做宏程序調(diào)用指令簡(jiǎn)稱(chēng)宏指令。
宏程序是數(shù)控系統(tǒng)所具有的特殊編程功能,其實(shí)質(zhì)是把一組實(shí)現(xiàn)某種功能的指令,以子程序的形式預(yù)先存儲(chǔ)在系統(tǒng)存儲(chǔ)器中,通過(guò)調(diào)用指令執(zhí)行這一功能。在主程序中,編入相應(yīng)的調(diào)用指令就能實(shí)現(xiàn)這些功能。
早期的數(shù)控程序只有主程序,后來(lái)又可以使用子程序和多層嵌套。運(yùn)行這種程序,系統(tǒng)只能做插補(bǔ)運(yùn)算(如圓弧、直線),無(wú)法進(jìn)行其他運(yùn)算(如橢圓等)。而宏程序由于將變量引入加工程序,且允許使用邏輯判斷語(yǔ)句。所以,對(duì)于不同零件、不同部分具有相似形狀的零件,通過(guò)變量編程,增加了程序的通用性和靈活性。
普通程序中只能使用常量,常量之間不能運(yùn)算,程序只能順序執(zhí)行,不能跳轉(zhuǎn),一個(gè)程序只能描述一個(gè)幾何形狀,缺乏適用性和靈活性;宏程序可以使用變量,并給變量賦值,變量之間可以運(yùn)算,程序運(yùn)行可以跳轉(zhuǎn),能執(zhí)行一些有規(guī)律變化的動(dòng)作(如橢圓、拋物線等)。
(1)到目前為止,在數(shù)控加工領(lǐng)域,各種CAD/CAM軟件逐漸普及,有些編程人員不論程序大小、加工難易,都習(xí)慣并樂(lè)于使用CAD/CAM軟件來(lái)編程加工。而CAD/CAM軟件生成的程序通常都很大,容易突破系統(tǒng)內(nèi)部程序存儲(chǔ)空間的限制,因此,絕大部分程序不得不通過(guò)RS-232串口通信來(lái)實(shí)現(xiàn)DNC在線加工的方式進(jìn)行。如FANUC-oi、三菱M60、西門(mén)子802C等主流數(shù)控系統(tǒng),系統(tǒng)所支持的最大傳輸波特率為19200bit/s,即便如此當(dāng)計(jì)算精度高、進(jìn)給速度大時(shí),程序傳輸速率往往無(wú)法跟上機(jī)床的節(jié)拍,在加工中,可以看到機(jī)床的進(jìn)給運(yùn)動(dòng)有明顯的斷續(xù)、遲滯。實(shí)踐證明,波特率越高,傳輸越不穩(wěn)定,導(dǎo)致DNC加工方式下的加工效率大打折扣。而宏程序的程序段較少,一個(gè)合理、優(yōu)化的宏程序一般不會(huì)超過(guò)60行,字節(jié)數(shù)不超過(guò)2KB。FANUC-oi系統(tǒng)標(biāo)準(zhǔn)配置的內(nèi)部系統(tǒng)存儲(chǔ)空間一般為128KB或256KB,完全可以容納復(fù)雜的宏程序。
(2)在零件的批量生產(chǎn)中,其最基本也是最重要的原則是:在保證質(zhì)量的同時(shí),以盡可能少的時(shí)間,加工盡可能多的產(chǎn)品,來(lái)降低生產(chǎn)成本。另外零件的尺寸精度與形狀位置精度等方面必須保證高度的一致性,這就要求操作者能夠非常方便的調(diào)整程序中的各項(xiàng)加工參數(shù)(如刀具尺寸、補(bǔ)償值、進(jìn)給速度等等),如果其中任何一項(xiàng)參數(shù)發(fā)生變化,自動(dòng)編程軟件就要根據(jù)變化后的參數(shù)重新計(jì)算刀具軌跡,在經(jīng)過(guò)后置處理生成程序,這個(gè)過(guò)程十分繁瑣,且非常耗時(shí)。而使用宏程序,就能體現(xiàn)出其“一次編程,受益終生”的優(yōu)點(diǎn)。即操作者不需要修改程序,只需對(duì)各加工參數(shù)所對(duì)應(yīng)的自變量賦值做個(gè)別調(diào)整,就能迅速地將程序調(diào)整到最優(yōu)化的狀態(tài),以提高生產(chǎn)效率,降低生產(chǎn)成本。
(3)在數(shù)控車(chē)床所加工的盤(pán)類(lèi)、軸類(lèi)零件的形狀主要由凹槽、圓孔、回轉(zhuǎn)面等組成,其幾何因素主要由點(diǎn)、直線、圓弧以及橢圓、拋物線等構(gòu)成,這些都是基于三角函數(shù)、解析幾何的應(yīng)用,均可用三角函數(shù)表達(dá)式和參數(shù)方程加以表述,而這正是宏程序的強(qiáng)項(xiàng),可發(fā)揮其強(qiáng)大的作用。
此外,在加工一些有特殊應(yīng)用的零件時(shí),如變距螺紋、錐度螺紋的加工以及鉆深可變式深孔鉆加工等,自動(dòng)編程軟件不會(huì)輕易地解決,但在這些方面宏程序卻可發(fā)揮其優(yōu)勢(shì)。
FANUC系統(tǒng)提供兩種用戶(hù)宏程序,即A類(lèi)和B類(lèi)宏程序。A類(lèi)宏程序是FANUC系統(tǒng)的標(biāo)準(zhǔn)配置,尤其是早期的型號(hào)如FANUC-oTD等,但由于需使用“G65Hm”格式的宏指令來(lái)表述各種數(shù)學(xué)運(yùn)算和邏輯關(guān)系,可讀性差,極不直觀,所以很少使用。B類(lèi)宏程序雖非其標(biāo)準(zhǔn)配置,但絕大多數(shù)的FANUC系統(tǒng)都支持B類(lèi)宏程序如FANUC-oi系列型號(hào),由于可通過(guò)其系統(tǒng)操作面板上的“+”、“-”、“*”、“/”、“=”、“[]”等符號(hào)進(jìn)行賦值和數(shù)學(xué)運(yùn)算,極為方便、直觀,所以在實(shí)際生產(chǎn)加工中得到廣泛的應(yīng)用。
本文將主要介紹B類(lèi)宏程序。
普通的加工程序直接用數(shù)字指定G代碼和移動(dòng)量,如G01 X100.0。使用用戶(hù)宏程序時(shí),除了可直接指定數(shù)值外,還可以指定變量號(hào),可通過(guò)程序或MDI操作面板來(lái)改變?cè)摂?shù)值,如#1=#2+100;
G01 X#1 F300;
3.1.1 變量的表示方法
當(dāng)指定一個(gè)變量時(shí),在“#”號(hào)的后面指定變量號(hào),如#5、#109、#1005等。此外,還可以用表達(dá)式進(jìn)行表示,但其表達(dá)式必須全部寫(xiě)入中括號(hào)“[]”中,如#[#100]、#[#1001 -1]、#[#6/2]等
3.1.2 變量的種類(lèi)
根據(jù)變量號(hào),變量分為四種:局部變量、公共變量、系統(tǒng)變量、空變量。各種變量的用途、特性等各不相同。其功能、種類(lèi)等見(jiàn)表1。
表1 變量功能表
3.1.3 變量的賦值
賦值是將一個(gè)數(shù)值賦予一個(gè)變量。如#1=10,它表示#1的值是10。#1是變量,“#”號(hào)是變量符號(hào),10是賦予變量#1的值,“=”是賦值符號(hào)。
在給變量賦值時(shí),還應(yīng)注意以下幾點(diǎn):
(1)賦值符號(hào)“=”兩邊的內(nèi)容不可隨意互換。
(2)一個(gè)賦值語(yǔ)句只能給一個(gè)變量賦值。
(3)可以多次給一個(gè)值賦值,但最后賦的值生效。
(4)輔助功能代碼(M、S、T等)的變量有最大值限制。
宏程序具有賦值、邏輯運(yùn)算、函數(shù)運(yùn)算等功能,其運(yùn)算類(lèi)似于數(shù)學(xué)運(yùn)算,且運(yùn)算順序與數(shù)學(xué)運(yùn)算相同,用各種數(shù)學(xué)符號(hào)表示,變量之間進(jìn)行的運(yùn)算表述的形式為:#i=(表達(dá)式)。需注意的是:
(1)函數(shù) SIN、COS 等的角度單位是°'和″時(shí)必須換算成°。如 60°30'應(yīng)表示為 60.5°。
(2)賦值語(yǔ)句有運(yùn)算功能,其運(yùn)算順序與數(shù)學(xué)運(yùn)算順序相同,依次為:函數(shù)運(yùn)算、乘除運(yùn)算、加減運(yùn)算。
FANUC-oi系統(tǒng)B類(lèi)宏程序常用的運(yùn)算指令見(jiàn)表2。
表2 FANVC-oi系統(tǒng)B類(lèi)宏程序常用運(yùn)算指令
控制指令可以控制用戶(hù)宏程序的程序流程,即起到控制程序流向的作用。FANUC-oi系統(tǒng)宏程序的控制指令有以下幾種:
3.3.1 無(wú)條件轉(zhuǎn)移語(yǔ)句
格式為:GOTO n n為程序段號(hào)。例如GOTO 200;含義是,當(dāng)執(zhí)行該程序段時(shí),將無(wú)條件轉(zhuǎn)移到N200程序段執(zhí)行。
3.3.2 有條件轉(zhuǎn)移語(yǔ)句
格式一為:IF[條件表達(dá)式]GOTO n.。例如 IF[#1NE#100]GOTO 200;含義是如果#1不等于#100,則轉(zhuǎn)移到N200程序段執(zhí)行。
格式二為:IF[條件表達(dá)式]THEN。例如IF[#1EQ#2]THEN#3=10;含義是如果#1與#2的值相同,10賦值給#3。
3.3.3 循環(huán)語(yǔ)句
格式為:WHILE[條件表達(dá)式]DO m(m=1,2,3)
……….
END m;含義是,當(dāng)指定的條件滿(mǎn)足時(shí),就循環(huán)執(zhí)行從DO至END之間的程序段,反之,執(zhí)行END之后的程序段。
FANUC-oi系統(tǒng)宏程序條件表達(dá)式的含義、條件、注釋及示例見(jiàn)表3。
表3 FANVC-oi系統(tǒng)宏程序條件表達(dá)式的含義、條件、注釋
使用控制指令時(shí)應(yīng)注意
(1)條件表達(dá)式必須插在兩個(gè)變量或變量與常量中間,且用“[]”封閉,表達(dá)式可以替代變量,不能使用不等號(hào)。
(2)DO循環(huán)可以三重嵌套,條件轉(zhuǎn)移可以跳出循環(huán),但不能進(jìn)入循環(huán)區(qū)內(nèi)。
(3)WHILE語(yǔ)句中的DO m與END m必須成對(duì)使用,且DO m一定要在END m指令之前。
(4)當(dāng)指定DO而沒(méi)有指定WHILE語(yǔ)句時(shí),從DO到END之間的程序段將會(huì)無(wú)限循環(huán)。
WHILE語(yǔ)句與IF語(yǔ)句從實(shí)現(xiàn)的功能來(lái)看,具有很高程度的相互替代性,從使用的限制來(lái)看,IF語(yǔ)句受到的限制更小,因此使用更靈活。
3.4.1 宏程序的格式
宏程序的的編寫(xiě)格式與子程序相同,格式為:
在上述內(nèi)容中,可以使用普通的編程指令,也可以使用變量、邏輯指令、運(yùn)算指令等。變量值在宏程序調(diào)用指令中賦值。
3.4.2 宏程序調(diào)用指令
宏程序調(diào)用一般用以下方法:非模態(tài)調(diào)用指令G65,模態(tài)調(diào)用指令G66、G67,G代碼調(diào)用、M代碼調(diào)用、T代碼調(diào)用等。
(1)非模態(tài)調(diào)用指令G65
格式:G65 P L;引數(shù)賦值
說(shuō)明:G65宏程序調(diào)用指令
P宏程序的程序號(hào)
L重復(fù)次數(shù)(1~9999),省略該值時(shí),系統(tǒng)默認(rèn)1次
G65可調(diào)用地址P指定的宏程序,并將賦值的數(shù)據(jù)傳送至用戶(hù)宏程序中,因該指令是非模態(tài)指令。所以,只在G65程序段調(diào)用宏程序。
引數(shù)賦值由地址符及數(shù)值組成,給變量賦予實(shí)際數(shù)值。
引數(shù)賦值共有兩種類(lèi)型,即類(lèi)型Ⅰ和類(lèi)型Ⅱ,分別見(jiàn)表4、表5。
表4 引數(shù)賦值類(lèi)型Ⅰ
表5 引數(shù)賦值類(lèi)型Ⅱ
在使用引數(shù)賦值時(shí),應(yīng)注意:
①任何變量前必須指定調(diào)用指令G65。
②地址G、L、N、O和P不能在自變量中使用。
③不需指定的地址可省略,則該地址對(duì)應(yīng)的變量為空。
④地址可以不按字母順序指定,但需符合字母地址的格式,而I、J、K必須按字母順序指定。
⑤類(lèi)型Ⅱ用于傳遞如三維坐標(biāo)值,使用A、B、C各一次,I、J、K各十次,IJK的下標(biāo)(1~10)用于確定自變量的指定順序,實(shí)際編程中不寫(xiě)。
⑥類(lèi)型Ⅰ和類(lèi)型Ⅱ混合使用時(shí),由系統(tǒng)內(nèi)部自動(dòng)識(shí)別,后指定的變量類(lèi)型有效。
(2)模態(tài)調(diào)用指令G66
說(shuō)明:G66 宏程序調(diào)用指令
P宏程序的程序號(hào)
L重復(fù)次數(shù)(1~9999),省略該值時(shí),系統(tǒng)默認(rèn)1次
G67 取消指令
當(dāng)使用模態(tài)調(diào)用指令G66后,每執(zhí)行一段軸移動(dòng)指令的程序段,宏程序就被調(diào)用一次。指定G67取消指令,其后面的程序段就不再執(zhí)行模態(tài)宏程序調(diào)用。使用G66指令應(yīng)注意:
①G66必須在變量前指定。
②在G66程序段中,以及無(wú)移動(dòng)指令的程序段中,不能調(diào)用宏程序。
③調(diào)用可以嵌套四級(jí),包括非模態(tài)指令G65和模態(tài)指令G66,但不包括子程序調(diào)用指令M98。
④每次執(zhí)行G66指令時(shí),不再設(shè)定局部變量。
在數(shù)控車(chē)削編程加工中,尤其是在非圓曲線類(lèi)(橢圓、雙曲線、拋物線)等零件的編程加工中,宏程序可體現(xiàn)出簡(jiǎn)潔、方便、通用性好等優(yōu)點(diǎn)。
例1:在配備FANUC-oi操作系統(tǒng)的數(shù)控車(chē)床上加工如圖1所示拋物線零件,設(shè)拋物線開(kāi)口距離為V,拋物線的一般方程為X2=±2PZ或Z2=±2PX。編制零件拋物線部分的宏程序。
圖1 待編程加工的拋物線零件
工藝分析:編程時(shí),將工件坐標(biāo)系原點(diǎn)設(shè)置在拋物線頂點(diǎn)上,采用擬合法,即在X向分段,以0.2~0.5毫米為一個(gè)步距,X為自變量,Z為X的函數(shù)。我們可以編制一個(gè)只用變量不用具體數(shù)據(jù)的宏程序,然后在主程序中調(diào)出該宏程序,為上述變量賦值。這樣,對(duì)于不同拋物線、不同起始點(diǎn)、不同步距的拋物線曲線類(lèi)零件,只需修改用戶(hù)宏指令段內(nèi)的賦值數(shù)據(jù),而無(wú)需重新編制程序。
拋物線一般方程可轉(zhuǎn)換為:Z=±X2∕2P或X=±Z2∕2P。
用變量表示為:#26= ±[#24* #24]∕[2* #16]或#24= ±[#26* #26]∕[2* #16]
自變量含義:#24=X;X為拋物線頂點(diǎn)的橫向絕對(duì)坐標(biāo)值
#26=Z;Z為拋物線頂點(diǎn)的縱向絕對(duì)坐標(biāo)值
#17=Q;Q為拋物線焦點(diǎn)坐標(biāo)在Z軸上絕對(duì)值的2倍
#22=V;V為拋物線的開(kāi)口距離
#6=K;K為X向遞減均值
#9=F;F為進(jìn)給速度
參考程序見(jiàn)表6。
表6 參考程序表
續(xù)表
隨著數(shù)控技術(shù)、軟件技術(shù)的不斷發(fā)展,在數(shù)控加工領(lǐng)域,各種自動(dòng)編程軟件得到了很大程度的普及,但其缺點(diǎn)也是顯而易見(jiàn)的,工作量大、加工參數(shù)不易修改、在線加工時(shí)的傳輸速度影響加工效率等等。本文通過(guò)對(duì)用戶(hù)宏程序的介紹及對(duì)編程實(shí)例的分析,說(shuō)明其具有靈活、通用、簡(jiǎn)捷等優(yōu)點(diǎn),特別是在數(shù)控車(chē)批量生產(chǎn)以及非圓曲線回轉(zhuǎn)體零件的編程加工方面具有的,其他編程方式所沒(méi)有的強(qiáng)大優(yōu)越性。綜上所述,宏程序因其具有的眾多優(yōu)勢(shì)和優(yōu)點(diǎn),而使其依然具有強(qiáng)大的生命力及廣泛的應(yīng)用空間。
[1]馮志剛.數(shù)控宏程序編程方法、技巧與實(shí)例[M].北京:機(jī)械工業(yè)出版社,2007.
[2]周曉宏.數(shù)控車(chē)床操作技能考核培訓(xùn)教程[M].北京:中國(guó)勞動(dòng)社會(huì)保障出版社,2009.
Advantages of Macro Programming and Applications in CNC Lathe Processing
ZHANG Wei-dong
(College of Mechanical Engineering,Jilin Teachers'Institute of Engineering and Technology,Changchun 130052,China)
Based on introducing the characteristics of macro programming by B class users in FANUC-oi numerical control system,this article gives the advantages compared to other programming.Through concrete programming examples,it shows that macro program has the advantages that other programming ways don't have in numerical control lathe processing,which have extensive application space in numerical control processing field,especially in CNC lathe processing field.
macro program;advantage;numerical control lathe;application
TG519.1
A
1009-3907(2012)04-0388-07
2012-02-27
張衛(wèi)東(1969-),男,吉林長(zhǎng)春人,實(shí)驗(yàn)師,技師,主要從事數(shù)控加工研究。
責(zé)任編輯:吳旭云