宏程序基础

宏程序基础
宏程序基础

第一章宏程序的基础

1.1概述

1.2

1.3

1.4一、宏程序的分类

1.5首先我们来讲一下宏程序的分类,A类和B类。

首先在数控车系统比较老的时候,我们系统里

面有A类宏,A类宏格式为G65格式,现在已

经基本淘汰。随着科技发达,系统的升级优化,现在的数控系统大多支持B类宏程序,总体而

言,现在B类宏是一个主流发展趋势,所以接

下来我们的实例讲解都以B类宏程序为例。1.6

1.7

1.8二、宏程序的概念

1.9

1.10简单来理解宏程序是什么?可以这样理解,宏

程序就是利用数学公式,函数等计算方式,配

合数控系统中的G代码编制出的一种程序,主

要加工一些像椭圆,曲线,各类大螺距螺纹和

刀具路线相识的一些零件。随着科技发达,像

椭圆,抛物线,等线性零件,用软件或则系统

自代G代码可以完成加工,而大螺距异型螺纹

这类零件,软件还没达到成熟,所以我们学会

宏程序在加工中可以起到一个非常大的作用。

可以弥补多年来数控车对大螺距螺纹的编程难

的一个提高。

1.11

1.12

1.13三、宏程序的特征

1.14

1.151.赋值

1.16在宏程序中我们通常用法最多的就是变量,比

如:

1.17#1=1 它就是一个变量。我们把这一过程,称为

赋值。也就是说,我们把等号后面的数值1,赋

值给#1。而现在#1的值就等于1,也可以理解

为#1就是一个代号,用来代替数值1。

1.18

1.19

2.变量和应用

1.20比如:#1=2(把数值2赋值给#1)1.21#2=1(把数值1赋值给#2)

1.22#2=#1(程序从上往下执行,思考一下现在#2的

值等于多少?)

1.23

1.24解:当程序执行第一步的时候#1的值等于2,

当执行第二步的时候#2的值等于1,当执行第

三步的时候这里要注意了,刚才讲过赋值过程,是等号后面的值赋值给等号前面,所以当#1在

第一步赋值以后,#1已经等于2了,所以在执

行第三步的时候#2的值应该等于2,不在是第

二步的1了。从这里我们可以看出,当程序中

有相同的变量#的时候,后面的#号代替前面的#

号。

1.25比如:#1=2

1.26#1=3

1.27

1.28最后结果#1的值因该是等于3的。所以说后面

的代替前面的。

1.29

1.30

1.31四、变量的取值范围

1.32

1.331.局部变量(#1-#33)

1.34什么叫局部变量,局部变量就是在局部或则可

以理解为在单个程序中有效。断电以后系统自

动清零。

1.35

1.36

2.公共变量(#100-#199,#500-#999)

1.37公共变量和局部变量的区别在于,局部变量是

在局部,或则单个程序中有效,而公共变量是

指如果一个程序同时拥有主程序和子程序的情

况下,在主程序中如果已经赋值,在子程序中

可以不用从新赋值,可以共用。而#100-#199和

#500-#999的区别在于,前者断电清零,而后者

不会清零会一直保存在系统内部。比如:

1.38#500=TAN[15]

1.39

1.40#500一旦赋值就将保存在系统内部,下次可以

直接调用#500使用。

1.41

1.423.系统变量(#1000-#17200)

1.43系统变量是用于我们机床系统储存一些刀补数

据参数等等的东西,我们可以不用管它,不会

用的,慎用)

1.44

1.45总结:一般情况下我们写程序用#1-#33,当有子

程序的时候我们用#100-#199.

1.46

1.47

1.48五、宏程序中常用的计算

1.49

1.501.加法运算

1.51例如:#1=2

1.52#1=#1+3 那么#1的值等于2+3=5

1.53

1.54

2.减法运算

1.55例如:#1=3

1.56#1=#1-1 那么经过计算我们的#1的值等于3-1=2 1.57

1.583.乘法运算

1.59程序中用*号来代替乘法

1.60例如:#1=5

1.61#2=#1*2 那么计算出来#2的值等于5*2=10 1.62

1.634.除法运算

1.64程序中用/ 号来代替除法运算

1.65例如:#1=10

1.66#1=#1/2 那么经过计算#1的值等于10/2=5

1.67

1.68

1.69六、常用三角函数运算

1.701.TAN(正切)

1.71例如#1=2*TAN[20] 中括号里面是角度

1.72

1.73

2.SIN(正玄)

1.74例如#1=3*SIN[3] 同上

1.75

1.763.COS(余玄)

1.77例如#1=COS[15]

1.78

1.794.ASIN、ACOS、ATAN(反三角)

1.80

1.815.SQRT(数学中的开平方的意思,和数学中根

号一样)

1.82例如#1=SQRT[9] 那么计算出来#1的值等于3 1.83

1.84

1.85七、宏程序的常用符号和含义1.86G T(大于)

1.87G E(大于或等于)

1.88L T(小于)

1.89L E(小于或等于)

1.90E Q(等于)

1.91N E(不等于)

1.92A BS(绝对值)

1.93A ND(与)

1.94O R(或者)

1.95

1.96八、常用的语法和应用

1.971.无条件转移GOTO n(n表示数值)

1.98例如:GOTO01 此程序段的意思是当程序中执行

到这一程序段的时候无条件跳转到程序段中N1的地方,执行N1后面的程序段。

1.99M3 S500 G99

1.100

1.101T101 M08

1.102

1.103GOTO 10 (当程序执行到这里的时候,直

接跳转到N10那个程序段执行M30,跳过了G0那一步,所以这叫做无条件跳转,和我们一般程序中跳段功能一样)

1.104

1.105G0 X100. Z100.

1.106

1.107N10 M30

1.108

1.109

2.有条件跳转IF[条件表达式] GOTO n

1.110例如:IF[#1 GT 15] GOTO 10 从这段程序当

中,我们这样理解,如果中括号里面的条件满足,那么就执行后面的GOTO跳转语句,如果中括号里面条件不满足,那么不执行后面的GOTO 跳转,执行后面一个程序段。

1.111我们简单来写一个程序:

1.112M3 S500 G99

1.113

1.114T101 M08

1.115

1.116N10#1=30(把数值30赋值给#1)

1.117

1.118IF[#1 LT 50] GOTO 10(首先判断中括号是不

是满足条件,如果满足执行跳转,不满足执行下一步)

1.119M30

1.120

1.121从这个程序中我们可以发现当#1=30的时

候,我们执行条件判断,我们来判断一下,#1现在等于30,那么重括号里面就可以理解为30小于50,现在条件满足。所以他会执行后面GOTO跳转语句,跳转到N10地方继续执行)1.122

1.123 3.强制赋值语句IF[条件表达式]THEN(执

行语句)

1.124例如:IF[#1 GT 20] THEN#1=20 (我们这样来

理解这个语句,如果#1大于20,那么#1等于20,也就是说和上面一样,中括号里面条件满足的话,执行后面THEN语句,如果不满足,不执行后面then语句。)

1.125写一段简单程序:

1.126

1.127#1=3(把数值3赋值给#1)

1.128

1.129#1=#1-5(把#1-5计算出来的值从新赋值给

#1,也就是3-5=-2,现在#1=-2)

1.130

1.131IF[#1 LT 0] THEN#1=0(强制赋值,如果#1

小于0,那么强制让#等于0)

1.132

1.133M30

1.134

1.135我们来分析一下上面程序段,当我们#1执

行完减法运算以后#1的值已经等于-2,那么我们在执行强制赋值语句的时候我们来判断一下中括号里面条件是不是满足,-2小于0,条件满足,所以执行后面THEN语句,如果不满足的时候不执行THEN语句)

1.136

1.137 4.条件判断语句WHILE[表达式]DO n ( n为

数值,取值范围1-99)

1.138END n(n 与开头n的数值对应)

1.139

1.140例如:WHILE[#12 GT 50]DO 1

1.141

1.142END 1

1.143

1.144下面写一个程序段:

1.1451.146#1=60

1.147

1.148WHILE[#1 GT 50] DO 1

1.149

1.150G0 X#1

1.151

1.152G1 Z-20. F0.2

1.153

1.154G0 U1. Z1.

1.155

1.156END 1

1.157

1.158M30

1.159

1.160这个程序当条件判断语句里面中括号里面

条件满足的时候执行DO 1和END 1中间的程序段,如果条件不满足,执行END 1后面的程序段M30。

1.161

1.162

1.163

1.164

1.165

1.166

1.167以上介绍的语法格式用法,以FANUC

oi系列,广数,三菱系统为例。西门子,宝源,新代等系统以说明书为准!!!

第二章宏的入门

实例1.单外径粗车宏的应用

本实例介绍一个简单的车削外径的宏程序,目的为了让读者熟悉宏语句用法和逻辑。

上图为一个单一外圆车削图,材料为直径50的棒料,车削到直径30,长度30.

图纸要求,平面见光就行,采用宏程序粗加工,每刀吃刀量为3毫米。

2.0工艺分析

1.采用3爪自定心卡盘夹持直径50,台阶爪定位左端面。

2.选择加工刀具,选用90度外圆机架刀车刀。

3.0宏程序编程思路

1.模仿G71路线。

2.毛培直径50赋值给#1,通过毛培每次递减,实现车削到指定直径。

3.图纸要求直径30赋值给#2

4.吃刀量赋值给#3,每层吃刀量为3.

4.0加工程序编程与注释

O0010

M3 S300 G99

T101 M08

G0 X51. Z10.

Z0.

G1 X-0.7 F0.12(平端面)

G0W1.X50.

#1=50(毛培赋值)

#2=30(图纸要求尺寸)

#3=3(吃刀量赋值)

N10#1=#1-#3(利用减法运算,计算出每一层的X值)

G0 X#1(X进刀)

G1 Z-30. F0.12

G0 U1. Z1.

IF[#1 GT #2] GOTO 10(如果#1大于#2,那么执行跳转到N10的地方执行后面程序,如果不满足,执行后面一步)

G0 X120. Z130.

M30

程序编制完成,我们来检查一下这个程序对不对,

首先我们来看#1=#1-#3这一步,当#1等于50,#3=3

的时候,我们就因该是50-3=47,然后把47从新赋值给#1,当执行完一刀外径车削以后,我们条件判断,如果#1大于#2,也可以理解为如果47大于30,跳转到N10继续执行N10后面程序段,现在47明显大于30,所以跳回N10的地方,继续执行,当跳回N10以后,#1=#1-#3,现在的#1应该是前面计算出来的47,也就是说#1现在等于47-3=44,然后在执行外径车削,条件判断。但是我们现在来想一下,当他一直这样循环,循环6次以后,每次吃刀量3,也就是50-3*6=32,当#1等于32的时候,#1任然大于#2,所以他会继续跳转N10,循环第七次,当第7次执行#1=#1-#3的时候,结果#1=32-3=29,然后在执行G0X#1,也就是G0X29. 通过这里我们就可以看出如果程序这样编制,它会过切一个毫米,也就是说本来图纸要求直径为30,现在它车到了直径29,所以报废!下面我们看一下下面的程序怎么改进。

改进后程序如下:

O0010

M3 S300 G99

T101 M08

G0 X51. Z10.

Z0.

G1 X-0.7 F0.12(平端面)

G0 W1. X50.

#1=50(毛培赋值)

#2=30(图纸要求尺寸)

#3=3(吃刀量赋值)

N10#1=#1-#3(利用减法运算,计算出每一层的X值)

IF[#1 LT #2] THEN#1=#2(强制赋值语句,如果#1每次递减3,当它小于了我们图纸要求直径30的时候,强制让#1=30)G0 X#1(X进刀)

G1 Z-30. F0.12

G0 U1. Z1.

IF[#1 GT #2] GOTO 10(如果#1大于#2,那么执行跳转到N10的地方执行后面程序,如果不满足,执行后面一步)

G0 X120. Z130.

M30

从这个优化过的程序我们可以看到,其实我们就在#1=#1-#3这一步计算后面加了一个强制赋值语句,防止过切,通过这一个强制赋值语句,刚才第一个程序的问题得到解决!接下来我们来讲解一下还有一种情况,如果IF[#1 GT #2] GOTO 10这个条件判断,把GT大于换成GE大于或等于,会出现什么情况呢?我们来看一下,当换成大于或等于以后,也就是说当我们#1大于或者等于只要满足其中一个条件他就执行GOTO 10语句,继续循环,我们现在已经加了强制赋值语句,#1已经等于#2,但是现在条件判断任然满足,所以他会继续跳转N10,从而出现一个问题,他会一直在循环下去,停不下来了。。。。。。。。这个我们把它称为死循环!下面我们来解决一下死循环的问题,程序继续优化,如下:

O0010

M3 S300 G99

T101 M08

G0 X51. Z10.

Z0.

G1 X-0.7 F0.12(平端面)

G0 W1. X50.

#1=50(毛培赋值)

#2=30(图纸要求尺寸)

#3=3(吃刀量赋值)

N10#1=#1-#3(利用减法运算,计算出每一层的X值)

IF[#1 LT #2] THEN#1=#2(强制赋值语句,如果#1每次递减3,当它小于了我们图纸要求直径30的时候,强制让#1=30)

G0 X#1(X进刀)

G1 -30. F0.12

G0 U1. Z1.

IF[#1 EQ #2]GOTO 20

IF[#1 GE #2] GOTO 10(如果#1大于#2,那么执行跳转到N10的地方执行后面程序,如果不满足,执行后面一步)

N20 G0 X120. Z130.

M30

从上面程序中我们可以看出,我们在执行完一个外圆车削路线后面加上了一步IF[#1EQ#2]GOTO20如果#等于#2那么跳转到N20的地方执行G0X120.Z130.

如果#1不等于#2,继续执行下面一步程序段,通过这一步我们可以达到一个防止死循环的作用。程序完美运行!

总结:

1.赋值的应用。

2.减法运算的应用

3.有条件转移的应用

4.强制赋值语句的应用

5.对宏程序循环体的认识

今天我们讲的课程虽然简单,但是里面包含了学习宏程序必须的语法和逻辑思维,看完教程仔细思考,一定务必把这一个实例完全理解透彻在学习下一课内容,教程都是循循渐进的,如果这一课内容不能理解透测后面内容根本无法学习,多动手,多思考是学习宏程序的关键!文字教程配合视频讲解更通熟易懂,希望各位学者多多努力。

第三章宏程序在深孔钻削的应用

今天我们来讲解一个钻深孔的宏,我们都知道我们在钻深孔的时候由于钻头难以冷却,铁销难以排出,会造成钻头寿命减短,卡削,严重会断钻头,今天我们利用宏程序可以让钻头得到冷却,铁销容易排出,合理保护刀具寿命,我们来看下图:

从上图可以看出,我们需要钻孔直径为12,长度100,我们一般G代码G74循环代码,难以达到理想,效果,所以我们采用宏程序,每次钻深2毫米,然后快速退刀到Z10.地方,带出铁销,钻头冷却,然后在快速进刀到离上次钻削深度0.5的地方继续钻孔,重复同一动作,直到钻孔深度到达。

图纸要求:

1.每次钻深2毫米,退刀,排铁销,冷却钻头。

2.平面见光

3.防止钻孔偏,先用中心钻打引孔。

刀具使用:

1.90度平面外径车

2.中心钻

3.直径12的钻头

装夹:采用三爪自定心卡盘,夹持毛培直径30,以左端面定位。数控程序与注释如下:

O0010

M3 S1000 G99

T101 M08(平面刀)

G0 X31. Z10.

Z1.

G1 Z0. F0.3

G1 X-0.7 F0.12(平面)

G0 X120. Z150.

T0202 M08(中心钻)

G0 X0. Z10.

Z1.

G1 Z-1. F0.08(钻引孔防止钻孔的时候偏心)

G0 Z10.

X120. Z150.

T303 S600(直径12的钻头)

G0 X0. Z10.

#1=2(每一次钻深的深度)

#2=-105(这里为什么不是-100?因为按上图要求孔是通孔考虑钻头前面有锥度,所以多钻深5)

#3=0(平面Z0赋值)

N10#3=#3-#1(计算出每次钻深的Z值坐标)

IF[#3 LT #2] THEN#3=#2(强制赋值,防止深度过切)

G0 Z[#3+#1+0.5](Z每次定位,定位在离上次钻深

0.5的地方)

G1 Z#3 F0.06(钻孔)

G0 Z10.(当钻完一个深度退刀到Z10的地方)

G4 X1.(暂停1秒,让钻头冷却)

IF[#3 EQ #2] GOTO 20(防止死循环,如果#3等于#2那么跳转N20的地方)

IF[#3 GE #2] GOTO 10(条件判断,如果#3大于或等于#2跳转到N10地方继续循环)

N20 G0 X120. Z150.(退刀)

M30(程序结束)

从上程序可以看出,我们实现了每次钻深2毫米,然后快速退刀,暂停,快速进刀,继续钻深2毫米,重复执行同一动作,直到深度到达跳出循环,退刀。这里我们使用G1 Z#3来钻孔,下面我把G1改进为G74 钻孔,和宏程序配合使用,效果更佳,程序如下:

T303 S600 (直径12的钻头)

G0 X0. Z10.

#1=2 (每一次钻深的深度)

#2=-105 (这里为什么不是-100?因为按上图要求孔是通孔考虑钻头前面有锥度,所以多钻深5)

#3=0 (平面Z0赋值)

N10#3=#3-#1 (计算出每次钻深的Z值坐标)

IF[#3 LT #2] THEN#3=#2(强制赋值,防止深度过切)

G0 Z[#3+#1+0.5](Z每次定位,定位在离上次钻深0.5的地方)

G74 R0.2(每次钻深0.5,退刀0.20)G74 Z#3 Q500 F0.06(钻孔循环)

G0 Z10.(当钻完一个深度退刀到Z10的地方)

G4 X1.(暂停1秒,让钻头冷却)

IF[#3 EQ #2] GOTO 20(防止死循环,如果#3等于#2那么跳转N20的地方)

IF[#3 GE #2] GOTO 10(条件判断,如果#3大于或等于#2跳转到N10地方继续循环)

N20 G0 X120. Z150.(退刀)

M30(程序结束)

通过上面程序优化,我们可以达到一个最佳加工效果!下面我们来讲一下目前国内用的最多的系统,前面的程序都是以FANUC OI 系列编程,如果你是广数系统,你需要改动一些程序段,按照上面程序我来讲解一下广数和FANUC的区别,程序如下:

T303 S600 (直径12的钻头)

G0 X0. Z10.

#1=2 (每一次钻深的深度)

#2=-105(这里为什么不是-100?因为按上图要求孔是通孔考虑钻头前面有锥度,所以多钻深5)

#3=0 (平面Z0赋值)

N10#3=#3-#1 (计算出每次钻深的Z值坐标)

IF[#3 LT #2] THEN#3=#2 (强制赋值,防止深度过切)

#4=[#3+#1+0.5] (计算Z每次定位,定位在离上次钻深0.5的地方)区别在这里,先计算带入#号,下面一步定位,把#号带入进去

G0 Z#4 (Z定位)

G74 R0.2 (每次钻深0.5,退刀0.20

G74 Z#3 Q500 F0.06 (钻孔循环)

G0 Z10.(当钻完一个深度退刀到Z10的地方)

G4 X1.(暂停1秒,让钻头冷却)

IF[#3 EQ #2] GOTO 20(防止死循环,如果#3等于#2那么跳转N20的地方)

IF[#3 GE #2] GOTO 10(条件判断,如果#3大于或等于#2跳转到N10地方继续循环)

N20 G0 X120. Z150.(退刀)

M30(程序结束)

看过上面程序,你有没有发现区别在哪里?好!现在我来讲解一下,他的区别在于FANUC系统它在X Z 后面可以直接加上[#3+#1+0.5]直接计算,而广数不行,广数必须先把中括号里面的计算带入一个#号,然后在执行G0#,这就是唯一的区别,很好理解。

总结:

1.利用宏程序钻削深孔

2.宏程序配合G74循环代码效果更佳

3.广数和FANUC系统格式的区别看完本节内容,多思考,多动手!完全理解本节教学内容以后,在看下一节,祝各位喜爱宏编程的学者早日入门,完全理解以上内容以后。这里恭喜你已经对宏程序有了一个认识!

第四章多个等距曹的宏程序应用

今天我们来讲解一下外径多个等距曹的宏程序加工,一般如果我们不会宏程序的话只能依靠子程序来完成,不然程序会非常繁琐,如果用子程序来加工,如果中途坏刀,停下来以后只能从程序开头在重新执行,而我们如果使用宏程序加工的话可以避免这种情况,如果从中途停下来我们便于修改就可直接从我们停下来那里开始加工。我们来看下图:

从上图可以看出这是一个等距曹加工图,每个曹曹宽都是3,曹与曹之间都是相距10,我们使用宏程序来编制这个程序。图纸要求:

1.曹两侧倒去毛刺圆角R0.5

2.采用G75和宏配合使用

3.采用3毫米宽切刀加工

装夹方式:

1.外径50以加工完毕,采用台阶爪夹持直径50,左端面定位,顶尖顶住加工

2.切刀以左侧面对平面为Z0.

程序和注释如下:

O0001

M3 S600 G99

T101 M08

G0 X50.5 Z10.

Z1.

#1=0 (平面Z值)

#2=-80(最后一个曹的Z值)

N10#1=#1-10(计算出每个曹的Z定位)G0 Z#1(Z定位)

G75 R0.2

G75 X45. P500 F0.08(切曹循环)

G0 W-0.5(进刀到左侧圆角倒角起点)

G1 X50. F0.2

G2 X49. W0.5 R0.5 F0.06(倒左侧圆角)G0 X50.5

W0.5(进刀到右侧圆角起点)

G1 X50. F0.2

G3 X49. W-0.5 R0.5 F0.06(倒右侧圆角)G0 X50.5(退刀)

IF[#1 GT #2] GOTO 10(条件判断如果#1大于#2跳转N10继续执行下一个切槽)

G0 X120. Z1.(退刀)

M30(程序结束)

根据上面程序,我们可以实现给出一个曹的走刀路线,就可以切削多个曹的作用,如果中途在任意一个曹停下来了,我们只需要改一下#1的赋值,就可以实现从停的那个曹开始加工,这个是宏程序的一个特点!仔细思考这个程序为什么没有加强制赋值语句和跳出死循环语句!!!!什么时候改加,什么时候可以不用加,这个要多多思考!!

下面我们还是用这个图来编制一个不用G75循环切槽,用G1模仿G75路线来增加难度,前面我们都是一重循环,下面我们来编制一个2重循环的程序:

O0001

M3 S600 G99

T101 M08

G0 X50.5 Z10.

Z1.

#1=0(平面Z值)

#2=-80(最后一个曹的Z值)

#4=50(曹大直径)

N10#1=#1-10(算出每个曹的Z值坐标)

G0 Z#1(Z定位)

G1 X50. F0.2(定位到大直径处)

N20 #4=#4-0.5(算出每次X的值)

IF[#4 LT 45] THEN#4=45(强制赋值防止X过切,这里可以不用写)

G1 X#4 F0.06(切曹)

G0 X[#4+0.2](以上次切曹的深度退刀0.2)

IF[#4 EQ 45] G0TO 30(防止死循环)IF[#4 GE 45] GOTO 20(如果切曹深度现在大于或等于45,跳转N20继续切曹)

N30 #4=50(这里很关键,当执行到这里的时候,# 4实际已经等于45,所以这里从新赋值,下一个曹才能正确加工,仔细思考这里)

G0 X50.5(退刀)

W-0.5(进刀到左侧倒角起点)

G1 X50. F0.2

G2 X49. W0.5 R0.5 F0.06(倒左侧圆角)

G0 X50.5

W0.5(进刀到右侧圆角起点)

G1 X50. F0.2

G3 X49. W-0.5 R0.5 F0.06(倒右侧圆角)

G0 X50.5(退刀)

IF[#1 GT #2] GOTO 10(如果#1大于#2跳转N10执行下一个曹的加工)

G0 X120. Z1.(退刀)

M30(程序结束)

上面程序我们用G1来代替G75的走刀路线来编制程序,目的是为了锻炼各位学者的思维,从而真正

的掌握宏程序,相比G75来编制增加了难度,从一重循环提升到2重循环,希望各位学者仔细思考,跟着程序思路去理解,而不是像G代码一样一直向下执行!如果这一节课程你已经理解透测,恭喜你,你的宏程序又更上一个台阶了。

第五章外径深曹的宏程序分层法加工

今天我们来讲解一下外径深曹的加工,大家因该知道我们在加工深曹的时候,铁销不容易排出,容易卡削坏刀!利用G代码G75循环只能径向车削到底部,在执行Z进刀,这样的加工方式有所不足,今天我们利用宏程序分层法可以合理解决这个问题,也为后面的矩形螺纹打好基础,看下图:从上图可以看出,我们曹大直径30,底部直径12,曹宽20,曹比较深。我们采用分层加工的方法来加工。

工艺要求:

1.采用3毫米切刀。

2.每层吃刀量1.5

3.刀具以左侧对平面Z0.

4.夹持大直径30以左平面定位

外径平面已加工到位下面来编制这个程序:

O0001

M03 S600 G99

T0101 M8

G0 X35 Z10

Z-13.

#1=30(外圆大直径为30)

#2=12 (槽底直径为12)

#3=17 (如图槽宽度为20,我们用3毫米刀,所以20-3=17,槽的宽度)

#4=1.5(每层的吃刀深度为1.5)

N10#1=#1-#4 (算出第一层的X值)

IF[#1 LT #2] THEN#1=#2(强制赋值,防止过切)

#5=0(Z方向的赶刀初始值)

N20 G0 X[#1+#4+0.3] (算出每车完一层的X定位)

Z[-13-#5](Z方向的实际定位)G1 X#1. F0.04(径向车削)

IF[#5 EQ #3] GOTO 30(如过加工完一层跳转到N3 0的地方,如果条件不满足走下面的程序段)

#5=#5+2.5(Z方向每次赶刀2.5)

IF[#5 GT #3] THEN#5=#3(防止每层的宽度过切,所以强制赋值)

IF[#5 LE #3] GOTO 20(条件判断,判断如果赶刀的宽度没有达到槽宽,跳转N20的地方继续循环)

N30 G0 X35(X退到安全位置)

Z-13(Z方向退到第一刀加工起点)

IF[#1 EQ #2] GOTO 40(判断如果切槽深度到达跳转N40,跳出循环)

IF[#1 GE #2] GOTO 10(如果深度没有到达跳转N1 0的地方继续循环)

N40 G0 X120 Z150(退刀程序结束)

M30

通过上面程序我们可以实现分层切削,当切削完一个径向车削以后,退刀,Z方向往负方向移动2.5,继续执行径向车削,当一层宽度到达以后,执行下一层,重复执行,直到深度到达!

下面我在这里介绍一种利用宏程序和G75并用的程序,这样写法可以让程序更加简单化,程序如下:

O0001

M3 S800 G99

T0101 M08

G0 X35. Z10.

#1=30

#2=12

#3=1.5

N10#1=#1-#3

IF[#1 LT #2] THEN#1=#2 G0 Z-13.

X[#1+#3+0.2]

G75 R0.2

G75 X#1 Z-30. P500 Q2500 F0.08 G0 X35.

Z-13.

IF[#1 EQ #2] GOTO 20

IF[#1 GE #2] GOTO 10

N20 G0 X100.

Z130.

M30

仔细思考这个程序,完全理解以后,以这个图编写一个Z方向从中间下刀往两边移动的宏程序,多思考多动手,祝愿你早日达到目标!

第六章端面深曹的分层加工

下图需要加工大直径为80,小直径为60,深度15的端面曹,如果轴向进刀到槽底,铁销卡住刀具难以承受,今天我们介绍分层法用宏程序来解决:

工艺安排:

1.夹持直径100,以左端面定位

2.选用3毫米宽端面切曹刀分层加工

3.刀具以刀具内侧对刀

4.初始吃刀量为2,每层递减0.1,最小吃刀量0.5

程序注释如下:

O0001 M3 S500 G99

T101 M08

G0 X60. Z10.

Z1.

#1=60(小直径赋值)

#2=[80-6]-60(用大直径减去两个刀宽在减去小直径等于实际需要移动的X值)

#3=2(初始Z方向吃刀量)

#4=0(平面Z值)

#5=-15(曹深度)

N10 #3=#3-0.1(吃刀量每层递减0.1)

IF[#3 LT 0.5] THEN#3=0.5(强制赋值最小吃刀量为0.5)

#4=#4-#3(算出每层的Z值)

IF[#4 LT #5] THEN#4=#5(强制赋值防止Z深度过切)

#6=0(X移动初始值)

N20 G0 X[#1+#6](X每次定位)

Z[#4+#3+0.3] (Z每次定位离上次切曹起点距离0.3的地方)

G1 Z#4 F0.06(曹车削)

Z[#4+#3+0.3](退刀到距离上次切曹定位0.3的地方)IF[#6 EQ #2] GOTO 30(防止X方向死循环)

#6=#6+5(刀具每次移动直径5,刀宽为3,端面曹我们需要刀宽*2)

IF[#6 GT #2] THEN#6=#2(强制赋值,防止X曹宽过

切)

IF[#6 LE #2] GOTO 20(条件判断,如果宽度没有到达跳转N20继续循环)

N30 IF[#4 EQ #5] GOTO 40(防止Z方向死循环)

IF[#4 GE #5] GOTO 10(如果深度没有到达,跳转N10继续下一层车削)

N40 G0 Z10.(退刀,程序结束)

Z130.

M30

上图程序整体思路为,执行完一个切槽动作,然后移动X方向,切削下一个切槽,直到曹宽到达,进入下一层,重复执行!直到深度到达!由于端面曹加工涉及曹刀宽度,如果不好理解我们下面介绍宏和G74代码共同使用的方法可以简化程序。

程序如下:

O0001

M3 S600 G99

T101 M08

G0 X60. Z10.

Z1.

#1=60(曹小直径)

#2=80-6(大直径减去2个刀宽等于X终点坐标)

#3=-15(曹深度)

#4=2(初始吃刀量)

#5=0(平面Z值)

N10 #4=#4-0.1(吃刀量每层递减0.1)

IF[#4 LT 0.5] THEN#4=0.5(最小吃刀量为0.5)#5=#5-#4(算出每一层的Z值)

IF[#5 LT #3] THEN#5=#3(防止深度过切)

G0 Z[#5+#4+0.3](Z每次定位)

G74 R0.2

G74 X#2 Z#5 P2500 Q500 F0.06(端面切槽循环)

IF[#5 EQ #3] GOTO 20(如果深度到达跳出循环)

IF[#5 GE #3] GOTO 10(如果深度没有到达跳转N10进入下一层)

N20 G0 Z10.

X120. Z130.

M30(程序结束)

上面程序通过宏和G74的共用,简化了程序,让思路更加清晰。

总结:

1.强化2重循环的思维‘

2.理解切端面曹刀宽对X坐标的影响

3.利用分层合理保护刀具

4.利用现有G代码G74切曹循环和宏共用的方法

5.学习完这以上课程完全理解以后可进入第三章学习

更多数控宏程序请访问https://www.360docs.net/doc/8b14794662.html,

相关主题
相关文档
最新文档