宏程序基础知识

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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进行计算。

相关文档
最新文档