专业编程基础技术教程

网站首页 > 基础教程 正文

宏程序入门的基础知识 宏程序入门第二讲

ccvgpt 2024-11-04 12:24:09 基础教程 4 ℃



宏程序入门的基础知识 宏程序入门第二讲

宏程序基础知识?

针对目前很多同行兄弟对宏程序不了解,本人按照自己的经验,循序渐进的引导大家去揭开宏程序的真实面目。当然,想通过我这篇文章完全掌握宏那是不可能的,因为这需要你实际去多应用,才可能掌握的。所以如果你想一步到位,那可以关闭本文了,本文没有这功效,如果你还有一点想法,那就开始吧,一步一步告诉你怎么样去编辑和应用宏程序:?

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。?

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,顺序执行)

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(加工完毕,退出工件)

Tags:

最近发表
标签列表