需要铣削和攻螺纹的螺纹底孔一般是先用钻头(粗)钻,再用铣刀(精)铣而成的。这里介绍一个精铣螺纹底孔的通用宏程序。图5-3所示为用牛鼻刀螺旋铣内圆锥面的编程用图。当半锥角α=0°时,内圆锥面变为内圆柱面。图中的是牛鼻刀又称环形铣刀,有大径D和刀片半径R两个参数。当R=D/2时,为球头铣刀;当R很小时,为方肩铣刀或圆柱铣刀。
编写适用于发那科系统的螺纹底孔精铣通用宏程序O509如下:
图5-3 用牛鼻刀螺旋铣内圆锥面的编程用图
O509;
#100=; (#100为加工时锥径的修调值,切削大直径孔时取正值,反之取负值)
#1=a; (#1代表圆锥的半锥角,圆柱孔时等于0)
#2=b; (#2代表圆锥在上平面内的大端直径)
#11=h; (#11代表圆锥的高度)
#3=c; (#3代表铣削时的垂直层距)
#4=i; (#4代表分步铣削的分步角)
#5=j; (#5代表顶面之上的空切距离)
#6=k; (#6代表底面之下的空切距离)
#7=d; (#7代表铣刀大径D)
#18=r; (#18代表刀片半径R)
#21=u; (#21代表顺铣或逆铣,顺铣取3,逆铣取2)
#22=v; (#22代表铣刀刃齿数)
#23=w; (#23代表每转中的每齿进给)
#19=s; (#19代表主轴转速S)
#20=t; (#20代表刀补号)
#24=x; (#24代表孔中心在工件坐标系中的X坐标值)
#25=y: (#25代表孔中心在工件坐标系中的Y坐标值)
N01 #17=#18∗[1-SIN[#1]]; (#17代表切削点到铣刀底面的Z向距离)
N03 #8=0; (#8代表动角,在该段中赋初始值0)
N04 #10=#2/2+#5∗TAN[#1]+#18∗[1-COS[#11]]-#7/2+#100/2; (#10代表铣刀中心线与锥孔中心线间的距离)
N05 #12=#3∗#4/360; (#12代表每步下降的距离)
N06 #13=#3∗TAN[#1]; (#13代表两层的半径之差)
N07 #14=#13∗#4/360; (#14代表每步半径减少值)
N08 G54G95G00X0Y0; (设定工件坐标系用每转进给)
N09 G52X#24Y#25Z-#17; (建立局部坐标系)
N10 X0Y0S#19M03; (铣刀平移到圆锥中心)
N11 G43H#20Z#5; (铣刀加入Z向长度补偿值后下降到切削起始平面)
N12 X-1; (铣刀沿-X方向平移1mm)
N13 G#21X#10R[#10/2+0.5]F[#22∗#23/2]; (铣刀在水平面内转半圈入刀)
N14 WHILE[#5GT-[#11+#6]]DO1; (循环头:满足条件就在N15~N21段间循环执行)
N15 IF[#21EQ3]THEN#8=#8+#4; (顺铣时动角增加一个分步角,为切削一步做准备)
N16 IF[#21EQ2]THEN#8=#8-#4; (逆铣时动角减小一个分步角,为切削一步做准备)
N17 #10=#10-#14; (重新计算铣刀中心线与锥孔中心线之间的距离)
N18 #15=#10∗COS[#8]; (重新计算动点的X坐标值)
N19 #16=#10∗SIN[#8]; (重新计算动点的Y坐标值)
N20 #5=#5-#12; (重新计算动点的Z坐标值)
N21 G#21X#15Y#16Z#5R[#10+#14/2]F[#22∗#23]; (铣刀以圆弧插补方式切削一步)
N22 END1; (N22段是循环尾)
N23 #10=#2/2-[#11+#6]∗TAN[#1]+#18∗[1-COS[#1]]-#7/2+#100/2; (计算底面铣刀中心线与锥孔中心线间的距离)
N24G#21X[#10∗COS[#8]]Y[#10∗SIN[#8]]Z-[#11+#6]R#10; (N24段是走一步正好到结束平面)
N25I-[#10∗COS[#8]]J-[#10∗SIN[#8]]; (N25段是在结束平面内水平铣一整圈)
N26 G00 X0 Y0 M05; (N26段是铣刀平移到与锥孔中心线重合)
N27 G52 X0 Y0 Z0; (N27段是取消局部坐标系)
N28 G49 Z100;(取消铣刀长度偿值后使铣刀上升到锥口平面之上100mm处)
N29 X0Y0;(铣刀平移到工件坐标系原点)
N30 M30;
精铣具体螺纹的底孔时,只要将具体尺寸和所选的工艺参数(包括顺铣/逆铣)给程序中16个一位数号和两位数号变量赋值即可。程序首段中的#100变量是用来调整孔径大小的,理论上等于0。当铣出的孔径偏小时,再铣前应加大#100变量值。此值加大多少,再铣出的孔径理论上就大多少。反之亦然。
对于发那科系统,如果把N04段中的“+#100/2”改成“-#[12000+#20]”并去掉第1段,加工时就可用调整刀具补偿页面中相应的铣刀半径值来调节铣出的孔径。这相当于使用G41或G42指令(程序中实际没有写入G41或G42指令)。当铣出的孔径偏小时,再铣前应减小铣刀半径值:再铣出孔径的增加值与铣刀半径减小值的比例是2∶1;铣刀半径减小0.1mm,再铣出孔径就会增加0.2mm。
O509宏程序还可用来倒角。例如,图5-4所示为用R3mm球头铣刀精铣NPT 1/2管螺纹锥底孔并倒2mm×30°角。可查得该管螺纹在端面上的底孔径是ϕ18.321mm。精铣前已钻出ϕ17.6mm×22mm的预孔。铣深取15mm,螺旋铣削的层距取0.5mm,分步角取6°(也可取3°或12°等),顶面之上空切距离取0.2mm,底面之下空切距离取0,选择顺铣。此铣刀有2个刃齿,每转中每齿进给取0.05mm,主轴转速取3000r/min,刀补号取1,假定此孔(中心)在XY平面中的工件原点上。
赋#1=1.7899,#2=18.321,#11=15,#3=0.5,#4=6,#5=0.2,#6=0,#7=6,#18=3,#21=3,#21=3,#22=2,#23=0.05,#19=3000,#20=1,#24=0,#25=0和#100=0后,铣一刀,测量孔径。如果测得的孔径比要求的小0.12mm,那么把#100改赋0.12值后再铣一刀就可以了。如果程序中未用#100而用了#[12000+#20]系统变量,那么把1号刀的半径R设为2.94(初始设定是3.0),再铣一刀就可以了。图5-5所示为赋值后用CAXA“编程助手”(CAXA制造工程师的一个功能)仿真出的轨迹。图5-6所示为加了倒角的仿真轨迹。铣倒角还是用O509通用宏程序,但需对其内的变量重新赋值如下:#1=60,#2=22.321,#11=1.18,#3=0.15,#4=6,#5=0.2,#6=0,#7=6,#18=3,#21=3,#22=2,#23=0.05,#19=3000,#20=1,#24=0,#25=0。由于倒角大小不用那么精确,对#100赋值0就可以了。图5-6中倒角轨迹未与孔口接上,是因为图示为铣刀球心点的轨迹。
如果用O509通用宏程序来精铣圆柱螺纹的圆柱底孔,那么#1赋值0。
把O509“翻译”成适用于西门子802D系统的精铣螺纹底孔的通用宏程序,并将其命名为PP509.MPF,程序如下:
PP509.MPF
R100=_; R100为加工时锥径的修调值,切削大直径孔时取正值,反之取负值
R1=a; R1代表圆锥的半锥角,圆柱孔时等于0(www.xing528.com)
R2=b; R2代表圆锥在上平面内的大端直径
R11=h; R11代表圆锥的高度
R3=c; R3代表铣削时的垂直层距
图5-4 用球头铣刀精铣NPT 1/2管螺纹锥孔并倒2mm×30°角
图5-5 赋值后用CAXA“编程助手”仿真出的轨迹
图5-6 加了倒角的仿真轨迹
R4=i; R4代表分步铣削的分步角
R5=j; R5代表顶面之上的空切距离
R6=k; R6代表底面之下的空切距离
R7=d; R7代表铣刀大径D
R18=r; R18代表刀片半径R
R21=u; R21代表顺铣/逆铣,顺铣取3,逆铣取2
R22=v; R22代表铣刀刃齿数
R23=w; R23代表每转中每齿进给
R19=s; R19代表主轴转速S
R20=t; R20代表刀补号
R24=x; R24代表孔中心在工件坐标系中的X坐标值
R25=y; R25代表孔中心在工件坐标系中的Y坐标值
N01 R17=R18∗(1-SIN(R1)); R17代表切削点到铣刀底面的Z向距离
N03 R8=0; R8代表动角,在该段中赋初始值0
N04 R10=R2/2+R5∗TAN[R1]+R18∗[1-COS[R1]]-R7/2+R100/2; R10代表铣刀中心线与锥孔中心线间的距离
N05 R12=R3∗R4/360; R12代表每步下降的距离
N06 R13=R3∗TAN(R1); R13代表两圈的半径之差
N07 R14=R13∗R4/360; R14代表每步半径减少值
N71 T1 D=#20; 激活刀具,用R20刀补号
N08 G54 G17 G95 G00 X0; 设定工件坐标系用每转进给
N09 TRANSX=R24Y=R25Z=-R17;零点偏移
N10 X0Y0S=R19M03; 铣刀平移到圆锥中心
N11 Z=R5; 铣刀下降到切削起始平面
N12 X-1;铣刀沿-X方向平移1mm
N13 G=R21X=R10CR=R10/2+0.5F=R22∗R23/2; 铣刀在水平面内转半圈入刀
N14 WHILER5>-(R11+R6); 循环头:如果条件满足就循环执行
N15 IFR21=2GOTOFMA2; 如果是逆铣,就转去执行MA2段
N151 R8=R8-R4; 顺铣时动角减小一个分步角,为切削一步做准备
N152 GOTOFMA3; 无条件转去执行MA3段
N16 MA2:R8=R8+R4; 逆铣时动角增加一个分步角,为切削一步做准备
N17 MA3:R10=R10-R14; 重新计算铣刀中心线与锥孔中心线之间的距离
N18 R15=R10∗COS(R8); 重新计算动点的X坐标值
N19 R16=R10∗SIN(R8); 重新计算动点的Y坐标值
N20 R5=R5-R12; 重新计算动点的Z坐标值
N21 G=R21X=R15Y=R16Z=R5CR=R10+R14/2F=R22∗R23TURN=0; 铣刀以圆弧插补方式切削一步
N22 ENDWHILE; 循环尾
N23 R10=R2/2-(R11+R6)∗TAN(R1)+R18∗(1-COS(R1))-R2/2+R100/2; 计算底面铣刀中心线与锥孔中心线间的距离
N24 G=R21 X=R10∗COS(R8)Y=R10∗SIN(8)Z=-(R11+R6)CR=R10TURN=0; 铣刀走一步正好到结束平面
N25 I=-R10∗COS(R8)J=-R10∗SIN(R8); 铣刀在结束平面内水平铣一整圈
N26 G00X0Y0M05; 铣刀平移到与锥孔中心线重合
N27 TRANS; 零点偏移取消
N28 D0Z100; 铣刀取消补偿值后上升到锥口平面之上100mm处
N29 X0Y0; 铣刀平移到工件坐标系原点
N30 M02
此程序中参数的含义同O509中相同号码变量的含意,程序的使用方法也与O509程序一样。注意此程序中循环内的程序段比O509中循环内的程序段多2段,所以分步角(R4)应取得略大些。如果铣小孔走刀又快出现(循环内)来不及算(指计算时间超过走刀时间)的情况,可用如下方法来解决:
去掉“R21=u”段,删去N17段中的“MA3:”,然后在顺铣时删去N15、N152和N16段,在逆铣时删去N15、N151、N152段和N16中的“MA2:”,这样循环内就只有6个程序段了。
图5-7所示为用球头铣刀铣NPT 3/4内螺纹底孔并倒角的照片。
图5-7 用球头铣刀铣NPT 3/4内螺纹底孔和倒角的照片
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。