王乃彥 閆明璞 上海電氣電站設(shè)備有限公司汽輪廠 (200240)
王乃彥(1980年~),男,工程師,專(zhuān)業(yè)方向?yàn)槠啓C(jī)制造。
在數(shù)控系統(tǒng)中,為方便程序編制,數(shù)控系統(tǒng)提供多種標(biāo)準(zhǔn)循環(huán),如西門(mén)子840D中的銑螺紋循環(huán)CYCLE90(),切槽循環(huán)CYCLE93()等,作為一組基本指令的集合,實(shí)現(xiàn)了一些典型結(jié)構(gòu)的加工。數(shù)控程序編制時(shí),編程人員并不需要知道固定循環(huán)內(nèi)部的結(jié)構(gòu)和指令,只需要按說(shuō)明填寫(xiě)相應(yīng)的參數(shù)就可完成程序的編制。標(biāo)準(zhǔn)循環(huán)簡(jiǎn)化了程序、降低了編程的難度和出錯(cuò)率,增強(qiáng)了數(shù)控程序的可讀性。這些標(biāo)準(zhǔn)循環(huán)主要使用子程序技術(shù),參考標(biāo)準(zhǔn)循環(huán)的編程方法,將一些通用性較強(qiáng)的結(jié)構(gòu)使用子程序編程,同樣可以簡(jiǎn)化程序,降低程序編制的難度,提高工作效率,方便數(shù)控程序的管理。
數(shù)控程序編制過(guò)程中,如果零件不同位置具有相同或相似的結(jié)構(gòu)(見(jiàn)圖1),為了簡(jiǎn)化程序,可以把這些重復(fù)的程序段單獨(dú)列出,按一定的格式編寫(xiě)成子程序。主程序在執(zhí)行過(guò)程中如果需要某一子程序,通過(guò)調(diào)用指令來(lái)調(diào)用該子程序,完成相關(guān)結(jié)構(gòu)的加工。子程序執(zhí)行完后返回到主程序,繼續(xù)執(zhí)行后面的程序段。使用子程序技術(shù),不但減少了程序長(zhǎng)度,增加了程序的可讀性,還降低了程序的出錯(cuò)率,方便程序的修改。
圖1 有相同結(jié)構(gòu)的零件
在加工中,經(jīng)常會(huì)遇到一些典型結(jié)構(gòu),幾何形狀比較復(fù)雜,尺寸要素較多,加工方法相同或相似,區(qū)別只是位置、尺寸不同。加工這類(lèi)典型零件時(shí),數(shù)控程序使用的參數(shù)多、程序復(fù)雜。采用普通子程序編程,加工不同的零件時(shí),不能直接被調(diào)用,必須對(duì)其中涉及到的尺寸、加工參數(shù)進(jìn)行修改。這樣就增加了子程序調(diào)用的難度,而且容易出錯(cuò)。在子程序技術(shù)中,有一種帶參數(shù)傳遞的子程序技術(shù),編制的子程序類(lèi)似于數(shù)控系統(tǒng)中標(biāo)準(zhǔn)循環(huán),可以把典型結(jié)構(gòu)的加工程序封裝在子程序中,將所有的幾何尺寸、加工參數(shù)等變量以參數(shù)的形式傳遞給該子程序。同時(shí)也可以把一組類(lèi)似的加工程序封裝在一個(gè)子程序中,把加工方式作為子程序參數(shù),使用時(shí)根據(jù)需要選擇加工方式。這樣可以減少程序數(shù)量,方便程序管理。
格式:
PROC PROGRAMNAME(VARIABLENTYP1 VARIABLE1,VARIABLENTYP2 VARIABLE2,…)
PROC:PROC指令,子程序標(biāo)記關(guān)鍵字
PROGRAMNAME:子程序名稱(chēng)
VARIABLENTYP1:參數(shù)1類(lèi)型,
VARIABLE1:參數(shù)1名稱(chēng),
VARIABLENTYP2:參數(shù)2類(lèi)型,
VARIABLE2:參數(shù)2名稱(chēng),
…
參數(shù)可以是普通的數(shù)據(jù)類(lèi)型,也可以是數(shù)組。如果是數(shù)組,則必須在數(shù)組類(lèi)型前加關(guān)鍵字VAR。
注意:帶 PROC 的定義指令必須在一個(gè)獨(dú)立的NC程序段中編程??梢宰疃嘤?127 個(gè)參數(shù)用于參數(shù)傳送。
子程序定義舉例:
PROC KONTUR(REAL LENGTH, REAL WITH)
N10 …
…
N50 X= LENGTH
N60 Y= WITH
…
N100 M17
子程序以M17或RET結(jié)束。
主程序中,在調(diào)用帶參數(shù)傳遞的子程序前,必需用EXTERN指令對(duì)子程序聲明,格式如下:
EXTERN NAME(TYP1, TYP2, …)
NAME:子程序名稱(chēng)
TYP1:參數(shù)1類(lèi)型,
TYP2:參數(shù)2類(lèi)型,
…
聲明子程序時(shí),參數(shù)類(lèi)型和順序都必須與定義時(shí)一致,每個(gè)參數(shù)類(lèi)型都必須填寫(xiě),不能省略。
注意:此處只有參數(shù)類(lèi)型,沒(méi)有參數(shù)名稱(chēng)。
舉例:
N10 EXTERN KONTUR(REAL, REAL);聲明子程序
N20 DEF REAL LENGTH,W
N30 LENGTH=10.18
N40 W=3.29
…
N100 KONTUR(LENGTH, W) ;調(diào)用子程序
…
N200 M30
在調(diào)用子程序時(shí),參數(shù)類(lèi)型和傳送的順序都必須與子程序定義時(shí)PROC語(yǔ)句中一致。但參數(shù)名稱(chēng)不一定與子程序定義時(shí)一樣,這里只是把主程序中的相關(guān)數(shù)值(或地址)傳遞給子程序,與參數(shù)名稱(chēng)無(wú)關(guān)。
在汽輪機(jī)蒸汽閥門(mén)中,有很多大螺距的鋸齒形螺紋(圖2),因螺距太大,無(wú)法使用普通的螺紋加工方式(車(chē)削或銑削)加工。為此專(zhuān)門(mén)開(kāi)發(fā)出加工大尺寸鋸齒形螺紋的新技術(shù)解決了大尺寸螺紋的加工,參數(shù)見(jiàn)附表。
圖2 鋸齒形螺紋結(jié)構(gòu)
附表
加工鋸齒形螺紋,主要采用分層切削,利用數(shù)控程序控制螺紋截面輪廓,采用普通菱形車(chē)刀多次車(chē)削,最終加工出符合圖樣要求的螺紋(見(jiàn)圖3)。
圖3 螺紋加工示意
因螺紋截面輪廓復(fù)雜,其精度和表面粗糙度要求較高。為了提高工作效率和便于編制數(shù)控程序,把整個(gè)加工過(guò)程分解成四部分:粗加工、精加工、圓角加工和倒角加工。粗加工以去除大部分多余材料為主要目的,在機(jī)床和刀具滿足要求的情況下盡可能地加大切削量。但在整個(gè)切削過(guò)程中,每刀的切削狀況不盡相同(比如每層的初始進(jìn)刀和后續(xù)切削工作狀況差別很大),這就要在加工過(guò)程中對(duì)其計(jì)算,調(diào)整切削參數(shù),以使其切削量盡量均衡。精加工和圓角、倒角加工過(guò)程中,精度和表面粗糙度為關(guān)注要點(diǎn)。刀尖圓弧對(duì)精度和表面粗糙度的影響尤為重要。這就要根據(jù)刀尖所處的位置對(duì)刀尖圓弧的影響進(jìn)行補(bǔ)償。以刀尖圓弧對(duì)加工輪廓的影響為例(見(jiàn)圖4):P點(diǎn)為刀具對(duì)刀零點(diǎn),很顯然,刀具切削點(diǎn)與P點(diǎn)不重合,并且其相對(duì)位置關(guān)系隨著切削點(diǎn)的變化在不斷變化。此處圓弧在空間為一螺旋曲面,切削原理與車(chē)圓弧不同,因此不能用G41(或G42)刀尖半徑補(bǔ)償。必須在程序中對(duì)P點(diǎn)和刀具切削點(diǎn)相對(duì)位置進(jìn)行計(jì)算,根據(jù)刀具切削點(diǎn)位置計(jì)算出P點(diǎn)位置,以便程序控制刀具路徑。
圖4 刀尖圓弧對(duì)加工輪廓的影響
因此,在此數(shù)控程序中,有大量的尺寸參數(shù)和加工參數(shù)參與運(yùn)算,并且要運(yùn)用大量的循環(huán)、判斷語(yǔ)句,整個(gè)程序非常復(fù)雜。如果采用普通編程方法,只要螺紋尺寸有所改變,或者加工方式和加工參數(shù)有所改變,程序中大量數(shù)據(jù)都必須相應(yīng)改變。為確保程序正確,在程序編制完成后需試加工,驗(yàn)證程序正確后才能應(yīng)用于生產(chǎn)。
產(chǎn)品中涉及此類(lèi)螺紋規(guī)格繁多,螺距從5~20mm,螺紋直徑從210~1 000mm不等,既有外螺紋又有內(nèi)螺紋,加工方法無(wú)法統(tǒng)一,車(chē)削加工和鏜削加工都會(huì)用到。采用普通方法編程,程序?qū)⑦_(dá)幾十種之多。如對(duì)每種程序都進(jìn)行驗(yàn)證,成本將非常高。結(jié)果是不但工作量大,不便于加工參數(shù)的調(diào)試,而且極易出錯(cuò)。因此采用普通方法編制的程序難以維護(hù),沒(méi)有通用性。采用普通的子程序技術(shù),雖然能解決普通編程方法存在的一些問(wèn)題,但對(duì)于主程序和子程序之間存在大量的參數(shù)傳遞的情況,采用普通子程序技術(shù)也存在較大困難。
采用帶參數(shù)的子程序技術(shù),把螺紋所有幾何尺寸和工藝參數(shù)提取出來(lái),作為螺紋子程序的參數(shù),增加相應(yīng)參數(shù)區(qū)分內(nèi)外螺紋、加工方法(直徑編程或半徑編程等)。通過(guò)這種編程方法可以把復(fù)雜的程序封裝在子程序里,在主程序調(diào)用該子程序時(shí)填寫(xiě)相應(yīng)參數(shù),即可方便地編制出各種規(guī)格的螺紋加工程序。以下以螺紋的粗加工子程序加以說(shuō)明。
%_N_rough_SPF
proc rough(real U_Dim,… ,int U_FS) SAVE DISPLOF;子程序定義
def int U_CengShu;變量定義
……
def real U_Feed
IF (U_FS<>-2)and(U_FS<>-1)and(U_FS<>1)and(U_FS<>2);參數(shù)檢查
MSG("U_FS 參數(shù)賦值錯(cuò)誤")
GOTOF MARK_1
ENDIF
……
U_ThStart=U_ThStart-U_zFinallow;數(shù)據(jù)運(yùn)算
……
U_CengShu=U_StartDNum
Begin_0:;層切循環(huán)
U_N=U_Width/U_zFeed
……
MSG("正在切削第"< U_CengShu=U_CengShu+1 Begin_1:;每層開(kāi)始切口循環(huán) U_Depth=U_Depth+U_pDepth …… REPEAT Begin_1 P=U_xNum IF U_Num<0 GOTOF MARKE_0 Begin_2:;每層切削循環(huán),包含運(yùn)算、選擇執(zhí)行語(yǔ)句 U_ThStart1=U_ThStart1-U_Feed …… REPEAT Begin_2 P=U_Num MARKE_0: …… MSG() MARK_1: M17 rough(real U_Dim,…,int U_FS) U_Dim:螺紋底孔(外圓)直徑 …… U_FS:加工方式 -2:直徑編程,內(nèi)螺紋;-1:半徑編程,內(nèi)螺紋;1:半徑編程,外螺紋;2:直徑編程,外螺紋 在子程序后應(yīng)附該程序的使用說(shuō)明以及特殊要求(如參數(shù)賦值范圍等),以便其他人在不用了解子程序內(nèi)部詳細(xì)信息的情況下就能直接調(diào)用,便于數(shù)控程序的共享。 %_N_NS650x20_MPF Extern rough(real,real,real,real,real,real,real,real,real,int,int,real,real,real,real,int,int);子程序聲明,如沒(méi)有此聲明,子程序不能被正確調(diào)用 G90 G18 G54 G00 T1 D1 X800 Z100 M3 S15 rough (650,20,0,-250,10.5,15.5,45.25,20,10,20,1,0.2,0,0.2,0.9,5,2) ;粗加工子程序調(diào)用 G00 X800 Z100 M05 M30 為了避免因調(diào)用子程序?qū)е履B(tài)G功能值的改變,導(dǎo)致后續(xù)程序產(chǎn)生不可預(yù)知的錯(cuò)誤,應(yīng)在PROC指令結(jié)束處添加SAVE指令。此指令的工作過(guò)程是在調(diào)用子程序前,將G功能的值暫時(shí)保存起來(lái)。調(diào)用子程序結(jié)束后,返回主程序(或調(diào)用此子程序的子程序)后,將G功能的值恢復(fù)到調(diào)用前的狀態(tài)。比如子程序中用G90或G91改變了絕對(duì)坐標(biāo)或相對(duì)坐標(biāo)狀態(tài)時(shí),不用SAVE指令,子程序結(jié)束返回主程序后將會(huì)出現(xiàn)錯(cuò)誤。 在子程序經(jīng)過(guò)調(diào)試、驗(yàn)證無(wú)誤后,可在PROC指令結(jié)束處添加DISPLOF指令,使程序在運(yùn)行時(shí)不顯示子程序內(nèi)部的程序段。這可使加工程序在運(yùn)行時(shí)操作界面顯得非常簡(jiǎn)潔(見(jiàn)圖5)。 加工過(guò)程中的重要信息可通過(guò)MSG指令在屏幕上方顯示出來(lái),適當(dāng)?shù)厥褂么酥噶羁墒共僮魅藛T及時(shí)、準(zhǔn)確地了解加工狀態(tài)和加工進(jìn)度,增強(qiáng)程序執(zhí)行的透明度。如上述例子中顯示加工到第幾層。 圖5 程序運(yùn)行界面 通過(guò)帶參數(shù)的子程序技術(shù),可以實(shí)現(xiàn)典型結(jié)構(gòu)加工的標(biāo)準(zhǔn)化、模塊化,方便程序的修改和優(yōu)化。編程人員開(kāi)發(fā)出子程序,編寫(xiě)出此子程序的使用說(shuō)明,其他人就可以根據(jù)說(shuō)明直接使用此子程序,只需要填寫(xiě)子程序需要的參數(shù),而不需了解子程序的工作原理及工作過(guò)程。從而避免了編程錯(cuò)誤,降低程序測(cè)試成本,降低了編程人員的工作強(qiáng)度,大大提高工作效率。3.2 子程序說(shuō)明
3.3 主程序
4 其他常用指令
5 結(jié)論