宏程序基础知识
之椭圆通用宏
在宏程序中椭圆宏程序算是应用比较广的一类,在实际的生产中很多的地方会用到椭圆,很多的图纸会有椭圆出现,如何快速的编写程序,能否实现零件的车削,刀具路径简洁与否对宏程序有着不小的要求,这里的通用宏程序是一个分层车削的宏程序,车削时只车削椭圆的部分,当然也可以增加其他的车削部分,这里需要自己懂宏程序,会修改,这个宏程序的刀具路径有些类似G73
变量对应图
变量对应图(凹椭圆局部放大)
变量对应图(凸椭圆局部放大)
最通用的源程序:
O0001
T717
M03 S1200
#30=24
N100
#1=80
#2=-18.93
#3=80
#4=-95.86
#5=90.97
#6=-57.39
#7=40
#8=20
#9=-1
#10=#2+2
#13=#1+1
G0 X#13
Z#10
G1 Z#2 F0.3
#2=#2-0.1
N10
#22=#2-#6
#11=#8*SQRT[1-#22*#22/#7/#7]
#12=#5+#9*2*#11+#30
G1 X#12 Z#2 F0.1
IF[#2 EQ #4]GOTO1
#2=#2-0.1
IF[#2 LT #4]THEN #2=#4
IF[#2 GE #4]GOTO10
N1
G1 U2. F0.1
G0 Z200
IF[#30 EQ 0]GOTO200
#30=#30-6
IF[#30 LT 0]THEN #30=0
IF[#30 GE 0]GOTO100
N200
M30
该程序用IF语句编写,而且全部是赋值,不牵扯X或Z后面有运算的问题,绝大部分的广数系统和发那科系统都是通用的
最易理解的源程序详解:
椭圆的标准方程为:x*x/a/a+y*y/b/b=1
数学中椭圆的标准方程,只要有椭圆车削的图纸必须有椭圆的方程
变量对应图中变量的赋值说明:
#1代表的是椭圆的起点X的值
#2代表的是椭圆的起点Z的值
#3代表的是椭圆的终点X的值
#4代表的是 椭圆的终点Z的值
#5代表的是椭圆的原心点X的值
#6代表的是椭圆的原心点Z的值
(以上所有X向坐标的数据都是以直径计算的)
#7代表椭圆在Z方向的半轴长
#8代表椭圆在X方向的半轴长
#9=1(椭圆凹凸部分的判断,当椭圆为凸椭圆
部分时#9为1,当椭圆为凹椭圆部分时#9为-1)
任何椭圆在图纸上的尺寸、位置关系及凹凸椭圆部分都由以上的9个数据控制住
分层车削椭圆宏程序
O0001(程序号)
T717(刀位号与刀补号,刀位号为7,刀补号为17)
M03 S1200(主轴旋转及转速,根据实际情况自行设定)
#30=24(椭圆部分的最高点与最低点的位置差(直径值),图纸处所标的0.5*#30为单边的位置差,)
N100(程序段号,用于分层车削的循环)
#1=80(椭圆X向的起点值)
#2=-18.93(椭圆Z向的起点值)
#3=80 (椭圆X向的终点值)
#4=-95.86(椭圆Z向的终点值)
#5=90.97 (椭圆原心X向的值)
#6=-57.39(椭圆原心Z向的值)
#7=40(椭圆Z向半轴长)
#8=20(椭圆X向半轴长)
#9=-1(椭圆凹凸部分的判断,当椭圆为凸椭圆部分时#9为1,当椭圆为凹椭圆部分时#9为-1)图纸上的尺寸、位置关系及凹凸椭圆部分)
(变量赋值完成,车削时只需对上面9个数据赋值即可完成下面任意椭圆的车削)
#10=#2+2(起点Z向的安全位置计算)
#13=#1+2(起点X向的安全位置计算)
G0 X#13 (X向安全位置定位)
Z#10(Z向安全位置定位)
G1 #1 Z#2 F0.3(车削到椭圆起点位置)
#2=#2-0.1(椭圆车削第一刀计算点)
WHILE[#2 GE #4]DO1
(Z向移动量循环控制)
#22=#2-#6(在编程坐标系下椭圆的Z值转化为标准椭圆方程中Z的值)
#11=#8*SQRT[1-#22*#22/#7/#7]
(椭圆的标准方程变形,用来计算标准椭圆方程中的X值)
#12=#5+#9*2*#11+#30
(把标准椭圆方程转化成编程坐标系下椭圆的X值)
G1 X#12 Z#2 F0.1
(直线段的车削,无数的直线段组成椭圆,步距的大小决定椭圆的表面光洁度)
IF[#2 EQ #4]GOTO1
(判断,当#2中的数据等于#4中的数据的时候,即车削到椭圆终点时,执行GOTO1跳出循环,跳出到标有N1的程序段号处)
#2=#2-0.1
(每次车削Z向的步距,即Z向每刀的移动量)
IF[#2 LT #4]THEN #2=#4
(判断,当#2中的值小于#4中的值的时候,会跳出循环导致车削不到位,为了防止类似的情况发生,强制赋值)
END1(循环体返回while标识)
N1(程序段号)
G1 U2. F0.1
(X向退刀,这里需要根据实际情况去修改,具体是X向退刀还是车削)
G0 Z200
(Z向快速退刀)
IF[#30 EQ 0]GOTO200
(判断,当分层车削变量到0时,也就是车削到椭圆的实际尺寸,执行GOTO200跳出循环,跳出到标有N200的程序段号处)
#30=#30-6
(分层车削时每层的吃刀量,即X向进刀,为直径值)
IF[#30 LT 0]THEN #30=0
(判断,当#30中的值小于0值的时候,会跳出循环导致车削不到位,为了防止类似的情况发生,强制赋值)
IF[#30 GE 0]GOTO100
(判断,分层车削跳转循环,当#30中的数据大于等于0的时候执行执行GOTO100,跳转到标有N100的程序段号处)
N200(程序段号,用于结束椭圆车削循环)
M30(程序结束并返回)
该程序为双层嵌套循环,分为分层循环和步距椭圆车削循环。这里用的是IF与WHILE语句的混合嵌套使用,数控编程怎么方便怎么来,没有特别的要求,根据自身的喜好,IF应用方便但是要求逻辑性好,WHILE语句本身的逻辑性强,效率高
问答社区 发起问答 报警查询 技术文章 维修服务 资料下载 加交流群 申请 VIP
本文转载来自【 公众号:数控宏程序】,仅供大家学习交流,如侵权请联系站长删文。