1. 首页
  2. 技术文章

宏程序之椭圆通用宏

宏程序基础知识

之椭圆通用宏

在宏程序中椭圆宏程序算是应用比较广的一类,在实际的生产中很多的地方会用到椭圆,很多的图纸会有椭圆出现,如何快速的编写程序,能否实现零件的车削,刀具路径简洁与否对宏程序有着不小的要求,这里的通用宏程序是一个分层车削的宏程序,车削时只车削椭圆的部分,当然也可以增加其他的车削部分,这里需要自己懂宏程序,会修改,这个宏程序的刀具路径有些类似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   

本文转载来自【 公众号:数控宏程序】,仅供大家学习交流,如侵权请联系站长删文。

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

联系微信:QQ594673193

工作时间:08:00~20:00

QR code