网站首页 > 基础教程 正文
宏程序基础知识?
针对目前很多同行兄弟对宏程序不了解,本人按照自己的经验,循序渐进的引导大家去揭开宏程序的真实面目。当然,想通过我这篇文章完全掌握宏那是不可能的,因为这需要你实际去多应用,才可能掌握的。所以如果你想一步到位,那可以关闭本文了,本文没有这功效,如果你还有一点想法,那就开始吧,一步一步告诉你怎么样去编辑和应用宏程序:?
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(加工完毕,退出工件)
猜你喜欢
- 2024-11-04 八年级数学:二次根式的学霸笔记已经悄然来到这个数学江湖
- 2024-11-04 教你5秒钟手撕根号运算 手算根号怎么算
- 2024-11-04 复数的立方根怎么求? 复数的立方根是什么树
- 2024-11-04 高中数学:50个公式,50种快速做题方法!
- 2024-11-04 八年级上学期,勾股数与直角三角形的判定问题,重在理解与计算
- 2024-11-04 23舰队旗舰日野根号(上) 日本“金刚”号铁甲舰
- 2024-11-04 2020年期末复习篇:七年级上学期期末专题3 实数综合
- 2024-11-04 中考圆的轨迹问题,有迹可循,头晕问题破解有招数
- 2024-11-04 一道化简题,有技巧哟 30道化简题
- 2024-11-04 23舰队旗舰日野根号(下)
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)