浅谈几种FANUC宏程序在加工中心上的应用
2015-04-25曹国彬刘振才贾广涛
曹国彬,刘振才,贾广涛
(河南平高电气股份有限公司,河南平顶山467001)
宏程序短小简洁,逻辑性强,具有极好的易读性和易修改性。通用宏程序在编制后可灵活调用,使用时直接赋值即可,简单方便,既减少了编程工作量,提高了编程效率,又拓宽了机床编程功能的范围,节省了机床内存空间。在使用过程中拥有CAD/CAM 软件不可取代的优势,因此被广泛应用于企业数控生产加工中。
重点对作者所在企业加工常用的圆周均布孔定位、铣内螺纹、螺旋铣内孔宏程序、平行阵列孔群定位宏程序编制及应用进行探讨。
1 圆周均布孔定位宏程序
加工圆周均布孔的编程,正常情况需要先把每个孔的位置用人工或在画图软件上进行计算,工作效率非常低,输入坐标数值时也不能保证输入代码和数值的正确性,还要反复检查确认,费工费时,用宏程序让机床自己运算就方便多了。
O9100 (FEN.DU)//程序号及名称
#32 =1 //孔数初始赋值
#2 =360 //终止孔角度
WHILE [#32LE#11] DO1 //当#32 小于等于设定孔数时循环1 继续
#33 =#1 +#2* [#32-1] /#11 //计算角度
#101=#24+#18* COS [#33]//计算孔位置X 坐标
#102=#25+#18* SIN [#33]//计算孔位置Y 坐标
X#101Y#102 //执行X、Y 坐标
#32 =#32 +1 //#32 递增1
END1 //循环1 结束
#101 =0 //#101 归零
#102 =0 //#102 归零
M99 //宏程序结束返回
例如:加工图1 所示8 ×φ10 mm、深度30 mm、分度圆半径为50 mm 的圆周均布孔主程序如下:
O1
M6T1(φ10Z)
G0G90G54X0Y0
G43Z100.H1M3S1000
M8
G98G83Z-30.R3.Q3.F100L0
G65P9100H8A15B360X0Y0R50
G0G80G91G28Z0M5
M9
M30
图1 示例零件一
自变量赋值说明:
H8 表示孔数为8 个;
A15 表示孔初始角15°;
B360 表示终止角度360°;
X0 表示分度圆圆心X 坐标0;
Y0 表示分度圆圆心Y 坐标0;
R50 表示分度圆半径50。
此宏程序不仅适用360°范围内圆周均布孔,对于任何角度内圆周均布孔也一样适用,使用时只需对#2 按照实际需要重新赋值。
2 铣内螺纹、螺旋铣内孔宏程序
铣内螺纹、螺旋铣内孔宏程序如下:
O9300(XI.KOU)//程序号及名称
#29 =1 //初始赋值1
G0Z5.//G0 至Z5 处
G0G91X-[#18-#4]F#9 //增量快移至X 轴进刀点
G1Z-5.F100 //增量工进至Z 轴进刀点
#21 =ABS[#26/#17]//求进刀次数
#21 =FUP[#21]//大取整
#22 =ABS[#26/#21]//求每次进刀深度
WHILE[#29LE#21]DO1 //当#29≤#21 循环1 继续
G2I[#18-#4]Z-#22F#9 //顺时针螺旋铣一周
#29 =#29 +1 //#29 递增1
END1 //循环1 结束
G1G91X#5F#9 //增量退刀
G90 //绝对坐标
G0Z50.//快移至Z50 处
M99 //宏程序结束返回
例如:加工图2 所示M64 ×2,深度30 mm 的内螺纹孔主程序如下:
O2
M6T2
G0G90G54X0Y0
G43Z100.H2M3S2000
M8
G0Z5
G65P9300R32Z30I15J3Q2F300
G0Z50.
G91G28Z0M5
M9
M30
图2 示例零件二
自变量赋值说明:
R32 表示内螺纹大径(半径);
Z30 表示内螺纹扣深;
I15 表示内扣刀半径;
J3 表示径向退刀量3,要稍大于螺距,避免退刀时碰伤孔壁;
Q2 表示每次下刀距离2 mm;
F300 表示走刀量300 mm/min。
注意:铣螺纹时,内螺纹扣深Z 与每次下刀距离Q 必须能够整出,整除得出#22 螺距。
(1)此宏程序也可用于螺旋铣内孔,方法与铣螺纹相同。
(2)如果需要加工外螺纹或螺旋铣外圆,只需将宏程序中(共3 处) [#18-#14],改为[#18 +#14],退刀量J 设为负值即可。
(3)如果要加工圆周均布内螺纹孔,只需在圆周均布孔定位宏程序中再调用铣内螺纹宏程序即可。
例如:
加工图3 所示8 ×M36 ×2,深度30 mm,分度圆半径为100 mm 的圆周均布内螺纹孔主程序如下:
O9200(FEN.DU)//程序号
#32 =1 //孔数初始赋值
#2 =360 //终止孔角度
WHILE[#32LE#11]DO1 //当#32 小于等于设定孔数时循环1 继续
#33 =#1 +#2* [#32-1]/#11 //计算角度
#101=#24+#18* COS[#33]//计算孔位置X 坐标
#102 =#25 +#18* SIN[#33]//计算孔位置Y 坐标
X#101Y#102 //执行X、Y 坐标
G65P9300R18Z30I12J3Q2F300 //调O9300 程 序赋值铣内螺纹
#32 =#32 +1 //#32 递增1
END1 //循环1 结束
#101 =0 //#101 归零
#102 =0 //#102 归零
M99 //宏程序结束返回
图3 示例零件三
加工圆周均布内螺纹孔主程序调用宏程序如下:
O3
M6T3
G0G90G54X0Y0
G43Z100H1M3S2000
G0Z5
G65P9200H8A15B360X0Y0R100
G0G80G91G28Z0M5
M30
自变量赋值同上。
3 平行阵列孔定位宏程序
平行阵列孔定位宏程序[1]55-56如下:
O9800 //程序号
G52X#24Y#25 //第一孔圆心处建立局部坐标系
G68X0Y0R#1 //第一孔圆心为中心坐标系旋转#1
#10 =1 //纵行计数赋初始值1
WHILE[#11LE#6]DO1 //如果#10 ≤#6 循环1继续
#11 =1 //横行计数赋初始值1
WHILE[#11LE#5]DO2 //当#11 ≤#5 时循环2继续
IF[[#10AND1]EQ0]GOTO1 //如果#10 为偶数时转移至N1 行
#12 =#3* [#11-1]+ #4* COS[#2]* [#10-1]//发出行孔X 坐标
#13 = #4* SIN[#2]* [#10-1]//发出行孔Y坐标
GOTO5 //跳转至N5 行
N1#12 =#3* [#5-#11]+#4* COS[#2]* [#10-1]//返回行孔X 坐标
N5#13 =#4* SIN[#2]* [#10-1]//返回行孔Y坐标
X#12Y#13 //执行X、Y 坐标
#11 =#11 +1 //#11 递增1
END2 //循环2 结束
#10 =#10 +1 //#10 递增1
END1 //循环1 结束
G80G69 //取消固定循环、取消坐标系旋转
G52X0Y0 //取消局部坐标系,回复G54 原点
M99 //宏程序结束返回
如加工图4 平行阵列孔,主程序调用宏程序如下:
O4
M6T4(φ10Z)
G0G90G54X0Y0
G43Z100.H4M3S1000
M8
G98G83Z-30.R3.Q3.F100L0
G65P9800X0Y0A15B60C30I40J5K4
G0G91G28Z0M5
M9
M30
图4 示例零件四
自变量赋值说明:
X0 表示第一孔X 坐标;
Y0 表示第一孔Y 坐标;
A15 表示横孔中心线与X 轴夹角;
B60 表示横孔与纵孔中心线间夹角;
C30 表示矩阵横向孔中心距;
I40 表示矩阵纵向孔中心距;
J5 表示横向孔数5;
K4 表示纵向孔数4。
在平常的工作中,有很多地方都可以用宏程序,比如:粗铣内外轮廓可以用宏程序分层;加工锥面可用宏程序计算坐标;工件计数也可以编个计数宏程序,程序结尾运行一下,方便计数。
从模块化加工的角度看,宏程序具有模块化的思想和条件,编程人员只需要根据零件几何信息和不同的数学模型即可完成相应的模块化加工程序设计,应用时只需要把零件加工信息、加工参数等输入到相应的模块调用语句中,就可以很方便地编制出加工程序,使编程人员从繁琐的、大量重复性的编程工作中解脱出来,起到事半功倍的效果[1]2-3。
[1]陈海舟.数控铣削加工宏程序及应用实例[M].北京:机械工业出版社,2006.