最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

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

来源:动视网 责编:小OO 时间:2025-09-29 19:41:24
文档

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

附录FANUC系统G指令和宏指令附录1刀具补偿值、刀具补偿号及在程序中赋值G101、刀具补偿值的范围米制:0~±999.999mm英制:0~±99.9999inch2、刀具补偿值的存贮刀具补偿存贮器A:使用与刀具补偿号对应的刀具补偿值。补偿号刀具补偿值1…400刀具补偿存贮器B:使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。补偿号几何补偿磨损补偿1…400刀具补偿存贮器C:刀具补偿分长度补偿(H)和半径补偿(D),使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。补偿号刀具长度补偿(H)刀
推荐度:
导读附录FANUC系统G指令和宏指令附录1刀具补偿值、刀具补偿号及在程序中赋值G101、刀具补偿值的范围米制:0~±999.999mm英制:0~±99.9999inch2、刀具补偿值的存贮刀具补偿存贮器A:使用与刀具补偿号对应的刀具补偿值。补偿号刀具补偿值1…400刀具补偿存贮器B:使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。补偿号几何补偿磨损补偿1…400刀具补偿存贮器C:刀具补偿分长度补偿(H)和半径补偿(D),使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。补偿号刀具长度补偿(H)刀
附录 FANUC系统G指令和宏指令

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

1、刀具补偿值的范围

米制:0~±999.999mm

英制:0~±99.9999inch

2、刀具补偿值的存贮

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

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

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

补偿号刀具长度补偿(H)

刀具半径补偿(D)

几何补偿磨损补偿几何补偿磨损补偿
1
400
3、刀具补偿赋值格式:

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

●刀具补偿存贮器B:

刀具补偿存贮器种类

格式
几何补偿G10 L10 P___ R___;

磨损补偿G10 L11 P___ R___;

●刀具补偿存贮器C:

刀具补偿存贮器种类

格式
刀具长度补偿(H)

几何补偿G10 L10 P___ R___;

磨损补偿G10 L11 P___ R___;

刀具半径补偿(D)

几何补偿G10 L12 P___ R___;

磨损补偿G10 L13 P___ R___;

P――刀具补偿号;R――G90时,为刀具补偿实际值;G91时,R值加到指定刀具补偿值上(其和为刀具补偿值,即R值为刀具补偿增量)。

附录2 缩放G50、G51

编程的形状可以被放大或缩小(比例缩放)。用x,y,z指定的尺寸均可用相同的或不同的放大倍率进行缩放,放大倍率可以在程序中指定。如果未在程序中指定,则使用在参数中指定的放大倍率。

格式:

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

G51 X__ Y__ Z__ P__;  缩放开始

G50;            缩放取消

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

P_:缩放比例。

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

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

G50;                   缩放取消

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

警告:

在一个单独的程序段中指令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。

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

如果未指令放大倍数I、J、K,则使用设置在参数(NO.731、732、733)中的放大倍数。但参数中必须设置一非零值。

注意:

缩放倍率(I、J、K)不能使用小数点编程。

●圆弧插补的缩放

即使在圆弧插补中各轴使用不同的放大倍率,刀具也不会沿椭圆运动。(即对圆弧插补的数据缩放后再执行圆弧插补。)

当用半径R指令的圆弧插补、各轴使用不同的放大倍数时,将如下图所示。(该示例中,X分量的放大倍数为2,Y分量的放大倍数为1)。

当用I、J、K指令的圆弧插补各轴使用不同的放大倍数时,将如下图所示。(该示例中,X分量的放大倍数为2,Y分量的放大倍数为1)

无效的缩放

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

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

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

精镗循环G76;

反精镗循环G87中在X轴和Y轴上让刀量Q;

警告:

1、如果使用参数设置值作为放大比例而不指定P,则在G51指令的整个周期内都使用此设置值作为放大比例,并且对该值的任何修改都是无效的。

2、在指令返回参考点(G27、G28、G29、G30)或坐标系设置(G92)的G代码之前,应取消缩放模式。

3、如果缩放结果被四舍五入圆整后,超过了取值范围(数据上溢),忽略余数后,移动量可能变成零。此时,该程序段被当作一无运动程序段,因而将可能影响刀具半径C补偿下的刀具运动。

在手动操作中,移动距离不能用缩放功能增大或减小。

注意:

1、运动位置坐标显示值是缩放后的结果。

2、当镜像在指定平面内应用于某轴时,会产生下列结果:

圆弧指令-----------------------------圆弧旋向反向

刀具半径C补偿-------------------偏置方向反向

坐标系旋转--------------------------旋转角度反号

示例:镜像程序

子程序

O9000;

G00 G90 X60.0 Y60.0;

G01 X100.0 F100;

Y100.0;

X60.0 Y60.0;

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;

附录3 坐标系旋转 G68、G69

格式:

  坐标系旋转开始

…         坐标系旋转状态

G69;        坐标系旋转取消

式中:

G17(G18、G19):用于选择旋转平面(该面内包含有需旋转的轮廓)

α_β_:旋转中心,可用xy,zx,yz指定,由G17、G18、G19决定。

R_:旋转角度,顺时针指定。

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

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被指令时的位置被设成旋转中心。

当旋转角度省略时,设置在参数NO.730中的值被当作旋转角度。

坐标系旋转由G69取消。

G69指令可和其它指令一起在同一程序段中指定。刀具偏置如:切削半径补偿、刀具长度补偿、刀具偏置,在坐标系旋转后执行。

警告:

在指定G69的程序段必须用绝对编程方式指定运动。

示例

●刀具半径补偿和坐标系旋转

比例缩放和坐标系旋转

如果在缩放状态(G51)下指令坐标系旋转旋转中心α_β_也将被缩放,但角度不缩放。当指令运动指令时,先实现缩放,再实现坐标缩放。在缩放模式的刀具补偿(G41、G42)状态下,不能指定坐标系旋转。坐标系旋转通常应先于刀具半径C补偿指定。

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

G51;   缩放模式开始

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

G69;   坐标系旋转模式取消

G50;   缩放模式取消

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

G51;   缩放模式开始

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

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

G40…;  刀具半径补偿模式

G69;   坐标系旋转模式取消

G50;   缩放模式取消

例:

G90 G92 X0 Y0;

G51 X300 .0 Y150.0 P500;

G68 X200.0 Y100.0 R45.0;

G01 G42 X400.0 Y100.0 F100 H01;

G91 Y100.0;

X-200.0;

Y-100.0;

X200.0;

●坐标系旋转的重复

可将一个程序当子程序存贮起来,再通过修改其角度来调用子程序。下例是在参数041#0=1的情况下编制的,此时角度指定用绝对值还是增量值依赖于G代码(G90/G91)状态。

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

尽管子程序对重复性的相同操作很有用,(但仍不能和宏程序相提并论)。用户宏程序功能允许使用变量、算术和逻辑运算、以及条件分支控制,这便于普通加工程序的发展,如发展成打包好的自定义的固定循环。加工程序可利用一简单的指令来调用宏程序,就像使用子程序一样。

例:

1 宏变量(variables)

普通加工程序中指定G代码和移动距离时,直接使用数字值,如:G100和X 100.0。而在用户宏程序中,数字值可直接指定或使用变量号(称宏变量)。当采用宏变量时,其值可在程序中修改或利用MDI面板操作进行修改。

例:#1=#2+100;

G01 X #1 F300;

Explanation( 说明)

●宏变量的表示形式 

当指定一宏变量时,用“#”后跟变量号的形式,如:#1。在计算机上允许给变量指定变量名,但用户宏程序没有提供这种能力。

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

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

●宏变量的取值范围

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

,0, 

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

●小数点的省略

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

例:#1=123;

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

●未赋值(定义)的变量

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

●宏变量的类型

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

变量号变量类型功           能

#0空变量该变量通常为空(null),该变量不能赋值

#1~#33局部变量

Local Variables

局部变量只能在宏程序内部使用,用于保存数据,如运算结果等。当电源关闭时,局部变量被清空,而当宏程序被调用时,(调用)参数被赋值给局部变量。
#100~#149(#199)

#500~#531(#999)

全局变量

Common variables

全局变量可在不同宏程序之间共享,当电源关闭时,#100~#149被清空,而#500~#531的值仍保留。在某一运算中,#150~#199,#532~#999的变量可被使用,但存储器磁带长度不得小于8.5m。

#1000~#9999系统变量

System variables

系统变量可读、可写,用于保存NC的各种数据项,如:当前位置、刀具补偿值等。

注:全局变量#150~#199,#532~#999是选用变量,应根据实际系统使用。

●宏变量的引用

在程序中引用(使用)宏变量时,其格式为:在指令字地址后面跟宏变量号。当用表达式表示变量时,表达式应包含在一对方括号内。

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

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

例:程序段G00 X#1;,给宏变量#1赋值12.3456,在1/1000mm的CNC上执行时,程序段实际解释为G00 X12.346;。

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

如:G00 X-#1;

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

如:#1=0,#2=null(未赋值),执行程序段G00 X#1 Y #2;,结果为G00 X0。

●宏变量值的显示

1、按偏置菜单纽,显示刀具补偿显示屏幕。

2、按软体键[MACOR],显示宏变量屏幕。

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

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

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

使用:

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

O#1;

/#2 G00 X100.0;

N#3 Y200.0;

2 系统变量 SYSTEM VARIABLES

系统变量用于读写NC装置的内部数据,如:刀具补偿数据、刀具当前位置数据等。但需注意的是,有些系统变量是只读的。对于(NC的)自动控制和普通的程序开发来说,系统变量是必不可少的。

有关解释如下:

2.1接口信号 Interface signals

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

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

变  量  号

功                   能

#1000~#1015

#1032

用于从PMC传送16位的接口信号到用户宏程序。#1000~#1015信号是逐位读取的,而#1032信号是16 位一次读取的。

#1100~#1115

#1132

用于从用户宏程序传送16位的接口信号到PMC。#1100~#1115信号是逐位写入的,而#1132信号是16 位一次写入的。

#1133用于从用户宏程序一次写入32位的接口信号到PMC。

注意:#1133取值范围为-99999999~+99999999。

详细信息请参连接手册(B-61393E-2)。

2.2刀具补偿值 Tool compensation values

刀具补偿值可通过系统变量读写。无论是几何补偿和磨损补偿的区别,还是刀具长度补偿和刀具切削半径补偿间的区别,能用的变量号数都依赖于补偿值的对数。当补偿值对数不超过200时,变量号#2001~#2400均可使用。

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

刀具补偿号系统变量号
1

200

400

#10001(#2001)

#10200(#2200)

#10400(#2400)

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

刀具补偿号几何补偿磨损补偿
1

200

400

#11001(#2201)

#11200(#2400)

#11400

#10001(#2001)

#10200(#2200)

#10400

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

补偿号刀具长度补偿刀具半径补偿
几何补偿磨损补偿几何补偿磨损补偿
1

200

400

#11001(#2201)

#11200(#2400)

#11400

#10001(#2001)

#10200(#2200)

#10400

#13001

#13400

#12001

#12400

2.3宏程序报警信息Macro alarms

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

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

如:#3000=1(刀具为找到);

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

2.4时间信息

时间信息可被读与写。

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

变量号功能
#3001该变量的功能是作为计时器,并时刻以16毫秒的增量进行计时。当电源关闭时,该变量的值被重置为0。当累计计时65535毫秒时,计时器从0重新计时。(可用于刀具寿命管理)

#3002该变量的功能是作为计时器,并在循环启动灯亮的同时,以1 小时为增量进行计时。即使电源关闭,该计时器的值仍保留。当累计计时1145324.612小时时,该计时器从0重新计时。

#3011该变量用于读取当前日期(年/月/日)。年/月/日信息被转换成类似于十进制的数。如:1993年3月28日表示为19930328。

#3012该变量用于读取当前时间(时/分/秒)。时/分/秒信息被转换成类似于十进制的数。如:下午3点34分56秒表示为153456。

2.5自动运行控制

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

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

#3003程序单段运行辅助功能完成
0允许 Enabled

等待
1禁止 disabled

等待
2允许不等待
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禁止允许允许
2允许禁止允许
3禁止允许允许
4允许允许禁止
5禁止允许禁止
6允许禁止禁止
7禁止禁止禁止
1、失电时,#3004的值为0。

2、当进给保持禁止时:

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

b、当进给保持按钮压下又释放时,进给保持灯亮,但机床不停止,程序继续执行,直到指定进给保持允许的第一个程序段,机床才停止。

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

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

2.6背景(#3005) Settings

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

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

#7#6#5#4#3#2#1#0
SEQABSINCHISOTVONREVYREVX
Setting

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

#4002

#4003

#4004

#4005

#4006

#4007

#4008

#4009

#4010

#4011

#4012

#4014

#4015

#4016

#4022

#4102

#4107

#4109

#4111

#4113

#4114

#4115

#4119

#4120

G00 G01 G02 G03 G33 

G17 G18 G19 

G90 G91

G94 G95

G20 G21

G40 G41 G42

G43 G44 G49

G73 G74 G76 G80~G

G98 G99

G50 G51

G65 G66 G67

G54~G59

G61~G

G68 G69

   ┊                                 

B code

D code

F code

H code

M code

程序段顺序号

程序号

S code

T code

Group 1

Group 2

Group 3

Group 4

Group 5

Goup 6

Group 7

Group 8

Group 9

Group 10

Group 11

Group 12

Group 14

Goup 15

Group 16

Group 22

2.9当前位置 

位置信息是只读的。

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

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

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

在G31(跳转功能)程序段中跳转信号接通时的刀具位置存储在变量#5061~# 50 中.当G31段跳转信号接通不接通时, 这些变量中贮存指定程序段终点.

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

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

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

变量号功能
#2500~#2506外部工件坐标系、G54~G59第一轴零点偏置值

#2600~#2606外部工件坐标系、G54~G59第二轴零点偏置值

#2700~#2706外部工件坐标系、G54~G59第三轴零点偏置值

#2800~#2806外部工件坐标系、G54~G59第四轴零点偏置值

#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) 算术和逻辑运算

函     数

格    式

备   注

赋值#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]

#i=ABS[#J]

#I=ROUND[#J]

#I=FIX[#J]

#I=FUP[#J]

或OR

异或XOR

与AND

#I=#J OR #K

#I=#J XOR #K

#I=#J

逻辑运算用二进制数按位操作
十——二进制转换

二——十进制转换

#I=BIN[#J]

#I=BCD[#J]

用于转换发送到PMC的信号或从PMC 接收的信号

说明:

●1、角度单位

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。

当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编程时,上述问题不一定存在。)

●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)

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

如:ROUND——RO,FIX——FI

●6、运算优先级

1、函数;

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

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

●7、方括号嵌套bracket nesting

方括号用于改变运算顺序。方括号的嵌套深度为五层,含函数自己的方括号。当方括号超过五层时,发生118号报警。

●1、方括号Brackets

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

●2、运算误差

运算时会产生误差

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

运算Average error

平均误差

Maximum error

最大误差

误差类型

type of error

a=b*c相对误差relative error (*1)

a=b/c
a=b+c

a=b-c

取小值min   (*2)

a=sin[b]

a=cos[b]

绝对误差absolute error(*3)

  degrees(度)

a=atan[b]/[c]
注意:

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

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

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

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

说明:

①由于变量值的精度为8位小数(在NC中变量用科学计数法表示),当在加减运算中处理很大的数时,会出现意想不到的结果。

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

#1=9876543210123.456;

#2=9876543277777.777;

变量的实际值为:

#1=9876543200000.000

#2=9876543300000.000

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

运算结果的误差由变量是用二进制数运算引起的。(在nc中用于存储变量的二进制位是有限的,为表示尽能大的数,将数转换成科学计数法表示,变量的二进制位中的后几位表示指数,其余的位存储小数部分,当数的有效位多于变量的最大有效位时,多余的部分进行四舍五入,从而引起误差。此误差相对数本身来说,误差极小,但对结果的影响就可能很大。编程时,应尽可能避免本例的情况。)

②因数据精度的原因,在条件表达式中用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;

#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语句

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

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

包含控制语句(如: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的程序段,具有宏语句特性。

5分支和循环

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

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

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

WHILE语句—— 循环;while…

5.1无条件分支GOTO语句

控制转移(分支)到顺序号n所在位置。当顺序号超出1~9999的范围时,产生128号报警。顺序号可用表达式指定。

格式:GOTO n;

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

例:GOTO1;

GOTO#10;

5.2 条件分支IF语句

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

格式:

IF [表达式] GOTOn;

处理;

Nn …;

●1、条件表达式

条件表达式由两变量或一变量一常数中间夹比较运算符组成,条件表达式必需包含在一对方括号内。条件表达式可直接用变量代替。

●2、比较运算符

比较运算符由两个字母组成,用于比较两个值,来判断它们是相等,或一个值比另一个小或大。注意不能用不等号。

表5.2 比较运算符

运算符含义
EQ相等equal to (=)

NE不等于not equal to (≠)

GT大于Greater than (>)

GE大于等于greater than or equal to(≥)

LT小于less than (<)

LE小于等于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;    结束

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号报警。

●While的嵌套

对单重DO-END循环体来说,识别号(1~3)可随意使用且可多次使用。但当程序中出现循环交叉(DO范围重叠)时,产生124号报警。

1、识别号(1~3)可随意使用且可多次使用

WHILE […] DO1;

Processing

END1;

WHILE […] DO1;

Processing

END1;

2、DO范围不能重叠

WHILE […] DO1;

Processing

WHILE […] DO2;

END1;

Processing

END2;

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

WHILE […] DO1;

WHILE […] DO2;

WHILE […]DO3;

Processing

END3;

END2;

END1;

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

WHILE […] DO1;

IF […] GOTO n;

END1;

Nn … ;

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

IF […] GOTO n;

WHLE […] DO1;

Nn … ;

END1;

●Limitations

1、无限循环Infinite loops

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

2、处理时间

当转移到GOTO语句中指定顺序号对应的程序段时,程序段根据顺序号搜索。因此向回跳转比向前跳转要花费更多的处理时间。此时使用WHILE 语句循环可减少处理时间。 

3、未定义变量

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

●例程

求1~10的和

O9501;

#1=0;

#2=1;

WHILE [#2 LE 10] DO1;

#1=#1+#2;

#2=#2+1;

END1;

M30;

6 调用宏程序

宏程序可用下述方式调用:

简单调用G65;

模态调用G66、G67;

用G代码调用宏程序;

用M代码调用宏程序;

用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后指定的用户宏程序被调用,同时数据(实参)被传递给用户宏程序。

格式: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、调用

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

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

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

●2、实参描述 Argument specification

有两种实参描述类型,实参描述类型Ⅰ可同时使用除G、L、O、N和P之外的字母各一次。而实参描述类型Ⅱ只能使用A、B、C各一次,使用I、J、K最多十次。实参描述类型根据使用的字符自动判断。

实参描述类型Ⅰ

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

B

C

D

E

F

H

#1

#2

#3

#7

#8

#9

#11

I

J

K

M

Q

R

S

#4

#5

#6

#13

#17

#18

#19

T

U

V

W

X

Y

Z

#20

#21

#22

#23

#24

#25

#26

注:地址G、L、N、O、P不能用于实参;不需指定的地址可省略,省略地址对应的局部变量设成空(null)。

实参描述类型Ⅱ

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

B

C

I1

J1

K1

I2

J2

K2

I3

J3

#1

#2

#3

#4

#5

#6

#7

#8

#9

#10

#11

K3

I4

J4

K4

I5

J5

K5

I6

J6

K6

I7

#12

#13

#14

#15

#16

#17

#18

#19

#20

#21

#22

J7

K7

I8

J8

K8

I9

J9

K9

I10

J10

K10

#23

#24

#25

#26

#27

#28

#29

#30

#31

#32

#33

注:I、J、K的下标(subscripts)用于表示实参描述的顺序,实际程序中不需写出。

1、格式

G65必须在实参之前指定。

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

NC内部识别实参描述Ⅰ和Ⅱ,当二者混合指定时,实参描述类型由后出现的地址决定。(即两种类型可同时使用,当多个地址对应同一个局部变量时,该变量的值由后出现的地址决定)

3、小数点的位置

一个不带小数点的实参在数据传递时,其单位按其地址对应的最小精度解释,因此,不带小数点的实参,其值在传递时有可能根据机床的系统参数设置而被更改。为此,应养成在宏调用实参中使用小数点的好习惯,以保持程序的兼容性。

4、调用嵌套

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

5、局部变量的层次

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

主程序的层次为0。

宏程序每(嵌套)调用一次(G65,G66),局部变量的层次加一,原有局部变量的值被NC保存(不可见)。

当M99执行时,控制返回呼调程序。此时,局部变量层次减一,宏程序调用时保存的原有局部变量值被恢复。

例:

全局变量:可被各层的宏程序读写

#100~
#500~
例程(多孔循环)

创建一个宏程序,用于加工处于同一分布圆上的H个孔。孔起始角为A,孔间夹角为B,分布圆半径为I,圆心为(x,y)。指令可用绝对或增量方式指定。当需顺时针方向加工时,B用负值指定。

●1、调用格式

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

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

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

Z:孔深 ――――――――――――――――#26

R:接近点(R点)坐标 ―――――――――#18

F:进给速率 ――――――――――――――#9

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;

#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;---------------------------孔数减一

END 1;

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

M99;

●有关变量的含义

#3:03组G代码的状态

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

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

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

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

6.2模态调用G66

一旦指令了G66,就指定了一种模态宏调用,即在(G66之后的)程序段中指令的各轴运动执行完后,调用(G66指定的)宏程序。这将持续到指令G67为止,才取消模态宏调用。

解释

●1、调用

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

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

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

●2、取消

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

●3、调用的嵌套

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

●4、模态调用的嵌套

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

在G66程序段不可调用宏;

G66应在实参之前指令;

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

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

例程

使用自定义宏程序创建与固定循环G81相同的操作,加工程序用模态宏调用。为简化程序,所有钻孔数据用绝对值指定。

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

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

操作2:快进到R点;

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

操作4:快速回退至R点或起始点I。

●1、调用格式

G65 P9110 Xx Yy Zz Rr Ff Ll;

X:孔轴线的X坐标 ……………….. #24

Y:孔轴线的Y坐标 ……………….. #25

Z:Z点的坐标 ……………………… #26

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

F:进给速率 ………………………… #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;

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点

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一样被调用。

解释

通过在系统通信参数(220~229)中设置G代码数字(1~255),可调用自定义宏程序(9010~9019),该宏程序以和简单调用G65一样的方式调用。

例如,当系统参数如上设置时,可使用G81调用自定义宏程序O9010,通过调用使用宏程序定制的用户专有循环(user-specific cycle),从而无需修改加工程序。

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

程序号参数号
O9010

O9011

O9012

O9013

O9014

O9015

O9016

O9017

O9018

O9019

220

221

222

223

224

225

226

227

228

229

2、重复

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

3、参数指定

与简单调用一样,有两种类型的参数指定方式:参数指定类型I和参数指定类型II。参数指定类型自动根据地址的使用进行判断。

用G代码调用的嵌套:

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

6.4 使用M代码的宏调用

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

解释

通过在系统通信参数(230~239)中设置M代码数字(1~255),可调用自定义宏程序(9020~9029),该宏程序以和简单调用G65一样的方式调用。

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

程序号参数号
O9020

O9021

O9022

O9023

O9024

O9025

O9026

O9027

O9028

O9029

230

231

232

233

234

235

236

237

238

239

2、重复

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

3、参数指定

与简单调用一样,有两种类型的参数指定方式:参数指定类型I和参数指定类型II。参数指定类型自动根据地址的使用进行判断。

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

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

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

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

解释

通过在系统通信(corresponding)参数(240~242)中设置M代码数字(1~255),可调用自定义宏程序(9001~9003),该宏程序以和子程序调用M98一样的方式调用。

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

程序号参数号
O9001

O9002

O9003

240

241

242

2、重复

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

3、参数指定

不允许指定参数。

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

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

通过系统参数中设置,可允许使用T代码调用子程序(宏程序),当加工程序中每次指令该T代码时,对应宏程序被调用。

解释――调用

通过将系统参数040的第5位置1,可在加工程序中指令T代码调用宏程序O9000。在加工程序中指令的T代码用公用(全局)变量#149指定。

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

文档

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

附录FANUC系统G指令和宏指令附录1刀具补偿值、刀具补偿号及在程序中赋值G101、刀具补偿值的范围米制:0~±999.999mm英制:0~±99.9999inch2、刀具补偿值的存贮刀具补偿存贮器A:使用与刀具补偿号对应的刀具补偿值。补偿号刀具补偿值1…400刀具补偿存贮器B:使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。补偿号几何补偿磨损补偿1…400刀具补偿存贮器C:刀具补偿分长度补偿(H)和半径补偿(D),使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。补偿号刀具长度补偿(H)刀
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top