文档库 最新最全的文档下载
当前位置:文档库 › Fanuc用户宏程序基础(NC车床)

Fanuc用户宏程序基础(NC车床)

Fanuc用户宏程序基础

1、概要

2、变量的指定

3、变量

(1)局部变量

(2)公共变量

(3)系统变量

4、运算指令

5、控制指令

6、利用机床内部传感器测外径时宏程序的组合方法以及步骤介绍

7、<空>的灵活使用

8、刀具最大磨损值作为寿命值

9、机床外部测量以及输入输出端口

1、概要

宏程序对大家来讲都比较困难,即便是阅读了使用说明书。的确,关于宏程序是有一些比较难以理解的部分,鉴于此种情况,这一次以简单实例并加以详细说明来解释何谓宏程序。这个教材的对象是已经能够熟练掌握了NC加工编程的人员。

本资料作为参考,希望能够对大家有所帮助。

到现在为止,宏程序是基于NC语言,由主、子程序来组合而成。说到宏程序和子程序的最大区别就是宏程序能够调用变量。所以最近机器人、装载机无人化系统上应用到的内部外部测定、刀具破损、刀具寿命管理、负荷监视系统、工件判断等,像这些领域,宏程序就不得不被使用到了。

不管怎么样,总之原本是人进行的作业转由机床来进行,所以要必须方方面面都要考虑到。

另外,本资料针对的是FANUC 18T, 16T, 15T, 11T, 10T, 0T(用户宏程序B), Y ASNUC作为说明对象的。

2、变量指定

关于宏变量的调用,请看下例。

(1)形状相同,尺寸不同的时候、各尺寸定义为A~D等变量;

(2)刀尖的进给路线1~7的程序用宏程序来编制。

主程序宏程序

(3)宏调用及变量指定

G65 P9000 A(#1)B(#2)C(#3)D(#7)

此命令为编集、输入A~D图面尺寸值,并执行跳转至(O9000)。

像上述程序中,A~D的内容即使更改,A~D也仍然使用对应的#1、#2、#3、#7变量(最初指定后就不能更改)。这些常数都是分配给局部变量的。

与宏程序相关的指令,除了G65以外还有G66(宏模态调用)、G67(宏模态调用取消)。如果定义G65,定义的宏程序只被调用一次;G66是模态调用指令,每次轴移动指令都调用宏程序,直到G67(取消模态调用)。具体参考控制装置厂商的使用说明书。

非G代码选配的宏模态调用的指令也有。如果定义了M96 P****,系统不管外部有没有其他信号还是处于加工过程中,会强制执行宏模态调用。

宏程序一般是O9000号。但是O1000或者是别的也可以,但是系统有相关参数可以设定O9000、O8000号程序不能够被删除。

即、所有的程序都被误删,O9000、O8000号程序也不能被删除,具有这个优点。另外某些参数更改后G、M、T代码也能调用宏变量(须参考厂家使用说明书)。

*1、精加工的程序已经说明了,实际粗加工也有使用宏程序的必要,在学习了粗加工宏程序后,请练习试试看。

端面的取材,余量控制在一刀。外径切削量设为E、X轴精加工

量设为U(直径)、Z轴精加工量设为W、倒角量设为X。

(4)变量定义Ⅰ的地址以及相对应的局部变量

变量的对象是变量定义Ⅰ、Ⅱ控制装置的厂家决定的,作为用户是不能够更改的。

变量定义有TYPE1、TYPE2两种。(表一、表二)

注)变量定义Ⅰ的话,除了G、L、N、O、P,其他地址都可以定义,另外无须按照拉丁字母顺序来定义。但是,I、J、K必须按照拉丁字母顺序来指定。

注)1、定义I、J、K的时候,必须按照拉丁字母顺序排列。

另外变量定义类型2的情况下,I、J、K的后缀1~10分别将I、J、K各组按顺序分组,实际情况下指令不按照此格式书写。

2、无指定变量必要的地址内,可以省略指令。这时无指令的地址的相对应的局部变量为<空>。

3、如果有个变量号被重复指定的时候,以后指定的变量有效。

4、I、J、K被重复指定的情况下,因为I、J、K作为一组的顺序是固定的,对应这个顺序的变量号码是固定的。(5)自变量指定Ⅰ、Ⅱ的混合

即使G65段内同时有Ⅰ、Ⅱ型的自变量指定调用,也不会有任何报警。如果自变量Ⅰ和自变量Ⅱ混合指定的话,后指定的自变量类型有效。

对于上例中#7变量,当有自变量I4.0和D5.0同时指定时,取后指定的D5.0。

自变量一般都指定符号以及小数点。如果不指定小数点,小数点的位置见下表。

注)1、上面的数值表示的是小数点的在第几位。

2、当参数PM1000 D0=1(Y ASNUC)时,取()内的数值。

通常,自变量像下例的方式指定的话也是很容易理解的,而且程序的兼容性比较好。

3、变量

变量分为局部变量、公共变量、系统变量3个种类。

(1)局部变量(#1~#33)

局部变量是在宏程序中使用的变量。就如同“局部”这个词语,从主程序跳转至子程序,A~D的内容只在子程序内有效。

当断电时,局部变量被初始化为空。

假设在程序内输入#100=1,然后执行程序,宏程序画面会显示#100?????1。刀补的画面也是,如果输入0.1也会显示0.1,即使断电数据也不会丢失。但是宏变量#100如果断电的话该变量就会被初始化为空(什么都不显示)。即,<空>的值并不指零。

像这种状态称为<空>。

#500号跟刀补同样,即使断电数据也不会丢失。

如果想把#500号置<空>的话,程序内执行#500=#0就可以实现。

(2)公共变量(#100~#199、#500~#999)局部变量是在当前宏程序内可以使用的,但是公共变量是主程序包括其子程序都可以通用的。#i的当前值在所有宏程序中都是相同的。因此在一个宏程序内演算的结果(公共变量#i)在别的宏程序内也可以使用。

(a)公共变量在断电重启时有两种情况。

#100~#199:断电重启时,状态初始化为<空>;也有参数可以更改初始化时不为空。

#500~#999:即使断电,数据也不会丢失。

(b)公共变量根据选配可以追加组数。

(参考说明书)

(c)4轴车床,刀塔之间有共通的用户宏变量。4轴的情况下,有两套数控装置,也就是说能够实现相互变量数值更改读取的通用变量。

例如,假设ZL-25下刀塔精加工外径,上刀塔作为测量用。但是即使上刀塔测量得出尺寸也不能对对下刀塔进行补正。

在这种情况下,可以活用共通用户宏变量。

上刀塔测定的数值可以写入共通用户宏变量,这样可以将数值传

递给下刀塔。反之也可以。

注)如果刀塔之间没有共通宏变量,可以使用#1033~#1035、#1133~#1135来实现上下数据传递。

关于#1033~#1035、#1133~#1135,根据控制系统的不同可能会有所不同,具体请参考使用说明书。

(3)系统参数

是有固定用途的变量。如下表:

其中,经常使用的输入输出信号、刀具补正量、报警、段信息、位置坐标、跳跃信号位置等必须要熟记。

另外、这些变量是由控制系统的生产商决定的,不可以被更改。但是#1000~1035、#1100~1135是输入输出用的,所以是由森精机决定。因此,地址的更改是可以通过输入输出的配线更改来实现的。

4、运算指令(有※标记的,务必记牢)

运算指令有以下规则。

可以实现变量之间的运算。可以按照一般的运算式来进行编程。

#i=<式>

在<式>中,变量、常数通过运算符号或者函数组合来进行运算,结果可以代入指定的变量。<式>中无小数点的情况下看作在末尾。

(1)变量的定义、置换

※#i=#j

(2)加法形运算

※#i=#j+#k

※#i=#j-#k

#i=#jOR#k

#i=#jXOR#k

(3)乘法形运算

※#i=#j*#k

※#i=#j/#k

#i=#jAND#k

#i=#jMOD#k

(4)函数

#i=SIN〔#j〕正弦

#i=COS〔#j〕余弦

#i=TAN〔#j〕正切

#i=ATAN〔#j〕/〔#k〕余切

#i=SQRT〔#j〕平方根

※#i=ABS〔#j〕绝对值

#i=BIN〔#j〕二进制

#i=BCD〔#j〕十进制

※#i=ROUND〔#j〕四舍五入华整

※#i=FIX〔#j〕下取整

#i=FUP〔#j〕上取整

#i=ASIN〔#j〕反正弦

#i=ACOS〔#j〕反余弦

#i=LN〔#j〕对数

#i=EXP〔#j〕e为底的指数

#i=ADP〔#j〕小数点追加

上面是按照FANUC-15T来说明的。其他控制装置稍微有点区别,具体使用时请参考操作说明书。

(5)运算组合

运算、函数都可以运用在宏程序中。运算的优先顺序:函数、乘除、加减。

(6)括号改变运算的优先顺序

需要优先运算的部分可加括号来实现。

括号、加上函数最高可以有5重。

(7)关于精度的注意点

使用宏功能编集程序时,精度有没有达到要求,这点必须注意。例如,#1与#2的实际值如下

#1=9876543210123.456

#2=9876543277777.777

执行#2-#1,但是实际得不到67654.321这个结果。为什么呢?就是因为宏变量的精度为十进制8位,即上述#1与#2在系统中的实际值为

#1=9876543200000.000

#2=9876543300000.000

只能达到这种精度。(系统内部是2进制,所以精确来讲与上面的值还是稍微有点区别。)因此,会产生#1-#2=100000.000的误差。

关于运算误差的详细说明请参考使用说明书。另外,逻辑关系(后面的控制指令章节里介绍)的ED,NE,GT,LT,GE,LE基本上与加减运算同样存在此运算误差,必须要注意。

5、控制指令

控制指令有下面的规则。

根据以下指令可以控制程序的执行。

(1)条件转移

(a)IF [<条件式>]GOTO n

<条件式>成立的话,程序会跳转至“n”执行。如果使用其他变量或者式子可以更改跳转地址。

条件不成立则直接执行IF下面的语句。

如果此命令句省略IF [<条件式>],程序则无条件执行跳转(执行“n”)。

[<条件式>]内有以下各种指令。

条件式意义

#jEQ#k#j=#k=

#jNE#k#j≠#k≠

#jGT#k#j>#k>

#jLT#k#j<#k<

#jGE#k#j≧#k≧

#jLE#k#j≦#k≦

上面的变量也可用式子来代替。

跳转的程序号“n”也可用变量或者式子来替代。

(注)如果执行GOTO n,在“n”指定的程序段中,程序号“n”必须处于该程序段最前面。

反方向跳转比顺方向所需时间要长。

(例)

例文解说

IF[#1 EQ 1] GOTO 1 #1等于1则执行N1,否则接下去执

行。

IF[#1 EQ 2] GOTO 2 #1等于2则执行N2,否则接下去执

行。

GOTO 10跳转至N10

N1

.

.

GOTO 10跳转至N10

N2

.

.

GOTO 10跳转至N10

N10

M99………………………回主程序

(b)IF〔<条件式>〕THEN 宏指令:

〔<条件式>〕条件成立则执行宏指令。但是此处的宏指令仅限于一段指令。

(例)例文IF [ #1 EQ #2 ] THEN #3=0;

解说如果#1等于#2则将#3置为零。

注)上述指令在FANUC-15T环境下使用。

(2)循环

WHILE〔<条件式>〕DOm(m=1,2,3)

END m

<条件式>成立的时间范围内,重复执行Do m到END m之间的程序段。即、判断<条件式>成立与否,成立则执行Do m后面的程序段,否则执行END m后面的程序段。

WHILE〔<条件式>〕与IF一样可以省略,省略掉的情况下程序会出现从Do m到END M之间的死循环。

WHILE〔<条件式>〕DOm和ENDm是配对使用的,根据“m”可以互相区别开。

例如#120=1;

N1 WHILE [#120 LE 10] DO 1;

N2 WHILE [#30 EQ 1] DO 2;

N3 END 2;

#120=#120+1;

N4 END 1;

注)Do m与END m的关系具体参考厂商使用说明书。

6、机床内用传感器一点测定外径的宏模块以及准备的说明

用常用的传感器,来测定外径为φ100.0±0.02的工件,只测一点。

(1)将传感器安装在刀塔上一号刀位。

(2)传感器也是刀具的一种,也需初期设定。即要输入传感器的几何植。

(a)Z方向的测定

(b)X方向的测定方法

最后切记在MDI模式下输入G99。

这种方法跟一般刀具直接测量唯一的区别就在于使用了G31跳跃指令。

我们就用宏程序按照(a)、(b)的方法来编集X方向的测量输入过程,以此作为练习。

相关文档