《FANUC宏程序详解》由会员分享,可在线阅读,更多相关《FANUC宏程序详解(48页珍藏版)》请在金锄头文库上搜索。
1、BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序用用 户户 宏宏 程程 序序 BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序一、一、变量变量二、运算指令二、运算指令三、控制指令三、控制指令四、简单练习四、简单练习五、系统变量五、系统变量六、宏程序调用六、宏程序调用主要内容:主要内容:BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序主程序主程序宏程序宏程序下一页下一页BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序宏程序的宏程序的适用范围:适用范围: 形状类似但大小不同(圆、方及其它)形状类
2、似但大小不同(圆、方及其它) 其它其它 自动化功能(刀具长度测量、生产管理等)自动化功能(刀具长度测量、生产管理等) 特殊形状(椭圆、球等)特殊形状(椭圆、球等) 大小相同但位置不同(组孔、阵列等)大小相同但位置不同(组孔、阵列等)上一页上一页BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序宏程序宏程序与子程序的比较:与子程序的比较:宏程序宏程序子程序子程序使用变量使用变量可使用变量可使用变量不可以使用变量不可以使用变量调用方式调用方式G65 P_ L _ ;M98 P_ _;调用行有其调用行有其它它NC指令时指令时无条件调用无条件调用先执行先执行NC指令指令,再再调
3、用子程序调用子程序嵌套嵌套4重重4重重BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序宏程序宏程序相关的参数相关的参数#5(SBM) 用户宏程序语句中,用户宏程序语句中, 0: 单程序段不停止单程序段不停止 1: 单程序段停止单程序段停止#6(CCV) 复位(复位(Reset)后,公共变量)后,公共变量#100#1990: 清空清空1: 不清空不清空#7(CLV) 复位(复位(Reset)后,局部变量)后,局部变量#1#33 0: 清空清空1: 不清空不清空BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序#4(NE9) 编辑程序号为编辑程序号
4、为90009999的程序的程序0: 不禁止不禁止1: 禁止禁止#6(NPE) 程序登录时,对含有程序登录时,对含有M02,M99,M30的程序段的程序段0: 视为登录结束视为登录结束1: 不视为登录结束不视为登录结束BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序 变量的种类变量的种类 变量的显示与设定变量的显示与设定 变量的使用变量的使用 未定义变量未定义变量一、变量一、变量BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序1. 变量的种类变量的种类 例:例:#10,#1005表达式表达式也可以用于指定变量号,需封闭在括号中。也可以用于指定变
5、量号,需封闭在括号中。 例:例:#2-1,#500/2可在程序段结尾加可在程序段结尾加注释注释说明变量内容,需用括号封说明变量内容,需用括号封闭。闭。 例:例: #2=#3-1(TOOL NUMBER);变量符号(变量符号(#)+ 变量号变量号变量的表示变量的表示BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序变量号变量号变量类型变量类型用用 途途#0空变量空变量总为空总为空#1#33局部变量局部变量只能用在当前宏程序中存储变量,只能用在当前宏程序中存储变量,断电后数据初始化断电后数据初始化#100#199#500#999公共变量公共变量在不同的程序中意义相同,各宏程
6、在不同的程序中意义相同,各宏程序公用。序公用。断电后断电后#100#199初始化初始化为空,为空, #500#999数据保存数据保存#1000系统变量系统变量可用于读写可用于读写CNC运行时的各种数据运行时的各种数据变量的种类变量的种类BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序正正 值值+10-29 +104700负负 值值-10-29 -1047变量的范围变量的范围BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序2.变量的显示与设定变量的显示与设定变量的显示变量的显示1.按下按下MDI面板上面板上的功能键的功能键OFFSETSETTI
7、NG2.按几次按几次 键,键,直至出现直至出现BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序3.按下按下 显示显示宏程序变量值宏程序变量值BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序4.按按 、 显示局部和公共显示局部和公共变量值变量值BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序公共变量的设定公共变量的设定1.找到显示公共变量的画面。找到显示公共变量的画面。2.将光标移至欲设定的变量将光标移至欲设定的变量号上。号上。键入变量号并按键入变量号并按 键键按换页键按换页键 、 和和光标键将光标移至欲设定光标键将光
8、标移至欲设定的变量号上的变量号上3.键入数据并按键入数据并按BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序3.变量的使用变量的使用 # i = # i = 将计算结果赋值将计算结果赋值给对应的变量号给对应的变量号常数、变量、函数常数、变量、函数和运算符的组合和运算符的组合表示方法表示方法#1= #2 + 100 ;#1= #2 + #18 SIN#5 ;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序变量的定义变量的定义当在程序中定义变量值时,小数点可以省略当在程序中定义变量值时,小数点可以省略#1 = 123;#1变量的引用变量的引用 跟
9、在地址后面的数值可用变量来代替。跟在地址后面的数值可用变量来代替。G01 X10.0 F#1;F把把#1值作为值作为F的指令值的指令值G01 X-#1+#2 F#1;把表达式放把表达式放在括号中在括号中BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序把变量用于地址数据的时候,被引用变量的值把变量用于地址数据的时候,被引用变量的值根据地址根据地址的最小设定单位自动地四舍五入的最小设定单位自动地四舍五入G01 X#1;当当#1赋值为时,实际指令值为赋值为时,实际指令值为G01 X12.346;改变引用变量的值的符号,要改变引用变量的值的符号,要把负号放在把负号放在#的前面
10、的前面G00 X-#1;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序当引用未定义的变量时,当引用未定义的变量时,变量及地址字都被忽略变量及地址字都被忽略G00 X#1 Y#2;当当#1=0,#2为空时,为空时, G00 X0; 程序号、顺序号程序号、顺序号和和任选程序段跳转号任选程序段跳转号不能使用变量不能使用变量O#1;N#3 Y200.0;/#2 G00 X10.;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序4.未定义变量未定义变量当变量值未定义时,这样的变量成为当变量值未定义时,这样的变量成为变量变量变量变量#0 总是空变量总是
11、空变量,它不能写只能读它不能写只能读未定义变量的引用未定义变量的引用当引用一个未定义的变量时当引用一个未定义的变量时, ,地址本身也被忽略地址本身也被忽略当当#1=时时当当#1=0时时G90 X100 Y#1 G90 X100G90 X100 Y#1 G90 X100 Y0BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序未定义变量的计算未定义变量的计算除了用除了用赋值以外,其余情况下赋值以外,其余情况下与与0 相同相同当当#1=时时当当#1=0时时#2=#1 #2=#2=#1 #2=0#2=#15 #2=0#2=#15 #2=0#2=#1+#1 #2=0#2=#1+#
12、 1 #2=0用用赋值赋值BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序条件表达式条件表达式指令指令意思意思#2 EQ #1#2=#1#2 NE #1#2#1#2 GT #1#2#1#2 LT #1#2#1#2 GE #1#2#1#2 LE #1#2#1BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序条件表达式条件表达式EQ和和NE中的中的不同于不同于0当当#1=时时当当#1=0时时#1 EQ #0成立成立#1 EQ #0不成立不成立#1 NE 0成立成立#1 NE 0不成立不成立#1 GE #0成立成立#1 GE #0成立成立#1 GT
13、0不成立不成立#1 GT 0不成立不成立BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序二、运算指令二、运算指令 运算命令的种类运算命令的种类 运算顺序运算顺序 BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序种种 类类符符 号号格格 式式加法加法+#i = #j + #k 减法减法-#i = #j - #k乘法乘法#i = #j#k除法除法/#i = #j / #k1.运算命令的种类运算命令的种类加减乘除加减乘除BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序种种 类类函数名函数名格格 式式下取整下取整FIX#i
14、= FIX #k 上取整上取整FUP#i = FUP #k 四舍五入四舍五入ROUND#i =ROUND #k 绝对值绝对值ABS#i =ABS #k 下取整下取整(FIX):舍去小数点以下部分:舍去小数点以下部分上取整上取整(FUP):将小数后部分进位到整数部分:将小数后部分进位到整数部分数据处理数据处理BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序运算指令运算指令#2=1.234时时#2=-1.679时时#1= FIX #2 #1= FUP #2 #1=ROUND #2 #1=ABS #2 计算相应的变量值计算相应的变量值#1下取整下取整(FIX):舍去小数点以
15、下部分:舍去小数点以下部分上取整上取整(FUP):将小数后部分进位到整数部分:将小数后部分进位到整数部分BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序种种 类类符符 号号格格 式式结果结果正弦正弦SIN#i=SINc/a余弦余弦COS#i=COSb/a正切正切TAN#i=TANc/b反正弦反正弦ASIN#i=ASINc/a反余弦反余弦ACOS#i=ACOSb/a反正切反正切ATAN#i=ATANc/b三角函数的角度单位为三角函数的角度单位为度度。如:。如:9030表示为表示为三角函数三角函数BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序反
16、三角函数的取值范围反三角函数的取值范围函函 数数No.6004#0=0No.6004#0=1ATAN0360-180+180ASIN27090-9090ACOS1800#1=SIN90;#1=COS90;#1=TAN45;#1=ATAN1/1;#1=ATAN-1/-1;101#1#1#1#1#1BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序其它函数其它函数种种 类类函数名函数名格格 式式平方根平方根SQRT#i = SQRT #k 自然对数自然对数LN#i = LN #k 指数函数指数函数EXP#i =EXP #k #2=2;#1=SQRT#2;#1BEIJINGB
17、EIJING- -FANUCFANUC用户宏程序用户宏程序逻辑运算逻辑运算种种 类类名称名称格格 式式或或OR#i = #j OR #k异或异或XOR#i = #j XOR #k与与AND#i = #j AND #k 对对32位的每一位按二进制进行逻辑运算位的每一位按二进制进行逻辑运算输入值输入值或或异或异或与与00000011101011011101BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序十进制十进制二进制二进制#22100010101#31200001111#1=#2 OR #3#1=#2 XOR #3#1=#2 AND #3292540001110100
18、01100100000100从从BCD转为转为BIN: #i= BIN#j;从从BIN转为转为BCD: #i= BCD#j;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序2. 运算顺序运算顺序 函数函数 乘除运算(乘除运算( ,/,AND ) 加减运算加减运算(+, - , OR , XOR )#1=#2 + #3 SIN#4;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序 可以利用可以利用 来改变运算顺序,可来改变运算顺序,可嵌套嵌套5次次 可以使用函数名可以使用函数名前面的两个字母前面的两个字母来指定该函数。来指定该函数。ROUNDR
19、O FIXFIBEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序三、控制指令三、控制指令 GOTO 语句语句 IF 语句语句 WHILE 语句语句 BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序1.无条件转移(无条件转移(GOTO 语句)语句) GOTO n; n:程序段号(:程序段号(1- 99999)无条件地转移到程序段无条件地转移到程序段n去。去。n也可用变量或表达式来代替也可用变量或表达式来代替GOTO 10;GOTO #10;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序 IF GOTO n;若满足若满足
20、,下步操作转移到程序,下步操作转移到程序段号为段号为n的程序段去。的程序段去。若不满足,执行下个程序段。若不满足,执行下个程序段。2. 条件转移(条件转移(IF语句)语句) IF THEN ;若满足若满足,执行,执行THEN后的宏程后的宏程序语句,只执行一个语句。序语句,只执行一个语句。IF#1 EQ #2 THEN #3=0;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序条件表达条件表达式式条件不满足时条件不满足时执行的操作执行的操作条条条条件件件件满满满满足足足足时时时时是是是是否否否否IFGOTO上一页上一页BEIJINGBEIJING- -FANUCFANU
21、C用户宏程序用户宏程序常用格式常用格式(当前值)(当前值)=(初值);(初值);WHILE (当前值)比较(目标值)(当前值)比较(目标值) DO m;(执行循环操作);(执行循环操作);(当前值)(当前值)=(当前值)(当前值)1;ENDm;BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序四、简单练习四、简单练习 深孔加工深孔加工 铣圆内腔铣圆内腔 粗车外圆粗车外圆 数据计算数据计算BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序#26= -30.0;#17= -10.0;#1= 0;#2= 0;#3= 0;WHILE#1 GT #26 D
22、O1; #1= #1+ #17; IF#1 GE #26 GOTO1; #1= #26; G00 G90 Z#2 + #3; G01 Z#1 F300; G00 Z0; #2= #1; #3= 1.0;END1;N1钻孔最终深度赋值钻孔最终深度赋值每次钻孔深度赋值每次钻孔深度赋值当次钻孔深度坐标初始化当次钻孔深度坐标初始化前次钻孔深度坐标初始化前次钻孔深度坐标初始化计算当次钻孔深度坐标计算当次钻孔深度坐标记录当次钻孔深度记录当次钻孔深度与最终钻孔深度比较与最终钻孔深度比较钻孔深度空程量初始化钻孔深度空程量初始化 钻孔深度空程量赋值钻孔深度空程量赋值BEIJINGBEIJING- -FANUCF
23、ANUC用户宏程序用户宏程序O9999;#1=500;WHILE#1 LE 507 DO1; #1=#0 ; #1=#1+1;END1;M30;O9999;#1=0;WHILE#1 LE 9 DO1; #500+#1=SIN#1*10 ; #1=#1+1;END1;M30;将将#500#507的值设为的值设为计算计算SIN0SIN90的值并赋的值并赋值给值给#500#509BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序O9999;#1=501;#506=#500;WHILE#1 LE 505 DO1;IF#506 GT #1 GOTO1;#506=#1;N1 #1=
24、#1+1;END1;M30;O9999;#2=501;WHILE#2 LE 505 DO2; #1=#2; #506=#2-1; WHILE#1 LE 505 DO1; IF#506 GT #1 GOTO1; #506=#1; #1=#2-1; #2-1=#506; #1=#1+1; END1; #2=#2+1;END2;M30;N1BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序时间信息时间信息变量号变量号单位单位功功 能能赋值赋值#3001毫秒毫秒计时器。电源接通时复位为计时器。电源接通时复位为0。可以可以#3002小时小时计时器。循环启动灯亮时开始计计时器。循环
25、启动灯亮时开始计时。即使在断电时也保存该值时。即使在断电时也保存该值可以可以#3011年月日年月日读取当前的日期。读取当前的日期。1999年年12月月31日日 19991231不可不可#3012时分秒时分秒读取当前的时间。读取当前的时间。下午下午3点点34分分56秒秒 153456不可不可示示 例例BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序#3004进给暂停进给暂停进给速度进给速度倍率修调倍率修调准确停止准确停止01234567:有效:有效:无效:无效示示 例例BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序SETTING值值变量号变量号功能功能赋值赋值#3005设定数据设定数据可以可以BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序镜向镜向变量号变量号功能功能赋值赋值#3007使用外部开关或使用外部开关或SETTING 操作设置操作设置的各轴镜像状态可以通过输出信号的各轴镜像状态可以通过输出信号镜像检测信号读出镜像检测信号读出不可不可BEIJINGBEIJING- -FANUCFANUC用户宏程序用户宏程序加工零件数加工零件数变量号变量号功功 能能赋值赋值#3901已加工零件数已加工零件数可以可以#3902所要求的零件数所要求的零件数可以可以