1. 首页
  2. 技术文章
  3. FANUC

FANUC宏程序编程必备知识

FANUC宏程序编程必备知识

运算符:

运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一个值。注意,不能使用不等号

运算符

含义

EQ

等于(=

NE

不等于

GT

大于

GE

大于或等于

LT

小于

LE

小于或等于

示例程序

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

O9500

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

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

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

#1=#1+#2…………………计算和

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

GOTO 1……………………转移到N1

N2 M30……………………….程序结束

 

算术和逻辑运算:

功能 格式 备注
定义 #i=#j:
加法 #i=#j+#k
减法 #i=#j-#k
乘法 #i=#j*#k
除法 #i=#j/#k
正弦 #i=SIN[#j]: 角度以度指定09030分表示为90.5
反正弦 #i=ASIN[#j]:
余弦 #i=COS[#j]:
反余弦 #i=ACOS[#j]:
正切 #i=TAN[#j]:
反正切 #i=ATAN[#j]:
平方根 #i=SQRT[#j]:
绝对值 #i=ABS[#j]:
舍入 #i=ROUND[#j]:
上取整 #i=FIX[#j]:
下取整 #i=FUP[#j]:
自然数对数 #i=LN[#j]:
指数函数 #i=EXP[#j]:
#i=#jOR#k: 逻辑运算一位一位地按二进制数执行
异或 #i=#jXOR#k:
#i=#jAND#k:
BCD转为BIN   #i=BCD#j 用于与PMC的信号交换
BIN转为BCD #i=BCD#j

 

 

角度单位:

SINASINCOSACOSTANATAN的角度单位是度

ARCSIN#i=ASIN[#j]:  

●取值范围如下:当参数(N0.60040NAT位设为0时,270~90度;当参数(N0.60040NAT位设为1时,-90~90度。

 #j超过-11的范围时,发出P/S报警N0.111

 常数可替代变量#j

ARCCOS#i=ACOS[#j]

 取值范围从180~0度。

 #j超过-11的范围时,发出P/S报警N0.111

 常数可替代变量#j

ARCTAN#i=ATAN[#j]

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

 取值范围如下:当参数(N0.60040NAT位设为0时,0~360[例如:当指定#i=ATAN[-1]/[-1];时,#1=225]。当参数(N0.60040NAT位设为1时,-180~180[例如:当指定#i=ATAN[-1]/[-1];时,#1=-135]

 常数可替代变量#j

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

    注意,相对误差可能大于10-8

 当反对数(#j)为0或小于0时,发出报警N0.111

 常数可替代变量#j

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

    注意,相对误差可能大于10-8

 当运算结果超过3.65×1047j大约是110)时,出现溢出报警N0.111

 常数可替代变量#j

上取整下取整:

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

假设#1=1.2#2=-1.2。当执行#3=FUP[#1]时,2.0赋给#3;当执行#3=FIX[#1]1.0赋给#3;当执行#3=FUP[#2]时,-2.0赋给#3;当执行#3=FIX[#2]时,-1.0赋给#3

宏程序语句:包含算术或逻辑运算(=)的程序;包含控制语句(例如,用GOTODOEND)的程序;包含宏程序调用指令(例如,用G65G66G67或其它G代码,M代码调用宏程序)的程序段;除宏程序以外任何程序段都为NC语句。

NC语句的不同:

即使置于单段程序运行方式,机床也不停止。但是,当参数N0.6000#5SBM设定位、为1时,在单段程序方式中,机床停止。在刀具半径补偿方式中宏程序语句段不做为移动程序段处理

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

含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序)但没有除ONPL地址之外的其它地址指令的NC语句,其性质与宏程序语句相同;不包含除ONPL以外的指令地址的程序段其性质与宏程序语句相同。

无限循环;

当指定DO而没有指定WHILE语句时,产生从DOEND的无限循环。

FANUC宏程序编程必备知识

【软件】宏程序自动生成器V5.0下载

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

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

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

 M98程序段包含另一个NC指令(例如。G01.X100.0M98PP)时,在指令执行之后调用子程序。相反,G65无条件的调用子程序。

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

 G65,改变局部变量的级别。用M98,不改变局部变量的级别。

G65P-L –(自变量指定);P:要调用的程序;L:重复次数;自变量:数据传递到宏程序

自变量指定Ⅰ

地址 变量号 地址 变量号 地址 变量号
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
地址GLNOP不能在自变量中使用

不需要指定的地址可以省,对于省的地址的局部变量为空

地址不需要按字母顺序指定。但应符合字地址的格式。IJK需要按字母的顺序指定

自变量指定Ⅱ

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
I3 #10 K6 #21 J10 #32
J3 #11 I7 #22 K10 #33

IJK的下标用于确定自变量指定的顺序,在实际编程中不写。

G65P-X-Y-Z-R-F-I-A-B-H-

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

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

Z:孔深(#26);R:趋近点坐标(#18

F:切削进给速度(#9);I:圆半径(#4

A:第一孔的角度(#1

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

H:孔数(#11

FANUC宏程序编程必备知识

宏程序调用程序:O0002

G90G92X0Y0Z100.0

G65P9100X100Y50R30Z-50F500I100A0B45H5

M30

被调用的宏程序:O9100

#3=#4003……………………… 储存03组的G代码

G81Z#26R#18F#9K0……..(注)钻孔循环;注:也可以使用L0

IF[#3EQ90]GOTO1……….G90方式转移到N1

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

#25=#5002+#25……………..计算圆心的Y坐标

N1WHILE[#11GT0]DO 1…..直到剩余孔数为0

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

#6=#25+#4*SIN[+1]………..计算Y轴上的孔位

G90X#5Y#6……………………移动到坐标位置之后执行钻孔

#1=#1+#2………………………..更新角度

#11=#11-1………………………孔数-1

END 1

G#3G80………………………….返回原始状态G代码

M99

变量的含义:#3:储存03组的G代码;#5:下个孔的X坐标:#6:下个孔的Y坐标

摸态调用G66

G66P-L-

P:要调用的程序;L:重复次数;自变量:数据传递到宏程序

自变量指定Ⅰ

 

变量类型:

变量号

变量类型

功能

#0 空变量 该变量总是空,没有值能赋给该变量
#1~#33 局部变量 局部变量只能用于宏程序中存在存储数据量。例如,运算结果。当断电时,局部变量被初始化为空。调用宏程序时,自变量对局不变量赋值
#100~#199#500~#999 公共变量 公共变量在不同宏程序中的意义相同。当断电时,变量#100#199初始化为空;当断电时,变量#500#999的数据保存,即使断电也不丢失
#1000 系统变量 系统变量用于读和写CNC的各种数据,例如,刀具的当前位置和补偿值

局部变量和公共变量可以为0值或下面范围中的值:-1047-10-2910-291047

宏程序报警的系统变量:

变量号

功能

#3000 当变量#3000的值为0~200时,CNC停止运行且报警。

可在表达式后指定不超过26个字符的报警信息。

LCD屏幕上显示报警号和报警信息,其中报警号为变量#3000的值加上3000

 

接口信号的系统变量:

(参数N0.6001#0MIF=0时)

变量号

功能

#1000#1015#1032 16位信号从PMC送到用户宏程序,变量#1000#1035用于按位读取信号,变量#1032,用于一次读取16位信号
#1100#1115#1132 32位信号从用户宏程序送到PMC。变量#1100#1135用于按位写信号。变量#1032用于一次读取16位信号
#1133 变量#1133用于从用户宏程序一次写一个32位信号到PMC。注意,#1133的值为-99999999+99999999

(参数N0.6001#0MIF=1时)

变量号

功能

#1000~#1301 32位信号从PMC送到用户宏程序,变量#1000#1031用于按位读取信号
#1100#1131 32位信号从用户宏程序送到PMC。变量#1100#1131用于按位写信号
#1032#1035 32位信号从PMC统一输出到用户宏程序的变量。只能在-99999999~+99999999的范围内输入
#1132#1135 32位信号统一写入到用户宏程序的变量。只能在-99999999~+99999999的范围内指定

自动运行控制(#3003

#3003 单程序段 辅助功能的完成
0 有效 等待
1 无效 等待
2 有效 不等待
3 无效 不等待

当电源接通时,该变量的值为0。当单程序段停止无效时,即使单程序段开关设为ON,也不执行程序段停止。当指定不等待辅助功能(MST功能)完成时,在辅助功能完成之前,程序即执行到下一程序段。而且分配完成信号DEN不输出。

FANUC宏程序编程必备知识

位置信息系统变量

变量号

位置信息

坐标系

刀具补偿值

运行时的读操作

#5001#5003 程序段终止 工件坐标系 不包含 可能
#5021#5023 当前位置 机床坐标系 包含 不可能
#5041#5043 当前位置 工件坐标系
#5061#5063 跳转信息位置 可能
#5081#5083 刀具长度补偿值 不可能
#5101#5103 伺服位置误差

1位代表轴号(1~3);

变量#5081~#5083存储的刀具长度补偿值是当前的执行值,不是后面程序的处理值;

G31(跳转功能)程序段中跳转信号接通时的刀具位置储存在变量#5061#5064中。当G31程序段中的跳转信号未接通时,这些变量中储存指定程序段的终点值。

移动期间不能读是指由于缓冲(预读)功能的原因,不能读取期望值。

G65P9110X-Y-Z-R-F-L-

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

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

Z:孔深(#26)(绝对值指定);

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

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

L:重复次数

使用系统变量时的注意事项

含义

读写

变量号

注(未指定禁止缓冲的M代码或G53程序段时)

接口信号

#100#1015#1032 宏语句读入缓冲后读入数据

#1100#1115#1132 宏语句读入缓冲后写入数据

刀具补偿值

#10001- 宏语句读入缓冲后写入数据

宏报警

#3000 在宏语句前最多两个程序段处产生报警

送出信息的同时程序停止

#3006 在宏语句前最多两个程序段处产生停止

时间信息

读写

#3001#3002 宏语句读入缓冲后读写入数据

#3011#3012 宏语句读入缓冲后读入数据

自动运行控制

#3003#3004 在宏语句前最多两个程序段处设定数据

设定

#3005 宏语句读入缓冲后写入数据

镜像

#3007 宏语句读入缓冲后读入数据

当前选择追加工件坐标系

#4130P#4014G54-G59 在宏语句前最多三个程序段处读入数据

当前位置(机床坐标系

#5021-#5023 读入移动中的不确定位置

当前位置(工件坐标系)

#5021-#5023 读入移动中的不确定位置

刀长偏置

#5021-#5023 读入当前程序段的偏置量

位置偏差

#5021-#5023 读入移动中的不正确偏差

工件零点偏置值

#5021-#5023#5021-#5023

宏语句读入缓冲后写入数据

 
问答社区  发起问答  报警查询  技术文章  维修服务  资料下载  加交流群  申请 VIP   

原创文章,作者:数控笔记,如若转载,请注明出处:https://www.sk1z.com/38443.html

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

联系微信:QQ594673193

联系邮箱:594673193@qq.com

工作时间:08:00~20:00

QR code