黃繼戰,范玉,付紅
(1.江蘇建筑職業技術學院 智能制造學院,江蘇 徐州 221116; 2.徐州市模具新技術工程研究中心,江蘇 徐州 221116)
孔系加工在機械加工中極為普遍,其矩形陣列分布模式最為常見,對此類零件編程采用自動編程和常量手工編程方法編制加工程序較為繁瑣,反復編程,效率低下,當孔數量較多時更甚,且編制的程序冗長,使用不便。因此,本文研究采用宏指令編制通用的宏程序,只需改變參數值即可用于加工各種矩形陣列孔系,具有一定的現實意義和實用價值。
一組以子程序的形式存儲并帶有變量的程序稱為宏程序;調用宏程序的指令稱為宏程序調用指令[1]。FANUC 0i系統宏程序與普通數控程序最大的不同是采用變量編程,變量用符號“#”和變量號組成(#1,#2,#3,…),變量號還可以用總括號表示為表達式,數控編程時將跟在地址符后的數字用變量代替,即可實現變量的引用[2-3]。變量分為局部變量(#1 ~#33)、全局變量(#100 ~#149、#500 ~#549)和系統變量,編制加工類宏程序主要采用局部變量和全局變量。
變量的賦值有直接賦值和自變量賦值兩種。當主程序使用G65非模態調用宏程序時,通過自變量賦值可由局部變量對應的地址(字母)向宏程序傳遞數據。宏程序的運算與數學運算相類似,用各種數學符號來表示,其指令能對變量執行諸多算術、三角函數、輔助和邏輯運算等,為宏程序的編制提供了有力的工具。宏程序的運算優先順序為函數(SIN、COS、ATAN等)-乘除、邏輯與(*、/、AND)-加減、邏輯或、邏輯異或(+、-、OR、XOR等),數控編程時根據實際需要可用總括號改變運算的先后順序[4]。
根據給定的條件進行分析并作出決策是宏程序最強大的功能,也是宏程序具有智能的體現。宏程序借助IF和WHILE語句可以控制宏程序的流程,來實現宏程序的循環功能。分支語句格式:IF[條件表達式] GOTO n;它表示若條件表達式成立,則轉移到n程序段執行,若條件表達式不成立,則程序執行下一程序段。
WHILE語句格式如下:

當條件表達式結果為真時,程序執行DOm和ENDm之間的循環體;當條件結果為假時,程序跳出循環,執行ENDm后的程序段[5]。另外,循環最多可三級嵌套,而且嵌套級之間不允許出現循環的交叉。
本文宏程序采用G65調非模態調用,編程格式:G65 P<p> L<l> <自變量賦值>;其中:<p>為要調用的宏程序號,<l>為重復次數,默認為1,<自變量賦值>為主程序傳遞到宏程序的數據。
建立矩形陣列m×n孔系編程模型和編程坐標系如圖1所示。編程坐標系的XY坐標軸零點為工件左下角點,Z坐標軸零點為工件上頂面。根據圖1編程模型定義矩形孔系參數和工藝參數變量如下:#24表示第一個孔中心的X坐標值,#25表示第一個孔中心的Y坐標值,#1行數,表示第幾行,#4表示行間距,#2列數,表示第幾列,#3表示列間距,#5表示孔系矩形列數(X向孔數),#6表示孔系矩形行數(Y向孔數)。

圖1 矩形陣列孔系編程模型
設計本孔系加工刀具走刀路線為:先加工第1行,即從孔1.1開始加工,依次加工孔1.2→1.3→…→1.n,然后加工第2行,矩形陣列孔系編程所要考慮的主要是效率問題,因此為了減少刀具空行程,第2行從行尾開始加工,依次加工孔2.n→2.n-1→2.n-2…→2.1,接著加工第3行,從孔3.1開始加工,依次加工孔3.2→3.3→…→3.n,依次循環,直至全部孔加工完畢。整個刀具走刀路線呈現蛇形S狀,使刀具空行程最短,加工路徑最優,加工效率最高。
基于上述孔系宏程序編程需要二級循環嵌套,一級循環完成矩形孔系自下而上的逐行加工功能;二級循環完成當前行各孔的加工功能,若當前行數為奇數,二級循環自左而右加工各孔,若當前行數為偶數,二級循環自右而左加工各孔,如此便可實現矩形孔系所有孔的加工。具體編程流程為:首先,通過自變量賦值傳遞數據給宏程序的變量,行自變量賦初值為1。其次,一級循環進行條件判斷,行自變量當前值是否不大于行數,當條件結果為假時,一級循環結束,當條件結果為真時,程序執行一級循環體。接著,列自變量賦初值為1,二級循環進行條件判斷,列自變量當前值是否不大于列數,當條件結果為假時,二級循環結束,當條件結果為真時,程序執行二級循環體,判斷當前行自變量值是否為偶數,如果行自變量值不為偶數,程序從左而右加工當前孔,如果行自變量值為偶數,程序從右而左加工當前孔。然后,列自變量值遞增1,二級循環再進行條件判斷,若條件結果為真,程序繼續執行二級循環體,加工當前行的下一個孔,周而復始,當二級循環條件結果為假時,程序跳出二級循環體,表示當前行所有孔加工完畢。最后,行自變量值遞增1,一級循環再進行條件判斷,若條件結果為真,程序繼續執行一級循環體,加工下一行孔,周而復始,當一級循環條件結果為假時,程序跳出一級循環體,表示所有行加工完畢。
基于2.1節所述,根據FANUC 0i數控系統編程指令即可編寫宏程序代碼。為了便于宏程序編制及使用,列自變量地址和對應的局部變量關系如表1所示。

表1 宏程序自變量和對應的局部變量關系
編制的矩形孔系通用宏程序為:

1)本程序各孔加工為固定循環G81方式,實際應用中可根據工藝要求選擇固定循環其他方式,如鉆削深孔選擇G73或G83方式、高精度精鏜孔選擇G76方式、攻右旋螺紋選擇G84方式等,諸如此類,只需根據工藝要求修改程序中的程序段“N50 G98G81X#12Y#13Z#26R#18 F#9;”,即可應用加工。
2)本程序采用的刀具走刀路線為雙向蛇形S狀,在生產中還有一種單向平行走刀路線較為常用,即先從左到右依次加工第一行各孔,再從左到右依次加工第二行各孔,依次類推,直至所有孔加工完畢。本程序僅需刪除下面若干程序段:IF [[#1 AND 1]EQ 0]GOTO 10;GOTO 50;N10 #12=#24+#3*[#5-#2];#13=#25+#4*[#1-1];即可用于本孔系采用單向平行走刀路線的加工。
3)如果各孔精度要求較低且孔徑較大時,可采用立銑刀粗銑→精銑加工方案,這里僅需把宏程序O7001中的程序段“N50 G98G81X#12Y#13Z#26R#18F#9;”修改為“G00 X#12Y#13;”,再加上銑孔程序段群,并采用G91增量方式編程,或者將銑孔程序段群編制成為子程序,由本程序采用調用程序段“M98 PXXXX LXXXX;”調用。此外,本程序還可以推廣到非孔類加工的其他矩形陣列分布加工,程序處理方法與銑孔類似,不再贅述。
某矩形陣列分布孔系工程零件二維圖如圖2(a)所示,三維模型如圖2(b)所示。零件材料為鋁合金,本工序加工內容是加工361個孔直徑為5 mm的19行×19列矩形孔系,深度為14 mm的通孔,精度等級為IT11,加工方案選擇為先用直徑3 mm的高速鋼中心鉆鉆各孔定心孔,再用直徑5 mm的高速鋼麻花鉆加工各孔。由于孔數目太多,采用普通手工編程或自動編程極為繁瑣,費力費時,程序冗長,因此確定采用前文所編制的宏程序。確定零件編程坐標系X、Y坐標軸零點在零件左下邊角點,Z坐標軸零點在零件上頂面。
經分析圖2,可得本矩形孔系參數值為:列間距為19 mm,行間距為19 mm,列數(X向孔數)為19個,行數(Y向孔數)亦為19個,共計361個孔,左下角第1個孔中心X坐標值為29 mm、Y坐標值為29 mm。由于該孔系孔深與孔直徑的比值為14:5=2.8,該值小于5,定心孔亦如此,屬于淺孔加工,因此,鉆定心孔和鉆通孔均選擇固定循環G81方式加工。根據工件材料、刀具材料和機床等,確定有關工藝參數為:循環R點取3 mm,鉆定心孔時主軸轉速S取2500 r/min,進給速度F取120 mm/min;鉆通孔時主軸轉速S取2000 r/min,進給速度F取200 mm/min。

圖2 某零件矩形孔系
主程序通過G65非模態調用所編制的矩形孔系宏程序O7001,即可實現該零件的孔系加工。根據零件分析,加工本矩形孔系鉆中心孔自變量賦值:C19、I19、J19、K19、F120、R3、X29、Y29、Z-2,而鉆通孔自變量賦值只需將鉆定心孔自變量賦值F120改為F200,Z-2改為Z-15.5,這里考慮到鉆頭刀尖,鉆削深度為通孔深度14mm+刀尖高度1.5 mm=15.5 mm,其余保持不變。至此,可編制該零件孔系加工主程序為:


加工實例表明,該宏程序短小精悍,可用于加工任意行數、任意列數的矩形均布孔系,使用時僅需改變孔系參數自變量賦值,像使用固定循環指令一樣方便,通用性強,大幅縮短了此類零件矩形孔系編程和程序校驗時間,提高了工作效率,能更好地發揮數控機床的性能,對類似的編程具有借鑒意義。