大能手CHNdanengshou
国内最大的综合型职业技能平台,帮助职业技术人员成长,推动社会和企业的技能水平发展。
数控加工过程会遇到一些非圆曲线,如椭圆,双曲线,抛物线以及编写大批相似零件的情况,这时可以用宏程序编写:只需改几个数据,便可避免大量重复编程,可见宏程序的优势显而易见。
下面数控专家周维泉老师举例说明了宏程序的思路和方法,感谢周老师的分享。
———— / BEGIN / ————
如图1所示的零件上有圆弧剖面螺旋槽,槽半径10mm,螺距25mm,外径93.82mm,槽圆弧中心在直径100mm的圆上。用图示R1.2的刀做精车,起刀位置取在槽心离端面50mm处。精车决定分19刀。
图1,用图示刀分19刀精车一个零件上的圆弧剖面螺旋槽
用刀尖圆心对刀和编程。图2是起刀位置的放大图。各刀起刀点的刀尖圆心位置都在R8.8的圆弧上,分19刀时相邻两刀的夹角为扇形角的18等分,是8°。
图2,起刀位置放大图
图3是从图上标注出的19个起刀位置点的指令值(X向是坐标值的两倍)。
图3,从图上标出19个起刀位置点的指令值
O1是用发那科G32指令编出的精车此零件的普通程序(也叫NC程序),为省篇幅略去了中间60段。
O1;(分19刀发那科系统NC程序,共76+6=82个段程序段,为找规律加了注释)
G54 S1000 M03;
T0101;
G00 X150 Z100;
N01 G00 X140;
N02 Z58.369; (Z1=50+8.8*cos18°)
N03 X94.561; (X1=100-17.6*sin18°)
N04 G32 Z-113 F25;
N05 G00 X140;
N06 Z57.909; (Z2=50+8.8*cos26°)
N07 X92.285; (X2=100-17.6*sin26°)
N08 G32 Z-113 F25;
……(略去N09~68段)
N69 G00 X140;
N70 Z42.091;(Z18=50+8.8*cos154°)
N71 X92.285; (X18=100-17.6*sin154°)
N72 G32 Z-113 F25;
N73 G00 X140;
N74 Z41.631;(Z19=50+8.8*cos162°)
N75 X94.561; (X18=100-17.6*sin162°)
N76 G32 Z-113 F25;
G00 X140;
X150 Z100 M05;
M30;
程序中每一刀用4段,第二段是Z向到达起始位置;第三段是X向到达起始位置。这对指令数据是从图3中抄录的。车19刀用76段,加上头尾这个NC程序共82段,很长。
如果试车后觉得17刀就够了(这时相邻两刀间的夹角是9°),那么重新编程前图2要重画,图3要重标指令值。改一次分刀数,以上工作要做一遍,非常麻烦。下面来编内含变量、演算式和条件转向语句的宏程序。
图4是在图2的基础上加画了一个直角三角形。从01内的注释结合图4可以看到,这19组数据是有规律的。图中α是圆心与某点连线与X轴的夹角。直角三角形的斜边长等于槽半径减去刀尖半径。动点的Z指令值等于50与斜边长乘以α的余弦之和,X指令值等于100与斜边长乘以α的正弦后的两倍之差。
图4,各起刀位置点的指令值与其对应的α角度值的关系图
O2是用发那科G32指令编出的精车此件的宏程序,编这个宏程序只用了3个变量(其中2个变量需要赋值),下面做介绍。
O2;(发那科系统用3个变量的宏程序,共15个段程序段)
N01 #8=18; (#8代表刀尖圆心点所在的角度α,此赋初始值)
N02 #7=19; (#7代表精车分刀数N)
N03 #15=144/[#7-1]; (#15代表两刀间的角度间隔α)
N04 G54 S1000 M03;(设定坐标系指定转速指定主轴正转)
N05 T0101; (指令刀位号和刀补号)
N06 G00 X150 Z100; (到达总出发点)
N07 G00 X140; (X向到达车螺纹每刀出发点)
N08 Z[50+8.8*COS[#8]]; (动点的Z值)
N09 X[100-17.6*SIN[#8]]; (动点的X指令值)
N10 G32 Z-113 F25; (车一刀)
N11 #8=#8+#15; (计算下一刀的α值)
N12 IF [#8 LE 162] GOTO 07; (如果α未超过162°就继续车)
N13 G00 X150; (X向回到总退回点)
N14 Z100 M05; (Z向回到总退回点)
N15 M30;
用变量#8代表角度α(也可以用别的号码变量),N01段中给它赋初始值即第1刀的α值。用变量#7代表分刀数(也可以用其他的号码变量),决定分19刀就给它赋19值。变量#15代表两刀间的角度间隔Δα,它等于扇形角除以分刀数减1。#15是计算过程中用的过度变量,不用赋值。
N07~N10是车一刀的四段,其中中间两段内的Z和X指令的不是具体数据而是演算式。N11段是计算下一刀的α值。N12段是条件转向语句,其含义为:如果α(#8)小于等于(发那科不能直接用
这个宏程序才15段。欲改变分刀数(例如想改成分17刀车),只要改N02段中#7等式后的值(例如改成17)就可以了,使用非常方便。
编这个宏程序难吗?也不难。您觉得提高效率吗?是否可以为您带来一些操作灵感,欢迎大家留言讨论。
公众号:大能手
-END-
领取专属 10元无门槛券
私享最新 技术干货