
fanuc宏程序讲解 (88页).ppt
88页宏程序讲解ì 用户宏程序ì 程序保护与快捷程序编辑ì 图形对话编程 — Manual Guide i交流内容 一、变量二、运算指令三、控制指令四、系统变量五、宏程序调用六:典型应用举例用户宏程序相关主程序宏程序主程序和宏程序的关系 ü 形状类似但大小不同(圆、方及其它)ü 其它ü 自动化功能(刀具长度测量、生产管理等)ü 特殊形状(椭圆、球等)ü 大小相同但位置不同(组孔、阵列等)宏程序的适用范围 宏程序子程序使用变量可使用变量不可以使用变量调用方式G65 P_ L _ ;M98 P_ _;程序结束M99;M99;嵌套4重4重宏程序与子程序的比较 • 变量的种类• 变量的显示与设定• 变量的使用• 未定义变量一、变量 例:#10, #1005§ 表达式也可以用于指定变量号,需封闭在括号中例:#[#2-1],#[#500/2]§ 可在程序段结尾加注释说明变量内容,需用括号封闭例:#2=#3-1(TOOL NUMBER);变量符号(#)+ 变量号变量的表示1.变量的种类 变量号变量类型用 途#0空变量总为空#1~#33局部变量只能用在当前宏程序中存储变量,断电后 数据初始化#100~#199 #500~#999公共变量在不同的程序中意义相同,各宏程序公用 。
断电后#100~#199初始化为空, #500~#999数据保存#1000~系统变量可用于读写CNC运行时的各种数据变量的种类1.变量的种类 正 值+10-29 ~ +1047 00负 值-10-29 ~ -1047变量的范围1.变量的种类 1、按下 显示宏程序变量值2.变量的显示 2.按 、 显示局部和公共变量值# i = >将计算结果赋值 给对应的变量号常数、变量、函数和 运算符的组合表示方法#1= #2 + 100 ;#1= #2 + #18 SIN[#5] ;3.变量的使用 •当在程序中定义变量值时,小数点可以省略#1 = 123;#1123.000变量的引用• 跟在地址后面的数值可用变量来代替G01 X10.0 F#1;F#1把#1值作为 F的指令值G01 X-[#1+#2] F#1;把表达式放 在括号中变量的定义• 把变量用于地址数据的时候,被引用变量的值根据地址的最小设定单位自动地四舍五入G01 X#1;当#1赋值为12.3456时,实际指令值为G01 X12.346;• 改变引用变量的值的符号,要把负号放在#的前面G00 X-#1;• 当引用未定义的变量时,变量及地址字都被忽略G00 X#1 Y#2;当#1=0,#2为空时, G00 X0;• 程序号、顺序号和任选程序段跳转号不能使用变量O#1;N#3 Y200.0;/#2 G00 X10.;• 当变量值未定义时,这样的变量成为变量• 变量#0 总是空变量,它不能写只能读未定义变量的引用当引用一个未定义的变量时,地址本身也被忽略当#1=时当#1=0时G90 X100 Y#1↓ G90 X100G90 X100 Y#1↓ G90 X100 Y04.未定义变量 未定义变量的计算除了用赋值以外,其余情况下与0 相同当#1=时当#1=0时 #2=#1↓ #2=#2=#1↓ #2=0 #2=#1﹡ ﹡5↓ #2=0#2=#1﹡ ﹡5↓ #2=0 #2=#1+#1↓ #2=0#2=#1+# 1↓ #2=0用赋值条件表达式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 0 ↓ 不成立#1 GT 0 ↓ 不成立条件表达式二、运算指令 • 运算命令的种类• 运算顺序 种 类符 号格 式 加法+#i = #j + #k 减法-#i = #j - #k 乘法*#i = #j*#k除法/#i = #j / #k加减乘除1.运算命令的种类 种 类函数名格 式 下取整FIX#i = FIX[ #k ] 上取整FUP#i = FUP[ #k ]四舍五入ROUND#i =ROUND[ #k ] 绝对值ABS#i =ABS[ #k ]下取整(FIX):舍去小数点以下部分上取整(FUP):将小数后部分进位到整数部分ROUND函数:在算术运算或逻辑运算指令中使用时,在第1个小数位置四舍五入,在NC语句地址中使用时,根据地址的最小设定单位将指定值四舍五入数据处理1.运算命令的种类 种 类符 号格 式结果 正弦SIN#i=SIN[θ]c/a余弦COS#i=COS[θ]b/a正切TAN#i=TAN[θ]c/b反正弦ASIN#i=ASIN[c/a]θ 反余弦ACOS#i=ACOS[b/a]θ反正切ATAN#i=ATAN[c]/[b]θ•三角函数的角度单位为度。
如:90°30′表示为90.5三角函数1.运算命令的种类 其它函数种 类函数名格 式 平方根SQRT#i = SQRT[ #k ]自然对数LN#i = LN[ #k ] 指数函数EXP#i =EXP[ #k ]#2=2;#1=SQRT[#2];1.414#11.运算命令的种类 逻辑运算种 类名称格 式 或OR#i = #j OR #k异或XOR#i = #j XOR #k与AND#i = #j AND #k• 对32位的每一位按二进制进行逻辑运算输入值或异或与 00000 01110 10110 111011.运算命令的种类 2.运算顺序 ① 函数② 乘除运算( * ,/,AND )③ 加减运算(+, - , OR , XOR )#1=#2 + #3 * SIN[#4];①②③2.运算顺序 • 可以利用[ ]来改变运算顺序,可嵌套5次• 可以使用函数名前面的两个字母来指定该函数ROUND→ROFIX→FI• 无条件转移(GOTO 语句)• 条件转移(IF 语句)• 循环(WHILE 语句)三、控制指令 GOTO n; n:程序段号(1- 99999 )无条件地转移到程序段n去。
• n也可用变量或表达式来代替GOTO 10;GOTO #10;1.无条件转移(GOTO 语句 )IF [] GOTO n;• 若满足,下步操作转移到程序段 号为n的程序段去• 若不满足,执行下个程序段IF [] THEN … ;• 若满足,执行THEN后的宏程序 语句,只执行一个语句IF[#1 EQ #2] THEN #3=0;2.条件转移(IF 语句 )表 达 式含 义英 文#j EQ #k#j = #kEQual#j NE #k#j ≠ #kNot Equal #j GT #k#j > #kGreater Than #j LT #k#j < #kLess Than #j GE #k#j ≥ #kGreater or Equal #j LE #k#j ≤ #kLess or Equal• #j 和 #k 也可用来代替条件表达式2.条件转移(IF 语句 )WHILE [] DO m; (m=1,2,3)条件成立时执 行的程序END m;• DO m和 END m必须成对使用,并以 其中的m作为 识别号相互识别• m的范围为1,2,3可以根据需要多次使用。
3.循环(WHILE 语句 )WHILE[…] DO 1;程序WHILE[…] DO 2;END1;程序END2;END1;程序WHILE[…] DO 1;•DO的区域不能交 叉•DO 一定要在 END之前规定•识别号( 1,2, 3)可多次使用WHILE[…] DO 1;程序END1;WHILE[…] DO 1;程序END1;3.循环(WHILE 语句 )WHILE[…] DO 1;程序IF[…] GOTO n ;END1;程序Nn …;• 可以从DO区域的 内部向外部转移• 不可以从DO区域 的外部向内部转 移• DO 循环可以 嵌套3级WHILE[…] DO 1;●WHILE[…] DO 2;●WHILE[…] DO 3; 程序END3;●END2;●END1;IF[…] GOTO n ;WHILE[…] DO 1;程序Nn …;END1;3.循环(WHILE 语句 )常用格式(当前值)=(初值);WHILE [(当前值)比较(目标值)] DO m;(执行循环操作);(当前值)=(当前值)±1;ENDm;3.循环(WHILE 语句 )四、系统变量 • 刀具补偿值• CNC报警• 时间信息• 模态信息 • 位置信息• 工件零点偏移补偿 号刀具长度补偿(H)刀具半径补偿(D)几何补偿磨耗补偿几何补偿磨耗补偿1#11001(#2201)#10001(#2001)#13001#12001(200)#11200(#2400)#10200(#2200)400#11400#10400#13400#124001.刀具补偿值 变量号设定范围功能#30000~200CNC停止运行并报警•表达式后为不超过26个字符的报警信息 •屏幕上显示报警号和报警信息,报警号为#3000的值加上3000#3000=1 (WRONG DATA INPUT);屏幕显示:3001 WRONG DATA INPUT例:2.CNC报警 变量号单位功 能赋值#3001毫秒计时器。
电源接通时复位为0可以#3002小时计时器循环启动灯亮时开始计时 即使在断电时也保存该值可以#3011年月日读取当前的日期 1999年12月31日 19991231不可#3012时分秒读取当前的时间 下午3点34分56秒 153456不可3.时间信息 #3003单程序段辅助机能的完成0有效等待1无效等待2有效不等待3无效不等待•当电源接通时,#3003的值为0•当单程序段停止无效时,即使操作面板上的单程序段开关设为 ON,也不执行单程序段停止•当不指定等待辅助功能M 、S 和T 功能完成时,在辅助功能完 成之前程序执行到下列程序段而且分配完成信号DEN不输出4.自动运行 变量号功能赋值#3005设定数据可以5.SETTING值 变量号功能赋值#3007使用外部开关或SETTING 操作设置的 各轴镜像状态可以通过输出信号镜像检 测信号读出不可6.镜像 变量号功 能赋值#3901已加工零件数可以#3902所要求的零件数可以7.加工零件数 变量号模态信息变量号模态信息#4001G00,G01,G02,G03,G33, G60,G75,G77~G79#4107D代码#4002G17,G18,G19#4109F代码#4003G90,G91#4111H代码#4007G40,G41,G42#4113M代码#4008G43,G44,G49#4119S代码#4009G73,G74,G76,G80~G89#4120T代码#4014G54~G59#4130P代码8.模态信息 变量号位置信息坐标系刀补值#5001~8程序段终点工件坐标系不包含#5021~8当前位置机床坐标系包含#5041~8当前位置工件坐标系#5061~8跳转信号位置#5081~8刀具长度补偿值#5101~8伺服位置误差9.位置信息 变量号工件坐标系#5201~4第1轴到第4轴外部工件坐标原点偏移值#5221~4第1轴到第4轴G54原点偏移值#5241~4第1轴到第4轴G55原点偏移值#5261~4第1轴到第4轴G56原点偏移值#5281~4第1轴到第4轴G57原点偏移值#5301~4第1轴到第4轴G58原点偏移值#5321~4第1轴到第4轴G59原点偏移值10.工件零点偏移值 11.PMC信号 11.PMC信号 11.PMC信号 五、宏程序的调用 •非模态调用G65•模态调用G66•G、M代码调用宏程序•M、T代码调用子程序G65 Pp Ll 〈自变量赋值〉;要调用的程 序号重复次数• 用G65指令,把由P指令的宏程序体调用L次• L。












