1、FANUC宏程序详解宏程序详解一、变量一、变量二、运算指令二、运算指令三、控制指令三、控制指令四、简单练习四、简单练习五、系统变量五、系统变量六、宏程序调用六、宏程序调用主要内容:主要内容:2主程序主程序宏程序宏程序下一页下一页3宏程序的宏程序的适用范围:适用范围:形状类似但大小不同(圆、方及其它)形状类似但大小不同(圆、方及其它)其它其它 自动化功能(刀具长度测量、生产管理等)自动化功能(刀具长度测量、生产管理等)特殊形状(椭圆、球等)特殊形状(椭圆、球等)大小相同但位置不同(组孔、阵列等)大小相同但位置不同(组孔、阵列等)上一页上一页4宏程序宏程序与子程序的比较:与子程序的比较:5宏程序宏
2、程序相关的参数相关的参数#5(SBM)用户宏程序语句中,用户宏程序语句中,0:单程序段不停止单程序段不停止 1:单程序段停止单程序段停止#6(CCV)复位(复位(Reset)后,公共变量)后,公共变量#100#1990:清空清空1:不清空不清空#7(CLV)复位(复位(Reset)后,局部变量)后,局部变量#1#33 0:清空清空1:不清空不清空6#4(NE9)编辑程序号为编辑程序号为90009999的程序的程序0:不禁止不禁止1:禁止禁止#6(NPE)程序登录时,对含有程序登录时,对含有M02,M99,M30的程序段的程序段0:视为登录结束视为登录结束1:不视为登录结束不视为登录结束7大家应
3、该也有点累了,稍作休息大家应该也有点累了,稍作休息大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流8 变量的种类变量的种类 变量的显示与设定变量的显示与设定 变量的使用变量的使用 未定义变量未定义变量一、变量一、变量91.变量的种类变量的种类 例:例:#10,#1005表达式也可以用于指定变量号,需封闭在括号中。表达式也可以用于指定变量号,需封闭在括号中。例:例:#2-1,#500/2可在程序段结尾加注释说明变量内容,需用括号封可在程序段结尾加注释说明变量内容,需用括号封闭。闭。例:例:#2=#3-1(TOOL NUMBER);变
4、量符号(变量符号(#)+变量号变量号变量的表示变量的表示10变量的种类变量的种类11变量的范围变量的范围122.变量的显示与设定变量的显示与设定变量的显示变量的显示1.按下按下MDI面板上面板上的功能键的功能键OFFSETSETTING2.按几次按几次 键,键,直至出现直至出现133.按下按下 显示显示宏程序变量值宏程序变量值144.按按 、显示局部和公共显示局部和公共变量值变量值15公共变量的设定公共变量的设定1.找到显示公共变量的画面。找到显示公共变量的画面。2.将光标移至欲设定的变量将光标移至欲设定的变量号上。号上。键入变量号并按键入变量号并按 键键按换页键按换页键 、和和光标键将光标移
5、至欲设定光标键将光标移至欲设定的变量号上的变量号上3.键入数据并按键入数据并按163.变量的使用变量的使用#i =#i =将计算结果赋值将计算结果赋值给对应的变量号给对应的变量号常数、变量、函数常数、变量、函数和运算符的组合和运算符的组合表示方法表示方法#1=#2+100;#1=#2+#18 SIN#5;17变量的定义变量的定义当在程序中定义变量值时,小数点可以省略当在程序中定义变量值时,小数点可以省略#1=123;#1123.000变量的引用变量的引用 跟在地址后面的数值可用变量来代替。跟在地址后面的数值可用变量来代替。G01 X10.0 F#1;F把把#1值作为值作为F的指令值的指令值G0
6、1 X-#1+#2 F#1;把表达式放把表达式放在括号中在括号中18把变量用于地址数据的时候,被引用变量的值根据地址把变量用于地址数据的时候,被引用变量的值根据地址的最小设定单位自动地四舍五入的最小设定单位自动地四舍五入G01 X#1;当当#1赋值为赋值为12.3456时,实际指令值为时,实际指令值为G01 X12.346;改变引用变量的值的符号,要把负号放在改变引用变量的值的符号,要把负号放在#的前面的前面G00 X-#1;19当引用未定义的变量时,变量及地址字都被忽略当引用未定义的变量时,变量及地址字都被忽略G00 X#1 Y#2;当当#1=0,#2为空时,为空时,G00 X0;程序号、顺
7、序号和任选程序段跳转号不能使用变量程序号、顺序号和任选程序段跳转号不能使用变量O#1;N#3 Y200.0;/#2 G00 X10.;204.未定义变量未定义变量当变量值未定义时,这样的变量成为当变量值未定义时,这样的变量成为变量变量变量变量#0 总是空变量总是空变量,它不能写只能读它不能写只能读未定义变量的引用未定义变量的引用当引用一个未定义的变量时当引用一个未定义的变量时,地址本身也被忽略地址本身也被忽略21未定义变量的计算未定义变量的计算除了用除了用赋值以外,其余情况下赋值以外,其余情况下与与0 相同相同用用赋值赋值22条件表达式条件表达式23条件表达式条件表达式EQ和和NE中的中的不同
8、于不同于024二、运算指令二、运算指令 运算命令的种类运算命令的种类 运算顺序运算顺序 251.运算命令的种类运算命令的种类加减乘除加减乘除26下取整下取整(FIX):舍去小数点以下部分:舍去小数点以下部分上取整上取整(FUP):将小数后部分进位到整数部分:将小数后部分进位到整数部分数据处理数据处理271.02.0-1.0-2.01.01.234-2.01.679计算相应的变量值计算相应的变量值#1下取整下取整(FIX):舍去小数点以下部分:舍去小数点以下部分上取整上取整(FUP):将小数后部分进位到整数部分:将小数后部分进位到整数部分28三角函数的角度单位为度。如:三角函数的角度单位为度。如
9、:9030表示为表示为90.5三角函数三角函数29反三角函数的取值范围反三角函数的取值范围#1=SIN90;#1=COS90;#1=TAN45;#1=ATAN1/1;#1=ATAN-1/-1;101123.000123.000#1#1#1#1#130其它函数其它函数#2=2;#1=SQRT#2;1.414#131逻辑运算逻辑运算 对对32位的每一位按二进制进行逻辑运算位的每一位按二进制进行逻辑运算3229254从从BCD转为转为BIN:#i=BIN#j;从从BIN转为转为BCD:#i=BCD#j;332.运算顺序运算顺序 函数函数 乘除运算(乘除运算(,/,AND)加减运算加减运算(+,-,O
10、R,XOR)#1=#2+#3 SIN#4;34 可以利用可以利用 来改变运算顺序,可嵌套来改变运算顺序,可嵌套5次次 可以使用函数名前面的两个字母来指定该函数。可以使用函数名前面的两个字母来指定该函数。ROUNDRO FIXFI35三、控制指令三、控制指令 GOTO 语句语句 IF 语句语句 WHILE 语句语句 361.无条件转移(无条件转移(GOTO 语句)语句)GOTO n;n:程序段号(:程序段号(1-99999)无条件地转移到程序段无条件地转移到程序段n去。去。n也可用变量或表达式来代替也可用变量或表达式来代替GOTO 10;GOTO#10;37 IF GOTO n;若满足若满足,下
11、步操作转移到程序,下步操作转移到程序段号为段号为n的程序段去。的程序段去。若不满足,执行下个程序段。若不满足,执行下个程序段。2.条件转移(条件转移(IF语句)语句)IF THEN ;若满足若满足,执行,执行THEN后的宏程后的宏程序语句,只执行一个语句。序语句,只执行一个语句。IF#1 EQ#2 THEN#3=0;38条件表达条件表达式式条件不满足时条件不满足时执行的操作执行的操作条条条条件件件件满满满满足足足足时时时时是是是是否否否否IFGOTO上一页上一页39常用格式常用格式(当前值)(当前值)=(初值);(初值);WHILE(当前值)比较(目标值)(当前值)比较(目标值)DO m;(执
12、行循环操作);(执行循环操作);(当前值)(当前值)=(当前值)(当前值)1;ENDm;40四、简单练习四、简单练习 深孔加工深孔加工 铣圆内腔铣圆内腔 粗车外圆粗车外圆 数据计算数据计算41#26=-30.0;#17=-10.0;#1=0;#2=0;#3=0;WHILE#1 GT#26 DO1;#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钻孔最终深度赋值钻孔最终深度赋值每次钻孔深度赋值每次钻孔深度赋值当次钻孔深度坐标初始化当次钻孔深度坐标初始化前次钻孔深度坐标
13、初始化前次钻孔深度坐标初始化计算当次钻孔深度坐标计算当次钻孔深度坐标记录当次钻孔深度记录当次钻孔深度与最终钻孔深度比较与最终钻孔深度比较钻孔深度空程量初始化钻孔深度空程量初始化 钻孔深度空程量赋值钻孔深度空程量赋值42O9999;#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#50943O9999;#1=501;#506=#500;WHILE#1 LE 505 DO1;IF#506 GT#1 GOTO1;#506=#1;N1#1=#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;N144时间信息时间信息示示 例例45:有效:有效:无效:无效示示 例例46SETTING值值47镜向镜向48