保捱科技网
您的当前位置:首页数控编程——宏程序教程

数控编程——宏程序教程

来源:保捱科技网
共享知识 分享快乐

数 控 编 程 讲 义

1

共享知识 分享快乐

第一篇 铣工篇 ....................................................................................................... 1

专题一 行切和环切 ................................................................................................................. 1

1.1环切 ................................................................................................................................... 1

1.1.1环切刀具半径补偿值的计算 .................................................................................... 2

1.1.2环切刀补程序工步起点(下刀点)的确定 ............................................................ 4

1.1.3在程序中修改刀具半径补偿值 ................................................................................ 5

1.1.4 环切宏程序 ............................................................................................................. 7

1.2 行切 .................................................................................................................................. 8

1.2.1 矩形区域的行切计算 ............................................................................................... 8

1.2.2行切的子程序实现 .................................................................................................. 10

1.2.3 行切宏程序实现 ..................................................................................................... 11

1

共享知识 分享快乐

专题二 相同轮廓的重复加工 ............................................................................................... 13

2.1 用增量方式完成相同轮廓的重复加工 ........................................................................ 14

2.2用坐标系平移完成相同轮廓的重复加工 ..................................................................... 14

2.3 用宏程序完成相同轮廓的重复加工 ............................................................................ 15

专题三 简单平面曲线轮廓加工 ........................................................................................... 17

专题四 简单立体曲面加工 ................................................................................................... 18

4.1球面加工 ......................................................................................................................... 18

4.1.1外球面加工 .............................................................................................................. 20

4.1.2内球面加工 .............................................................................................................. 21

4.2水平圆柱面的加工 ......................................................................................................... 22

4.2.1圆柱面的轴向走刀加工 .......................................................................................... 22

2

共享知识 分享快乐

4.2.1圆柱面的周向走刀加工 .......................................................................................... 23

专题五 孔系加工 ................................................................................................................... 25

5.1 矩形阵列孔系加工 ........................................................................................................ 25

5.2环形阵列孔系加工 ......................................................................................................... 26

第二篇 车工篇 ..................................................................................................... 27

专题六 参数编程 ................................................................................................................... 27

专题七 方程曲线的车削加工 ............................................................................................... 29

7.1方程曲线车削加工的走刀路线: ................................................................................. 29

7.2 椭圆轮廓的加工 ............................................................................................................ 30

附录 FANUC系统G指令和宏指令 .................................................................. 32

附录1 刀具补偿值、刀具补偿号及在程序中赋值G10 ................................................... 32

3

共享知识 分享快乐

1、刀具补偿值的范围 ......................................................................................................... 32

2、刀具补偿值的存贮 ......................................................................................................... 32

3、刀具补偿赋值格式: ..................................................................................................... 34

附录2 缩放G50、G51 .......................................................................................................... 35

附录3 坐标系旋转 G68、G69 ........................................................................................... 42

附录4 宏程序B(custom macro B) ........................................................................................ 48

1 宏变量(variables) ........................................................................................................ 48

2 系统变量 SYSTEM VARIABLES .................................................................................. 54

2.1接口信号 Interface signals ........................................................................................ 55

2.2刀具补偿值 Tool compensation values ..................................................................... 56

2.3宏程序报警信息Macro alarms .................................................................................. 58

4

共享知识 分享快乐

2.4时间信息 ..................................................................................................................... 59

2.5自动运行控制 ............................................................................................................. 60

2.6背景(#3005) Settings ............................................................................................ 63

2.7已加工的零件数 Number of machined parts ............................................................

2.8模态信息 Model information .................................................................................... 65

2.9当前位置 ..................................................................................................................... 68

2.10工件坐标系补偿值(工件坐标系零点偏置值) ................................................... 68

3 算术和逻辑运算 ............................................................................................................. 70

4 宏语句和NC语句 ........................................................................................................... 81

5分支和循环 ........................................................................................................................ 83

5.1无条件分支GOTO语句 ............................................................................................ 83

5

共享知识 分享快乐

5.2 条件分支IF语句 ...................................................................................................... 84

5.3 循环WHILE 语句 .................................................................................................... 87

6 调用宏程序 MACRO CALL ........................................................................................... 34

6.1 简单调用G65 ............................................................................................................ 35

6.2模态调用G66 ............................................................................................................. 45

6.3 使用G代码的宏调用 ............................................................................................. 51

6.4 使用M代码的宏调用 ............................................................................................ 54

6.5 使用M代码的子程序调用 .................................................................................... 57

6.6 使用T代码的子程序调用 ..................................................................................... 59

6.7例程 ............................................................................................. 错误!未定义书签。

6

共享知识 分享快乐

第一篇 铣工篇

专题一 行切和环切

在数控加工中,行切和环切是典型的两种走刀路线。

行切在手工编程时多用于规则矩形平面、台阶面和矩形下陷加工,对非矩形区域的行

切一般用自动编程实现。

环切主要用于轮廓的半精、精加工及粗加工,用于粗加工时,其效率比行切低,但可

方便的用刀补功能实现。

1.1环切

环切加工是利用已有精加工刀补程序,通过修改刀具半径补偿值的方式,控制刀具从

内向外或从外向内,一层一层去除工件余量,直至完成零件加工。

编写环切加工程序,需解决三个问题:

1

共享知识 分享快乐

 环切刀具半径补偿值的计算;

 环切刀补程序工步起点(下刀点)的确定;

 如何在程序中修改刀具半径补偿值。

1.1.1环切刀具半径补偿值的计算

确定环切刀具半径补偿值可按如下步骤进行:

1、确定刀具直径、走刀步距和精加工余量;

2、确定半精加工和精加工刀补值;

3、确定环切第一刀的刀具中心相对零件轮廓的位置(第一刀刀补值);4、根据步距确定中间各刀刀补值。

示例:用环切方案加工图1-1零件内槽,环切路线为从内向外。

2

共享知识 分享快乐 环切刀补值确定过程如下: R6101101、根据内槽圆角半径R6,选取φ129003R键槽铣刀,精加工余量为0.5mm,走刀步80204010距取10mm。

图1-1 2、由刀具半径6,可知精加工和半精加工的刀补半径分别为6和6.5mm;

3、如图所示,为保证第一刀的左右两条轨迹按步距要求重叠,则两轨迹间距离等于

步距,则该刀刀补值=30-10/2=25mm。

4、根据步距确定中间各刀刀补值,

第二刀刀补值=25-10=15mm

第三刀刀补值=15-10=5,该值小于半精加工刀补值,说明此刀不需要。

由上述过程,可知,环切共需4刀,刀补值分别为25、15、6.5、6mm。

3

共享知识 分享快乐

1.1.2环切刀补程序工步起点(下刀点)的确定

对于封闭轮廓的刀补加工程序来说,一般选择轮廓上凸出的角作为切削起点,对内轮

廓,如没有这样的点,也可以选取圆弧与直线的相切点,以避免在轮廓上留下接刀痕。在

确定切削起点后,再在该点附近确定一个合适的点,来完成刀补的建立与撤消,这个专用

于刀补建立与撤消的点就是刀补程序的工步起点,一般情况下也是刀补程序的下刀点。

一般而言,当选择轮廓上凸出的角作为切削起点时,刀补程序的下刀点应在该角的角

平分线上(45°方向),当选取圆弧与直线的相切点或某水平/垂直直线上的点作为切削起

点时,刀补程序的下刀点与切削起点的连线应与直线部分垂直。在一般的刀补程序中,为

缩短空刀距离,下刀点与切削起点的距离比刀具半径略大一点,下刀时刀具与工件不发生

干涉即可。但在环切刀补程序中,下刀点与切削起点的距离应大于在上一步骤中确定的最

大刀具半径补偿值,以避免产生刀具干涉报警。如对图1-1零件,取R30圆弧圆心为编程

4

共享知识 分享快乐

零点,取R30圆弧右侧端点作为切削起点,如刀补程序仅用于精加工,下刀点取在(22,

0)即可,该点至切削起点距离=8mm。但在环切时,由于前两刀的刀具半径补偿值大于8mm,

建立刀补时,刀具实际运动方向是向左,而程序中指定的运动方向是向右,撤消刀补时与

此类似,此时数控系统就会产生刀具干涉报警。因此合理的下刀点应在编程零点(0,0)。

1.1.3在程序中修改刀具半径补偿值 子程序 %1000 %0010 G54 G90 G0 G17 G40; G90 G1 Y60; Z50 M03 S1000; X-30; 在程序中修改刀具半径补偿值可采用如下方法 X0 Y0; Y0; Z5 M08; G3 X30 R30; G1 Z-10 F60; G0 G40 X0; G41 X30 D1 F100; M99; M98 P0010;  1、在刀补表中设好环切每一刀的刀具半径补偿值,然后在刀补程序中修改刀具补偿号。 G41 X30 D2 F100; M98 P0010; 补偿号 刀具补偿半径 G41 X30 D3 F100; 1 25 M98 P0010; 2 15 示例1.1 直接在G41/G42程序段修改刀具补偿号 G41 X30 D4 F100; 3 6.5 M98 P0010; 4 6 M05 M09; G0 Z50; %100 Y60; M30; G54 G90 G0 G17 G40; X-30; Z50 M03 S1000; Y0; X0 Y0; G3 X30 R30; Z5 M08; G0 G40 X0; 示例1.2 用宏变量表示刀具补偿号,利用循环修改刀具补偿号 G1 Z-10 F60; #1=#1+1; End1; #1=1; 刀补号变量 Z50; WHILE #1 LE 4 DO1; M30; G41 X30 D#1 F100; 主程序 5

主程序 共享知识 分享快乐 M98 P0010;

M05 M09; %100

G0 Z50; G54 G90 G0 G17 G40;

M30; Z50 M03 S1000;

X0 Y0;

 2、使用G10修改刀具补偿半径

子程序 Z5 M08;

G1 Z-10 F60; %0010 G10 L10 P1 R25; G90 G41 X30 D1 F100; M98 P0010; Y60; %1000 G41 X30 D1 F100; G10 L10 P1 R15; X-30; 示例1.3,使用G10和子程序完成环切 G54 G90 G0 G17 G40; Y60; M98 P0010; Y0; Z50 M03 S1000; X-30; G10 L10 P1 R6.5; G3 X30 R30;

X0 Y0; Y0; M98 P0010; G0 G40 X0; Z5 M08; G3 X30 R30; G10 L10 P1 R6; M99; G1 Z-10 F60; G0 G40 X0;

#10=#10-#11; #10=25 ;粗加工起始刀补值

END2; #11=10 ;步距

#10=#12+0.5 ;半精加工刀补值 #12=6 ;精加工刀补值

#11=0.5; 示例1.4 使用 #1=2 ;粗、精加工控制 G10和循环完成环切#1=#1-1; WHILE [#1 GE 1] DO1;

END1; WHILE #10 GE #12 DO2;

Z50; G10 L10 P1 R#10;

M30;

%1000 G41 X30 D[#10] F100;

G54 G90 G0 G17 G40; Y60; Z50 M03 S1000; X-30;

X0 Y0; Y0;

 3、直接用宏变量对刀补值赋值Z5 M08; G3 X30 R30; G1 Z-10 F60; G0 G40 X0;

#10=#10-#11; #10=25 ;粗加工起始刀补值

END2; #11=9.25 ;步距

#10=#12 ;半精加工刀补值 #12=6 ;精加工刀补值 示例 1.5直接用宏变量对刀补值赋值,利用循环完成环切。

#1=#1-1; #1=2 ;粗、精加工控制

END1; WHILE[ #1 GE 1] DO1;

Z50; WHILE[ #10 GE #12] DO2;

M30;

说明:在G41 X30 d#10中,#10表示刀具补偿号,而在G41 X30 d[#10]中,#10表示

刀具半径补偿值,此用法在FANUC说明书中没有,但实际使用的结果确实如此,如所用

系统不支持此用法,就只用示例1.4用法。

6

共享知识 分享快乐

1.1.4 环切宏程序

%1000 当使用刀具半径补偿来完成环切时,不管我们采用何种方式修改刀具半径补偿值,由G54 G90 G0 G17 G40; Z50 M03 S100; #4=30 ;左右边界 #5=60 ;上边界 于受刀补建、撤的,它们都存在走刀路线不够简洁,空刀距离较长的问题。对于象图#10=25 ;粗加工刀具中心相对轮廓偏移量(相当于刀补程序中的刀补值) #11=9.25 ;步距 #12=6 ;精加工刀具中心相对轮廓偏移量(刀具真实半径) G0 X[#4-#10-2] Y[#5-#10-2]; 1-1所示的轮廓,其刀具中心轨迹很好计算,此时如用宏程序直接计算中心轨迹路线,则 Z5; G1 Z-10 F60; #20=2 ; WHILE [#20 GE 2] DO1; 可简化走刀路线,缩短空刀距离。 #1 WHILE [#10 GE #12] DO2; R6 #1=#4-#10 ;左右实际边界 10 #2=#5-#10 ;上边实际边界 G1 X[#1-2] Y[#2-2] F200; 示例1.6 完全使用宏程序的环切加工 G3 X#1 Y#2 R2;圆弧切入到切削起点 G1 X[-#1]; Y0; 30R G3 X#1 R#1; 如图1-2所示,用#1、#2表示轮廓左右和上边界尺寸,编程零点在R30圆心,加工起始点10 G1 Y#2; G3 X[#1-2] Y[#2-2] R2 #10=#10-#11 20 END2 80#10=#12 放在轮廓右上角(可削除接刀痕) #20=#20-1 图1-2 END1 G0 Z50 M30 #29040110

7

共享知识 分享快乐

1.2 行切

一般来说,行切主要用于粗加工,在手工编程时多用于规则矩形平面、台阶面和矩形

下陷加工,对非矩形区域的行切一般用自动编程实现。

1.2.1 矩形区域的行切计算

 1、矩形平面的行切区域计算 如图所示,矩形平面一般采用图示直

刀路线加工,在主切削方向,刀具中心需切削至零件轮廓边,在进刀方向,在起始和终止

8

共享知识 分享快乐

位置,刀具边沿需伸出工件一距离,以避免欠切。

假定工件尺寸如图所示,采用Φ

精加工刀具中心轨迹 半精加工刀具中心轨迹 60面铣刀加工,步距50mm,上、下

边界刀具各伸出10mm。则行切区域

半精加工形成的轮廓 图1-4 尺寸为800×560(600+10*2-60)。

 2、矩形下陷的行切区域计算

对矩形下陷而言,由于行切只用于去除中间部分余量,下陷的轮廓是采用环切获得的,

因此其行切区域为半精加工形成的矩形区域,计算方法与矩形平面类似。

假定下陷尺寸100*80,由圆角R6选Φ12铣刀,精加工余量0.5mm,步距10mm,则

半精加工形成的矩形为(100-12*2- 0.5*2)*(80-12*2-0.5*2)=75*55。如行切上、下边界刀具

各伸出1mm,则实际切削区域尺寸=75*(55+2-12)=75*45。

9

共享知识 分享快乐

1.2.2行切的子程序实现

对于行切走刀路线而言,每来回切削一次,其切削动作形成一种重复,如果将来回切

削一次做成增量子程序,则利用子程序的重复可完成行切加工。

 1、切削次数与子程序重复次数计算

 进刀次数n=总进刀距离/步距=47/10=4.5,实际需切削6刀,进刀5次。

 子程序重复次数m=n/2=5/2=2,剩余一刀进行补刀。

 步距的调整:步距=总进刀距离/切削次数。

说明:

 当实际切削次数约为偶数刀时,应对步距进行调整,以方便程序编写;

 当实际切削次数约为奇数刀时,可加1成偶数刀,再对步距进行调整,或直接将剩下

的一刀放在行切后的补刀中,此时不需调整步距。

10

共享知识 分享快乐

 由于行切最后一刀总是进刀动作,故行切后一般需补刀。

主程序 子程序 %1000 %0020

G54 G90 G0 G17 G40; G91 G1 X75 F150; Z50 M03 S800; Y10;

X-75; G0 X-43.5 Y-33.5; 定位到下

Y10.; 刀点

G90 M99; Z5;

G1 Z-10 F100;

M98 P0010; 环切加工,、示例1.7  2

该程序省略

G1 X-37.5 Y-22.5; 行切起点 M98 P0020 L2; 行切加工 G1 X37.5; 补刀

对图1-4零件,编程零点设在工件,下刀点选在左下角点,加工程序如下:

Y22.5 X-37.5 G0 Z50; M30;

1.2.3 行切宏程序实现

对图1-4零件,编程零点设在工件,下刀点选在左下角点,加工宏程序如下:

示例1.8(本程序未考虑分层下刀问题)

11

WHILE [#8 GE 1] DO1; G1 X[#24-#4] Y[#25-#5];

 主程序 X[#24+#4];

%1000 Y[#25+#5];

共享知识 分享快乐 G54 G90 G0 G17 G40 X[#24-#4];

Y[#25-#5]; Z50 M03 S800

G65 P9010 A100 B80 C0 D6 Q0.5 K10 X0 Y0 Z-10 F150 #4=#4+#17; G0 Z50 #5=#5+#17;  宏程序调用参数说明:

M30 #8=#8-1;

A(#1)B(#2)-------矩形下陷的长与宽 END1; C(#3)------ -------粗精加工标志,C=0,完成粗精加工,C=1,只完成精加工。 IF [#3 EQ 1] GOTO 200;只走精加工,程序结束

D(#7)--------------刀具半径 X #4=#1/2-2*[#7+#17]; 行切左右极限

Q(#17)------------精加工余量 Y #5=#/2-3*#7-2*#17+4; 行切上下极限 K(#6)--------------步距 #8=-#5; 进刀起始位置

X(#24)Y(#25)----下陷中心坐标 G1 X[#24-#4] Y[#25+#8];

Z(#26)-------------下陷深度 WHILE [#8 LT #5 DO1];准备进刀的位置不到上极限时加工

F(#9)-------------- G1 Y[#25+#8]; 走刀速度 进刀

X[#24+#4]; 切削 #8=#8+#6; 准备下一次进刀位置 #4=-#4; 准备下一刀终点X

END1;

G1 Y[#25+#5]; 进刀至上极限,准备补刀

X[#24+#4]; 补刀

G0 Z5; N200 M99;

12

共享知识 分享快乐

专题二 相同轮廓的重复加工

在实际加工中,相同轮廓的重复加工主要有两种情况:

 1、同一零件上相同轮廓在不同位置出现多次;

 2、在连续板料上加工多个零件。

实现相同轮廓重复加工的方法

 1、用增量方式定制轮廓加工子程序,在主程序中用绝对方式对轮廓进行定位,再调用

子程序完成加工。

 2、用绝对方式定制轮廓加工子程序,并解决坐标系平移的问题来完成加工。

 3、用宏程序来完成加工。

13

 主程序

%1000

G54 G90 G0 G17 G40 M03;

共享知识 分享快乐 Z50 S2000; X-150 Y-50;

Z5; M98 P0010; G0 X-150 Y50; 2.1 用增量方式完成相同轮廓的重复加工 M98 P0010; G0 X0 Y50; M98 P0010; 图2-1 G0 X0 Y-50;

 子程序 φ12键槽铣刀加工。M98 P0010; 示例2-1,加工图2-1所示工件,取零件中心为编程零点,选用G0 X-150 Y-50; %0010 M98 P0010; G91 G0 X24; G0 X-150 Y50; G1 Z-27 F60; M98 P0010; G3 I-24 F200; 子程序用中心轨迹编程。 G0 Z100; G0 Z12; M30; G1 X10; G3 I-34; G0 Z15;

2.2用坐标系平移完成相同轮廓的重复加工

坐标系平移有两种方式

 G54+G52,用于重复次数不多,且轮廓分布无规律情况。

 G54+G92,用于轮廓分布有规律且重复次数很多的情况。

示例2-2用局部坐标系G52完成相同轮廓的重复加工,G54零点设在零件中心,局部

坐标系零点在需加工孔的孔心。

14

M98 P0020; G52 X0 Y50; M98 P0020; G52 X0 Y-50;

M98 P0020; 共享知识 分享快乐 G52 X150 Y-50; M98 P0020; G52 X150 Y50; M98 P0020;

G90 G0 X24; Z5; G1 Z-22 F100; G3 I-24; G0 Z-10; G1 X34; G3 I-34; G0 Z5; M99;

%1000 %0030

G54 G90G0 G17 G40; G92 X0 Y0 Z50 M03 M07 S1000; G90 G0 X24;

示例2-3,用G54+G92完成相同轮廓的重复加工,G54零点设设在零件中心,子坐标 X-150 Y-50; Z5;

M98 P0030 L3; G1 Z-22 F100; G54 G0 X-150 Y50; G3 I-24; M98 P0030 L3; G0 Z-10; G54 G0 Z100; 系零点在需加工孔的孔心。 G1 X34;

M30;

G3 I-34; G0 Z5; X150 M99; %1000 宏程序

G54 G90 G0 G17 G40 M03; 2.3 Z50 S2000; %9010

用宏程序完成相同轮廓的重复加工 Z5; G90 G0 X[#24+24] Y#25 G65 P9010 X-150 Y-50; Z5

G65 P9010 X-150 Y50; G1 Z-20 F60 G65 P9010 X0 Y50; G3 I-24 F200 G65 P9010 X150 Y-50; 示例G65 P9010 X0 Y-50; G0 Z-10 2-4,用G65调用完成加工,宏程序用绝对编程。G1 X[#24+34] G65 P9010 X150 Y50; G3 I-34 G0 Z100; G0 Z5

M30; M99

示例2-5,用G66调用完成加工,宏程序用绝对编程。

15

G66 P9011; Z5; G0 X-150 Y50; #20=#5+[#10-1]*#3;待加工孔的孔心坐标X X0 Y50;

WHILE #11 LE #1 DO2; G1 Z-22 F100;

X0 Y-50; #21=#6+[#11-1]*#4;孔心坐标G3 I-24; Y X150 Y-50;

共享知识 G0 X[#20+24] Y#21; 分享快乐 G0 Z-10;

X150 Y50; Z2; G1 X[#1+34]; G67; G1 Z-22 F100; G3 I-34; G0 Z100; G3 I-24; G0 Z5; M30; G0 Z-10; M99; G1 X[#20+34];

G3 I-34; G0 Z5; #11=#11+1; 示例2-6,使用循环,用一个程序完成加工 END2; #10=#10+1; END1; G0 Z100; M30;

16

共享知识 分享快乐

专题三 简单平面曲线轮廓加工

对简单平面曲线轮廓进行加工,是采用小直线段逼近曲线来完成的。具体算法为:采

用某种规律在曲线上取点,然后用小直线段将这些点连接起来完成加工。 %1000

G54 G90 G0 G17 G40; 示例3-1,椭圆加工,假定椭圆长(X向)、短轴(Y向)半长分别为A和B,则椭圆的极 Z50 M30 S1000; X60 Y-15; Z5 M07; G1 Z-12 F800; xa.cos坐标方程为,利用此方程可方便地完成在椭圆上取点工作。 G42 X50 D1 F100;

yb.sin Y0;

#1=0.5; θ变量初始值0.5度

WHILE #1 LE 360 DO1;

编程条件:编程零点在椭圆中心,a=50#2=50*COS[#1]; ,b=30,椭圆轮廓为外轮廓,下刀点在椭圆右#3=30*SIN[#1]; G1 X#2 Y#3; #1=#1+0.5;

END1; 10mm。程序如下: 极限点,刀具直径φ18,加工深度G1 Y15; G0 G40 X60; Z100; M30;

17

共享知识 分享快乐

专题四 简单立体曲面加工

4.1球面加工

图4-1  球面加工使用的刀具

 粗加工可以使用键槽铣刀或立铣刀,也可以使用球头铣刀。

 精加工应使用球头铣刀。

 球面加工的走刀路线

 一般使用一系列水平面截球面所形成的同心圆来完成走刀。

 在进刀控制上有从上向下进刀和从下向上进刀两种,一般应使用从下向上进刀来

完成加工,此时主要利用铣刀侧刃切削,表面质量较好,端刃磨损较小,同时切

削力将刀具向欠切方向推,有利于控制加工尺寸。

18

共享知识 分享快乐  进刀控制算法 θ

图4-2 进刀点的计算:

 先根据允许的加工误差和表面粗糙度,确定合理的Z向进刀量,再根据给定加工深度

Z,计算加工圆的半径,即:r=sqrt[R2-z2]。此算法走刀次数较多。

 先根据允许的加工误差和表面粗糙度,确定两相邻进刀点相对球心的角度增量,再根

据角度计算进刀点的r和Z值,即Z=R*sinθ,r=R*cosθ。

进刀轨迹的处理

 对立铣刀加工,曲面加工是刀尖完成的,当刀尖沿圆弧运动时,其刀具中心运动轨迹

也是一行径的圆弧,只是位置相差一个刀具半径。

 对球头刀加工,曲面加工是球刃完成的,其刀具中心是球面的同心球面,半径相差一

19

共享知识 分享快乐

个刀具半径。

4.1.1外球面加工

 主程序

 宏程序调用参数说明 %1000 X(#24)/Y(#25)------球心坐标 G91 G28 Z0 示例4-1,加工图4-3所示外球面。为对刀方便,宏程序编程零点在球面最高点处,采Z(#26)----------------球高 M06 T01 D(#7)----------------刀具半径 G54 G90 G0 G17 G40 Q(#17)---------------角度增量,度 G43 Z50 H1M03 S3000

I(#4)------------------球径 G65 P9013 X0 Y0 Z-30 D6 I40.5 Q3 F800 用从下向上进刀方式。立铣刀加工宏程序号为%9013,球刀加工宏程序号%9014。F(#9)-----------------走刀速度 G49 Z100 M05 G28 Z105

M06 T02

G43 Z50 H2 M03 S4000

G65 P9014 X0 Y0 Z-30 D6 I40 Q0.5 F1000

G49 Z100 M05 G28 Z105 M30

图4-3  宏程序

20

G1 Z#1 F#9;

#3=#3+#17; X[#24+#2];

#1=#4*[SIN[#3]-1];Z= - (R - RSINθ) G2 I-#2; #2=#4*COS[#3]+#7 ;r=RCOSθ+r刀 #3=#3+#17;

END1; 共享知识 分享快乐 #1=#4*[SIN[#3]-1]; Z= - (R - RSINθ) G0 Z5; #2=#4*COS[#3] ; r=RCOSθ M99; END1;

G0 Z5; M99;

4.1.2内球面加工 %9015 %9016 #6=#4+#26 球心在零点之上的高度 #6=#4+#26 球心在零点之上的高度 图4-4 中间变量 #8=SQRT[#4*#4 - #6*#6] 中间变量 #8=SQRT[#4*#4 - #6*#6] #3=90-ATAN[#6]/[#8] 加工终止角 #3=90-ATAN[#6]/[#8] 加工终止角 示例#8=SQRT[#4*#4 - #7*#7] 4-2,加工图4-4所示内球面。为对刀方便,G90 G0 X#24 Y#25; 加工起点 #5=ATAN[#7]/[#8] 加工起始角 Z5; G1 Z#26 F50; G90 G0 X#24 Y#25; 加工起点

#5=#17; Z5;

宏程序编程零点在球面最高处中心,采用从下向上进刀方式。其主程序与示例4-1类似,#4=#4 - #7; G1 Z[#6-#8] F50;

WHILE [#5 LE #3] DO1; 角度小于等于#5=#5+#17;

WHILE [#5 LE #3] DO1;角度小于等于终止角时加工 #1=#6 - #4*COS[#5]; Z 终止角时加工

宏程序调用参数与示例4-1相同,本例不再给出。立铣刀加工宏程序号为,球刀加#2=#4*SIN[#5]; %9015 X #1=#6 - #4*COS[#5]; Z

G1 Z#1 F#9; #2=#4*SIN[#5] - #7; X

X[#24+#2]; G1 Z#1 F#9;

G3 I-#2; X[#24+#2];

#5=#5+#17; G3 I-#2; 工宏程序号%9016。 END1; #5=#5+#17;

G0 Z5; END1;

M99; G0 Z5;

M99;

21

共享知识 分享快乐

4.2水平圆柱面的加工

水平圆柱面加工可采用行切加工

 沿圆柱面轴向走刀,沿圆周方向进刀;走刀路线短,加工效率高,加工后圆柱面直线

度好;用于模具加工,脱模力较大;程序可用宏程序或自动编程实现。

 沿圆柱面圆周方向走刀,沿轴向进刀;走刀路线通常比前一方式长,加工效率较低,但用于大直径短圆柱则较好,加工后圆柱面轮廓度较好;用于模具加工,脱模力较小;程序可用子程序重复或宏程序实现,用自动编程实现程序效率太低。

a 图4-4 b 4.2.1圆柱面的轴向走刀加工

示例4-3,为简化程序,以完整半圆柱加工为例(图4-4 a)。为对刀、编程方便,主程

序、宏程序零点放在工件左侧最高点,毛坯为方料,立铣刀加工宏程序号为%9017,球刀

22

%9017 %9018 圆柱长 G91 G28 Z0 A(#1)------------G90 G0 X[#24-2] Y[#25+#4+#7]; #4=#4+#7 刀具半径 M06 T01 D(#7)------------- Z5; G90 G0 X[#24-2] Y[#25+#4]; G54 G90 G0 G17 G40 Q(#17)------------角度增量,度 G1 Z-#4 F200; Z5; G43 Z50 H1M03 S3000

I(#4)------------------圆柱半径 分享快乐 G1 Z-#4 F200; #8=1; 立铣刀偏置方向共享知识 G65 P9017 X-6 Y0 A126 D6 I40.5 Q3 F800 F(#9)-----------------走刀速度 #10=0; 角度初值 G49 Z100 M05 #10=0; 角度初值

G28 Z105 #11=#24+#1/2;轴线X #11=#24+#1/2;轴线X M06 T02 #12=#1/2;轴线两端相对距离 #12=#1/2;轴线两端相对距离

G43 Z50 H2 M03 S4000 WHILE [#10 LE 180] DO1; 加工宏程序号%9018。 WHILE [#10 LE 180] DO1;

G65 P9018 X0 Y0 A120 D6 I40 Q0.5 F1000 #13=#4*[SIN#10-1]; Z #13=#4*[SIN#10-1]; Z

G49 Z100 M05 #14=#4*COS#10; Y #14=#4*COS#10; Y G28 Z105 G1 Z#13 F#9 G1 Z#13 F#9 M30 Y[#25+#14] Y[#25+#14+#7*#8]

G1 X[#11+#12] G1 X[#11+#12] #10=#10+#17 #10=#10+#17

#12=-#12 IF #10 LE 90 GOTO 10

END1 #8=-1

G0 Z5 N10 #12=-#12

M99 END1

G0 Z5

M99

 主程序

 子程序

%1000 %0020

G91 G28 Z0 4.2.1圆柱面的周向走刀加工G90 G19 G2 Y-6.5 Z0.5 R40.5 F800

M06 T01 G1 Y6.5 G54 G90 G0 G17 G40 G2 Y46.5 Z-40 R40.5 G43 Z50 H1 M03 S3000 G91 G1 X1

X-8 Y-46.5 G90 G3 Y6.5 R40.5

为简化程序,以完整半圆柱加工为例(图4-4 a)。为对刀、编程方便,主程序、宏程序G1 Z-40 F200 G1 Y-6.5

X-5 G3 Y-46.5 Z-40 R40.5 M98 P0020 L28 G91 G1 X1 G49 Z100 M05 G90 M99

零点放在工件左侧最高点,毛坯为方料。 G28 Z105

M06 T02 %0021

G43 Z50 H2 M03 S4000 G90 G19 G2 Y46 R46 F1000

X0 Y-46 G91 G1 X0.5 G1 Z-46 F200 G90 G3 Y-46 R46 示例4-4,子程序加工方案,立铣刀加工程序号为%0020,球刀加工程序号%0021。 M98 P0021 L50 G91 G1 X0.5 G49 Z100 M05 G90 M99 G28 Z105 M30

23

#2=2; G2/G3 #2=2; G2/G3 #3=1; 切削方向 #3=1; 切削方向 G90 G0 X[#10-2] Y[#25-#3*[#4+#7]]; #4=#4+#7

共享知识 分享快乐 Z5; G90 G0 X[#10-2] Y[#25-#3*#4];

G1 Z-#4 F200; Z5; WHILE[ #10 LE #11] DO1 G1 Z-#4 F200;

WHILE [#10 LE #11] DO1 G1 X#10 F#9 ; 进刀

G1 X#10 F#9 ; 进刀 G#2 Y[#25-#3*#7] Z0 R#4; 立铣刀加工宏程序号为 走1/4圆弧 示例4-5,宏程序加工方案,%9020,球刀加工宏程序号%9021。G#2 Y[#25+#3*#4] Z0 R#4; 走圆弧 G1 Y[#25+#3*#7]; 走一个刀具直径的直线

#10=#10+#17; 计算下一刀位置 G#2Y[#25+#3*[#4+#7]] Z-#4R#4;走1/4圆弧

#2=#2+#3; 确定下一刀G2/G3 #10=#10+#17; 计算下一刀位置

#3=-#3; 切削方向反向 #2=#2+#3; 主程序和宏程序调用参数与示例 确定下一刀G2/G3 4-3基本相同,不再给出。

END1 #3=-#3; 切削方向反向

G0 Z5 END1

M99 G0 Z5

M99

24

共享知识 分享快乐

专题五 孔系加工

孔系加工可分为矩形阵列

孔系和环形阵列孔系加工两种

情况。

图5-1 5.1 矩形阵列孔系加工

 主程序

 宏程序调用参数说明

%1000 X(#24)-----阵列左下角孔位置

就单孔加工而言,其加工有一次钻进和间歇钻进之分,为使用方便,定制的宏程序应G91 G28 Z0; Y(#25)

M06 T1;中心钻 A(#1)-------行数 G54 G90 G0 G17 G40 B(#2)-------列数 G43 Z50 H1 M03 M07 S1000 I(#4)--------行间距

G65 P9022 X19.5 Y14 A9 B20 I9 J9 R2 Z-3 Q0 F60 能完成此两种加工。以图5-1所示工件为例,板厚20,编程零点放在工件左下角。

J(#5)--------列间距

G0 G49 Z150 M05 M09

R(#7)-------快速下刀高度 G91 G28 Z0

Z(#26)------钻深 M06 T2;钻头

Q(#17)------每次钻进量,Q=0,G90 G43 Z50 H2 M03 M07 S1200 示例5-1,矩形阵列孔系宏程序加工,阵列基准为左下角第一个孔。 则一次钻进到指定深度。 G65 P9022 X19.5 Y14 A9 B20 I9 J9 R2 Z-22 Q2 F100

G0 G49 Z150 M05 M09 F(#9)--------钻进速度

G91 G28 Z0

M30

 宏程序

25

END3 #13=#24; X坐标 #12=#25+[#10-1]*#4 ; Y坐标 ; 一次钻进/或补钻 N10 G1 Z#26 F#9 一次钻进/或补钻#15=1; 方向 WHILE[ #11 LE #2 ]DO2 G0 Z#18; 抬刀至快进点 G0 Z#7; 抬刀至快进点WHILE [#10 LE #1] DO1 #13=#24+[#11-1]*#5; X坐标 #11=#11+1; 列加1 #11=#11+1; 列加#11=1 ; 列变量 G0 X#13 Y#12; 孔心定位 共享知识 分享快乐 #13=#13+#5*#15 1 END2 WHILE [#11 LE #2] DO2 Z#7; 快速下刀 END2 #10=#10+1; 行加1 G0 X#13 Y#12; 孔心定位 IF[ #17 EQ 0 ]GOTO 10 #13=#13-#15*#5 END1 #14=#7-#17Z#18; ; 分次钻进 快速下刀 #10=#10+1; M99 行加1 IF [#17 EQ 0] GOTO 10 WHILE [#14 GT #26] DO3 #15=-#15 #14=#18-#17; 分次钻进 #12=#12+#4  主程序 WHILE [#14 GT #26] DO3 END1 G1 Z#14 F#9 %1000 M99 G0 Z[#14+2] G91 G28 Z0; M06 T1; 中心钻 G54 G90 G0 G17 G40; G43 Z50 H1 M03 M07 S1000; G65 P9023 X0 Y0 A0 B45 I50 K8 R2 Z-3 Q0 F60 G65 P9023 X0 Y0 A0 B30 I80K12 R2 Z-3 Q0 F60 5.2环形阵列孔系加工 G0 G49 Z120 M05 M09  宏程序调用参数说明 G91 G28 Z0 M06 T2; X(#24)----- 阵列中心位置钻头 G43 Z50 H2 M03 M07 S800 Y(#25) G65 P9023 X0 Y0 A0 B45 I50 K8 R2 Z-22 Q2 F60 示例5-2,加工图5-2所示工件。编程零点放在分布圆中心。 A(#1)-------起始角度 G65 P9023 X0 Y0 A0 B30 I80 K12 R2 Z-42 Q2 F60 B(#2)-------角度增量(孔间夹角) G0 G49 Z100 M05 M09 G91 G28 Z0 I(#4)--------分布圆半径 K(#6)-------孔数 M30 图5-2 R(#7)-------快速下刀高度 Z(#26)------钻深 Q(#17)------每次钻进量,Q=0,则一次钻进到指定深度。 %9023 G0 Z[#14+2] F(#9)--------钻进速度 Z[#14+1] #10=1; 孔计数变量 #14=#14-#17 WHILE [#10 LE #6] DO1 END2 #11=#24+#4*COS[#1]; X N10 G1 Z#26 F#9; 一次钻进/或补钻 #12=#25+#4*SIN[#1]; Y G90 G0 X#11 Y#12; 定位 G0 Z#7; 抬刀至快进点 Z#7; 快速下刀  宏程序 #10=#10+1; 孔数加1 IF [#17 EQ 0] GOTO 10 #1=#1+#2; 孔分布角加角度增量 #14=#7-#17; 分次钻进 END1 WHILE [#14 GT #26] DO2 M99 G1 Z#14 F#9 26

共享知识 分享快乐

第二篇 车工篇

专题六 参数编程

参数编程用于系列零件的加工,此系列零件形状相同,但有部分尺寸不同。如果将这

些不同的尺寸用宏变量(参数)形式给出,由程序自动对相关节点坐标进行计算,则可用同

一程序完成一个系列零件的加工。

以图6-1零件为例。该系列零件的右端面半球球径可取R15和R10,可将球径用变量

表示。编程零件设在工件右端面中心,棒料Φ45。

从图中可以看出,编程所需节点,除

∠1:2 A、D、E三点外,B、C点均与球径R有

关。下面给出各节点坐标。

图6-1 编号 坐标值 27

共享知识 分享快乐

X Z A 0 0 B 2R -R C 2R -(60-2*(20-R))=-20-2R %1001 T0101; D 40 -60 G54 G90 G0 G95 M03 S800; X45 Z2 M07; #1=15; G71 U7 R1; E 40 -90 G71 P10 Q20 U1 W0.2 F0.4 S750; N10 G0 X0 S1200; G3 X[2*#1] Z-#1 R#1 F0.15; G1 Z[-20-2*#1]; X40 Z-60; 加工程序如下: Z-100; N20 X45; G70 P10 Q20; G0 X200 Z200; M30;

28

共享知识 分享快乐

专题七 方程曲线的车削加工

在实际车削加工中,有时会遇到工件轮廓是某种方程曲线的情况,此时可采用宏程序

完成方程曲线的加工。

7.1方程曲线车削加工的走刀路线:

 粗加工:应根据毛坯的情况选用合理的走刀路线。

 对棒料、外圆切削,应采用类似G71的走刀路线;

 对盘料,应采用类似G72的走刀路线;

 对内孔加工,选用类似G72的走刀路线较好,此时镗刀杆可粗一些,易保证加工质量。

 精加工:一般应采用仿形加工,即半精车、精车各一次。

29

共享知识 分享快乐

%200 7.2 椭圆轮廓的加工 G50 X100 Z200; T0101; G95 G0 X41 Z2 M03 S800; G1 Z-100 F0.3; 粗加工开始 对椭圆轮廓,其方程有两种形式。对粗加工,采用G71/G72走刀方式时,用直角坐标G0 X42; Z2; 图7-2 2#1=20*20*4; 4a  直角坐标方程: G0 X0 S1500; 进刀,准备精加工 #2=60;  x  2 a  sinb  极坐标方程 #20=0 ; x 2 z 2 角度初值 #3=35 ; 方程比较方便;而精加工  zX(直径值) )用极坐标方程比较方便。初值bcos(仿形加工21曲线加工 WHILE [#20 LE 90] DO2; 2WHILE[ #3 GE 0] DO1; 粗加工控制 4aba—X向椭圆半轴长; #3=2*20*SIN[#20]; X #4=#2*SQRT[1-#3*#3/#1]; Z 2 #4=60*COS[#20]; x Z b—Z向椭圆半轴长; G0 X[#3+1] ; 进刀zb12 G1 X[#3+#10] Z[#4+#11] F0.1; 4aθ—椭圆上某点的圆心角,零角度在G1 Z[#4-60+0.2] F0.3; 切削 Z轴正向。 #20=#20+1; G0 U1; 退刀 END2; Z2; 返回 G1 Z-100; #3=#3-7; 下一刀切削直径 G0 X45 Z2; 示例7-2,加工图 END1; 7-2所示椭圆轮廓,棒料Φ45,编程零点放在工件右端面。 #10=#10-0.8; #10=0.8; x向精加工余量 #11=#11-0.1; END1; #11=0.1; z向精加工余量 G0 X100 Z200 T0100; WHILE[ #10 LE 0] DO1; 半精、精加工控制 M30; 7.3 抛物线加工

示例7-3,加工图7-3所示抛物线孔,方程为Z=X2/16,换算成直径编程形式为Z=X2/,则图7-3 X=sqrt[Z]/8。采用端面切削方式,编程零点放在工件

右端面中心,工件预钻有Φ30底孔。

30

G1 X[#2-#10] Z[#1+#11] F0.1;

#1=#1+0.3; END2; G0 X28;

共享知识 分享快乐 #10=#10-0.2;

#11=#11-0.2; END1;

G0 X100 Z200 M05 M09;

T0100; M30;

31

共享知识 分享快乐

附录 FANUC系统G指令和宏指令

附录1 刀具补偿值、刀具补偿号及在程序中赋值G10

1、刀具补偿值的范围

米制:0~±999.999mm

英制:0~±99.9999inch

2、刀具补偿值的存贮

刀具补偿存贮器A:使用与刀具补偿号对应的刀具补偿值。

补偿号 刀具补偿值 1 … 32

共享知识 分享快乐

400 刀具补偿存贮器B:使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。

补偿号 几何补偿 磨损补偿 1 … 400 刀具补偿存贮器C:刀具补偿分长度补偿(H)和半径补偿(D),使用与刀具补偿号对应

的刀具几何补偿、刀具磨损补偿。

刀具长度补偿(H) 补偿号 几何补偿 磨损补偿 刀具半径补偿(D) 几何补偿 磨损补偿 1 33

共享知识 分享快乐

… 400 3、刀具补偿赋值格式:

 刀具补偿存贮器A:G10 P____ R____;

 刀具补偿存贮器B:

刀具补偿存贮器种类 格式 几何补偿 G10 L10 P___ R___; 磨损补偿 G10 L11 P___ R___;  刀具补偿存贮器C:

刀具补偿存贮器种类 格式 34

共享知识 分享快乐

刀具长度补偿几何补偿 G10 L10 P___ R___; (H) 磨损补偿 G10 L11 P___ R___; 刀具半径补偿几何补偿 G10 L12 P___ R___; (D) 磨损补偿 G10 L13 P___ R___; P――刀具补偿号;R――G90时,为刀具补偿实际值;G91时,R值加到指定刀具补偿值

上(其和为刀具补偿值,即R值为刀具补偿增量)。

附录2 缩放G50、G51

编程的形状可以被放大或缩小(比例缩放)。用x,y,z指定的尺寸均可用相同的或不

同的放大倍率进行缩放,放大倍率可以在程序中指定。如果未在程序中指定,则使用在参

数中指定的放大倍率。

格式:

35

共享知识 分享快乐

 在所有轴分量上用相同的放大倍率缩放

G51 X__ Y__ Z__ P__; 缩放开始

G50; 缩放取消

X__ Y__ Z__:缩放中心绝对值指定。

P_:缩放比例。

 在每一个轴上用不同的放大倍率缩放

G51 X__ Y__ Z__ I__ J__ K__; 缩放开始…

G50; 缩放取消I__ J__ K__:x、y、z各自的缩放比例。

36

共享知识 分享快乐

警告: 在一个单独的程序段中指令G51,在图形放大或缩小后,指令G50以取消缩放模式。 解释

 在所有轴上用相同的放大倍率缩放

最小放大比例输入增量是0.001或0.00001,这由参数036#07的值决定。如果在缩放

程序段(G51 X__ Y__ Z__ P__;)没有指定比例P,则使用在参数731中设定的放大倍率。

如果忽略X、Y、Z,则指定G51指令处的刀具位置为缩放中心。

 在每一个轴上用不同的放大倍率缩放(负放大倍数)

每个轴可按不同比例放大,当指定负放大时,可实现镜像。首先设置参数063#6,使

各轴缩放(镜像)生效,然后设置参数036#0、#1、#2允许各轴缩放,最后设置参数036#7

指定各轴最小放大比例输入增量是0.001或0.00001。

设置给参数5421的放大倍数不得超过范围±0.00001~±9.99999或±0.001~±9.999。

37

共享知识 分享快乐

如果设置负值,则实现镜像。

如果未指令放大倍数I、J、K,则使用设置在参数(NO.731、732、733)中的放大倍

数。但参数中必须设置一非零值。

注意: 缩放倍率(I、J、K)不能使用小数点编程。  圆弧插补的缩放

即使在圆弧插补中各轴使用不同的放大倍率,刀具也不会沿椭圆运动。(即对圆弧插

补的数据缩放后再执行圆弧插补。)

当用半径R指令的圆弧插补、各轴使用不同的放大倍数时,将如下图所示。(该示例G90 G00 X0.0 Y100.0; YG51 X0.0 Y0.0 Z0.0 I2000 J1000; 缩放过的外形G02 X100.0 Y0.0 R100.0 F500; (0,100)上述指令等价于下列指令: 中,X分量的放大倍数为2,Y分量的放大倍数为1)。 G90 G00 X0.0 Y100.0 Z0.0; G02 X200.0 Y0.0 R200.0 F500; X半径R的放大倍数为I、J中较大的。 (200,0) (0,0)(100,0) 当用I、J、K指令的圆弧插补各轴使用不同的放大倍数时,将如下图所示。(该示例中,

38

共享知识 分享快乐 G90 G00 X0.0 Y0.0; YG51 X0.0 Y0.0 Z0.0 I2000 J1000; G02 X100.0 Y0.0 I0.0 J-100.0 F500; 缩放过的外形(0,100)上述指令等价于下列指令: X分量的放大倍数为2,Y分量的放大倍数为1) G90 G00 X0.0 Y100.0 Z0.0; G02 X200.0 Y0.0 I0.0 J-100.0 F500; X此时,指令终点与半径的端点不重合, (200,0)(100,0)包含了一直线段。 (0,0) 无效的缩放

缩放不能用于刀具半径补偿值、刀具长度偏置值和刀具偏置值。

在下列固定循环中,Z轴运动不会缩放:

 深孔加工循环(G83、G73)的每次钻进量Q和回退量;

警告: G76;  精镗循环1、如果使用参数设置值作为放大比例而不指定P,则在G51指令的整个周期内都使用此设置值作为放大比例,并且对该值的任何修改都是无效的。 2、在指令返回参考点(G27、G28、G29、G30)或坐标系设置(G92)的G代码之 反精镗循环G87中在X轴和Y轴上让刀量Q; 前,应取消缩放模式。 3、如果缩放结果被四舍五入圆整后,超过了取值范围(数据上溢),忽略余数后,移动量可能变成零。此时,该程序段被当作一无运动程序段,因而将可能影响刀具半径C补偿下的刀具运动。 注意: 1、运动位置坐标显示值是缩放后的结果。 在手动操作中,移动距离不能用缩放功能增大或减小。 2、当镜像在指定平面内应用于某轴时,会产生下列结果: 圆弧指令-----------------------------圆弧旋向反向  刀具半径C补偿-------------------偏置方向反向  坐标系旋转--------------------------旋转角度反号 39

共享知识 分享快乐

示例:镜像程序

子程序

O9000;

G00 G90 X60.0 Y60.0;

Y10060504000405060100XG01 X100.0 F100;

Y100.0;

X60.0 Y60.0;

40

共享知识 分享快乐

M99;

主程序

N10 G00 G90;

N20 M98 P9000;

N30 G51 X50.0 Y50.0 I-1000 J1000;

N40 M98 P9000;

N50 G51 X50.0 Y50.0 I-1000 J-1000;

N60 M98 P9000;

N70 G51 X50.0 Y50.0 I1000 J-1000;

N80 M98 P9000;

N90 G50;

41

共享知识 分享快乐

附录3 坐标系旋转 G68、G69

格式:

G17G18G68____R__; 坐标系旋转开始 G19… 坐标系旋转状态

G69; 坐标系旋转取消

式中:

G17(G18、G19):用于选择旋转平面(该面内包含有需旋转的轮廓)α_β_:旋转中心,可用xy,zx,yz指定,由G17、G18、G19决定。R_:旋转角度,顺时针指定。

参数041的0位用于选择旋转角度的指定方式。

42

共享知识 分享快乐

041#0=0,R值为绝对旋转角度;

041#0=1,G90时,R值为绝对旋转角度;G91时,R值为旋转角度增量。

最小输入增量:0.001deg(度)

无效数据范围:360,000~360,000

解释

 选择平面的G代码G17、G18、G19

在含有坐标系旋转的G代码(G68)的程序段内可指定选择平面的G代码G17、G18、G19,

但在坐标系旋转状态下不能指定G17、G18、G19。

至于在G68程序段与一含绝对编程指令(G90)程序段之间用指令增量位置指令(G91)

的情况,被当作:在G68被指令处的位置是旋转中心(图14.9(c))。

当α_β_省略时,G68被指令时的位置被设成旋转中心。

43

共享知识 分享快乐

N1 G92 X-50.0 Y-50.0 G69 G17; 当在N3程序段用增量指令时(括号中)的刀具路径N2 G68 X70.0 Y30.0 R60.0; 当旋转角度省略时,设置在参数NO.730中的值被当作旋转角度。 N3 G90 G01 X0 Y0 F200; 原有编程刀具路径(G91 X50.0 Y50.0) N4 G91 X100.0; N5 G02 Y100.0 R100.0; N6 G03 X-100.0 I-50.0 J-50.0; 坐标系旋转由G69取消。 N7 G01 Y-100.0; 60°(0,0)N8 G69 G90 X-50.0 Y-50.0 M02; 旋转中心(70.0,30.0) (-50.0,-50.0)旋转后的刀具路径 G69指令可和其它指令一起在同一程序段中指定。刀具偏置如:切削半径补偿、刀具长度

补偿、刀具偏置,在坐标系旋转后执行。 在刀具半径C补偿状态下可以 坐标系旋转前的编程轨迹指定G68和G69,旋转平面和 警告: 刀具半径补偿平面必须重合。 在指定G69的程序段必须用绝对编程方式指定运N1 G92 X0 Y0 G69 G01; N2 G42 G90 X100.0 Y100.0 动。 刀具路径 F100 H01; N3 G68 R-30; N4 G91 X200.0; N5 G03 X100.0 R100.0 J50.0; 示例 (0,0)N6 G01 X-200.0; N7 Y-100.0; N8 G69 G40 G90 X0 Y0 M30; 坐标系旋转后的编程轨迹 30°  刀具半径补偿和坐标系旋转

比例缩放和坐标系旋转

如果在缩放状态(G51)下指令坐标系旋转旋转中心α_β_也将被缩放,但角度不缩放。

44

共享知识 分享快乐

当指令运动指令时,先实现缩放,再实现坐标缩放。在缩放模式的刀具补偿(G41、G42)

状态下,不能指定坐标系旋转。坐标系旋转通常应先于刀具半径C补偿指定。

1、当系统没有处于刀具半径C补偿状态时,可按如下序列指定指令:

G51; 缩放模式开始

G68…; 坐标系旋转模式开始

G69; 坐标系旋转模式取消

G50; 缩放模式取消

2、当系统处于刀具半径C补偿状态时,可按如下序列指定指令:

G51; 缩放模式开始

G68…; 坐标系旋转模式开始

45

共享知识 分享快乐

G41(G42)…;刀具半径C补偿模式开始

G40…; 刀具半径补偿模式

G69; 坐标系旋转模式取消

G50; 缩放模式取消

例:

G90 G92 X0 Y0;

G51 X300 .0 Y150.0 P500;

G68 X200.0 Y100.0 R45.0;

46

共享知识 分享快乐

G01 G42 X400.0 Y100.0 F100 H01;

G91 Y100.0;

X-200.0;

Y-100.0; G92 X0 Y0 G69 G17; G01 F200 H01; M98 P2100; X200.0; M98 P072200; G69 G00 G90 X0 Y0 M30; (0,0)O2200 G68 X0 Y0 G91 R45.0; … G90 M98 P2100; M99; O2100 G90 G01 G42 X0 Y-10.0 H01;  X4.142; 坐标系旋转的重复 (0,-10.0)X7.071 Y-7.071; G40; subprogram子程序M99; 可将一个程序当子程序存贮起来,再通过修改其角度来调用子程序。下例是在参数041#0=1的情

况下编制的,此时角度指定用绝对值还是增量值依赖于G代码(G90/G91)状态。

47

共享知识 分享快乐

附录4 宏程序B(custom macro B)

尽管子程序对重复性的相同操作很有用,(但仍不能和宏程序相提并论)。用户宏程序功能

允许使用变量、算术和逻辑运算、以及条件分支控制,这便于普通加工程序的发展,如发

展成打包好的自定义的固定循环。加工程序可利用一简单的指令来调用宏程序,就像使用

子程序一样。

加工程序:

O0001; ┋

G65 P9010 R50.0 L2;

┋ M30;

用户宏程序: O9010; #1+#18/2;

G01 G42 X#1 Y#1 F300; G02 X#1 Y-#1 R#1;

┋ M99;

例:

1 宏变量(variables)

普通加工程序中指定G代码和移动距离时,直接使用数字值,如:G100和X 100.0。而在

48

共享知识 分享快乐

用户宏程序中,数字值可直接指定或使用变量号(称宏变量)。当采用宏变量时,其值可

在程序中修改或利用MDI面板操作进行修改。

例:#1=#2+100;

G01 X #1 F300;

Explanation( 说明)

 宏变量的表示形式

当指定一宏变量时,用“#”后跟变量号的形式,如:#1。在计算机上允许给变量指定变

量名,但用户宏程序没有提供这种能力。

宏变量号可用表达式指定,此时,表达式应包含在方括号内。

如:#[#1+#2-12]

 宏变量的取值范围

49

共享知识 分享快乐

局部变量和全局变量取值范围如下:

1047~1029,0,1029~1047

如计算结果无效(超出取值范围)时,发出编号111的错误警报。

 小数点的省略

在程序中定义宏变量的值时,可省略小数点。

例:#1=123;

宏变量#1的实际值是123.000。

 未赋值(定义)的变量

如果一个宏变量没有赋值(无定义),则该变量被当作空变量。宏变量#0通常情况下是一

个空变量,它只能读,不能写(赋值)。

 宏变量的类型

50

共享知识 分享快乐

根据变量号,宏变量可分成四种类型,如下表所示。

变量号 变量类型 功 能 #0 空变量 该变量通常为空(null),该变量不能赋值 局部变量 局部变量只能在宏程序内部使用,用于保存数据,如运算#1~#33 Local 结果等。当电源关闭时,局部变量被清空,而当宏程序被Variables 调用时,(调用)参数被赋值给局部变量。 全局变量可在不同宏程序之间共享,当电源关闭时,全局变量 #100~#149(#199) Common #500~#531(#999) variables 器磁带长度不得小于8.5m。 算中,#150~#199,#532~#999的变量可被使用,但存储#100~#149被清空,而#500~#531的值仍保留。在某一运#1000~#9999 系统变量 系统变量可读、可写,用于保存NC的各种数据项,如:51

共享知识 分享快乐

System 当前位置、刀具补偿值等。 variables 注:全局变量#150~#199,#532~#999是选用变量,应根据实际系统使用。

 宏变量的引用

在程序中引用(使用)宏变量时,其格式为:在指令字地址后面跟宏变量号。当用表达

式表示变量时,表达式应包含在一对方括号内。

如:G01 X[#1+#2] F#3;

被引用宏变量的值会自动根据指令地址的最小输入单位进行圆整。

例:程序段G00 X#1;,给宏变量#1赋值12.3456,在1/1000mm的CNC上执行时,程

序段实际解释为G00 X12.346;。

要使被引用的宏变量的值反号,在“#”前加前缀“-”即可。

52

共享知识 分享快乐

如:G00 X-#1;

当引用未定义(赋值)的宏变量时,该变量前的指令地址被忽略。

如:#1=0,#2=null(),执行程序段G00 X#1 Y #2;,结果为G00 X0。 VARIABLE 未赋值 O1234 N1234 NO. DATA NO. DATA 100 123.456 108 101 0.000 109 102 110 103  宏变量值的显示 111 104 112 105 113 106 114 107 115 ACTUAL POSITION (RELATIVE) 1、按偏置菜单纽,显示刀具补偿显示屏幕。 实际位置(相对) X 0.000 Y 0.000 Z 0.000 B 0.000 [ OFFSET ] [ MACRO ] [ MENU ] [ WORK ] [ ] 2、按软体键[MACOR],显示宏变量屏幕。

3、按键,输入变量号,再按键,光标将移动到输入变量号的位置。

当变量值为空白时,该变量为null。

标记********表示变量值上溢(变量的绝对值大于99999999)或下溢(变量的绝对值

小于0.0000001)。

53

共享知识 分享快乐

使用:

宏变量不能用于程序号、程序段顺序号、程序段跳段编号。如不能用于以下用途:

O#1;

/#2 G00 X100.0;

N#3 Y200.0;

2 系统变量 SYSTEM VARIABLES

系统变量用于读写NC装置的内部数据,如:刀具补偿数据、刀具当前位置数据等。

但需注意的是,有些系统变量是只读的。对于(NC的)自动控制和普通的程序开发来说,系

统变量是必不可少的。

有关解释如下:

54

共享知识 分享快乐

2.1接口信号 Interface signals

接口信号可在可编程控制器PMC和用户宏程序之间进行交换。

表2.1(a)用于接口信号的系统变量

变 量 号 功 能 #1000~#1015 用于从PMC传送16位的接口信号到用户宏程序。#1000~#1015信号#1032 是逐位读取的,而#1032信号是16 位一次读取的。 #1100~#1115 用于从用户宏程序传送16位的接口信号到PMC。#1100~#1115信号#1132 是逐位写入的,而#1132信号是16 位一次写入的。 用于从用户宏程序一次写入32位的接口信号到PMC。 #1133 注意:#1133取值范围为-99999999~+99999999。 详细信息请参连接手册(B-61393E-2)。

55

共享知识 分享快乐

2.2刀具补偿值 Tool compensation values

刀具补偿值可通过系统变量读写。无论是几何补偿和磨损补偿的区别,还是刀具长度

补偿和刀具切削半径补偿间的区别,能用的变量号数都依赖于补偿值的对数。当补偿值对

数不超过200时,变量号#2001~#2400均可使用。

表2.2(a) 刀具补偿存储方式A的系统变量

刀具补偿号 系统变量号 1 #10001(#2001) ┊ ┊ 200 #10200(#2200) ┊ ┊ 400 #10400(#2400) 56

共享知识 分享快乐

表2.2(b) 刀具补偿存储方式B的系统变量

刀具补偿号 几何补偿 磨损补偿 1 #11001(#2201) #10001(#2001) ┊ ┊ ┊ 200 #11200(#2400) #10200(#2200) ┊ ┊ ┊ 400 #11400 #10400 表2.2(c) 刀具补偿存储方式C的系统变量

刀具长度补偿 刀具半径补偿 补偿号 几何补偿 磨损补偿 几何补偿 磨损补偿 1 #11001(#2201) #10001(#2001) #13001 #12001 57

共享知识 分享快乐

┊ ┊ ┊ ┊ ┊ 200 #11200(#2400) #10200(#2200) ┊ ┊ ┊ ┊ ┊ #13400 #12400 400 #11400 #10400 2.3宏程序报警信息Macro alarms

表 2.3表示宏程序报警信息的系统变量

变量号 功能 当#3000赋值为0~99中的某值时,NC停止并报警,随后给出一个不超过26#3000 个字符的报警信息。同时将#3000的值加上3000作为报警号于报警信息一起显示在屏幕上。 如:#3000=1(刀具为找到);

58

共享知识 分享快乐

报警屏幕显示:3001 TOOL NOT FOUND。

2.4时间信息

时间信息可被读与写。

 表2.4表示时间信息的系统变量

变量号 功能 该变量的功能是作为计时器,并时刻以16毫秒的增量进行计时。当电源关闭#3001 时,该变量的值被重置为0。当累计计时65535毫秒时,计时器从0重新计时。(可用于刀具寿命管理) 该变量的功能是作为计时器,并在循环启动灯亮的同时,以1 小时为增量进行#3002 计时。即使电源关闭,该计时器的值仍保留。当累计计时1145324.612小时时,该计时器从0重新计时。 59

共享知识 分享快乐

该变量用于读取当前日期(年/月/日)。年/月/日信息被转换成类似于十进制的#3011 数。如:1993年3月28日表示为19930328。 该变量用于读取当前时间(时/分/秒)。时/分/秒信息被转换成类似于十进制的#3012 数。如:下午3点34分56秒表示为153456。 2.5自动运行控制

自动运行的控制状态可以改变。

 表2.5(a) 用于自动运行控制的系统变量#3003。completion

#3003 程序单段运行 辅助功能完成 0 允许 Enabled 等待 1 禁止 disabled 等待 2 允许 不等待 60

共享知识 分享快乐

3 禁止 不等待 1、当电源关闭时,#3003的值变为0。

2、当单段运行禁止时,即使单段运行开关置为开(ON),单段运行操作也不执行。

3、当不指定等待辅助功能(M、S、T)完成时,在辅助功能完成前,程序会继续执行下

一程序段。当然也不会输出分配任务已结束信号(DEN——Distribution END)。

 表2.5(b) 用于自动运行控制的系统变量#3004。

速度(进给)保持 #3004 Feed hold 速度倍率超越 准确停止 Feed rate override Exact stop 0 允许 允许 允许 1 禁止 允许 允许 61

共享知识 分享快乐

2 允许 禁止 允许 3 禁止 允许 允许 4 允许 允许 禁止 5 禁止 允许 禁止 6 允许 禁止 禁止 7 禁止 禁止 禁止 1、失电时,#3004的值为0。

2、当进给保持禁止时:

a、当进给保持按钮按下时,机床用单段运行模式停止。但当用#3003禁止单段运行模

式时,单段运行操作不执行。

b、当进给保持按钮压下又释放时,进给保持灯亮,但机床不停止,程序继续执行,

62

共享知识 分享快乐

直到指定进给保持允许的第一个程序段,机床才停止。

3、当倍率超越禁止时,无论机床操作面板上速度倍率旋钮置于何处,速度倍率总是

100%。

4、当准确停止检验禁止时,即使在没有指定切削的程序段,也不进行准确停止检查

(到位检查)。

2.6背景(#3005) Settings

背景可以读写,二进制值转换成十进制数。

Setting #15 #14 #13 #12 #11 #10 #9 #8

TAPE REV4 Setting #7 #6 #5 #4 #3 #2 #1 #0

SEQ ABS INCH ISO TVON REVY REVX 63

共享知识 分享快乐

REVX:X轴镜像,开/关

REVY:Y轴镜像,开/关

TVON:TV检测,开/关

ISO:输出代码格式,EIA/ISO

INCH:公制输入/英制输入

ABS:增量编程/绝对编程

SEQ:自动插入顺序号(Sequence-number)开/关

REV4:第四轴镜像开/关

TAPE:F10/11格式穿孔带开/关

2.7已加工的零件数 Number of machined parts

待加工零件数(目标数)和已加工零件数(完成数)可以读写的。

共享知识 分享快乐

变量号 功 能 #3901 已加工零件数(完成数) #3902 待加工零件数(目标数) 注意:不能给零件数赋负值。

2.8模态信息 Model information

在程序段中指定的模态信息,直到(当前程序段)之前的程序段中是可读出的。

变量号 功能 分组 #4001 G00 G01 G02 G03 G33 Group 1 #4002 G17 G18 G19 Group 2 #4003 G90 G91 Group 3 #4004 Group 4 65

共享知识 分享快乐

#4005 G94 G95 Group 5 #4006 G20 G21 Goup 6 #4007 G40 G41 G42 Group 7 #4008 G43 G44 G49 Group 8 #4009 G73 G74 G76 G80~G Group 9 #4010 G98 G99 Group 10 #4011 G50 G51 Group 11 #4012 G65 G66 G67 Group 12 #4014 G54~G59 Group 14 #4015 G61~G Goup 15 #4016 G68 G69 Group 16 66

共享知识 分享快乐

┊ ┊ ┊ #4022 Group 22 #4102 B code #4107 D code #4109 F code #4111 H code #4113 M code #4114 程序段顺序号 #4115 程序号 #4119 S code #4120 T code 67

共享知识 分享快乐

2.9当前位置

位置信息是只读的。

变量号 位置信息 坐标系统 刀具补偿值 运动期间读操作 #5001~#5004 程序段终点 工件坐标系 不包含 允许 #5021~#5024 当前位置 机床坐标系 包含 禁止 #5041~#5044 当前位置 工件坐标系 包含 禁止 #5061~#50 跳转信号位置 工件坐标系 包含 允许 #5081~#5084 刀具补偿值 禁止 #5101~#5104 伺服位置误差 禁止 说明:

 变量号的未位代表轴编号,1对应X轴,2对应Y轴,3对应Z轴,4对应第四轴。

68

共享知识 分享快乐

 #5081~5084存储的刀具偏置值是当前执行值,不是后面程序段的处理值。

 在G31(跳转功能)程序段中跳转信号接通时的刀具位置存储在变量#5061~# 50 中.当

G31段跳转信号接通不接通时, 这些变量中贮存指定程序段终点.

 运动期间读为禁止指由于缓冲(预读)功能的原因, 无法读取期望值。

2.10工件坐标系补偿值(工件坐标系零点偏置值)

工件坐标系偏置值可以读写。

变量号 功能 #2500~#2506 外部工件坐标系、G54~G59第一轴零点偏置值 #2600~#2606 外部工件坐标系、G54~G59第二轴零点偏置值 #2700~#2706 外部工件坐标系、G54~G59第三轴零点偏置值 #2800~#2806 外部工件坐标系、G54~G59第四轴零点偏置值 69

共享知识 分享快乐

#7001~#7004 工件坐标系G54 P1第一~四轴的零点偏置值 #7021~#7024 工件坐标系G54 P2第一~四轴的零点偏置值 ┋ ┋ #7941~#7944 工件坐标系G54 P48第一~四轴的零点偏置值 变量#2500~#2806是工件坐标系的任选变量,而变量#7001~#7944(G54P1~G54P48)

是附加的48个工件坐标系的任选变量。

(G54Pp)的第n轴的工件零点偏置变量号由下式获得:#[7000+[p-1]*20+n]

3 算术和逻辑运算

在表16.2(a)中列出的操作可以使用变量完成。表中右边的表达式可用常量或变量与函

数或运算符组合表示。表达式中的变量#j和#k可用常量替换,也可用表达式替换。

 表3(a) 算术和逻辑运算

70

共享知识 分享快乐

函 数 格 式 备 注 赋值 #i=#j 求和 #i=#j+#k 求差 #i=#j-#k 乘积 #i=#j*#k 求商 #i=#j/#k 正弦 #i=SIN[#j] 余弦 #i=COS[#j] 角度用十进制度表示。 正切 #i=TAN[#j] 反正切 #i=ATAN[#J]/[#k] 平方根t #i=SQRT[#j] 71

共享知识 分享快乐

绝对值 #i=ABS[#J] 四舍五入 #I=ROUND[#J] 向下取整 #I=FIX[#J] 向上取整 #I=FUP[#J] 或OR #I=#J OR #K 异或XOR #I=#J XOR #K 逻辑运算用二进制数按位操作 与AND #I=#J 十——二进制转换 #I=BIN[#J] 用于转换发送到PMC的信号或从二——十进制转换 #I=BCD[#J] PMC 接收的信号 说明:

 1、角度单位

72

共享知识 分享快乐

SIN、COS、TAN和ATAN 函数使用的角度单位为十进制度。

 2、反正切函数ATAN

在反正切函数后指定两条边的长度,并用斜线隔开(y/x)。结果为0<=result<360。

如:#1=ATAN[1]/[-1];

#1的值为135.0。

 3、四舍五入函数ROUND

当ROUND函数包含在数学或逻辑操作命令中,IF、WHILE语句中时,四舍五入在第

一个小数位进行。

如:#2=1.2345;

#1=ROUND[#2];

则#1=1.0。

73

共享知识 分享快乐

当ROUND函数使用于NC语句中的指令地址后时,四舍五入按地址的最小精度进行。

例:钻孔程序,系统精度0.001mm

#1=1.2345;

#2=2.3456;

G00 G91 X-#1; 移动1.235mm

G01 X-#2; 移动2.346mm

G00 x[#1+#2]; 移动3.580mm

由于1.2345+2.3456=3.5801,四舍五入后为3.580mm,刀具未返回原位。刀具位移误差

来至于运算时,先加后园整。为使刀具返回原位,最后的程序段应改为:

G00 X[ROUND[#1]+ROUND[#2]];

(注:G90编程时,上述问题不一定存在。)

74

共享知识 分享快乐

 4、向上和向下取整

向上取整是指园整后的整数,其绝对值比原值的绝对值大,而向下园整是指园整后的

整数,其绝对值比原值的绝对值小。当对负数取整时,需特别注意。例:

#1=1.2;

#3=FUP[#1]; 2.0

#3=FIX[#1]; 1.0

#2=-1.2;

#3=FUP[#2]; -2.0

#3=FIX[#1]; -1.0

 5、函数缩写(Abbreviation)

75

共享知识 分享快乐

可用函数的前两个字符表示该函数。

如:ROUND——RO,FIX——FI

 6、运算优先级

1、函数;

2、乘除类运算(*、/、AND、MOD);

3、加减类运算(+、-、OR、XOR).

 7、方括号嵌套bracket nesting

方括号用于改变运算顺序。方括号的嵌套深度为五层,含函数自己的方括号。当方括

号超过五层时,发生118号报警。

 1、方括号Brackets

76

共享知识 分享快乐

方括号用于封闭表达式,注意不能用园括号。

 2、运算误差

运算时会产生误差

表3(b) 运算涉及的错误

Average error Maximum error 误差类型 运算 平均误差 最大误差 type of error a=b*c 1.551010 4.661010 相对误差relative error (*1) a=b/c 4.661010 1.88109 a ab 1.24109 3.73109 a=b+c 2.331010 5.321010 取小值minb,c (*2) a=b-c 77

共享知识 分享快乐

a=sin[b] 5.0109 1.0108 绝对误差absolute error(*3) a=cos[b]  degrees(度) a=atan[b]/[c] 1.8106 3.6106 注意:

1、相对误差大小与运算结果有关;

2、取两误差中较小的一个。

3、绝对误差大小为常值,与运算结果无关。

4、正切函数TAN用SIN/COS完成。

说明:

①由于变量值的精度为8位小数(在NC中变量用科学计数法表示),当在加减运算中

处理很大的数时,会出现意想不到的结果。

78

共享知识 分享快乐

如:试图给#1、#2如下赋值

#1=9876543210123.456;

#2=9876543277777.777;

变量的实际值为:

#1=9876543200000.000

#2=9876543300000.000

此时如计算#3=#2-#1,则结果为#3=100000.000。

运算结果的误差由变量是用二进制数运算引起的。(在nc中用于存储变量的二进制位

是有限的,为表示尽能大的数,将数转换成科学计数法表示,变量的二进制位中的后几位

表示指数,其余的位存储小数部分,当数的有效位多于变量的最大有效位时,多余的部分

进行四舍五入,从而引起误差。此误差相对数本身来说,误差极小,但对结果的影响就可

79

共享知识 分享快乐

能很大。编程时,应尽可能避免本例的情况。)

②因数据精度的原因,在条件表达式中用EQ、NE、GE、GT、LE和LT时,也可能

出现误差

例:IF [#1 EQ #2]

当#1和#2的值存在近似时,结果就会出现误差。

但将上式改写成:IF [ABS[#1-#2] LT 0.001]后,如果两变量的差值小于所需精度(这

里为 0.001)时,就可以认为二者相等。

③因数据精度的原因,在向下取整时许特别注意。

例:

#1=0.002;

#2=#1*1000;

80

共享知识 分享快乐

#2的值应为2.000,但实际上为1.99999997。

#3=FIX[#2];

则#3=1.0而不是2.0。

在这种情况下,对一近似值向下取整,自然得不到期望的结果。可将上式改成:#3=FIX[#2+0.001];

或#3=ROUND[#2];

 3、除数divisor

在除法运算中除数为0或在求正切时角度为90度,产生112号报警。

4 宏语句和NC语句

下列程序段被认为是宏语句:

 包含算术和逻辑运算及赋值操作的程序段;

81

共享知识 分享快乐

 包含控制语句(如:GOTO,DO,END)的程序段;

 包含宏调用命令(如:G65,G66,G67或其它调用宏的G、M代码)。

不是宏语句的程序段称NC(或CNC)语句。

 1、宏语句与NC语句的区别:

即使在程序单段运行模式下执行宏语句,机床也不停止。但当机床参数011的第五位

设成1时,执行宏语句,机床用单段运行模式停止。

在刀具补偿状态下,宏语句程序段不作不含运动程序段处理。

 2、与宏语句具有相同特性的NC语句

子程序调用程序段(在程序段中,子程序被M98或指定的M、T代码调用)仅包含O,N,P,L

地址,和宏语句具有相同特性。

包含M99和地址O、N、P的程序段,具有宏语句特性。

82

共享知识 分享快乐

5分支和循环

在程序中可用GOTO语句和IF语句改变控制执行顺序。分支和循环操作共有三种类

型:

 GOTO 语句——无条件分支(转移)

 IF语句——条件分支;if…,then…

 WHILE语句—— 循环;while…

5.1无条件分支GOTO语句

控制转移(分支)到顺序号n所在位置。当顺序号超出1~9999的范围时,产生128

号报警。顺序号可用表达式指定。

格式:GOTO n;

n——(转移到的程序段)顺序号

83

共享知识 分享快乐

例:GOTO1;

GOTO#10;

5.2 条件分支IF语句

在IF后指定一条件,当条件满足时,转移到顺序号为n的程序段,不满足则执行下一

程序段。

格式:

IF [表达式] GOTOn;

处理;

Nn …;

 1、条件表达式

条件表达式由两变量或一变量一常数中间夹比较运算符组成,条件表达式必需包含在一对

84

共享知识 分享快乐

方括号内。条件表达式可直接用变量代替。

 2、比较运算符

比较运算符由两个字母组成,用于比较两个值,来判断它们是相等,或一个值比另一

个小或大。注意不能用不等号。

表5.2 比较运算符

运算符 含义 EQ 相等equal to (=) NE 不等于not equal to (≠) GT 大于Greater than (>) GE 大于等于greater than or equal to(≥) LT 小于less than (<) 85

共享知识 分享快乐

小于等于less than or equal to (≤)  3、例程

求1~10的和。

O9500;

#1=0; 和

#2=1; 加数

N1 IF[#2 GT 10] GOTO2; 相加条件#1=#1+#2; 相加

#2=#2+1; 下一加数

GOTO1; 返回1

N2 M30; 结束

86

LE

共享知识 分享快乐

5.3 循环WHILE 语句

在WHILE 后指定一条件表达式,当条件满足时,执行DO到END之间的程序,(然

后返回到WHILE 重新判断条件,)不满足则执行END后的下一程序段。

格式:

WHILE [条件表达式] DO m; (m=1, 2, 3)

处理;

END m;

 说明:

WHILE语句对条件的处理与IF 语句类似。

在DO和END后的数字是用于指定处理的范围(称循环体)的识别号,数字可用1、

2、3表示。当使用1、2、3之外的数时,产生126号报警。

87

共享知识 分享快乐

 While的嵌套

对单重DO-END循环体来说,识别号(1~3)可随意使用且可多次使用。但当程序中

出现循环交叉(DO范围重叠)时,产生124号报警。1、识别号(1~3)可随意使用且可多次使用

WHILE […] DO1;

Processing

END1;

WHILE […] DO1;

Processing

END1;

88

共享知识 分享快乐

2、DO范围不能重叠

WHILE […] DO1;

Processing

WHILE […] DO2;

END1;

Processing

END2;

3、DO循环体最大嵌套深度为三重29

共享知识 分享快乐

WHILE […] DO1;

WHILE […] DO2;

WHILE […]DO3;

Processing

END3;

END2;

END1;

30

共享知识 分享快乐

4、控制不能跳转到循环体外

WHILE […] DO1;

IF […] GOTO n;

END1;

Nn … ;

5、分支不能直接跳转到循环体内31

共享知识 分享快乐

IF […] GOTO n;

WHLE […] DO1;

Nn … ;

END1;

 Limitations

1、无限循环Infinite loops

当指定Do m而未指定WHILE语句时,将产生一个从DO到END为循环体的无限循

环。

32

共享知识 分享快乐

2、处理时间

当转移到GOTO语句中指定顺序号对应的程序段时,程序段根据顺序号搜索。因此向

回跳转比向前跳转要花费更多的处理时间。此时使用WHILE 语句循环可减少处理时间。

3、未定义变量

在条件表达式中使用EQ和NE判断时,空值(null)和0会产生不同的结果,在其它

类型的条件表达式中,空值(null)被认为是0。

 例程

求1~10的和

O9501;

#1=0;

#2=1;

33

共享知识 分享快乐

WHILE [#2 LE 10] DO1;

#1=#1+#2;

#2=#2+1;

END1;

M30;

6 调用宏程序

宏程序可用下述方式调用: 简单调用G65;

 模态调用G66、G67;

 用G代码调用宏程序;

用M代码调用宏程序;

34

共享知识 分享快乐

 用M代码的子程序调用;

 用T代码的子程序调用。

 :宏程序调用和子程序调用的区别

 A、用G65可以指定实参(传送给宏程序的数据),而M98 没有此能力。

 B、当M98程序段包含其它NC指令(如:G01X100.0 M98 Pp)时,在该指令执行完

后调用子程序,而G65则无条件调用宏程序。

 C、当M98程序段包含其它NC指令(如:G01X100.0 M98 Pp)时,在程序单段运行

模式下机床停止,而G65不会让机床停止。

 D、G65调用时,局部变量的层次被修改,而M98调用不会更改局部变量的层次。

6.1 简单调用G65

当指定G65调用时,地址P后指定的用户宏程序被调用,同时数据(实参)被传递给

35

共享知识 分享快乐

用户宏程序。

格式:G65 Pp Ll <实参描述>;

p——被调宏程序号;l——调用次数,缺省值为1。实参——传送给宏程序的数据。

例:

O0001; O9010;

… #3=#1+#2;

G65 P9010 L2 A1.0 B2.0; IF [#3 GT 360] GOTO 9;

… G00 G91 X#3;

M30; N9 M99;

说明:

 1、调用

36

共享知识 分享快乐

在G65后用地址P指定需调用的用户宏程序号;

当重复调用时,在地址L后指定调用次数(1~99)。L省略时,既定调用次数是1。

通过使用实参描述,数值被指定给对应的局部变量。

 2、实参描述 Argument specification

有两种实参描述类型,实参描述类型Ⅰ可同时使用除G、L、O、N和P之外的字母各

一次。而实参描述类型Ⅱ只能使用A、B、C各一次,使用I、J、K最多十次。实参描述

类型根据使用的字符自动判断。

实参描述类型Ⅰ

地址 变量号 地址 变量号 地址 变量号 A #1 I #4 T #20 B #2 J #5 U #21 37

共享知识 分享快乐

C #3 K #6 V #22 D #7 M #13 W #23 E #8 Q #17 X #24 F #9 R #18 Y #25 H #11 S #19 Z #26 注:地址G、L、N、O、P不能用于实参;不需指定的地址可省略,省略地址对应的

局部变量设成空(null)。

实参描述类型Ⅱ

地址 变量号 地址 变量号 地址 变量号 A #1 K3 #12 J7 #23 B #2 I4 #13 K7 #24 38

共享知识 分享快乐

C #3 J4 #14 I8 #25 I1 #4 K4 #15 J8 #26 J1 #5 I5 #16 K8 #27 K1 #6 J5 #17 I9 #28 I2 #7 K5 #18 J9 #29 J2 #8 I6 #19 K9 #30 K2 #9 J6 #20 I10 #31 I3 #10 K6 #21 J10 #32 J3 #11 I7 #22 K10 #33 注:I、J、K的下标(subscripts)用于表示实参描述的顺序,实际程序中不需写出。

39

共享知识 分享快乐

1、格式

G65必须在实参之前指定。

2、实参描述Ⅰ和Ⅱ的混合

NC内部识别实参描述Ⅰ和Ⅱ,当二者混合指定时,实参描述类型由后出现的地址决

定。(即两种类型可同时使用,当多个地址对应同一个局部变量时,该变量的值由后出现

的地址决定)

3、小数点的位置

一个不带小数点的实参在数据传递时,其单位按其地址对应的最小精度解释,因此,

不带小数点的实参,其值在传递时有可能根据机床的系统参数设置而被更改。为此,应养

成在宏调用实参中使用小数点的好习惯,以保持程序的兼容性。

4、调用嵌套

40

共享知识 分享快乐

调用可嵌套四层,包括简单调用G65和模态调用G66,但不包括子程序调用M98。

5、局部变量的层次

嵌套调用时,局部变量的层次指定为0~4。

主程序的层次为0。

宏程序每(嵌套)调用一次(G65,G66),局部变量的层次加一,原有局部变量的值被

NC保存(不可见)。

当M99执行时,控制返回呼调程序。此时,局部变量层次减一,宏程序调用时保存的主程序1 宏程序2 宏程序3 宏程序4 宏程序5 (0层) (1层) (2层) (3层) (4层) O0001; O0002; O0003; O0004; O0002; … …. …. …. …. 原有局部变量值被恢复。 #1=1; G65 P3 A3; G65P4 A4; G65P5 A5; …; G65 P2 A2; …. …. …. …. … M99; M99; M99; M99; M30; 例: 局部变量 局部变量 局部变量局部变量 局部变量 #1 1 #1 2 #1 3 #1 4 #1 5 … … … … … … … … … … #33 #33 #33 #33 #33 ; #100~ #500~ 全局变量:可被各层的宏程序读写 41

共享知识 分享快乐

例程(多孔循环)

创建一个宏程序,用于加工处于同一分布圆上的H个孔。孔起始角为A,孔间夹角为B,

分布圆半径为I,圆心为(x,y)。指令可用绝对或增量方式指定。当需顺时针方向加工时,

B用负值指定。

 1、调用格式

G65 P9100 Xx Yy Zz Rr Ff Ii Aa Bb Hh;

X:分布圆圆心的X坐标(绝对或增量指定)#24

H=2Y:分布圆圆心的Y坐标(绝对或增量指定)#25 H=3BH=1IAZ:孔深 ――――――――――――――――#26 Center(x,y)R:接近点(R点)坐标 ―――――――――#18 F:进给速率 ――――――――――――――#9

42

共享知识 分享快乐

I:分布圆半径 ―――――――――――――#4

A:钻孔起始角―――――――――――――#1

B:增量角(顺时针时负值指定)―――――#2

H:孔数――――――――――――――――#11

 2、主程序

O0002;

G90 G92 X0 Y0 Z100.0;

G65 P9100 X100.0 Y50.0 R30.0 Z-50.0 I100.0 A0 B45.0 H5;

M30;

 3、宏程序

O9100;

43

共享知识 分享快乐

#3=#4003;---------------------------读取03组G代码(G90/G91)

IF [#3 EQ 90] GOTO 1;-----------G90模式跳至N1分支

#24=#5001+#24;--------------------计算圆心X坐标

#25=#5002+#25;--------------------计算圆心Y坐标

N1 WHILE [#11 GT 0] DO 1;

#5=#24+#4*COS[#1];--------------计算孔轴线X坐标

#6=#25+#4*SIN[#1];---------------计算孔轴线Y坐标

G90 X#5 Y#6;-----------------------钻孔前定位到目标孔处

G81 Z#26 R#18 F#19 K0;--------钻孔循环

#1=#1+#2;----------------------------计算下一孔的角度

#11=#11-1;---------------------------孔数减一

44

共享知识 分享快乐

END 1;

G#3 G80;-----------------------------回复G代码原有状态

M99;

 有关变量的含义

#3:03组G代码的状态

#5:下一孔孔轴线X坐标

#6:下一孔孔轴线Y坐标

#5001:程序段终点的X坐标

#5002:程序段终点的Y坐标

6.2模态调用G66

一旦指令了G66,就指定了一种模态宏调用,即在(G66之后的)程序段中指令的各

45

G66 Pp Ll <参数指定共享知识 分享快乐 >; p——被调宏程序号;l——调用次数,缺省值为1。 实参——传送给宏程序的数据。 O0001; O9100; 轴运动执行完后,调用(G66指定的)宏程序。这将持续到指令G67为止,才取消模态宏… … G66 P9100 L2 A1.0 B2.0; G00 Z-#1; G00 G90 X100.0; G01 Z-#2 F300; Y200.0; …X150.0 Y300.0; 调用。 … G67; M99; … M30; 解释

 1、调用

在G66后,用地址P为模态调用指定程序号;

当需要重复次数时,可在地址L后指定从1~9999的数字。

和简单调用G65一样,传递给宏程序的数据用实参指定。

 2、取消

当指定G67指令时,后续程序段不再执行模态调用。

 3、调用的嵌套

46

共享知识 分享快乐

调用可嵌套四层,包括简单调用G65和模态调用G66,但不包括子程序调用M98。

 4、模态调用的嵌套

在模态调用期间可指令另一个G66代码,而产生模态调用的嵌套。

在G66程序段不可调用宏;

G66应在实参之前指令;

在仅含有一个代码的程序段,当该代码与坐标轴运动无关,如M功能,将不产生宏调

用。

只需在G66程序段中设置局部变量,注意每次模态调用执行时,不再设置局部变量。

例程

使用自定义宏程序创建与固定循环G81相同的操作,加工程序用模态宏调用。为简化1 位置

4 I 2 R

位置47 3 R Z=0

Z

共享知识 分享快乐

程序,所有钻孔数据用绝对值指定。

该固定循环包含下列基本操作:

 操作1:沿X、Y轴的定位;

 操作2:快进到R点;

 操作3:切削进给至孔底Z点;

操作4:快速回退至R点或起始点I。 1、调用格式

G65 P9110 Xx Yy Zz Rr Ff Ll;

X:孔轴线的X坐标 ……………….. #24Y:孔轴线的Y坐标 ……………….. #25Z:Z点的坐标 ……………………… #28

共享知识 分享快乐

R点的坐标 ……………………… #18

:进给速率 ………………………… #9

L:重复次数

 2、主程序

O0001;

G28 G91 X0 Y0 Z0;

G92 X0 Y0 Z50.0;

G00 G90 X100.0 Y50.0;

G66 P9110 Z-20.0 R5.0 F500;

G90 X20.0 Y20.0;

X50.0;

49

R:F共享知识 分享快乐

Y50.0;

X70.0 Y80.0;

G67;

M30;

 3、宏程序

O9110;

#1=#4001; ………………………………贮存G00/G01

#3=#4003; ………………………………贮存G90/G91

#4=#4109; ………………………………贮存进给速率

#5=#5003; ………………………………贮存钻孔起始Z坐标G00 G90 Z#18; …………………………定位至R点

50

共享知识 分享快乐

G01 Z#26 F#9; …………………………切削至Z点

IF [#4010 EQ 98] GOTO 1; ……………返回至I点

G00 Z#18; ………………………………返回至Z点

GOTO 2;

N1 G00 Z#5; ……………………………返回至I点

N2 G#1 G#3 F#4; ………………………恢复模态信息

M99;

6.3 使用G代码的宏调用

通过在系统参数中设置G代码数字可用于调用宏程序,该宏程序就像简单调用G65

一样被调用。

解释

51

共享知识 分享快乐

通过在系统通信参数(220~229)中设置G代码数字(1~255),可调用自定义宏程序

(9010~9019),该宏程序以和简单调用G65一样的方式调用。

例如,当系统参数如上设置时,可使用G81调用自定义宏程序O9010,通过调用使用

宏程序定制的用户专有循环(user-specific cycle),从而无需修改加工程序。

1、系统参数号与程序号间的

对应关系

O0001; … G81 X10.0 Y20.0 Z-10.0; … M30; 参数220=81 O9010; … … M99; 程序号 参数号 O9010 220 52

共享知识 分享快乐

O9011 221 O9012 222 O9013 223 O9014 224 O9015 225 O9016 226 O9017 227 O9018 228 O9019 229 2、重复

与简单调用一样,可在地址L后指定从1~9999的重复次数。53

共享知识 分享快乐

3、参数指定

与简单调用一样,有两种类型的参数指定方式:参数指定类型I和参数指定类型II。

参数指定类型自动根据地址的使用进行判断。

用G代码调用的嵌套:

在被G代码调用的程序中,不能有用G代码调用的宏程序。在这样的程序中,G代码

被当作普通G代码对待。在被M或T代码调用的子程序中,不能有用G代码调用的宏程

序。在这样的程序中,G代码也被当作普通G代码对待。

6.4 使用M代码的宏调用

通过在系统参数中设置M代码数字可用于调用宏程序,该宏程序就像简单调用G65

一样被调用。

54

共享知识 分享快乐

解释

通过在系统通信参数(230~239)中

O0001; … M50 A1.0 B2.0; … M30; O9020; … … M99; 参数230=50 设置M代码数字(1~255),可调用自定

义宏程序(9020~9029),该宏程序以和

简单调用G65一样的方式调用。

1、系统参数号与程序号间的对应关系

程序号 参数号 O9020 230 O9021 231 O9022 232 O9023 233 55

共享知识 分享快乐

O9024 234 O9025 235 O9026 236 O9027 237 O9028 238 O9029 239 2、重复

与简单调用一样,可在地址L后指定从1~9999的重复次数。

3、参数指定

与简单调用一样,有两种类型的参数指定方式:参数指定类型I和参数指定类型II。参数

指定类型自动根据地址的使用进行判断。

56

共享知识 分享快乐

用于调用宏程序的M代码必须在程序段的开头指令。

在被G代码调用的宏程序中,或在被M或T代码调用的子程序中,不能有用M代码调用

的宏程序。在这样的程序中,M代码被当作普通M代码对待。

6.5 使用M代码的子程序调用

通过在系统参数中设置M代码数字可用于调用子程序(宏程序),该宏程序就像子程

序调用M98一样被调用。

解释

通过在系统通信(corresponding)参数(240~242)中设置M代码数字(1~255),可

57

共享知识 分享快乐

调用自定义宏程序(9001~9003),该宏程序以和子程序调用M98一样的方式调用。

O0001; … M50 A1.0 B2.0; … M30; O9001; … … M99; 1、系统参数号与程序号间的对应关系

程序号 参数号 参数230=50 O9001 240 O9002 241 O9003 242 2、重复

与简单调用一样,可在地址L后指定从1~9999的重复次数。

3、参数指定

不允许指定参数。

58

共享知识 分享快乐

在被G代码调用的宏程序中,或在被M或T代码调用的子程序中,不能有用M代码调用

的子程序。在这样的程序中,M代码被当作普通M代码对待。

6.6 使用T代码的子程序调用

通过系统参数中设置,可允许使用T代码调用子程序(宏程序),当加工程序中每次指令 O0001; O9000; … … T23; … … 该T代码时,对应宏程序被调用。M99; M30; 参数040 的第5位=1

解释――调用

通过将系统参数040的第5位置1,可在加工程序中指令T代码调用宏程序O9000。在加

工程序中指令的T代码用公用(全局)变量#149指定。

59

共享知识 分享快乐

在被G代码调用的宏程序中,或在被M或T代码调用的子程序中,不能有用T代码调用

的子程序。在这样的程序中,T代码被当作普通T代码对待。

60

因篇幅问题不能全部显示,请点此查看更多更全内容