FANUC宏程序的学习和应用

变量根据变量号可分为四中类型

FANUC宏程序的学习和应用


是可编程机床控制器(PMC)和用户宏程序之间交换的信号


FANUC宏程序的学习和应用


用户宏程序输入信号

这些信号不对控制单元提供任何功能。这些信号作为系统变量的一种由用户宏程序读取,并用作用户宏程序和 PMC之间的接口信号。

这些信号对应的系统变量表示如下:


FANUC宏程序的学习和应用


用户宏程序输出信号

这些信号不对控制单元提供任何功能。这些信号作为一种由用户宏程序读或写的系统变量,并用作用户宏程序和 PMC之间的接口信号

这些信号对应的系统变量表示如下:

FANUC宏程序的学习和应用


这些系统变量能够用于赋值语句的左边或右边。

左侧的赋值是赋给右侧的变量。

信号地址如下:


FANUC宏程序的学习和应用


PMC与宏变量的地址对应关系总结如下:

#1000~#1031=G54.0~G57.7

#1032=G54~G57

#1033=G276~G279

#1034=G280~G283

#1035=G284~G287

#1100~#1115=F54.0~F55.7

#1116~#1131=F276.0~F277.7

#1132=F54, F55, F276, F277

#1133=F56~F59

#1134=F280~F283

#1135=F284~F287

系统变量:

系统变量用于读和写 NC内部数据,例如,刀具偏置值和当前位置数据。但是,某些系统变量只能读。系统变量是自动控制和通用程序开发的基础。

用系统变量可以读和写刀具补偿值。

可使用的变量数取决于刀补数,是否区分外形补偿和磨损补偿以及是否区分刀长补偿和刀尖补偿。当偏置组数小于等于 200时,也可使用#2001~#2400

刀具补偿存储器 C的系统变量


FANUC宏程序的学习和应用


宏程序报警的系统变量


FANUC宏程序的学习和应用


列如:

#3000=1(PROBE NO CONTACT)

报警屏幕显示“3001 PROBE NO CONTACT”(探针没有接触

程序停止并显示信息


FANUC宏程序的学习和应用

时间信息的系统变量:

FANUC宏程序的学习和应用


自动运行控制的系统变量(#3003)


FANUC宏程序的学习和应用


当电源接通时,该变量的值为 0。

当单程序段停止无效时,即使单程序段开关设为 ON,也不执行单程序段停止。

当指定不等待辅助功能(M,S和 T功能)完成时,在辅助功能完成之前,程序即执行到下一程序段。而且分配完成信号 DEN不输出。

自动运行控制的系统变量(#3004)


FANUC宏程序的学习和应用


当电源接通时,该变量的值为 0。

当进给暂停无效时:

(1) 当进给暂停按钮被按下时,机床以单段停止方式停止。但是,当用变量#3003使单程序段方式无效时,单程序段停止不执行。

(2) 当进给暂停按钮压下又松开时,进给暂停灯亮,但是,机床不停止;程序继续执行,并且机床停在进给暂停有效的第一个程序段。

进给速度倍率无效时,倍率总为 100%,而不管机床操作面板上的进给速度倍率开关的设置。

准确停止检测无效时,即使那些不执行切削的程序段也不进行准确停止检测(位置检测)。

SETTING值可用变量读和写。二进制数转换为十进制数。


FANUC宏程序的学习和应用


使用外部开关或 SETTING操作设置的各轴镜像状态可以通过输出信号(镜像检测信号)读出。可以检测当前的镜像状态

得到的二进制值转换成十进制。


FANUC宏程序的学习和应用


当用镜像信号和 SETTING两者对某轴设置镜像功能时,信号值和设定值相或,然后输出。

当控制轴以外的轴的镜像功能接通时,它们也被读进系统变量#3007。

系统变量#3007是写保护的系统变量。如果试图在变量中写数据,则发出 P/S116报警“WRITE PROTECTED VARIABLE”。

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

#3901:已加工的零件数(完成数)

#3902:要求的零件数(目标数)

注:不能使用负值。

正在处理的程序段之前的模态信息可以读出


FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


当执行#1=#4002;时,在#1中得到的值是 17,18或 19。

对于不能使用的 G代码组,如果指定系统变量读取相应的模态信息,则发出 P/S报警。

机床位置信息不能写,只能读


FANUC宏程序的学习和应用


变量号的 第 1位代表轴号(从 1到 4)。

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

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

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

工件零点偏移值可以读和写


FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


可以使用以下变量

FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


宏变量的算术和逻辑运算:

下表列出的运算可以在变量中执行。运算符右边的表达式可包含常量和/或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数替换。左边的变量也可以用表达式赋值。


FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


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

宏程序语句和 NC语句

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

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

包含控制语句(例如,GOTO,DO,END)的程序段。

包含宏程序调用指令(例如,用 G65,G66,G67或其它 G代码,M代码调用宏程序)的程序段。

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

转移和循环

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


FANUC宏程序的学习和应用


无条件转移(GOTO 语句)

转移到标有顺序号 n的程序段。当指定 1到 99999以外的顺序号时,出现 P/S报警No.128。可用表达式指定顺序号。

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

例:GOTO1; GOTO#12;

条件转移(IF语句)

IF[]GOTO n ,如果指定的条件表达式满足时,转移到标有顺序号 n的程序段。如果指定的条件表达式不满足,执行下个程序段。

无条件转移(GOTO 语句)

转移到标有顺序号 n的程序段。当指定 1到 99999以外的顺序号时,出现 P/S报警No.128。可用表达式指定顺序号。

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

例:GOTO1; GOTO#12;

条件转移(IF语句)

IF[]GOTO n ,如果指定的条件表达式满足时,转移到标有顺序号 n的程序段。如果指定的条件表达式不满足,执行下个程序段。


FANUC宏程序的学习和应用


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

如果#1和#2的值相同,0赋给#3。

IF[#1 EQ #2] THEN #3=0;

注:条件表达式必须包括运算符。运算符插在两个变量中间或变量和常数中间,并且用括号([,])封闭。表达式可以替代变量。

运算符

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


FANUC宏程序的学习和应用


循环(WHILE 语句)

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


FANUC宏程序的学习和应用


当指定的条件满足时,执行 WHILE 后从 DO到 END之间的程序。否则,转而执行 END之后的程序段。与 IF语句的指令格式相同。DO后的数和 END后的数为指定程序执行范围的标号,标号值为 1,2,3。

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

在程序中使用编程修改系统参数:

G10 L50 参数写模式设定

N_Q_R_

N_P_Q_R_

G11 参数写模式取消

N_ 为参数号的设定值(五位数字)

R_ 参数的设定值

Q_ 参数的位设定值为:0~7(单独修改位参数的某一位)

P_ 轴号设定值为:1到8

设定Q,R的值时不要使用小数点。

相关参数:

3454 #4 G1B

G1B:在可编程参数输入中,位参数的输入

0:不可以 1:可以(位参数通过Q定义)

在程序中编程修改外部工件零点偏移或工件零点偏移值:

G10 L2 Pp IP_;

Pp中的小p=0:设定外部工件零点偏移值

Pp中的小p=1到6:工作坐标系1到6的工件零点偏移(G54~G59)

IP: 对于绝对值指令(G90),为每个轴的工件零点偏移值。对于增量值指令(G91),为每个轴加到设定的工件零点的偏移量(相加的结果为新的工件零点偏移值)。

程序举例:

Y轴抱闸的检查

O9050(BRAKETEST)

(***Y BRAKETEST ***)

(***M-FUNCTIONS ***)

(***M48-BRAKE RELEASE ***)

(***M49-BREAKE CLOSE ***)

(***M74-SHOT BOLT Y ADVANCE ***)

(***M147-BRAKE CHECK Y-AXIS OK ***)

(***M148-BRAKE CHECK Y-AXIS NOT OK***)

(***MAX CUR.PARAM 2060=7282 ***)

(***#913AND8EQ8-BRAKE CHECK REQ. ***)

(REQUEST BRAKETEST ?)

北京发那科机电有限公司 YYF

N100IF[#513AND8EQ8]GOTO110(BRAKETEST)

GOTO999(END)

N110G53G91Y-1.5

N120M49(BREAKE CLOSE)

N130#1=#5022 Y轴当前的位置赋给变量#1(机床坐标系)

N140G91

N150G10L50 参数写开启

N160N6200R11000000(HIGH SPEED SKIPP OFF) 参数6200改为:11000000

N170N2060P2R2184 参数2060对应的第2轴Y 的设定改为:2184(转矩极限)

N180G11 参数写取消

N190G94

N200G31P99Y1.5F200(BRAKETEST STARTED) 在Y轴抱闸抱紧的情况下以最大不超过2184的转矩移动Y轴

N210G53

N220M48(BREAKE RELEASE)

N230G4P500

N240G10L50 参数写开启

N250N6200R11010000(HIGH SPEED SKIPP ON)

N260N2060P2R7282(CURRENT Y MAX)

N270G11G90

N280M48(BREAKE RELEASE)

N290IF[ABS[#1-#5022]GT1]GOTO400(BRAKE TEST NOT OK)

检查在Y轴抱闸抱紧的情况下以最大不超过2184的转矩是否能移动Y轴,如果能够移动并且移动的数值超过1毫米,则Y轴抱闸不好。

N300M147(BRAKE Y AXIS OK)

N310GOTO999(END)

N400M148(BRAKE Y AXIS NOT OK)

N410M98P0003(TOOLCHANGE POSITION)

N999M30


变量根据变量号可分为四中类型

FANUC宏程序的学习和应用


是可编程机床控制器(PMC)和用户宏程序之间交换的信号


FANUC宏程序的学习和应用


用户宏程序输入信号

这些信号不对控制单元提供任何功能。这些信号作为系统变量的一种由用户宏程序读取,并用作用户宏程序和 PMC之间的接口信号。

这些信号对应的系统变量表示如下:


FANUC宏程序的学习和应用


用户宏程序输出信号

这些信号不对控制单元提供任何功能。这些信号作为一种由用户宏程序读或写的系统变量,并用作用户宏程序和 PMC之间的接口信号

这些信号对应的系统变量表示如下:

FANUC宏程序的学习和应用


这些系统变量能够用于赋值语句的左边或右边。

左侧的赋值是赋给右侧的变量。

信号地址如下:


FANUC宏程序的学习和应用


PMC与宏变量的地址对应关系总结如下:

#1000~#1031=G54.0~G57.7

#1032=G54~G57

#1033=G276~G279

#1034=G280~G283

#1035=G284~G287

#1100~#1115=F54.0~F55.7

#1116~#1131=F276.0~F277.7

#1132=F54, F55, F276, F277

#1133=F56~F59

#1134=F280~F283

#1135=F284~F287

系统变量:

系统变量用于读和写 NC内部数据,例如,刀具偏置值和当前位置数据。但是,某些系统变量只能读。系统变量是自动控制和通用程序开发的基础。

用系统变量可以读和写刀具补偿值。

可使用的变量数取决于刀补数,是否区分外形补偿和磨损补偿以及是否区分刀长补偿和刀尖补偿。当偏置组数小于等于 200时,也可使用#2001~#2400

刀具补偿存储器 C的系统变量


FANUC宏程序的学习和应用


宏程序报警的系统变量


FANUC宏程序的学习和应用


列如:

#3000=1(PROBE NO CONTACT)

报警屏幕显示“3001 PROBE NO CONTACT”(探针没有接触

程序停止并显示信息


FANUC宏程序的学习和应用

时间信息的系统变量:

FANUC宏程序的学习和应用


自动运行控制的系统变量(#3003)


FANUC宏程序的学习和应用


当电源接通时,该变量的值为 0。

当单程序段停止无效时,即使单程序段开关设为 ON,也不执行单程序段停止。

当指定不等待辅助功能(M,S和 T功能)完成时,在辅助功能完成之前,程序即执行到下一程序段。而且分配完成信号 DEN不输出。

自动运行控制的系统变量(#3004)


FANUC宏程序的学习和应用


当电源接通时,该变量的值为 0。

当进给暂停无效时:

(1) 当进给暂停按钮被按下时,机床以单段停止方式停止。但是,当用变量#3003使单程序段方式无效时,单程序段停止不执行。

(2) 当进给暂停按钮压下又松开时,进给暂停灯亮,但是,机床不停止;程序继续执行,并且机床停在进给暂停有效的第一个程序段。

进给速度倍率无效时,倍率总为 100%,而不管机床操作面板上的进给速度倍率开关的设置。

准确停止检测无效时,即使那些不执行切削的程序段也不进行准确停止检测(位置检测)。

SETTING值可用变量读和写。二进制数转换为十进制数。


FANUC宏程序的学习和应用


使用外部开关或 SETTING操作设置的各轴镜像状态可以通过输出信号(镜像检测信号)读出。可以检测当前的镜像状态

得到的二进制值转换成十进制。


FANUC宏程序的学习和应用


当用镜像信号和 SETTING两者对某轴设置镜像功能时,信号值和设定值相或,然后输出。

当控制轴以外的轴的镜像功能接通时,它们也被读进系统变量#3007。

系统变量#3007是写保护的系统变量。如果试图在变量中写数据,则发出 P/S116报警“WRITE PROTECTED VARIABLE”。

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

#3901:已加工的零件数(完成数)

#3902:要求的零件数(目标数)

注:不能使用负值。

正在处理的程序段之前的模态信息可以读出


FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


当执行#1=#4002;时,在#1中得到的值是 17,18或 19。

对于不能使用的 G代码组,如果指定系统变量读取相应的模态信息,则发出 P/S报警。

机床位置信息不能写,只能读


FANUC宏程序的学习和应用


变量号的 第 1位代表轴号(从 1到 4)。

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

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

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

工件零点偏移值可以读和写


FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


可以使用以下变量

FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


宏变量的算术和逻辑运算:

下表列出的运算可以在变量中执行。运算符右边的表达式可包含常量和/或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数替换。左边的变量也可以用表达式赋值。


FANUC宏程序的学习和应用


FANUC宏程序的学习和应用


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

宏程序语句和 NC语句

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

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

包含控制语句(例如,GOTO,DO,END)的程序段。

包含宏程序调用指令(例如,用 G65,G66,G67或其它 G代码,M代码调用宏程序)的程序段。

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

转移和循环

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


FANUC宏程序的学习和应用


无条件转移(GOTO 语句)

转移到标有顺序号 n的程序段。当指定 1到 99999以外的顺序号时,出现 P/S报警No.128。可用表达式指定顺序号。

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

例:GOTO1; GOTO#12;

条件转移(IF语句)

IF[]GOTO n ,如果指定的条件表达式满足时,转移到标有顺序号 n的程序段。如果指定的条件表达式不满足,执行下个程序段。

无条件转移(GOTO 语句)

转移到标有顺序号 n的程序段。当指定 1到 99999以外的顺序号时,出现 P/S报警No.128。可用表达式指定顺序号。

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

例:GOTO1; GOTO#12;

条件转移(IF语句)

IF[]GOTO n ,如果指定的条件表达式满足时,转移到标有顺序号 n的程序段。如果指定的条件表达式不满足,执行下个程序段。


FANUC宏程序的学习和应用


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

如果#1和#2的值相同,0赋给#3。

IF[#1 EQ #2] THEN #3=0;

注:条件表达式必须包括运算符。运算符插在两个变量中间或变量和常数中间,并且用括号([,])封闭。表达式可以替代变量。

运算符

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


FANUC宏程序的学习和应用


循环(WHILE 语句)

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


FANUC宏程序的学习和应用


当指定的条件满足时,执行 WHILE 后从 DO到 END之间的程序。否则,转而执行 END之后的程序段。与 IF语句的指令格式相同。DO后的数和 END后的数为指定程序执行范围的标号,标号值为 1,2,3。

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

在程序中使用编程修改系统参数:

G10 L50 参数写模式设定

N_Q_R_

N_P_Q_R_

G11 参数写模式取消

N_ 为参数号的设定值(五位数字)

R_ 参数的设定值

Q_ 参数的位设定值为:0~7(单独修改位参数的某一位)

P_ 轴号设定值为:1到8

设定Q,R的值时不要使用小数点。

相关参数:

3454 #4 G1B

G1B:在可编程参数输入中,位参数的输入

0:不可以 1:可以(位参数通过Q定义)

在程序中编程修改外部工件零点偏移或工件零点偏移值:

G10 L2 Pp IP_;

Pp中的小p=0:设定外部工件零点偏移值

Pp中的小p=1到6:工作坐标系1到6的工件零点偏移(G54~G59)

IP: 对于绝对值指令(G90),为每个轴的工件零点偏移值。对于增量值指令(G91),为每个轴加到设定的工件零点的偏移量(相加的结果为新的工件零点偏移值)。

程序举例:

Y轴抱闸的检查

O9050(BRAKETEST)

(***Y BRAKETEST ***)

(***M-FUNCTIONS ***)

(***M48-BRAKE RELEASE ***)

(***M49-BREAKE CLOSE ***)

(***M74-SHOT BOLT Y ADVANCE ***)

(***M147-BRAKE CHECK Y-AXIS OK ***)

(***M148-BRAKE CHECK Y-AXIS NOT OK***)

(***MAX CUR.PARAM 2060=7282 ***)

(***#913AND8EQ8-BRAKE CHECK REQ. ***)

(REQUEST BRAKETEST ?)

北京发那科机电有限公司 YYF

N100IF[#513AND8EQ8]GOTO110(BRAKETEST)

GOTO999(END)

N110G53G91Y-1.5

N120M49(BREAKE CLOSE)

N130#1=#5022 Y轴当前的位置赋给变量#1(机床坐标系)

N140G91

N150G10L50 参数写开启

N160N6200R11000000(HIGH SPEED SKIPP OFF) 参数6200改为:11000000

N170N2060P2R2184 参数2060对应的第2轴Y 的设定改为:2184(转矩极限)

N180G11 参数写取消

N190G94

N200G31P99Y1.5F200(BRAKETEST STARTED) 在Y轴抱闸抱紧的情况下以最大不超过2184的转矩移动Y轴

N210G53

N220M48(BREAKE RELEASE)

N230G4P500

N240G10L50 参数写开启

N250N6200R11010000(HIGH SPEED SKIPP ON)

N260N2060P2R7282(CURRENT Y MAX)

N270G11G90

N280M48(BREAKE RELEASE)

N290IF[ABS[#1-#5022]GT1]GOTO400(BRAKE TEST NOT OK)

检查在Y轴抱闸抱紧的情况下以最大不超过2184的转矩是否能移动Y轴,如果能够移动并且移动的数值超过1毫米,则Y轴抱闸不好。

N300M147(BRAKE Y AXIS OK)

N310GOTO999(END)

N400M148(BRAKE Y AXIS NOT OK)

N410M98P0003(TOOLCHANGE POSITION)

N999M30



分享到:


相關文章: