admin管理员组

文章数量:1531874

2024年7月13日发(作者:)

3. 例题

如图5.2-9

N005 G80 G90 G0 X0 Y0 M06 T1 ;换 Ø20镗刀

N010 G55 ;调用G55工件坐标系

N020 M03 S1000

N030 G43 H1 Z50 ;调用长度补偿

N040 G89 Z-30 R1 P2000 F200 ;镗孔循环

N050 G80 G0 Z50 ;取消固定循环

N060 M05

N070 M30

G90/G91

绝对命令/增量命令 (G90/G91)

此命令设定指令中的 X, Y 和 Z 坐标是绝对值还是相对值,不论它们原来是绝对命令还是

增量命令。含有 G90 命令的程序块和在它以后的程序块都由绝对命令赋值; 而带 G91 命

令及其后的程序块都用增量命令赋值。

5.3 辅助功能(M功能)

辅助功能包括各种支持机床操作的功能,像主轴的启停、程序停止和切削液开关等等。

代 码

M00

M01

M02

M03

M04

M05

M06

M08

M09

M19

M28

M30

M48

M49

M60

说 明

程序停

选择停止

程序结束(复位)

主轴正转 (CW)

主轴反转 (CCW)

主轴停

换刀

切削液开

切削液关

主轴定向停止

返回原点

程序结束(复位) 并回到开头

主轴过载取消 不起作用

主轴过载取消 起作用

APC 循环开始

M80

M81

M94

M95

M96

M98

M99

分度台正转(CW)

分度台反转 (CCW)

镜像取消

X坐标镜像

Y坐标镜像

子程序调用

子程序结束

表5.3-1 辅助功能(M功能) 清单

5.4 铣床对刀

操作步骤:

一、FANUC 0-MDⅡ系统数控铣床设置工件零点的几种方法:

直接用刀具试切对刀

把当前坐标X、Y、Z输入G54~G59或按鼠标右键直接存入G54~G59

图5.4-1

用芯棒对工件零点。

图5.4-2

a. 基准芯棒(100X20)

b. 塞尺厚度1mm

图5.4-3

Y坐标工件零点=当前Y坐标±基准芯棒半径±塞尺厚度

X坐标工件零点=当前X坐标±基准芯棒半径±塞尺厚度

二、FANUC 0iM系统数控铣床设置工件零点的几种方法:

1. 直接用刀具试切对刀

图5.4-4

图5.4-5

按 → →把当前坐标位置作为工件零点G55,输入X0、Y0、Z0,按

测量即当前坐标被存入。

2.用芯棒对工件零点,同FANUC 0-MDⅡ的第二种方法。

5.5 例题

例题一

图5.5-1

T1球头铣刀Ø12。

N10 G40 G49 G80 G17 M06 T1 ;换 Ø20钻头,固定循环取消

N20 G54 G90 G00 X0 Y0 ;选择G54工件坐标系

N30 G43 H1 Z50 ;调用长度补偿

N40 Z2 M03 S800

N50 G1 Z-10 F200

N60 G41 X25.0 Y55.0 D1 ;刀具半径左偏补偿

N70 Y90.0

N80 X45.0

N90 G03 X50.0 Y115.0 R65.0

N100 G02 X90.0 R-25.0

N110 G03 X95.0 Y90.0 R65.0

N120 G01 X115.0

N130 Y55.0

N140 X70.0 Y65.0

N150 X25.0 Y55.0

N160 G00 G40 X0 Y0 ;取消刀具半径左偏补偿

N170 Z100

N180 M5

N190 M30

图5.5-2

例题二

图5.5-3

N10 G40 G49 G80 G17 M06 T1 ;换 Ø20钻头,固定循环取消

N20 G54 G90 G0 X-80 Y-80 ;调用G54工件坐标系,移动到孔位

N30 G43 H1 Z50

N40 M3 S800

N50 M8

N60 G99 G83 Z-30 R1 Q2 F200 ;深孔钻削循环

N70 G91 X40 K4 ;重复钻削

N80 Y80

N90 G91 X-40 K4

N100 Y80

N110 X40 K4

N120 G80 G90 G0 Z50 ;固定循环取消

N130 M5 M9

N140 G91 G28 Z0 Y0

N150 M30

例题三

N010 G94 G54 G90 G0 X0 Y0

N020 G43 Z50 H1

N030 M3 S1000

N040 M8

/N050 M95 ;选择X坐标镜像

/N060 M96 ;选择Y坐标镜像

N070 G0 X-100 Y-100

N080 G81 Z-30 R1 F200

N090 G80 G0 Z50

N100 M94 ;取消镜像

N110 M5 M9

N120 G91 G28 Z0 Y0

N130 M30

图5.5-4

第六章 FANUC车床编程

6.1坐标系

程序原点

在程序开始之前必须设定坐标系和程序的原点。通常把程序原点确定为便于编程的点。

图6.1-1

设置坐标系原点

图6.1-2 设置程序原点的例子

剩余移动距离

此功能不属于坐标系,它仅仅显示移动命令发出后目的位置与当前机床位置之间的距离。仅

当各个轴的剩余距离都为零时,这个移动命令才完成。

图6.1-3

设置工件坐标系

编辑程序首先要确定坐标系,程序原点与刀具起点之间的关系构成工件坐标系;用 G50 指

令来建立。

图6.1-4

绝对/相对坐标系编程

数控车床有两个控制轴,有两种编程方法:绝对坐标命令方法和相对坐标命令方法。此外,

这些方法能够被结合在一个指令里。对于X 轴和 Z 轴地址所要求的相对坐标指令是 U 和

W。

① 绝对坐标程序---X40.Z5.;

② 相对坐标程序---U20.W-40.;

③ 混合坐标程序---X40.W-40.;

图6.1-5

6.2 G代码命令

6.2.1 G代码组及含义

G代码

*G00

G01

G02

G03

G04

G09

G20

G21

G22

G23

G27

G28

G29

G30

G32

*G40

G41

G42

G50

G52

G53

*G54

G55

G56

14

00

07

01

00

00

01

组 功能

定位(快速移动)

直线切削

圆弧插补(CW,顺时针)

圆弧插补(CCW,逆时针)

暂停

停于精确的位置

英制输入

公制输入

内部行程限位 有效

内部行程限位 无效

检查参考点返回

参考点返回

从参考点返回

回到第二参考点

切螺纹

取消刀尖半径偏置

刀尖半径偏置(左侧)

刀尖半径偏置(右侧)

主轴最高转速设置

(坐标系设定)

设置局部坐标系

选择机床坐标系

选择工件坐标系1

选择工件坐标系2

选择工件坐标系3

G代码

G57

G58

G59

G70

G71

G72

G73

G74

G75

G76

*G80

G83

G84

G85

G87

G88

G89

G90

G92

G94

G96

*G97

G98

*G99

12

01

10

00

14

组 功能

选择工件坐标系4

选择工件坐标系5

选择工件坐标系6

精加工循环

内外径粗切循环

台阶粗切循环

成形重复循环

Z向进给钻削

X向切槽

切螺纹循环

固定循环取消

钻孔循环

攻丝循环

正面镗循环

侧钻循环

侧攻丝循环

侧镗循环

(内外直径)切削循环

切螺纹循环

(台阶)切削循环

恒线速度控制

恒线速度控制取消

指定每分钟移动量

指定每转移动量

06

04

05

表 6.2-1 G 代码组及解释

( 带 * 者表示是开机时会初始化的代码。)

6.2.2 G代码解释

G00

定位(G00)

1. 格式

G00 X_ Z_

这个指令把刀具从当前位置移动到指令指定的位置 (在绝对坐标方式下), 或者移动到某个

距离处 (在增量坐标方式下)。

图6.2-1

2. 非直线切削形式的定位

我们的定义是:采用独立的快速移动速率来决定每一个轴的位置。刀具路径不是直线,根据

到达的顺序,机器轴依次停止在指令指定的位置。

3. 直线定位

刀具路径类似直线切削(G01)那样,以最短的时间(不超过每一个轴快速移动速率)定位于

要求的位置。

4. 举例

N10 G00 X-100 Z-65

G01

直线插补(G01)

1. 格式

G01 X(U)_ Z(W)_ F_ ;

直线插补以直线方式和指令给定的移动速率,从当前位置移动到指令位置。

图6.2-2

X, Z: 要求移动到的位置的绝对坐标值。

U, W: 要求移动到的位置的增量坐标值。

2. 举例

图6.2-3

G01 X50. Z75. F0.2 ;绝对坐标程序

X100.;

G01 U0.0 W-75. F0.2 ;增量坐标程序

U50.

G02/G03

圆弧插补 (G02/G03)

刀具进行圆弧插补时,必须规定所在的平面,然后再确定回转方向。顺时针G02;逆时针

G03。

1. 格式

G02(G03) X(U)__Z(W)__I__K__F__ ;

G02(G03) X(U)__Z(W)__R__F__ ;

X,Z – 指定的终点

U,W – 起点与终点之间的距离

I,K – 从起点到中心点的矢量

R – 圆弧半径(最大180 度)。

图6.2-4

2. 举例

图6.2-5

G02 X100. Z90. I50. K0. F0.2 ;绝对坐标系程序

或 G02 X100. Z90. R50. F0.2

G02 U40. W-30. I50. K0. F0.2 ;增量坐标系程序

或 G02 U40. W-30. R50. F0.2

G30

第二原点返回 (G30)

坐标系能够用第二原点功能来设置

1. 用参数 (a, b) 设置刀具起点的坐标值。点 “a” 和 “b” 是机床原点与起刀点之间

的距离。

2. 在编程时用 G30 命令代替 G50 设置坐标系。

3. 在执行了第一原点返回之后,不论刀具实际位置在那里,碰到这个命令时刀具便移到第

二原点。

4. 更换刀具也是在第二原点进行的。

G32

切螺纹 (G32)

1. 格式

G32 X(U)__Z(W)__F__ ;

F –螺纹导程设置

在编制切螺纹程序时应当带主轴转速RPM 均匀控制的功能 (G97),并且要考虑螺纹部分的

某些特性。在螺纹切削方式下移动速率控制和主轴速率控制功能将被忽略。而且在进给保持

按钮起作用时,其移动过程在完成一个切削循环后就停止了。

2. 举例

图6.2-6

G00 X29.4

G32 Z-23. F2 ;1循环切削

G00 X32

Z4.

X29.

G32 Z-23. F2 ;2循环切削

G00 X32.

Z4.

G40/G41/G42

刀具半径偏置功能 (G40/G41/G42)

1. 格式

G41 X_ Z_;

G42 X_ Z_;

图6.2-7

当刀刃是假想刀尖时,切削进程按照程序指定的形状执行不会发生问题。不过,真实的刀刃

是由圆弧构成的 (刀尖半径),就像上图所示,在圆弧插补的情况下刀尖路径会带来误差。

2. 偏置功能

命令

G40

G41

G42

切削位置

取消

右侧

左侧

刀具路径

刀具按程序路径的移动

刀具从程序路径左侧偏置

刀具从程序路径右侧偏置

表6.2-2

补偿的原则取决于刀尖圆弧中心的动向,它总是与切削表面法向里的半径矢量不重合。因此,

补偿的基准点是刀尖中心。通常,刀具长度和刀尖半径的补偿是按一个假想的刀刃为基准,

因此为测量带来一些困难。

把这个原则用于刀具补偿,应当分别以 X 和 Z 的基准点来测量刀具长度刀尖半径 R,以及

用于假想刀尖半径补偿所需的刀尖形式数 (1-9)。

图6.2-8

这些内容应当事前输入刀具偏置文件。

“刀尖半径偏置” 应当用 G00 或者 G01功能来下达命令或取消。不论这个命令是不是带

圆弧插补, 刀不会正确移动,导致它逐渐偏离所执行的路径。因此,刀尖半径偏置的命令

应当在切削进程启动之前完成; 并且能够防止从工件外部起刀带来的过切现象。反之,要

在切削进程之后用移动命令来执行偏置的取消过

3. 举例:

G41 X5 Z5 D1;

G02 X25 Z25 R25;

G40 G01 X10 Z10 D0;

G54~G59

工件坐标系选择(G54~G59)

1. 格式

G54 X_ Z_;

2. 功能

图6.2-9

通过使用 G54~G59 命令,最多可设置六个工件坐标系(1~6)。

在接通电源和完成了原点返回后,系统自动选择工件坐标系 1 (G54) 。在有 “模态”命令

对这些坐标做出改变之前,它们将保持其有效性。

G70

精加工循环(G70)

1. 格式

G70 P(ns) Q(nf)

ns: 精加工形状程序的第一个段号。

nf: 精加工形状程序的最后一个段号

2. 功能

用G71、G72或G73粗车削后,G70精车削。

G71

外圆粗车固定循环(G71)

图6.2-10

1. 格式

G71U(△d)R(e)

G71P(ns)Q(nf)U(△u)W(△w)F(f)S(s)T(t)

N(ns)……

………

F__ 从顺序号ns到nf的程序段,指定A及B间的移动指令。

S__

T__

N(nf)……

△d: 切削深度(半径指定)

不指定正负符号。切削方向依照AA’的方向决定,在另一个值指定前不会改变。FANUC系统

参数(NO.0717)指定。

e: 退刀行程

本指定是状态指定,在另一个值指定前不会改变。FANUC系统参数(NO.0718)指定。

ns: 精加工形状程序的第一个段号。

nf: 精加工形状程序的最后一个段号。

△U: X方向精加工预留量的距离及方向。(直径/半径)

△W: Z方向精加工预留量的距离及方向。

f,s,t: 包含在ns到nf程序段中的任何F,S或T功能在循环中被忽略,而在G71程序段中

的F,S或功能有效。

2. 功能

如果在上图用程序决定A至A’至B的精加工形状,用△d(切削深度)车掉指定的区域,留精

加工预留量△u/2及△w。

G72

端面车削固定循环(G72)

图6.2-11

1. 格式

G72W(△d)R(e)

G72P(ns)Q(nf)U(△u)W(△w)F(f)S(s)T(t)

△d,e,ns,nf, △u, △w,f,s及t的含义与G71相同。

2. 功能

如上图所示,除了是平行于X轴外,本循环与G71相同。

G73

成型加工复式循环(G73)

图6.2-12

1. 格式

G73U(△i)W(△k)R(d)

G73P(ns)Q(nf)U(△u)W(△w)F(f)S(s)T(t)

N(ns)………

…………

F__ A和B间的运动指令指定在从顺序号ns到nf的程序段中

S__

T__

N(nf)………

△i: X轴方向退刀距离(半径指定), FANUC系统参数(NO.0719)指定。

△k: Z轴方向退刀距离(半径指定), FANUC系统参数(NO.0720)指定。

d: 分割次数

这个值与粗加工重复次数相同,FANUC系统参数(NO.0719)指定。

ns: 精加工形状程序的第一个段号。

nf: 精加工形状程序的最后一个段号。

△U: X方向精加工预留量的距离及方向。(直径/半径)

△W: Z方向精加工预留量的距离及方向。

f,s,t: 顺序号“ns”到“nf”程序段中的任何F,S或T功能在循环中被忽略,而在G73程

序段中的F,S或功能有效。

2. 功能

本功能用于重复切削一个逐渐变换的固定形式,用本循环,可有效的切削一个用粗加工锻造

或铸造等方式已经加工成型的工件。

G74

端面啄式钻孔循环(G74)

图6.2-13

1. 格式

G74 R(e);

G74 X(u) Z(w) P(△i) Q(△k) R(△d) F(f)

e: 后退量

本指定是状态指定,在另一个值指定前不会改变。FANUC系统参数(NO.0722)指定。

x: B点的X坐标

u: 从A至B增量

z: C点的Z坐标

w: 从A至C增量

△i: X方向的移动量(不带符号)

△k: Z方向的移动量(不带符号)

△d: 刀具在切削底部的退刀量。△d的符号一定是(+)。但是,如果X(U)及△I省略,

退刀方向可以指定为希望的符号。

f: 进给率

2. 功能

如上图所示在本循环可处理断削,如果省略X(U)及P,结果只在Z轴操作,用于钻孔。

G75

外经/内径啄式钻孔循环(G75)

图6.2-14

1. 格式

G75 R(e);

G75 X(u) Z(w) P(△i) Q(△k) R(△d) F(f)

2. 功能

指令操作如上图所示,除X用Z代替外与G74相同,在本循环可处理断削,可在X轴割槽及

X轴啄式钻孔。

G76

螺纹切削循环(G76)

1. 格式

G76 P(m)(r)(a) Q(△dmin) R(d)

G76 X(u) Z(w) R(i) P(k) Q(△d) F(L)

m: 精加工重复次数(1至99)

本指定是状态指定,在另一个值指定前不会改变。FANUC系统参数(NO.0723)指定。

r: 倒角量

本指定是状态指定,在另一个值指定前不会改变。FANUC系统参数(NO.0109)指定。

a: 刀尖角度:

可选择80度、60度、55度、30度、29度、0度,用2位数指定。

本指定是状态指定,在另一个值指定前不会改变。FANUC系统参数(NO.0724)指定。如:P

(02/m、12/r、60/a)

△dmin: 最小切削深度,用半径值表示。

本指定是状态指定,在另一个值指定前不会改变。FANUC系统参数(NO.0726)指定。

d: 精加工余量

i: 螺纹部分的半径差

如果i=0,可作一般直线螺纹切削。

k: 螺纹高度,用半径值表示。

这个值在X轴方向用半径值指定。

△d: 第一次的切削深度(半径值)

L: 螺纹导程(同G32)

2. 功能

螺纹切削循环。

G90

内外直径的切削循环(G90)

1. 格式

直线切削循环:

G90 X(U)___Z(W)___F___ ;

按开关进入单一程序块方式,操作完成如图所示 1→2→3→4 路径的循环操作。U 和 W 的

正负号 (+/-) 在增量坐标程序里是根据1和2的方向改变的。

锥体切削循环:

G90 X(U)___Z(W)___R___ F___ ;

必须指定锥体的“R”值。切削功能的用法与直线切削循环类似。

2. 功能

外圆切削循环。

图6.2-15

1. U<0, W<0, R<0 2. U>0, W<0, R>0

图6.2-16 图6.2-17

3. U<0, W<0, R>0 4. U>0, W<0, R<0

图6.2-18 图6.2-19

G92

切削螺纹循环 (G92)

1. 格式

直螺纹切削循环:

G92 X(U)___Z(W)___F___ ;

螺纹范围和主轴 RPM 稳定控制 (G97) 类似于 G32 (切螺纹)。在这个螺纹切削循环里,切

螺纹的退刀有可能如 [图 9-9] 操作;倒角长度根据所指派的参数在0.1L~12.7L的范围里

设置为 0.1L 个单位。

锥螺纹切削循环:

G92 X(U)___Z(W)___R___F___ ;

2. 功能

切削螺纹循环

图6.2-20

图6.2-21

G94

台阶切削循环 (G94)

1. 格式

平台阶切削循环:

G94 X(U)___Z(W)___F___ ;

锥台阶切削循环:

G94 X(U)___Z(W)___R___ F___ ;

2. 功能

台阶切削

图6.2-22 图6.2-23

G96/G97

线速度控制 (G96/G97)

数控车床主轴分成低速和高速区;在每一个区内的速率可以自由改变。

G96 的功能是执行恒线速度控制,并且只通过改变转速来控制相应的工件直径变化时维持稳

定的恒定的切削速率,和 G50指令配合使用。

G97 的功能是取消恒线速度控制,并且仅仅控制转速的稳定。

G98/G99

每分钟进给率/每转进给率设置(G98/G99)

切削进给速度可用 G98 代码来指令每分钟的移动(毫米/分),或者用 G99 代码来指令每转

移动(毫米/转)。G99 的每转进给率主要用于数控车床加工。

图6.2-24

每分钟的移动速率 (毫米/分) = 每转位移速率 (毫米/转) x 主轴转速

6.3 辅助功能(M功能)

这些是辅助机床操作的功能,像主轴的启停、程序终止、切削液开/关等等。

代 码

M00

M01

M02

功 能

程序停止

选择性程序停止

程序结束

M30

M03

M04

M05

M08

M09

M40

M41

M42

M68

M69

M78

M79

M94

M95

M98

M99

程序结束复位

主轴正转

主轴反转

主轴停

切削液启动

切削液停

主轴齿轮在中间位置

主轴齿轮在低速位置

主轴齿轮在高速位置

液压卡盘夹紧

液压卡盘松开

尾架前进

尾架后退

镜像取消

X坐标镜像

子程序调用

子程序结束

表6.3-1 辅助功能(M 功能)

6.4 车床对刀

操作步骤:

一、FANUC 0-TDⅡ系统数控车床设置工件零点的几种方法:

1、 直接用刀具试切对刀

(1)用外圆车刀先试切一外圆,测量外圆直径后,按

值”,按 键,即输入到刀具几何形状里。

→ 输入“MZ 0”,按 键,即输入

→ 输入“MX外圆直径

(2)用外圆车刀再试切外圆端面,按

到刀具几何形状里。

2、 用G50设置工件零点

(1) 用外圆车刀先试切一外圆,选择、按 、按 键置“零”,测量外圆

直径后,把刀沿Z轴正方向退点,选择

(2) 选择

模式,输入G01 U..F0.3切端面到中心。

键,把当前点设为零点。 模式,输入G50 X0 Z0,启动

(3) 选择

工。

模式,输入G0 X150 Z150 ,启动 键,使刀具离开工件进刀加

(4) 这时程序开头:G50 X150 Z150 ……。

(5) 注意:用G50 X150 Z150,程序起点和终点必须一致即X150 Z150,这样才能保证重

复加工不乱刀。

(6) 如用第二参考点G30,即能保证重复加工不乱刀,这时程序开头

G30 U0 W0

G50 X150 Z150

(7) 在FANUC系统里,第二参考点的位置在参数里设置,机床对刀完成后(X150 Z150 ),

按鼠标右键出现对话框

可。

3、 工件移设置工件零点

(1) 在FANUC0-TD系统的 里,有一工件移界面,可输入零点偏移值。

,按鼠标左键确认即

(2) 用外圆车刀先试切工件端面,这时X、Z坐标的位置如:X-260 Z-395,直接输入到偏

移值里。

(3) 选择

建立。

(4) 注意:这个零点一直保持,只有重新设置偏移值Z0,才清除。

4、 G54~G59设置工件零点

(1) 用外圆车刀先试车一外圆,测量外圆直径后,把刀沿Z轴正方向退点,切端面到中心。

(2) 把当前的X和Z轴坐标直接输入到G54~G59里,程序直接调用如:G54 X50 Z50…….

(3) 注意:可用G53指令清除G54~G59工件坐标系.

二、FANUC 0iT系统数控铣床设置工件零点的几种方法:

操作步骤:

1、 直接用刀具试切对刀

(1) 用外圆车刀先试切一外圆,测量外圆直径后,按

“外圆直径值”,按

→ → 输入

回参考点方式,按 轴回参考点,这时工件零点坐标系即

键,刀具“X”补偿值即自动输入到几何形状里。

→ → 输入“Z 0”, 按(2) 用外圆车刀再试切外圆端面,按

键,刀具“Z”补偿值即自动输入到几何形状里。

2、 用G50设置工件零点

(1) 用外圆车刀先试切一段外圆,选择 按 → ,这时“U”坐标在

闪烁。按 键置“零”,测量工件外圆后,选择 “MDI”模式,输入G01 U-

××(××为测量直径)F0.3,切端面到中心。

(2) 选择

(3) 选择

MDI模式,输入G50 X0 Z0,启动 键,把当前点设为零点。

MDI模式,输入G0 X150 Z150 ,使刀具离开工件。

(4) 这时程序开头:G50 X150 Z150 ……。

(5) 注意:用G50 X150 Z150,程序起点和终点必须一致即X150 Z150,这样才能保证重

复加工不乱刀。

(6) 如用第二参考点G30,即能保证重复加工不乱刀,这时程序开头

G30 U0 W0

G50 X150 Z150

(7) 在FANUC系统里,第二参考点的位置在参数里设置,机床对完刀后(X150 Z150 ),按

鼠标右键出现对话框

3、 工件移设置工件零点

(1) 在FANUC0i系统的 里,有一工件移界面,可输入零点偏移值。

,按鼠标左键确认即可。

(2) 用外圆车刀先试切工件端面,这时X、Z坐标的位置如:X-260 Z-395,直接输入到偏

移值里。

(3) 选择 回参考点方式,按X、Z轴回参考点,这时工件零点坐标系即建立。

(4) 注意:这个零点一直保持,只有重新设置偏移值Z0,才清除。

4、 G54~G59设置工件零点

(1) 用外圆车刀先试切一外圆,按

→ →,如选择G55,输入X0、Z0

工件零点坐标即存入G55里,程序直接调用如:G55 X60 Z50……。

(2) 注意:可用G53指令清除G54~G59工件坐标系。

6.5 例题

G90内外径切削循环

图6.5-1

T0101 ;刀具补偿

M03 S1000

G0 X105 Z5

G90 X90 Z-80 F0.3 ;调用内外直径切削循环粗车

X85 ;重复调用切削循环

X80

X75

X70 ;切削到尺寸

G0 X100 Z100

T0100 ;取消刀具补偿

M05

M30

G92切削螺纹循环

图6.5-2

T0101 ;刀具补偿

M03 S100

G0 X102 Z10

G92 X98 Z-80 F0.3 ;调用切削螺纹循环

X96 ;重复调用切削螺纹循环

X94

X92 ;车削螺纹到尺寸

G0 X200 Z100

T0100 ;取消刀具补偿

M05

M30

G94台阶切削循环

T0101

M03 S1000

G0 X105 Z5

G94 X60 Z-5 F0.3

Z-9

Z-13

Z-17

G0 X100 Z100

T0100

M05

M30

G70精加工循环

图6.5-3

;刀具补偿

;调用台阶切削循环

;重复调用台阶切削循环

;切削到尺寸

;取消刀具补偿

图6.5-4

N010 T0101 ;刀具补偿

N020 M3 S800

N030 G0 X45 Z2

N040 G71 U2 R1 ;调用粗车削循环格式

N050 G71 P060 Q130 U0.25 W0.1 F0.25 ;呼叫程式N号码

N060 G0 X15.8

N070 G1 X23.8 Z-2

N080 Z-25

N090 X28

N100 X34 Z-33

N110 Z-48

N120 X42

N130 Z-58

N140 G0 X100 Z100

N150 X45 Z3

N160 G70 P060 Q130 ;调用精加工循环

N170 G0 X100 Z100

N180 T0200 ;退刀

N190 M05

N200 M30

G72端面车削固定循环

图6.5-5

N10 T0101 M03 S1000 ;刀具补偿

N20 G0 X102 Z2

N30 G72 W7.0 R1.0 ;调用端面车削固定循环格式

N40 G72 P50 Q100 U4.0 W2.0 F0.3 S550 ;呼叫程式N号码

N50 G0 X110 Z10

N60 G01 X100 W-12 F0.15

N70 W-10

N80 X95 W-10

N90 W-20

N100 X80 W-22

N110 G0 X100 Z100

N120 T0100 ;取消刀具补偿

N130 M05

N140 M30

G73成型加工复式循环

图6.5-6

N10 G97 G99 S1200 M03 T0101 ;1号刀具补偿

N20 G0 X44 Z-1 ;接近工件

N30 G01 X-1 F0.05 ;车削端面

N40 Z2

N50 G0 X40 Z2

N55 G73 U7 W0 R7 ;调用成型加工复式循环

N60 G73 P70 Q160 U0.6 W0.3 F0.1

N70 G0 X27.8 Z2 S1500 M03

N80 G01 Z0 F0.05

N90 X29.8 Z-1

N100 Z-10

N110 X26 Z-12

N120 Z-22.776

N130 G02 X30.775 Z-28.041 R7

N140 G01 X38 Z-48

N150 Z-55

N160 X42

N170 G0 X80 Z1

N180 G70 P70 Q160 ;调用精加工循环

N190 G0 X200 Z200

N200 M05

N210 T0100 ;取消刀具补偿

N220 M30

G74端面啄式钻孔循环

图6.5-7

T0101 ;1号刀具补偿

M3 S800

G0 X0 Z2

G74 R1 ;调用端面啄式钻孔循环格式

G74 Z-60 Q3000 F0.1 ;钻孔到深度

G0 X100 Z100

T0100 ;取消刀具补偿

M05

M30

G75外径/内径啄式钻孔循环

图6.5-8

T0101 ;刀具补偿

M3 S800

G0 X105 Z2

X105 Z-22

G75 R2 ;调用钻孔循环格式

G75 X90 Z-60 P3000 Q3000 R0 F0.1

G0 X100 Z100

T0100;取消刀具补偿

M05

M30

G76螺纹切削循环

图6.5-9

T0101 ;刀具补偿

M03 S800

G0 X105 Z2

G76 P010060 Q100 R0.1 ;调用螺纹切削循环

G76 X94 Z-59 P1200 Q400 F2

G0 X110 Z110

T0100 ;取消刀具补偿

M05

M30

G90 锥面切削循环

图6.5-10

T0101 G0 X200 Z200 ;刀具补偿

M03 S1000 ;转速1000

G0 X105 Z5

G90 X90 Z-80 R-10 F0.3 ;调用锥面切削循环

U-10

G0 X100 Z100

T0100 ;取消刀具补偿

M05

M30

M98/M99调用子程序

图6.5-11

主程序:

O0012

N010 M03 S1000

N020 T0101 ;1号刀具补偿

N030 G00 X40 Z2

N040 M98 P20090 ;呼叫二次子程序名称 O 0090

N050 G00 X120 Z80

N060 M05

N070 M30

%

子程序:

O0090

N010 G1 Z-40 F0.3 ;子程序

N020 G3 X60 Z-50 R10

N030 G1 X65

N040 Z-70

N050 X80 Z-100

N060 M99 ;返回到主程序

%

综合例题

T1:外圆粗车刀 T2:外圆精车刀 T3:螺纹刀 T4:钻头 T5:镗孔刀

程序:

N010 G30 U0. W0.

N015 G50 X0. Z0. T0100

N020 G96 S1500 M03

N025 G00 X60 Z0. T0101

N030 G01 X-1. F0.5

N035 G00 X61. Z3.

N040 G71 U2. R0.5

N045 G71 P50 Q115 U0.4 W0.2 F0.4

N050 G00 X20.

N055 G01 Z0.

N060 X22.

N065 Z-2. X30.

N070 Z-30. X30.

N075 Z-30. X36.

N080 Z-32. X40.

N085 Z-62. X40.

N090 Z-62. X46.

N095 G03 Z-64. X50. K-2. I0.

N100 G01 Z-77. X50.

N105 G03 Z-80. X56. K-3. I0.

N110 G01 Z-85. X56.

N115 Z-85. X57.

N120 G00 X100. Z30.

N125 X150. Z150. T0100

N130 G00 X61. Z30. T0202

N135 G00 Z10.

N140 G70 P50 Q115

6.5-12

;回第二参考点

;建工件坐标系,换T01号刀

;主轴转动,恒线速

;调T01刀补

;粗切循环

;粗切循环

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;子程序

;退刀去刀补

;换刀T2

;精切循环

N145 G40 G00 Z30.

N150 X150. Z150. T0200 ;退刀去刀补

N151 G0 X0 Z170. T0404 ;换刀T4

N152 G0 Z1.

N153 G01 Z-60. F100

N154 G0 Z170. T0400 ;退刀去刀补

N155 T0505 ;换刀T5

N156 G0 Z1.

N157 G01 Z-50. F100

N158 G0 Z170 T0500

N159 G97 S500 M03 ;恒转速

N160 G00 X61.Z3. T0303 ;换刀T3

N165 X42. Z-32.

N170 G76 P010060 ;切螺纹循环

N175 G76 X37.835 Z-57. P1083 Q300 F2.0 ;切螺纹循环

N180 G00 X61. Z3

N185 X150. Z150. T0300 ;退刀去刀补

N190 M05 ;主轴停止

N195 M30 ;程序停止

图6.5-13

第七章 用户宏程序

7.1变量

普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户

宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面

板上的操作改变。

#1=#2+100

G01 X#1 F300

说明:

● 变量的表示

计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。

例如:#1

表达式可以用于指定变量号。此时,表达式必须封闭在括号中。

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

● 变量的类型

变量根据变量号可以分成四种类型

变量号 变量类型 功能

#0 空变量 该变量总是空,没有值能赋给该变量.

#1-#33 局部变量 局部变量只能用在宏程序中存储数据,

例如,运算结果.当断电时,局部变量被

初始化为空.调用宏程序时,自变量对

局部变量赋值,

#100-#199 公共变量 公共变量在不同的宏程序中的意义相

#500-#999 同.当断电时,变量#100-#199初始化为

空.变量#500-#999的数据保存,即使断

电也不丢失.

#1000--- 系统变量 系统变量用于读和写CNC运行时各种数

据的变化,例如,刀具的当前位置和补

偿值.

● 变量值的范围

局部变量和公共变量可以有0值或下面范围中的值:

47-29-247

-10到-10或-10到-10

如果计算结果超出有效范围,则发出P/S报警NO.111.

● 小数点的省略

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

例:当定义#1=123;变量#1的实际值是123.000。

● 变量的引用

为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式

放在括号中。

例如:G01X[#1+#2]F#3;

被引用变量的值根据地址的最小设定单位自动地舍入。

例如:

当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为

G00X12346.

改变引用变量的值的符号,要把负号(-)放在#的前面。

例如:G00X-#1

当引用未定义的变量时,变量及地址都被忽略。

例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。

● 双轨迹(双轨迹控制)的公共变量

对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N0.6036

和6037的设定,某些公共变量可同时用于两个轨迹。

● 未定义的变量

当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能

读。

(a) 引用

当引用一个未定义的变量时,地址本身也被忽略。

当#1=<空> 当#1=0

G90 X100 Y#1 G90 X100 Y#1

↓ ↓

G90 X100 G90 X100 Y0

(b) 运算

除了用<空>赋值以外,其余情况下<空>与0相同。

当#1=<空>时 当#1=0时

#2=#1 #2=#1

↓ ↓

#2=<空> #2=0

#2=#*5 #2=#*5

↓ ↓

#2=0 #2=0

#2=#1+#1 #2=#1+#1

↓ ↓

#2=0 #2=0

(c)条件表达式

EQ和NE中的<空>不同于0。

当#1=<空>时 当#1=0时

#1EQ#0 #1EQ#0

↓ ↓

成立 不成立

#1 NE #0 #1 NE #0

↓ ↓

成立 不成立

#1 GE #0

成立

#1 GT #0

不成立

● 限制

程序号,顺序号和任选程序段跳转号不能使用变量。

例:下面情况不能使用变量:

0#1;

/#2G00X100.0;

N#3Y200.0;

#1 GE #0

不成立

#1 GT #0

不成立

7.2算术和逻辑运算

下面表中列出的运算可以在变量中执行。运算符右边的表达式可包含常量和或由函数或运

算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋

值。

功能 格式 备注

定义 #i=#j

加法 #i-#j+#k;

减法 #i-#j-#k;

乘法 #i-#j*#k;

除法 #i-#j/#k;

正弦 #i=SIN[#j]; 角度以度数指定,90°

反正弦 #i=ASIN[#j]; 30’表示为90.5度。

余弦 #i=COS[#j];

反余弦 #i=ACOS[#j];

正切 #i=TAN[#j];

反正切 #i=ATAN[#j];

平方根

绝对值

舍入

上取整

下取整

自然对数

指数函数

#i=SQRT[#j];

#i=ABS[#j];

#i=ROUNND[#j];

#i=FIX[#j];

#i=FUP[#j];

#i=LN[#j];

#i=EXP[#j];

#i-#jOR#k;

#i-#jXOR#k;

#i-#jAND#k;

#i=BIN[#j];

#i=BCD[#j];

异或

逻辑运算一位一位地

按二进制数执行。

从BCD转为BIN

从BIN转为BCD

用于与PMC的信号交

换。

说明:

● 角度单位

函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如90°30’表示为90.5度。

● ARCSIN # i= ASIN[#j]

(1)取值范围如下:

当参数(NO.6004#0)NAT位设为0时,270°~90°

当参数(NO.6004#0)NAT位设为1时,-90°~90°

(2)当#j超出-1到1的范围时,发出P/S报警NO.111.

(3)常数可替代变量#j

● ARCCOS #i=ACOS[#j]

(1) 取值范围从180°~0°

(2) 当#j超出-1到1的范围时,发出P/S报警NO.111.

(3) 常数可替代变量#j

● ARCTAN #i= ATAN[#j]/ [#k]

(1) 指定两个边的长度,并用斜杠(/)分开

(2) 取值范围如下:

当NAT位(参数NO.6004,#0)设为0时;0°到360°

当NAT位(参数NO.6004,#0)设为1时;-180°到180°

(3) 常数可替代变量#j

● 自然对数 #i=LN[#j];

-8

(1) 注意,相对误差可能大于10.

(2) 当反对数(#j)为0或小于0时,发出P/S报警NO.111.

(3) 常数可替代变量#j。

● 指数函数 #i=EXP[#j]

-8。

(1) 注意,相对误差可能大于10

(2) 当运算结果超过3.65X10(j大约是110)时,出现溢出并发出P/S报警NO.111.。

(3) 常数可替代变量#j。

● ROUND(舍入)函数

(1) 当算术运算或逻辑运算指令IF或WHILE中包含ROUND函数时,则ROUND函数在第一

个小数位置四舍五入. 当执行#1= ROUND[#2];此处#2=1.2345,变量1的值是1.0。

(2) 当在NC语句地址中使用ROUND函数时,ROUND函数根据地址的最小设定单位将指定

值四舍五入

● 上取整下取整

CNC处理数值运算时,若操作后产生的整数绝对值大于原数的绝对值时为上取整;若小

于原数的绝对值为下整数.对于负数的处理应小心.

● 算术与逻辑运算指令的缩写

程序中指令函数时,函数名的前两个字符可以用于指定该函数.

ROUND→RO

FLX→FI

● 运算次序

(1) 函数

(2) 乘和除运算

(3) 加和减运算

● 括号嵌套

括号用于改变运算次序,括号可以使用5级,包括函数内部使用的括号.当超过5级时,出

现P/S报警NO.118.

限制

● 括号 ([,])用于封闭表达式.注意,圆括号用于注释.

● 运算误差 运算时,可能出现误差.

注: 1.相对误差取决于运算结果.

2.使用两类误差的较小者.

3.绝对误差是常数,而不管运算结果.

4.函数TAN执行SIN/COS.

-8

5.如果SIN/COS或TAN函数的运算结果小于10X10或由于运算精度的限制不为

0的话,设定参数NO.6004#1为1,则运算结果可以规算为0.

(1) 变量值的精度约为8位十进制数.当在加/减速中处理非常大的数时,将得不到期

望的结果.

(2) 还应该意识到,使用条件表达式EQ,NE,GE,和LT时可能造成误差.

(3) 使用下取整指令时应小心.

● 除数 当在除法或TAN[90]中指定为0的除数时,出现P/S报警NO.112

47

7.3宏程序语句和NC语句

下面的程序段为宏程序语句:

◆ 包含算术或逻辑运算(=)的程序段.

◆ 包含控制语句的程序段

◆ 包含宏程序调用指令的程序段

除了宏程序以外的任何程序段都为NC语句.

说明:

● 与NC语句的不同

(1) 即使置于单程序段运行方式,机床也不停止.但是,当参数N0.6000#5SBM设定为1时,

在单程序段方式中,机床停止.

(2) 在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理.

● 与宏程序语句有相同性质的NC 语句

(1) 含有子程序调用指令,但没有除O,N或L地址之外的其它地址指令的NC语句其性质

与宏程序相同.

(2) 不包含除ONP或L以外的指令地址的程序段其性质与宏程序语句相同.

7.4转移和循环

在程序中,使用GOTO 语句和IF语句可以改变控制的流向.有三种转移和循环操作可供

使用;

转移和循环----------GOTO语句(无条件转移)

↓→IF语句(条件转移)

WHILE语句(当…时循环)

7.4.1无条件转移(GOTO语句)

转移到标有顺序号n的程序段.当指定1到99999以外的顺序号时,出现P/S报警NO.128.

可用表达方式指定顺序号.

GOTOn;n:顺序号(1到99999)

7.4.2条件转移(IF)语句

IF之后指定条件表达式.

IF[<条件表达式>]GOTOn 如果指定的条件表达式满足时,转移到标有顺序号n的程序

段.如果指定的条件表达式不满足,执行下个程序段.

IF[<条件表达式>]THEN 如果条件表达式满足,执行预先决定的宏程序语句.只执行

一个宏程序语句.

说明:

● 条件表达式

条件表达式必须包括算符.算符插在两个变量中间或变量和常数中间,并且用括号([,])

封闭.表达式可以替代变量.

● 运算符

运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于

另一个值.注意,不能使用不符号.

运算符 含义

EQ 等于

NE 不等于

GT

GE

LT

LE

典型程序:

下面的程序计算数值1-10的总和

大于

小于或等于

小于

小于或等于

09500;

#1=0; 存储和数变量的初值

#2=1; 被加数变量的初值

N1 IF[#2 GT 10]GOTO 2; 当被加数大于10时转移到N2

#1=#1+#2; 计算和数

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

GOTOA1; 转到N1

N2 M30 ; 程序结束

7.4.3循环(WHILE语句)

在 WHILE后指定一个条件表达式.当指定条件满足时,执行从D0到END之间的程序.否则,

转到END后的程序段.

说明:

当指定的条件满足时,执行 WHILE从D0到END之间的程序.否则,转而执行END之后的程序

段,这种指令格式适用于IF语句.D0后的号和END后的号是指定程序执行范围的标号,标号

值为1,2,3.若用1,2,3以外的值会产生P/S报警NO.126.

● 嵌套

在DO-END循环中的标号可根据需要多次使用.但是,当程序有交叉重复循环(DO范围的

重叠)时,出现P/S报警NO.124.

说明:

◆ 无限循环 当指定DO而没有指定WHILE语句时,产生从DO到END的无限循环.

◆ 处理时间 当在GOTO语句中有标号转移的语句时,进行顺序号检索.反向检索的时

间要比正向检索长.用WHILE语句实现循环可减少处理时间.

◆ 未定义的变量 在使用EQ或NE的条件表达式中,<空>和零有不同的效果,在其它形

式的条件表达式中,<空>被当作零.

◆ 典型程序 下面的程序计算数值1到10的总和.

00001;

#1=0;

#2=1;

WHILE[#2LE10]DO 1;

#1=#1+#2;

#2=#2+1;

END 1;

M30;

7.5宏程序调用

用下面的方法调用宏程序:

宏程序调用------------非模态调用(G65)

-----------模态调用(G66,G67)

------------用G代码调用宏程序

------------用M代码调用宏程序

------------用M代码调用子程序

------------用T代码调用子程序

限制

● 用宏程序调用和子程序调用之间的差别

宏程序调用用(G65)不同于子程序用(G68),如下所述:

(1) 用(G65),可以指定自变量(数据传送到宏程序).M98没有该功能.

(2) 当M98程序段包含另一个NC指令时,在指令执行之后调用子程序.相反,G65无条件

地调用宏程序.

(3) M98程序段包含另一个NC指令时,在单程序段方式中,机床停止.相反,G65机床不停

止.

(4) 用G65,改变局部变量的级别.用M98,不改变局部变量的级别.

7.5.1 非模态调用(G65)

当指定G65时,以地址P指定的用户宏程序被调用.数据能传递到用户宏程序体中.

说明:

呼调:(1) 在G65之后,用地址P指定用户宏程序的程序号.

(2) 当要求重复时,在地址L后指定从1到9999的重复次数.省略L值时,认为L

等于1.

(3) 使用自变量指定,其值被赋值到相应的局部变量.

● 自变量指定

可用两种形式的自变量指定,自变量指定I使用除了G,L,O,N和P以外的字母,每个字

母指定一次.自变量指定II使用A,B,C和I,J和K(i为1-10).根据使用的字母,自动地

改变自变量指定的类型.

自变量指定I

地址 变量号 地址 变量号 地址 变量号

A #1 I #4 T #20

B #2 J #5 U #21

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

(1) 地址G,L,N,Q和P不能在自变量中使用.

(2) 不需要指定的地址可以省略,对应于省略地址的局部变量设为空.

(3) 地址不需要按字母顺序指定,但应符合字地址的格式.但是I,J和K需要按字母顺序

指定.

自变量地址II

自变量指定II使用A,B,和C各一次,I,J,K10次.自变量指定II用于传递诸如三维坐标

值的变量.

地址 变量号 地址 变量号 地址 变量号

A #1 K3 #12 J7 #23

B #2 I4 #13 K7 #24

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

L3 #10 K6 #21 J10 #32

J3 #11 I7 #22 K10 #33

I,J,K的下标用于确定自变量指定的顺序,在实际编程中不写.

限制:

◆ 格式: 任何自变量前必须指定G65

◆ 自变量指定I,II的混合 CNC内部自动识别自变量指定I&自变量指定II.如

果自变量指定I和自变量指定II混合指定的话,后指定的自变量类型有效.

◆ 小数点的位置 没有小数点的自变量数据的单位为各地址的最小设定单位.传

递的没有小数点的自变量的值根据机床实际的系统配置变化.在宏程序调用中使

用小数点可使程序兼容性好.

◆ 调用嵌套:调用可以嵌套4级,包括非模态调用(G95)和模态调用(G66).但不

包括子程序调用(M98).

◆ 局部变量的级别 :

1.局部变量嵌套从0到4级.

2.主程序是0级.

3.宏程序每调用1次,局部变量级别加1.前1级的局部变量值保存在CNC中.

4.当宏程序中执行M99时,控制返回到调用的程序.此时,局部变量级别减1;并恢

复宏程序调用时保存的局部变量值.

◆ 典型程序: 编制一个宏程序加工轮圆上的孔.圆周的半径为I.起始角为A,间隔

为B,钻孔数为H,圆的中心是(X,Y)指令可以用绝对值或增加量指定.顺时针方向

钻孔时B应指定负值.

◆ 调用格式:G95 P9100 Xx Yy Zz Rr Li Aa Bb Hh ;

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

Y:圆心的Y坐标(绝对值或增量值的指定)(#25)

Z:孔深(#26)

R:快速趋近点坐标(#18)

F:切削进给速度(#9)

I:圆半径(#4)

A:第一孔的角度(#1)

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

H:孔数(#11)

◆ 宏程序调用程序:

O0002;

G90 G92 X0 Y0 Z100,0;

G65 p9100 X100 Y50.0 R30.0 Z50.0 500 I100.0 A0 B45.0 H5;

M30;

◆ 宏程序

09100;

#3=#4003;存储03组G代码

G81 Z#26 R#18 F#9 K0;(注)钻孔循环

注:也可以使用L0

IF[#3 EQ 90] GOTO 1;在G90方式转移到N1

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

#25=#5001+#25;计算圆心的Y坐标

N1 WHILE[#11 GT O] DO 1;直到剩余孔数为0

#5=#24+#4*COS[#1];计算X轴上的孔位

#6=#25+#4*SIN[+1]; 计算X轴上的孔位

G90 X#5 Y#6 ;移动到目标位置之后执行钻孔

#1=#1+#2;更新角度

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

END 1;

G#3 G80 ;返回原始状态的G代码

M99

7.5.2 模态调用(G66)

一旦发出G66则指定模态调用,即指定沿移动轴移动的程序段后调用宏程序.G97取

消模态调用.

说明:

● 调用

1.在G66之后,用地址P指定模态调用的程序号.

2.当要求重复时,地址L后指定从1到9999的重复次数.

3.与非模态调用(G65)相同,自变量指定的数据传递到宏程序体中.

● 取消 指定G97代码时,其后面的程序段不再执行模态宏程序调用.

● 调用嵌套 调用可以嵌套4级.包括非模态调用(G65)和模态调用(G66).但不包括

子程序调用(M98)

限制: 1.在G66程序段中,不能调用多个宏程序.

2.G66必须在自变量之前指定.

3.在只有诸如辅助功能但无移动指令的程序段中不能调用宏程序.

4.局部变量(自变量)只能在G66程序段中指定.注意,每次执行模态调用时,

不再设定局部变量.

● 典型程序 用宏程序编制G81固定循环的操作.加工程序使用模态调用,为了简化程

序,使用绝对值指定全部的钻孔数据.

● 调用格式 G65 P9110 Xx Yy Zz Rr Ff Ll;

X:孔的X坐标(由绝对值指定)(#24)

Y:孔的Y坐标(由绝对值指定)(#25)

Z: Z 点坐标(由绝对值指定) (#26)

R: R点坐标(由绝对值指定) (#18)

F:切削进给速度(#9)

L:重复次数

● 调用宏程序的程序 00001;

G28 G91 X0 Y0 ZO;

G92 X0 Y0 Z50.0;

G00 G90 X100.0 Y50.0;

G66 P9110 Z-20.0 R.0 F500;

G90 X20.0 Y20.0;

X50.0;

X0.0 Y80.0;

G67;

M30;

● 宏程序(被调用的程序) 09110;

#1=#4001;贮存G00/G01

#2=#4003; 贮存G90/G91

#3=#4109; 贮存切削进给速度

#5=#5003; 贮存钻孔开始的Z坐标

G00 G90 Z#18; 定位在R点

G01 Z#26 F#9 ; 切削进给到Z点

IF[#4010 EQ 98]GOTO1;返回到1点

G00 Z#18 ;定位在R点

GOTO 2;

N1 G00 Z#5 ;定位在1点

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

M99;

7.5.3 用G代码调用宏程序

在参数中设置调用宏程序的G代码,与非模态调用(G65)同样的方法用该代码调用

宏程序.

说明:在参数(NO.6050到NO.6059)中设置调用用户宏程序(09010到09019)的G代码

号(从1到9999),调用户宏程序的方法与G65相同.例如,设置参数,使宏程序09010由

G81调用,不用修改加工程序,就可以调用由用户宏程序编制的加工循环.

● 参数号和程序号之间的对应关系

程序号 参数号

09010 6050

09011 6051

09012 6052

09013 6053

09014 6054

09015 6055

09016 6056

09017 6057

09018 6058

09019 6059

● 重复 与非模态调用一样,地址L可以指定从1到9999的重复次数.

● 自变量指定 与非模态调用一样,两种自变量指定是有效的;自变量指定I和自变

量指定II.根据使用的地址自动地决定自变量的指定类型.

● 使用G代码的宏调用的嵌套 在G代码调用的程序中,不能用一个G代码调用多个

宏程序.这种程序中的G代码被处理为普通G代码.在用M或T代码作为子程序调用

的程序中,不能用一个G代码调用多个宏程序.这种程序中的G代码也处理为普通G

代码.

7.5.4 用M代码调用宏程序

在参数中设置调用宏程序的M代码,与非模态调用(G65)的方法一样用该代码调用

宏程序.

说明: 在参数(NO.6080到NO.6089)中设置调用用户宏程序(09021到09029)的M代码

(从1到99999999),用户宏程序能与G65同样的方法调用.

● 参数号和程序号之间的对应关系

程序号 参数号

09020 6080

0902 6081

09022 6082

0902 6083

09024 6084

09025 6085

09026 6086

09027 6087

09028 6088

09029 6089

● 重复 与非模态调用一样,地址L可以指定从1到9999的重复次数.

● 自变量指定 与非模态调用一样,两种自变量指定是有效的;自变量指定I和自

变量指定II.根据使用的地址自动地决定自变量的指定类型.

● 限制: 1.调用宏程序的M代码必须在程序段的开头指定.

2.G代码调用的宏程序或用M代码或T代码作为子程序调用的程序中,不能

用一个M代码调用多个宏程序.这种宏程序或程序中的M代码被处理为普

通M代码.

7.5.5 用M代码调用子程序

在参数中设置调用子程序(宏程序)的M代码号,可与子程序调用(M98)相同的方法用

该代码调用宏程序.

说明:在参数(NO.6071到NO.6079)中设置调用子程序的M代码(从1到99999999),相应

的用户宏程序(09001到09009)可与M98同样的方法用该代码调用.

● 参数号&程序号之间的对应关系

程序号 参数号

09001 6071

09002 6072

09003 6073

09004 6074

09005 6075

09006 6076

09007 6077

09008 6078

09009 6079

● 重复 与非模态调用一样,地址L可以指定从1到9999的重复次数.

● 自变量指定 不允许自变量指定.

● M代码 在宏程序中调用的M代码被处理为普通的M代码.

● 限制: 用G代码调用的宏程序,或用M或T代码调用的程序中,使用一个M代码不

能调用几个子程序.这种宏程序或程序中的M代码被处理为普通的M代码.

7.5.6 用T代码调用子程序

在参数中设置调用的子程序(宏程序)的T代码,每当在加工程序中指定该T代码时,即

调用宏程序.

说明:

● 调用: 设置参数NO.6001的5位TCS=1,当在加工程序中指定T代码时,可以调用宏

程序09000.在加工程序中指定的T代码赋值到公共变量#149.

● 限制:用G代码调用的宏程序中或用M或T代码调用的程序中,一个M代码不能调用

多个子程序.这种宏程序或程序中的T代码被处理为普通T代码.

7.5.7 典型程序

用M代码调用子程序的功能,调用测量每把刀具的累积使用时间的宏程序.

条件: 1.测量T01到T05各把刀具的累积使用时间.刀号大于T05的刀具不进行

测量.

2.下面的变量用于贮存刀号和测量的时间.

#501 刀号1的累积使用时间

#502 刀号2累积使用时间

#503 刀号3累积使用时间

#504 刀号4累积使用时间

#505 刀号5累积使用时间

3.当指定M03时,开始计算使用时间,当指定M05时,停止计算.在循环起

动灯亮期间,用系统变量#3002测量该时间.进给暂停&单段停止期间,时间不

计算,但要计算换刀和交换工作台的时间.

进行检查

◆ 参数设置 参数NO.6071中设置3,参数NO.6072中设置05.

◆ 变量值的设置 变量#501到#505中设置0.

◆ 调用宏程序的程序 00001;

T01 M06;

M03;

M05;改变#501

T02 M06;

M03;

M05; 改变#503

T05 M06;

M03;

M05;改变#504

T05 M06;

M03;

M05;改变#505

M30;

◆ 宏程序(被调用的程序) 09001 (M03);启动计算的宏程序

N01;

IF[#4120 EQ 0]GOTO9;没有指定刀具

IF[#4120 GT 5]GOTO9;超出刀号范围

#3002=0;计算器清0

N9 M03;以正向旋转主轴

M99;

09002(M05);结束计算的宏程序

M01;

IF[#4120 EQ 0]GOTO9;没有指定刀具

IF[#4120 GT 5]GOTO9;超出刀号范围

#[500+#120]=#3002+#[500+4120];计算累积时间

N9 M05;停止主轴

M99;

7.6 宏程序语句的处理

为了平滑加工,CNC预读下一个要执行的NC语句.这种运行称为缓冲.在刀具

半径补偿方式(G41,G42)中,NC为了找到交点提前预读2或3个程序段的NC后语

句,算术表达式和条件转移的宏程序语句在它们被读进缓冲寄存器后立即被处理.

包含M00,M01,M02或M30的程序段,包含由参数NO.3411到NO.3420设置的禁止缓

冲的M代码的程序段,以及包含G31的程序段不预读.

说明:

● 当下个程序段不缓冲时(不缓冲的M代码,G31等)

● 在除了刀具半径补偿方式(G41,G42)以外的方式中,缓冲下个程序段(正常预读一个

程序段)

当执行N1时,下个NC语句(N4)被读入缓冲器.N1和N4之间的宏语句(N2,N3)在N1执行

期间被处理.

● 在刀具半径补偿方式(G41,G42)中缓冲下个程序段

当N1正在执行时,在下2个程序段(直到N5)中的NC语句被读进缓冲寄存器.在N1和N5

之间的宏语句(N2,N4)在N1的执行期间被处理.

● 在刀具半径补偿方式C(G41,G42)中,当下个程序段包含没有移动的程序段时

当NC1程序段正在执行时,下两个程序段(直到N5)中的NC语句被读进缓冲寄存器.由于

N5是不移动的程序段,不能计算交点.此时,下面三个程序段(直到N7)中的NC语句被读

入.在N1和N7之间的宏语句(N2,N4和N6)在执行N1时被处理.

7.7 用户宏程序的存储

用户宏程序与子程序相似,可用与子程序同样的方法进行存储和编程,存储容量由子

程序和宏程序的总容量确定.

7.8 限制

● MDI运行 在MDI方式中可以指定宏程序调用指令.但是,在自动运行期间,宏程序

调用不能切换到MDI方式.

● 顺序号检索 用户宏程序正在执行,在单程序段方式,程序段也能停止.

包含宏程序调用指令(G65,G66或G67)的程序段中,即使在单程序段

方式时也不能停止.当设定SBM()参数NO.6000的5位)为1时,包含

算术运算指令和控制指令的程序段可以停止.

单程序段运行用于调试用户宏程序.注意,在刀具半径补偿C方式中,

当宏程序语句中出现单程序段停止时,该语句被认为不包含移动的程

序段,并且,在某些情况下,不能执行正确的补偿.

● 任选程序段跳过 在<表达式>中间出现的符号被认为时除法运算符;不作为任选程

序段跳过代码.

● 在EDIT方式中的运行 设定参数NE8和NEP为1,可对程序号8000到8999和9000

到9999的用户宏程序和子程序进行保护.当存储器全清时,存

储器的全部内容包括宏程序都被清除.

● 复位

当复位时,局部变量和#100到#149的公共变量被清除为空值.设定CLV和

CCV,它们可以不被清除.系统变量#1000到#1333不被清除.

复位操作清除任何用户宏程序和子程序的调用状态及DO状态并返回到主

程序.

● 程序再起动的显示 和M98一样,子程序调用使用的M,T代码不显示.

● 进给暂停 在宏程序语句的执行期间,进给暂停有效时,当宏语句执行之后机床停止.

当复位或出现报警时,机床也停止.

● <表达式>中可以使用的常数值 +0.0000001到+99999999

-99999999到-0.0000001

有效数值是8位(十进制),如果超过这个范围,出现

P/S报警NO.003.

本文标签: 指定调用程序宏程序循环