黃繼戰,付 紅,肖根先
(1.江蘇建筑職業技術學院 智能制造學院,江蘇 徐州 221116; 2.徐州市模具新技術工程研究中心,江蘇 徐州 221116)
相同輪廓矩陣分布的銑削加工在零件生產中極為常見,對于這種零件編程來說,采用軟件編程和手工編程方法編制數控程序較為繁瑣,反復編程,工作量大,編程效率低,尤其在相同輪廓且數目較多的情況下問題更甚,且程序冗長,使用麻煩。因此,筆者研究采用變量編程方法編制用戶宏程序,主程序只需改變參數值調用該宏程序,便可用于矩陣分布相同的輪廓銑削加工,具有一定的實用價值和借鑒意義。
一組以子程序的形式存儲并帶有宏語句的程序稱為用戶宏程序;調用宏程序的指令稱為宏程序調用指令[1]。普通數控程序也可以含有宏語句,這樣的程序稱為普通宏程序。
(1) 變量的表示。變量是宏程序基本的特征,用井號“#”和一個數字或表達式的組合來表示一個變量,如#1,#2,#[#2+#3-9]。將變量跟隨在地址字母的后面,稱為變量的引用[2],如G01X#101Y[#102-8]F#9。
(2) 變量的類型。變量分為局部變量(#1~#33)、全局變量(#100~#149、#500~#549)、系統變量(#1000~)和空變量。局部變量指的是在一個宏程序中局部使用的變量,它們可以賦給不同的數值,且互不影響。全局變量在不同的宏程序中具有相同的意義,是同一變量,為各宏程序所共有。系統變量是CNC系統固定用途的變量。空變量的值總是空的。在設計加工類宏程序時,主要使用的是局部變量和全局變量[3]。
(3) 變量的賦值。變量在使用前,須先往里面存儲數據,存儲數據的過程即變量的賦值。賦值有直接賦值和自變量賦值兩種。直接賦值如#1=30,#2=#1+100。在G65指令調用宏程序時需自變量賦值時,編程一般采用自變量賦值Ⅰ類型,它用大寫英文字母后加數值進行賦值,字母與局部變量一一對應,從而實現向宏程序傳遞數據。
宏程序的運算指令類似于數學運算,用各種數學符號來表示,常用的運算指令有算數指令、函數指令、舍入指令、輔助指令及邏輯指令[4]。運算指令的運算優先級為:函數-乘除(邏輯與)-加減(邏輯或、異或),編程時還可根據需要使用方括號“[]”改變運算的先后順序。上述運算指令為宏程序的設計提供了有力的工具。
編程時主要采用有條件轉移分支語句和循環語句的方式進行條件分析并作出決策,以控制宏程序的流程,進而實現程序的循環功能,這是宏程序智能性的體現。
條件轉移語句編程格式:IF [<條件表達式>] GO TO n,功能為如果條件式成立,程序則轉移到程序段號為n的程序段執行,否則,程序順序執行下一個程序段。循環語句編程格式:
WHILE [<條件表達式>] DO n;
……(循環體)
END n;
功能為當條件表達式結果為真時,則一直執行DO n到END n之間的循環體,否則,程序跳出循環,執行END n后的程序段。n的取值須為1、2、3,否則CNC系統會產生報警。另外循環嵌套最多三級,且嵌套為包含關系,絕不允許循環間交叉[4]。
L 建立的相同輪廓陣列I×J編程模型和工件坐標系如圖1所示。工件坐標系的X、Y軸零點在工件左下邊角點,Z軸零點在工件上表面,P11表示相同輪廓1.1的中心點,其他與此類似。根據圖1模型幾何關系定義相同輪廓陣列參數的變量如下:變量#4表示陣列的總行數(Y向的相同輪廓),變量#5表示陣列的總列數(X向的相同輪廓),變量#24表示第一個方槽中心點P11的X坐標值,變量#25表示第一個方槽中心點P11的Y坐標值,變量#1表示行數,代表第幾行,變量#22表示行距,變量#2表示列數,代表第幾列,變量#21表示列距。 圖1 編程模型 設計的刀具走刀路線為:首先加工第1行,即從行首開始加工,順次加工相同輪廓1.1→1.2→1.3→……→1.J;然后加工第2行,這里主要考慮到加工效率問題,因此,為了減少刀具空行程,第2行從行尾開始加工,依次加工相同輪廓2.J→2.J-1→2.J-2……→2.1;接著加工第3行,從行首開始加工,順次加工相同輪廓3.2→3.3→……→3.J,接著加工第4行,從行尾開始加工,……,依次循環,直至全部加工完畢。從上可知,刀具走刀路線呈平行往復S狀,使刀具空行程最短,路線最優,加工效率最高。 由模型和走刀路線可得,刀具自下而上逐行加工時,自變量為行變量#1,因變量為#1行的Y坐標:#25+#22*[#1-1]。若#1為奇數,刀具自左而右順次加工各輪廓,自變量為列變量#2,因變量為#1行#2列的X坐標:#24+#21*[#2-1];若#1為偶數,刀具自右向左依次加工各輪廓,自變量仍為列變量#2,因變量為#1行[#5-#2]列的X坐標:#24+#21*[#2-1]。 程序編制流程是零件加工工藝路線的反映,是設計者對零件加工工藝方案、編程思路、建模和算法的具體描述[5]。綜上所述,所設計的程序編制流程如圖2所示,外循環完成相同輪廓陣列的自下而上的逐行加工功能;內循環完成當前行各輪廓的加工功能,當前行數若為奇數,內循環自左而右加工各輪廓,若為偶數,內循環自右而左加工各輪廓,這樣便可實現所有輪廓的加工。 圖2 宏程序流程圖 基于2.1節所述,根據FANUC 0i 系統程序指令即可編寫用戶宏程序。為了便于宏程序的編寫與使用,這里采用自變量賦值I類型,并列自變量字母(地址)與局部變量的對應關系如表1所列。 表1 自變量字母與局部變量的一對一關系 編制的宏程序如下: O8002(宏程序號) #1=1;(行變量賦初值1) WHILE[#1LE#4]DO1;(當#1≤#4時,循環1繼續) #15=#25+#22*[#1-1]; (計算#1行的Y坐標,#25為左下第1輪廓中心的Y坐標) #2=1;(列變量賦初值1) WHILE[#2LE#5]DO2;(當#2≤#5時,循環2繼續) #14=#24+#21*[#2-1];(由左向右加工,計算#1行#2列的X坐標,#24是左下第1個輪廓中心的X坐標) IF[[#1AND1] EQ 0] THEN #14=#24+#21*[#5-#2]; (若變量#1值為偶數,則由右向左加工,需要反向計算#1行[#5-#2]列的X坐標#14) G52 X#14Y#15;(建立局部坐標系,簡化編程) M98 P6001;(調用輪廓加工子程序) #2=#2+1;(循環1次,列變量增1) END2;(循環2結束) #1=#1+1;(循環1次,行變量增1) END1;(循環1結束) G52 X0Y0;(取消局部坐標系) M99;(宏程序結束) (1) 本程序所采用的刀具走刀路線為往復平行式,在實際生產中還有一種單向平行式路線比較常用,即首先由左至右順次加工第1行各輪廓,然后還是由左而右依次加工第2行各輪廓,接著,依然是由左至右順次加工第3行各輪廓,依次類推,直至所有輪廓加工完畢。本程序只需刪除程序段“IF[[#1 AND 1] EQ 0] THEN #14=#24+#21*[#5-#2]”即可用于相同輪廓陣列采用單向平行式走刀路線的加工。 (2) 本程序采用調用子程序方式實現各相同輪廓的銑削加工,這里的輪廓可以是任意形狀,若形狀改變,只需重新設計子程序即可實現相同輪廓陣列的加工。另外,程序中使用G52指令來簡化子程序編制,避免了子程序輪廓XY坐標采用G91編程的麻煩。 (3) 本程序還可以推廣到孔的陣列分布加工,只需把程序中調用子程序的程序段改為孔加工固定循環指令程序段或銑孔子程序即可。 某相同輪廓陣列零件如圖3所示。材料為鋁合金,批量生產,本工序加工內容是16行×12列的共計192個方槽,方槽尺寸為20 mm×20 mm×8 mm,精度等級為IT8。確定加工工藝如下:每個輪廓先粗銑再精銑,精銑余量取0.5 mm。刀具選擇為直徑8 mm的高速鋼鍵槽銑刀,為縮短輔助時間,采用同一把刀具進行粗、精銑。加工設備選擇為FANUC 0i數控加工中心,型號VC600。方槽加工刀具Z軸走刀路線采用螺旋下刀,XY平面內走刀路線采用圓弧切向切入切出,可使切削過程平穩,避免接刀痕,保證加工質量。根據工材、刀材和加工設備等參數,確定切削用量為:粗銑時,切削深度取8 mm,主軸轉速S取1 600 r/min,Z軸螺旋下刀進給速度和XY平面內進給速度F分別取150 mm/min和500 mm/min;精銑時,切削深度取值8 mm,主軸轉速S取2 000 r/min,XY平面內進給速度F取400 mm/min。 圖3 某零件相同輪廓陣列 建立的工件坐標系如圖3所示,X、Y軸零點在零件左下邊角點,Z軸零點在零件上表面。 由圖3可得,本方槽陣列幾何關系參數為:總行數16行,總列數12列,列間距離23 mm,行間距離19 mm,左下角第1個輪廓中心X坐標值為30 mm、Y坐標值為30 mm。由于方槽數量太多,采用手工編程或軟件編程較為繁瑣,且程序冗長,使用不便。故確定采用所設計的宏程序進行編程。主程序調用宏程序自變量賦值為I16、J12、U23、V23、X30、Y30。 結合3.1節零件分析,編制的主程序如O3所示,編制的方槽子程序如O6001、O6002所示,以供參考: O3;(主程序號) G17G21G40G49G15G69G80;(程序初始化) G91G28Z0;(刀具Z軸從當前點回零) G54G90G00X0Y0S1600M03;(建立工件系G54) G43Z50H01;(刀具快速運動到Z50) G65 P8002 X30 Y30 I16 J12 U23 V23;(G65調用宏程序O8002,加工16行×12列的方槽) G00Z200;(刀具快速至Z200) M30;(主程序結束) O6001;(被程序O8002調用) G00 X3;(刀具快速至螺旋銑中心) Z5;(刀具快速至Z5) N3 G01 Z0.5 F1000; N4 G03 I-3 Z-2.5 F150; N5 G03 I-3 Z-5.5; N6 G03 I-3 Z-8.5; N7 G03 I-3F500;(N3~N7,刀具螺旋銑孔下刀) D01M98P6002;(調程序O6002,粗銑D01=7.5) S2000F400;(設置精銑時主軸轉速和進給速度) D02F400M98P6002;(調程序O6002,精銑D01=8) M99;(子程序結束) O6002;(被程序O6001調用) G41 G01 X7.95 Y-4.95 ;(建立刀具半徑左補償) G03 X10 Y0 R7 ;(刀具圓弧切向切入輪廓) N13 G01 Y10, R5; N14 G01X-10, R5; N15 G01Y-10, R5; N16 G01 X10, R5; N17 G01 Y0;(N14~17,銑方槽,倒圓指令編程) G03 X7.95 Y4.95 R7;(刀具圓弧切向切出工件) G40 G01 X3 Y0 F2000;(取消刀具半徑左補償) G00 Z50;(刀具快速至Z50) M99;(子程序結束) 主程序通過G65調用所編制的用戶宏程序O8002,該程序再采用M98調用方槽子程序O6001,這里為簡化編程,方槽子程序O6001又調用子程序O6002,即可實現該零件相同輪廓陣列的加工。 針對生產中銑削不同陣列的相同輪廓需要反復編程的問題,通過對相同輪廓矩形陣列的幾何關系分析,建立了編程模型,設計了宏程序,并進行了加工實例驗證。結果表明,該宏程序短小強悍,可用于加工任意行數、任意列數的任意輪廓陣列,使用時僅需改變陣列參數自變量賦值,并根據輪廓修改子程序即可用于加工,通用性強,柔性好,有效縮短了該類零件程序的編制和校驗時間,提高了效率,具有實用價值和參考意義。2 相同輪廓陣列的宏程序設計
2.1 相同輪廓陣列的宏程序設計
2.2 相同輪廓陣列的程序代碼
2.3 程序討論
3 加工實例
3.1 零件分析
3.2 宏程序的運用
4 結 語