说到椭圆,和我们宏相关的参数就两个:长半轴和短半轴!分别用字母 a、b 表示。那么什么是长半轴,什么是短半轴呢?我们看图说明:

如图,所谓长半轴,我们可以通俗的理解为:椭圆圆心点0,到右边点a的直线距离叫长半轴!短半轴就是圆心点O到达b点的垂直距离。我们知道长、短半轴,可以列出方程.当Z取了一个值,X就会被求出来了,这里的X和Z表示椭圆曲线上的某一个点的坐标,当你的Z取30,那么对应的X值就是0。 。试想一下,如果Z的值不断地变化,那么X的值也跟着变化,最后用G01指令把这些小点连接起来,是不是可以做出椭圆了呢?!

椭圆方程:[X*X]/[b*b]+[Z*Z]/a*a=1

下面我们介绍一种用G71粗车椭圆的程序:

M3S800G99

T101M8

G0X25.5Z10.

Z1

#1=30(长半轴赋值)

G71U1.R0.3

G71P10Q30U0.5W0.3F0.2

N10G0X0.(X定位)

G1Z0.F0.2(Z方向到达加工起点)

N20#2=24*SQRT[1-#1*#1/900](利用椭圆公式算出X的值)

#3=#1-30(把Z移动到加工起点)

G1X#2Z#3F0.12(椭圆分线段车削)

IF[#1EQ0]GOTO30(如果长度与圆心重合跳出循环)

#1=#1-0.5(Z方向每次递减0.5)

IF[#1GE0]GOTO20(如果Z递减没有到达圆心继续循环)

N30G1X25.5F0.2

G0X150Z150.

M3S1500(这里为精车程序)

G0X25.5Z10.

Z1

#1=30(长半轴赋值)

G0X0.

G1Z0.F0.2

N45#2=24*SQRT[1-#1*#1/900](算出X值)

#3=#1-30(Z方向回到Z0起点)

G1X#2Z#3F0.12

IF[#1EQ0]GOTO50

#1=#1-0.1(Z每次递减0.1)

IF[#1GE0]GOTO45

N50G1X25.5F0.2

G0X120Z130.

M30

完整程序如下:

M3S800G99

T101M8

G0X25.5Z10.

Z1

#1=30

G71U1.R0.3

G71P10Q30U0.5W0.3F0.2

N10G0X0.

G1Z0.F0.2

N20#2=24*SQRT[1-#1*#1/900]

#3=#1-30

G1X#2Z#3F0.12

IF[#1EQ0]GOTO30

#1=#1-0.5

IF[#1GE0]GOTO20

N30G1X25.5F0.2

G0X150Z150.

M3S1500

G0X25.5Z10.

Z1

#1=30

G0X0.

G1Z0.F0.2

N45#2=24*SQRT[1-#1*#1/900]

#3=#1-30

G1X#2Z#3F0.12

IF[#1EQ0]GOTO50

#1=#1-0.1

IF[#1GE0]GOTO45

N50G1X25.5F0.2

G0X120Z130.

M30

下面我们用G70实现精车会更加方便:

M3S800G99

T101M8

G0X25.5Z10.

Z1

#1=30(注意这个赋值不能放在N循环里面)

G71U1.R0.3

G71P10Q30U0.5W0.3F0.2

N10G0X0.

G1Z0.F0.2

N20#2=24*SQRT[1-#1*#1/900]

#3=#1-30

G1X#2Z#3F0.12

IF[#1EQ0]GOTO30

#1=#1-0.1

IF[#1GE0]GOTO20

N30G1X25.5F0.2

#1=30(注意这里粗加工以后需要从新赋值)

s1500g70p10q30

G0X150Z150.

m30

更多数控教程请微信关注 zgsklm

相关推荐