宏程序基础知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宏程序基础知识
针对目前很多同行兄弟对宏程序不了解,本人按照自己的经验,循序渐进的引导大家去揭开宏程序的真实面目。当然,想通过我这篇文章完全掌握宏那是不可能的,因为这需要你实际去多应用,才可能掌握的。所以如果你想一步到位,那可以关闭本文了,本文没有这功效,如果你还有一点想法,那就开始吧,一步一步告诉你怎么样去编辑和应用宏程序:
1相对编程
O0001
G0 X0 Z0
G1 U1 W1 G98 F100
M30
定位到X0 Z0位置后,X/Z轴均相对插补1,终点坐标为X1 Z1,程序结束。
2相对编程重复执行同样的程序段
O0002
G0 X0 Z0
G1 U1 W1 G98 F100
U1 W1
M30
定位到X0 Z0位置后,X/Z轴相对插补1后,再相对插补1,终点坐标为X2 Z2,程序结束。
3调用子程序重复执行同样的程序段
O0003(程序1)
G0 X0 Z0
N10 G1 U1 W1 G98 F100
M99 P10
M30
定位到X0 Z0位置后,X/Z轴相对插补1后,下一段为强制返回N10段,所以再相对插补1,然后又强制返回,所以本程序将一直插补,不能结束。
O0004(程序2)
G0 X0 Z0
N10 G1 U1 W1 G98 F100
IF #5041=10 GOTO 20(当X轴坐标=20,跳到N20段,如果不等于20,顺序执行)
M99 P10
N20 M30
本程序与O0003程序的区别是在M99强制返回前加了一段判断语句,该判断句的意思是如果#5041=10(#5041是一个系统宏变量,表示当前X轴坐标,不同系统处理可能不同,这里仅做示例),则跳到N20段执行,如果不等于10,则顺序执行。从程序中可以看出:第
一次插补后,X轴坐标为1,不符合该判断条件,所以顺序执行下一段M99 P10,此段又将程序返回到插补段执行,执行完为X2,也不符合条件,就这样重复执行插补,直到X轴插到10,则符合条件,跳到N20段执行,结束程序,终点坐标为X10 Z10。
本例涉及到了宏变量及宏判断,如想多了解一点,请参考附录7.1、7.3。当然,更多的还需请参考你使用系统的相关说明书。
4利用宏变量计算后,再执行同样的程序段
O0005(程序1)
G0 X0 Z0
#1=0
#2=0
#11=1
#12=1
N5 #1=#1+#11
#2=#2+#12
N10 G1 X#1 Z#2 G98 F100
IF #1<10 GOTO 5(当X轴坐标<10,跳回到N5段,重新计算后再运行,如果大于等于10,顺序执行)
N20 M30
本程序引入了更多的变量,但执行后的结果与O0004一样,与O0004程序区别如下:
1.本程序插补采用绝对指令(如X),O0004程序采用相对指令(如U);
2.本程序插补坐标是变量(如#1),O0004程序插补坐标是固定值(如1)
从这两点可以看出:当宏变量的变化值为一固定值时,也可采用相对编程来执行。但这种情况很少,采用宏计算的值,一般都是符合某个规律变化,但数值不会简单的恒加或恒减。本程序相关执行解释如下:
1.定位到切削起点X0 Z0;
2.对需用来计算的宏变量定义及赋初始值,如把#1定义为X轴坐标,并赋初始值为0;
把#11定义为X轴每次进给的增加量,与O0004程序中指定的U1自增性质相同;
3.计算当前需进给到的位置,如#1=#1+#11,执行后程序指定的X坐标变为1,所以
执行下面G1段时,X轴可插补到1的位置;
4.用计算后的结果进行插补,如本次运算后,两轴插补到X1 Z1;
5.判断插补后位置是否到达所需位置,如本例采用X轴终点坐标进行判断,本次X
轴终点坐标<10,满足条件,所以返回到N5段执行。N5段为计算X轴位置,上一次计算后,#1=1了,所以再次计算时,因本身为1,再加上#11,则#1变为2了,所以下面执行插补,X轴将插补到2的位置,插补完后进行判断,就这样循环下去,直到X轴插补到10,此时判断条件也不满足,所以按顺序执行后面的程序。
O0006(程序2)
G0 X0 Z0
#1=0
#2=0
#11=1
#12=1
N10 G1 X#1 Z#2 G98 F100
#1=#1+#11
#2=#2+#12
IF #1≤10 GOTO 5(当X轴坐标≤10,跳回到N5段,重新计算后再运行,如果大于10,顺序执行)
N20 M30
本程序与O0005的执行结果一致,不同点在于先执行还是先计算,理论上都行,但在进行判断时需注意。如在O0005程序中,计算结果=10时,且已经执行了,所以可以用<10做判断结果,但在O0006程序中,计算结果=10时,还没有执行,所以要用≤10做判断结果。
本例涉及到了宏运算及宏判断,如想多了解一点,请参考附录7.2、7.3。当然,更多的还需请参考你使用系统的相关说明书。
5宏程序实际应用
采用宏程序加工如下圆弧:
如本图中,坐标原点在工件右端面中心,圆弧起点坐标为X40 Z0,圆弧终点坐标为X140 Z-50,圆弧半径为R50。如采用宏程序车削此圆弧,需先定义几个宏变量: #1:圆弧X轴上任意点的半径值,乘以2再加上X40,即为圆弧上当前点X轴位置。
#2:圆弧Z轴上的位置;
#3:圆弧半径,R50;
#4:该值在编程时不用,但有利于我们计算。假设我们知道#1的长度,那么通过勾股定理(即在直角三角形中,两直角边的平方等于斜边的平方,还不清楚请参考初中几何书),就可以算出#4的长度,算出#4的长度后,就能得出#2的长度,即得到当前点Z轴的坐标。因此我们可以对#1进行赋值,根据勾股定理计算出#2,这样可得出圆弧上任意的坐标,再进行插补即可得出圆弧。
程序如下:
G0 X0 Z2
G1 Z0 G98 F80
X40(定位到圆弧起点)
#1=0(赋圆弧加工起点为0)
#3=50(将圆弧半径R50赋值给#3)
#10=0.005(设置X轴每次增加的尺寸,如定位到起点后,第一刀车到40.01,第二刀车到40.02,以此类推,这样就可以将自增量的半径值设为0.005)
N10 #1=#1+#10(计算出当前圆弧半径上的增量,即从0慢慢变化到50)
#11=#1*#1(将该值平方,用于计算#4)
#12=#3*#3(半径开平方,用于计算#4)
#4=SQRT(#11-#12)(计算出#4的长度)
#2=#4-#3(算出当前点Z轴的坐标)
#13=40+#1*2(算出当前点X轴坐标,即为圆弧上的增量乘以2,再加起点40)
G1 X#13 Z#2(进行圆弧插补,这里采用直线方式。当线段越多,则轨迹越接近圆弧,当然运行效率越慢,同时也可能影响工件光洁度,如果线段太少,则轨迹与圆弧相差可能太大,所以需谨慎设置#10,即自增量)
IF #13<140 GOTO 10(这里以X轴终点坐标判断,当X轴插补到140时,说明圆弧插补完成,可退出循环执行后面程序。当然,也可以用其它量进行判断,如#4、#2等)
G0 X100 Z100(加工完毕,退出工件)
6总结
编程思路:
1.定位到加工起点:
2.赋初始值;
3.计算:通过一个值自增变化,计算出另一个值的相应变化;此步一般都是按所需曲
线的方程进行转换的,如本例中圆弧就是根据方程X2+Y2=R2进行计算。