FANUC宏程序详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量的定义
•当在程序中定义变量值时,小数点可以省略
#1 = 123;
#1 123.000
变量的引用
• 跟在地址后面的数值可用变量来代替。
G01 X10.0 F#1;
F
G01 X-[#1+#2] F#1;
把表达式放 在括号中
把#1值作为F 的指令值
• 把变量用于地址数据的时候,被引用变量的值根据地址 的最小设定单位自动地四舍五入 G01 X#1; 当#1赋值为12.3456时,实际指令值为G01 X12.346;
用<空>赋值
当#1=<空>时
#2=#1 ↓ #2=<空>
#2=#1﹡5 ↓ #2=0
#2=#1+#1 ↓ #2=0
当#1=0时
#2=#1 ↓ #2=0
#2=#1﹡5 ↓ #2=0
#2=#1+# 1 ↓ #2=0
条件表达式 指令
#2 EQ #1 #2 NE #1 #2 GT #1 #2 LT #1 #2 GE #1 #2 LE #1
O9999; #1=0; WHILE[#1 LE 9] DO1;
#[500+#1]=SIN[#1*10] ; #1=#1+1; END1; M30;
O9999; #1=501; #506=#500; WHILE[#1 LE 505] DO1; IF[#506 GT #[#1] ] GOTO1; #506=#[#1]; N1 #1=#1+1; END1; M30;
2. 运算顺序
① 函数 ② 乘除运算( * ,/,AND ) ③ 加减运算(+, - , OR , XOR )
#1=#2 + #3 * SIN[#4];
① ② ③
• 可以利用[ ]来改变运算顺序,可嵌套5次
• 可以使用函数名前面的两个字母来指定该函数。 ROUND→RO FIX→FI
三、控制指令
• 对32位的每一位按二进制进行逻辑运算
输入值
0
0
0
1
1
0
1
1
或
异或
与
0
0
0
1
1
0
1
1
0
1
0
1
#2 #3 #1=#2 OR #3 #1=#2 XOR #3 #1=#2 AND #3
十进制 21 12 29 25 4
二进制
从BCD转为BIN: 从BIN转为BCD:
#i= BIN[#j]; #i= BCD[#j];
镜像检测信号读出
赋值 不可
加工零件数
变量号 #3901 #3902
功能 已加工零件数 所要求的零件数
赋值 可以 可以
时间信息
变量号 单位
功能
#3001 毫秒 计时器。电源接通时复位为0。
#3002
小时
计时器。循环启动灯亮时开始计 时。即使在断电时也保存该值
#3011 #3012
年月日 读取当前的日期。 1999年12月31日
时分秒
读取当前的时间。 下午3点34分56秒
153456
赋值 可以 可以
不可
不可
示例
#3004
用户宏程序
主要内容:
一、变量 二、运算指令 三、控制指令 四、简单练习 五、系统变量 六、宏程序调用
主程序
宏程序
下一页
宏程序的适用范围:
✓ 形状类似但大小不同(圆、方及其它) ✓ 大小相同但位置不同(组孔、阵列等) ✓ 特殊形状(椭圆、球等) ✓ 自动化功能(刀具长度测量、生产管理等) ✓ 其它
ATAN
0~360
-180~+180
ASIN
270~90
-90~90
ACOS
180~0
#1=SIN[90]; #1=COS[90]; #1=TAN[45]; #1=ATAN[1]/[1]; #1=ATAN[-1]/[-1];
#1
1
#1
0
#1
1
#1 123.000
#1 123.000
其它函数
种类 平方根 自然对数 指数函数
当变量值未定义时,这样的变量成为<空>变量 • 变量#0 总是空变量,它不能写只能读 未定义变量的引用
当引用一个未定义的变量时,地址本身也被忽略
当#1=<空>时
G90 X100 Y#1 ↓
G90 X100
当#1=0时
G90 X100 Y#1 ↓
G90 X100 Y0
未定义变量的计算
除了用<空>赋值以外,其余情况下<空>与0 相同
上一页
宏程序与子程序的比较:
宏程序
子程序
使用变量
可使用变量
不可以使用变量
调用方式 G65 P_ L _<自变量赋值> ; M98 P_ _;
调用行有其 它NC指令时
无条件调用
先执行NC指令,再 调用子程序
嵌套
4重
4重
宏程序相关的参数
#5(SBM) 用户宏程序语句中, 0: 单程序段不停止 1: 单程序段停止
#6(CCV) 复位(Reset)后,公共变量#100~#199 #7(CLV) 复位(Reset)后,局部变量#1~#33
0: 清空 1: 不清空 0: 清空 1: 不清空
#4(NE9) 编辑程序号为9000~9999的程序
0: 不禁止 1: 禁止
#6(NPE) 程序登录时,对含有M02,M99,M30的程序段 0: 视为登录结束 1: 不视为登录结束
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; N1 #1=#1+1; END1; #2=#2+1; END2; M30;
• GOTO 语句 • IF 语句 • WHILE 语句 •
1.无条件转移(GOTO 语句)
GOTO n; n:程序段号(1- 99999)
无条件地转移到程序段n去。 • n也可用变量或表达式来代替
GOTO 10; GOTO #10;
2. 条件转移(IF语句)
IF [<条件表达式>] GOTO n;
函数名 SQRT
LN EXP
#2=2; #1=SQRT[#2];
格式 #i = SQRT[ #k ]
#i = LN[ #k ] #i =EXP[ #k ]
#1 1.414
逻辑运算
种类 或
异或 与
名称 OR XOR AND
格式 #i = #j OR #k #i = #j XOR #k #i = #j AND #k
变量的范围
正值 0
负值
+10-29 ~ +1047 0
-10-29 ~ -1047
变量的显示
2.变量的显示与设定
1.按下MDI面板上 的功能键 OFFSET
SETTING
2.按几次 键, 直至出现
3.按下
显示
宏程序变量值
4.按 、 显示局部和公共 变量值
公共变量的设定
1.找到显示公共变量的画面。
#2=1.234时 1.0 2.0 1.0 1.234
#2=-1.679时 -1.0 -2.0 -2.0 1.679
下取整(FIX):舍去小数点以下部分 上取整(FUP):将小数后部分进位到整数部分
三角函数
种类
正弦 余弦 正切 反正弦 反余弦 反正切
符号
SIN COS TAN ASIN ACOS ATAN
成立
#1 GT 0 ↓
不成立
二、运算指令
• 运算命令的种类 • 运算顺序
加减乘除
1.运算命令的种类
种类 加法 减法 乘法 除法
符号 + * /
格式 #i = #j + #k #i = #j - #k #i = #j*#k #i = #j / #k
数据处理
种类 下取整 上取整 四舍五入 绝对值
函数名 FIX FUP
• 改变引用变量的值的符号,要把负号放在#的前面
G00 X-#1;
• 当引用未定义的变量时,变量及地址字都被忽略
G00 X#1 Y#2; 当#1=0,#2为空时,
G00 X0;
• 程序号、顺序号和任选程序段跳转号不能使用变量
O#1; N#3 Y200.0; /#2 G00 X10.;
4.未定义变量
变量的种类
变量号 变量类型
用途
#0
空变量
总为空
#1~#33
#100~#199 #500~#999
局部变量 公共变量
只能用在当前宏程序中存储变量, 断电后数据初始化
在不同的程序中意义相同,各宏程 序公用。断电后#100~#199初始化 为空, #500~#999数据保存
#1000~
系统变量 可用于读写CNC运行时的各种数据
#1= #1+ #17; IF[#1 GE #26] GOTO1; #1= #26; N1 G00 G90 Z[#2 + #3]; G01 Z#1 F300; G00 Z0; #2= #1; #3= 1.0; END1;
钻孔最终深度赋值 每次钻孔深度赋值 当次钻孔深度坐标初始化 前次钻孔深度坐标初始化 钻孔深度空程量初始化
足
执行的操作
时
上一页
常用格式
(当前值)=(初值); WHILE [(当前值)比较(目标值)] DO m; (执行循环操作); (当前值)=(当前值)±1; ENDm;
四、简单练习
• 深孔加工 • 铣圆内腔 • 粗车外圆 • 数据计算
#26= -30.0; #17= -10.0; #1= 0; #2= 0; #3= 0; ቤተ መጻሕፍቲ ባይዱHILE[#1 GT #26] DO1;
意思 #2=#1 #2≠#1 #2>#1 #2<#1 #2≥#1 #2≤#1
条件表达式
EQ和NE中的<空>不同于0
当#1=<空>时
#1 EQ #0 ↓
成立
#1 NE 0 ↓
成立
#1 GE #0 ↓
成立
#1 GT 0 ↓
不成立
当#1=0时
#1 EQ #0 ↓
不成立
#1 NE 0 ↓
不成立
#1 GE #0 ↓
ROUND ABS
格式 #i = FIX[ #k ] #i = FUP[ #k ] #i =ROUND[ #k ] #i =ABS[ #k ]
下取整(FIX):舍去小数点以下部分 上取整(FUP):将小数后部分进位到整数部分
计算相应的变量值#1
运算指令 #1= FIX[ #2 ] #1= FUP[ #2 ] #1=ROUND[ #2 ] #1=ABS[ #2 ]
计算当次钻孔深度坐标 与最终钻孔深度比较
记录当次钻孔深度 钻孔深度空程量赋值
将#500~#507的值设为<空>
O9999; #1=500; WHILE[#1 LE 507] DO1;
#[#1]=#0 ; #1=#1+1; END1; M30;
计算SIN0~SIN90的值并赋 值给#500~#509
2.将光标移至欲设定的变量 号上。
• 键入变量号并按 键
• 按换页键 、
和
光标键将光标移至欲设定
的变量号上
3.键入数据并按
3.变量的使用
表示方法
# i = <表达式>
将计算结果赋值 给对应的变量号
常数、变量、函数 和运算符的组合
#1= #2 + 100 ; #1= #2 + #18 * SIN[#5] ;
0 1 2 3 4 5 6 7
进给暂停
○ × ○ × ○ × ○ ×
进给速度 倍率修调
○ ○ × × ○ ○ × ×
准确停止
○ ○ ○ ○ × × × ×
○:有效
×:无效
示例
SETTING值
变量号
功能
赋值
#3005
设定数据
可以
镜向
变量号 #3007
功能
使用外部开关或SETTING 操作设置 的各轴镜像状态可以通过输出信号
一、变量
• 变量的种类 • 变量的显示与设定 • 变量的使用 • 未定义变量
1. 变量的种类
变量的表示 变量符号(#)+ 变量号
例: #10, #1005 ▪ 表达式也可以用于指定变量号,需封闭在括号中。
例: #[#2-1], #[#500/2] ▪ 可在程序段结尾加注释说明变量内容,需用括号
封闭。 例: #2=#3-1(TOOL NUMBER);
• 若满足<条件表达式>,下步操作转移到程序 段号为n的程序段去。
• 若不满足,执行下个程序段。 IF [<条件表达式>] THEN … ;
• 若满足<条件表达式>,执行THEN后的宏程 序语句,只执行一个语句。
IF[#1 EQ #2] THEN #3=0;
GOTO
IF
条件表达
是
式 条
否
件
满
条件不满足时
格式
#i=SIN[θ] #i=COS[θ] #i=TAN[θ] #i=ASIN[c/a] #i=ACOS[b/a] #i=ATAN[c]/[b]
结果
c/a b/a c/b θ θ θ
•三角函数的角度单位为度。如:90°30′表示为90.5
•反三角函数的取值范围
函 数 No.6004#0=0 No.6004#0=1