FANUC 0iMC系统加工中心A或铣床宏程序.docx
《FANUC 0iMC系统加工中心A或铣床宏程序.docx》由会员分享,可在线阅读,更多相关《FANUC 0iMC系统加工中心A或铣床宏程序.docx(35页珍藏版)》请在冰豆网上搜索。
FANUC0iMC系统加工中心A或铣床宏程序
FANUC-0i-MC系统宏程序
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
(一)变量
1.变量的表示
变量用变量符号(#)和后面的变量号指定,如:
#1;表达式可以用于指定变量号,此时表达式必须封闭在括号中,如:
#[#1+#2-12]。
变量号可用变量代替,如#[#3],设#3=1,则#[#3]为#1。
2.变量的类型
变量根据变量号可以分成四种类型,具体见表1-1。
表1-1变量的类型
变量号
变量类型
功能
#0
空变量
该变量总是空,没有值能赋给该变量。
#1~#33
局部变量
局部变量只能用在宏程序中存储数据,例如,运算结果。
当断电时局部变量被初始化为空。
调用宏程序时,自变量对局部变量赋值。
#100~#199
#500~#999
公共变量
公共变量在不同的宏程序中的意义相同。
当断电时变量#100~#199初始化为空;变量#500~#999的数据保存,即使断电也不丢失。
#1000~
系统变量
系统变量用于读和写CNC的各种数据,例如,刀具的当前位置和补偿值。
3.变量的引用
在地址后指定变量号即可引用其变量值。
当用表达式指定变量时,要把表达式放在括号中。
如:
G01X[#1+#2]F#3;
改变引用变量值的符号,要把负号“-”放在#的前面,如:
G00X-#1;
当引用未定义的变量时,变量及地址字都被忽略,如:
当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为G00X0。
在编程时,变量的定义、变量的运算只允许每行写一个(见表1-2),否则系统报警。
表1-2变量的正确和错误编程方法对比
正确的编程方法
错误的编程方法
N100#1=0
N100#1=0#2=6#3=8
N110#2=6
N110#4=#2*SIN[#1]+#3#5=#2-#2*COS[#1]
N120#3=8
N130#4=#2*SIN[#1]+#3
N140#5=#2-#2*COS[#1]
(二)算术和逻辑运算
变量的算术和逻辑运算见表1-3。
表1-3算术和逻辑运算
功能
格式
备注
功能
格式
备注
定义
#i=#j
平方根
#i=SQRT[#j]
加法
减法
乘法
除法
#i=#j+#k
#i=#j-#k
#i=#j*#k
#i=#j/#k
绝对值
#i=ABS[#j]
舍入
#i=ROUND[#j]
四舍五入取整
上取整
#i=FUP[#j]
下取整
#i=FIX[#j]
正弦
反正弦
余弦
反余弦
正切
反正切
#i=SIN[#j]
#i=ASIN[#j]
#i=COS[#j]
#i=ACOS[#j]
#i=ATN[#j]
#i=ATAN[#j]/[#k]
角度以度指定。
表示为65.5度
自然对数
#i=LN[#j]
指数函数
#i=EXP[#j]
或
#i=#jOR#k
逻辑运算一位一位地按二进制数执行
异或
#i=#jXOR#k
与
#i=#jAND#K
从BCD转为BIN
从BIN转为BCD
#i=BIN[#j]
#i=BCD[#j]
用于与PMC的信息交换
(BIN:
二进制;BCD:
十进制)
几点说明:
1.上取整和下取整
CNC处理数值运算时,若操作后产生的整数绝对值大于原数的绝对值时为上取整;若小于原数的绝对值为下取整。
对于负数的处理应注意。
如:
#1=1.2,#2=-1.2,则#3=FUP[#1]→#3=2;#3=FIX[#1]→#3=1;#3=FUP[#2]→#3=-2;#3=FIX[#2]→#3=-1。
2.运算次序
函数→乘和除运算(*、/、AND)→加和减运算(+、-、OR、XOR)。
3.括号嵌套
括号(方括号)用于改变运算次序。
括号可以使用5级,包括函数内部使用的括号。
圆括号用于注释语句。
如:
#1=SIN[[[#2+#3]*#4+#5]*#6](3重括号)
4.运算符
运算符见表1-4。
表1-4运算符
运算符
含义
运算符
含义
EQ
等于(=)
GE
大于或等于(≥)
NE
不等于(≠)
LT
小于(<)
GT
大于(>)
LE
小于或等于(≤)
5.反三角函数的取值范围
(1)#i=ASIN[#j]
当参数No.6004#0设为“0”时,90°~270°;当参数No.6004#0设为“1”时,-90°~90°。
(2)#i=ACOS[#j]
取值范围为0°~180°。
(3)#i=ATAN[#j]/[#k]
当参数No.6004#0设为“0”时,0°~360°;当参数No.6004#0设为“1”时,-180°~180°。
(三)宏程序语句和NC语句
下面的程序段为宏程序语句:
1.包含算术或逻辑运算(=)的程序段;
2.包含控制语句(如:
GOTO、DO、END)的程序段;
3.包含宏程序调用指令(如:
用G65、G66、G67或其它G指令、M指令调用宏程序)的程序段。
除了宏程序语句以外的任何程序段都为NC语句。
(四)转移和循环
在程序中,使用GOTO语句和IF语句可以改变控制的流向。
1.无条件转移(GOTO语句)
转移到标有顺序号N的程序段。
可用表达式指定顺序号。
编程格式:
GOTON__(N__:
顺序号。
1~99999)
例:
GOTO1
GOTO#10
2.条件转移(IF语句)
IF之后指定条件表达式。
(1)如果指定的条件表达式满足时,转移到标有顺序号N的程序段;如果指定的条件表达式不满足,执行下个程序段。
编程格式:
IF[条件表达式]GOTON__
例:
如果变量#1大于10,转移到程序段号N70的程序段。
(2)如果条件表达式满足,执行预先决定的宏程序语句。
只执行一个宏程序语句。
编程格式:
IF[条件表达式]THEN宏程序语句
例:
如果#1和#2的值相同,0赋给#3→IF[#1EQ#2]THEN#3=0
3.循环(WHILE语句)
在WHILE后指定一个条件表达式。
当指定条件满足时,执行从DO到END之间的程序。
否则,转到END后的程序段。
编程格式:
WHILE[条件表达式]DOm
1,2,3
…
ENDm
DO后的号和END后的号是指定程序执行范围的标号,标号值为1,2,3。
循环语句的嵌套可以使用以下几种:
(1)标号1到3可以根据要求多次使用。
(2)循环可以从里到外嵌套3级
图1-1圆弧的宏程序
(3)控制可以转到循环的外边
例1-1用G1指令编写图1-1中AB圆弧的宏程序如下(不考虑刀具半径):
用IF语句
用WHILE语句
%
%
:
3012
程序名
:
3112
程序名
M6T1
换上1号刀
M6T1
换上1号刀
G54G90G0G43H1Z50
选择坐标系,调入长度补偿
G54G90G0G43H1Z50
选择坐标系,调入长度补偿
M3S800
主轴正转,转速800r/min
M3S800
主轴正转,转速800r/min
X30Y0
快速定位到A点上方
X30Y0
快速定位到A点上方
Z2
主轴下降
Z2
主轴下降
G1Z-2F30
切入Z-2
G1Z-2F30
切入Z-2
#1=0
被加数变量的初值
#1=0
被加数变量的初值
#2=30
存储数变量的初值
#2=30
存储数变量的初值
N1#3=#2*COS[#1]
计算变量
WHILE[#1LE90]DO1
当角度小于等于90时循环DO1
#4=#2*SIN[#1]
计算变量
#3=#2*COS[#1]
计算变量
IF[#1GT90]GOTO2
当角度大于90时转移到N2
#4=#2*SIN[#1]
计算变量
G1X#3Y#4F50
以50mm/min进给
G1X#3Y#4F50
以50mm/min进给
#1=#1+1
计算和数(角度增加1度)
#1=#1+1
计算和数
GOTO1
转移到N1
END1
循环到END1
N2G0Z200
快速上升
G0Z200
快速上升
G49Z0
取消长度补偿
G49Z0
取消长度补偿
M30
程序结束
M30
程序结束
%
%
(五)宏程序调用
宏程序的调用方法有:
①非模态调用(G65);②模态调用(G66、G67);③用G指令调用宏程序;④用M指令调用宏程序;⑤用M指令调用子程序;⑥用T指令调用子程序。
宏程序调用不同于子程序调用(M98),用宏程序调用可以指定自变量(数据传送到宏程序),M98没有该功能。
1.非模态调用(G65)
编程格式:
G65P__L
<自变量指定>
P__:
要调用的程序
:
重复次数(1~9999的重复次数,省略L值时,默认值为1)
自变量:
数据传递到宏程序(其值被赋值到相应的局部变量)
如:
A1.0代表#1=1.0
B2.0代表#2=2.0
自变量的指定形式有两种。
自变量指定Ⅰ使用除了G、L、O、N和P以外的字母,每个字母指定一次(表1-5);自变量指定Ⅱ(表1-6)使用A、B、C和Ii、Ji和Ki(i为1~10)。
根据使用的字母,自动地决定自变量的类型。
任何自变量前编写指定G65。
表1-5自变量指定Ⅰ
地址
变量号
地址
变量号
地址
变量号
地址
变量号
地址
变量号
地址
变量号
地址
变量号
A
#1
I
#4
D
#7
H
#11
R
#18
U
#21
X
#24
B
#2
J
#5
E
#8
M
#13
S
#19
V
#22
Y
#25
C
#3
K
#6
F
#9
Q
#17
T
#20
W
#23
Z
#26
表1-6自变量指定Ⅱ
地址
变量号
地址
变量号
地址
变量号
地址
变量号
地址
变量号
地址
变量号
A
#1
I1
#4
I3
#10
I5
#16
I7
#22
I9
#28
B
#2
J1
#5
J3
#11
J5
#17
J7
#23
J9
#29
C
#3
K1
#6
K3
#12
K5
#18
K7
#24
K9
#30
I2
#7
I4
#13
I6
#19
I8
#25
I10
#31
J2
#8
J4
#14
J6
#20
J8
#26
J10
#32
K2
#9
K4
#15
K6
#21
K8
#27
K10
#33
2.模态调用(G66)
编程格式:
G66P__L
<自变量指定>
…
G67
P__:
要调用的程序
:
重复次数(1~9999的重复次数,省略L值时,默认值为1)
自变量:
数据传递到宏程序(其值被赋值到相应的局部变量)
如:
A1.0代表#1=1.0
B2.0代表#2=2.0
指定G67指令时,其后面的程序段不再执行模态宏程序调用。
(六)宏程序的编制
(a)(b)
图1-2球面台与凹球面宏程序加工
数控系统不能同时处理宏程序中的坐标位置计算和半径补偿的计算,即数控系统在遇到宏程序的程序段时将取消半径补偿的功能。
因此在编制宏程序时必须计算出刀具中心的轨迹,并且以此轨迹作为编程的轨迹,这一点在编程过程中必须注意。
1.用立铣刀加工球面台、用球铣刀加工凹球面的宏程序
例1-2在图1-2a、b中,球面的半径为SR20(#2)、球面台展角(最大为90°)为
(#6),图1-2a中所用立铣刀的半径为R8(#3);图2-2b中所用球铣刀的半径为R6(#3),球铣刀的刀位点在球心处,在对刀及编程时应注意。
球面台外圈部分应先切除,即已加工出圆柱,程序略。
用立铣刀加工球面台的宏程序为:
%
:
3113
程序名
N10M6T1
换上1号刀,
球铣刀
N20G54G90G0G43H1Z200
刀具快速移动Z200处(在Z方向调入了刀具长度补偿)
N30M3S2000
主轴正转,转速2000r/min
N40X0Y0
刀具快速定位(下面#1=0时#5=0)
N50Z2
Z轴下降
N60M8
切削液开
N70G1Z0F50
刀具移动到工件表面的平面
N80#1=0
定义变量的初值(角度初始值)
N90#2=20
定义变量(球半径)
N100#3=8
定义变量(刀具半径)
N110#6=67
定义变量的初值(角度终止值)
N120WHILE[#1LE67]DO1
循环语句,当#1≤67°时在N120~N190之间循环,加工球面
N130#4=#2*[1-COS[#1]]
计算变量
N140#5=#3+#2*SIN[#1]
计算变量
N150G1X#5Y0F200
每层铣削时,X方向的起始位置
N160Z-#4F50
到下一层的定位
N170G2I-#5F200
顺时针加工整圆
N180#1=#1+1
更新角度(加工精度越高,则角度的增量值应取得越小,这儿取1°)
N190END1
循环语句结束
N200G0Z200M9
加工结束后返回到Z200,切削液关
N210G49G90Z0
取消长度补偿,Z轴快速移动到机床坐标Z0处
N220M30
程序结束
%
用球铣刀加工凹球面的宏程序为:
%
:
3213
程序名
N10M6T1
换上1号刀,
立铣刀
N20G54G90G0G43H1Z200
刀具快速移动Z200处(在Z方向调入了刀具长度补偿)
N30M3S2000
主轴正转,转速2000r/min
N40X8Y0
刀具快速定位(下面#1=0时#5=#3=8)
N50Z8
Z轴下降(注意球铣刀的刀位点,Z<6就会撞刀=
N60M8
切削液开
N70#1=1
定义变量的初值(角度初始值)
N80#2=20
定义变量(球半径)
N90#3=6
定义变量(刀具半径)
N100#6=67
定义变量的初值(角度终止值)
N110#7=#2-#2*COS[#6]
计算变量
N120G1Z-[#7-#3]F50
刀具向下切削
N130WHILE[#1LE67]DO1
循环语句,当#1≤67°时在N130~N190之间循环,加工凹球面
N140#4=[#2-#3]*COS[#1]-#2*COS[#6]
计算变量
N150#5=[#2-#3]*SIN[#1]
计算变量
N160Z-#4F50
到上一层的定位
N170G1X#5Y0
每层铣削时,X方向的起始位置
N180G3I-#5F200
逆时针加工整圆
N190#1=#1+1
更新角度
N200END1
循环语句结束
N210G0Z200M9
加工结束后返回到Z200,切削液关
N22G49G90Z0
取消长度补偿,Z轴快速移动到机床坐标Z0处
N230M30
程序结束
%
2.用键槽铣刀加工圆锥台的宏程序
例1-3在图1-3中,圆锥台上面的半径为R12(#2)、下面的半径为R20(#3),键槽铣刀的半径为R6(#6)。
圆锥台R20以外部分应先切除(即已加工出圆柱),程序略。
(a)放射切削(b)等高切削
图1-3圆锥台的宏程序加工
(1)用放射切削时,编写的宏程序为:
%
:
3114
程序名
N10M6T1
换上1号刀,
键槽铣刀
N20G54G90G0G43H1Z200
刀具快速移动Z200处(在Z方向调入了刀具长度补偿)
N30M3S2000
主轴正转,转速2000r/min
N40X18Y0
刀具快速定位(下面#1=0时#4=#2+#6=18)
N50Z2
Z轴下降
N60M8
切削液开
N70G1Z0F50
刀具移动到工件表面的平面
N80#1=0
定义变量的初值(角度初始值)
N90#2=12
定义变量(锥台上面的半径)
N100#3=20
定义变量(锥台下面的半径)
N110#6=6
定义变量(刀具半径)
N120#9=20
定义变量(圆锥台高)
N130WHILE[#1LE360]DO1
循环语句,当#1≤360°时在N130~N220之间循环,加工圆锥台
N140#4=[#2+#6]*COS[#1]
计算变量
N150#5=[#2+#6]*SIN[#1]
计算变量
N160#7=[#3+#6]*COS[#1]
计算变量
N170#8=[#3+#6]*SIN[#1]
计算变量
N180G1X#4Y#5Z0F200
铣削时,圆锥台上面的起始位置
N190X#7Y#8Z-#9
铣削时,圆锥台下面的终止位置
N200G0Z0
快速抬刀
N210#1=#1+1
更新角度(加工精度越高,则角度的增量值应取得越小,这儿取1°)
N220END1
循环语句结束
N230G0Z200M9
加工结束后返回到Z200,切削液关
N240G49G90Z0
取消长度补偿,Z轴快速移动到机床坐标Z0处
N250M30
程序结束
%
(2)用等高切削时,编写的宏程序为:
%
:
3214
程序名
N10M6T1
换上1号刀,
键槽铣刀
N20G54G90G0G43H1Z200
刀具快速移动Z200处(在Z方向调入了刀具长度补偿)
N30M3S2000
主轴正转,转速2000r/min
N40X18Y0
刀具快速定位(下面#1=0时#4=#2+#6=18)
N50Z2
Z轴下降
N60M8
切削液开
N70G1Z0F50
刀具移动到工件表面的平面
N80#2=12
定义变量(锥台上面的半径)
N90#3=20
定义变量(锥台下面的半径)
N100#6=6
定义变量(刀具半径)
N110#9=20
定义变量(圆锥台高)
N120#10=0
定义变量的初值
N130#12=ATAN[#3-#2]/[#9]
定义变量(计算角度)
N140WHILE[#10LE#9]DO1
循环语句,当#10≤#9时在N140~N200之间循环,加工圆锥台
N150#11=#2+#6+#10*TAN[#12]
计算变量
N160G1X#11Y0F200
每层铣削时,X方向的起始位置
N170Z-#10F50
到下一层的定位
N180G2I-#11F200
顺时针加工整圆,分层等高加工圆锥台
N190#10=#10+0.1
更新切削深度(加工精度越高,则增量值应取得越小)
N200END1
循环语句结束
N210G0Z200M9
加工结束后返回到Z200,切削液关
N220G49G90Z0
取消长度补偿,Z轴快速移动到机床坐标Z0处
N230M30
程序结束
%
3.用立铣刀加工上圆下方的宏程序
图1-4上圆下方的宏程序加工
例1-4在图1-4中,上圆的半径为R15(#2)、下方的半边长为20(#3),立铣刀的半径为R8(#4)。
下方以外部分应先切除(即已加工出一个方台),程序略。
用放射切削时,编写的宏程序为:
主程序
%
:
3015
主程序名
N10M6T1
换上1号刀,
立铣刀
N20G54G90G0G43H1Z200
刀具快速移动Z200处(在Z方向调入了刀具长度补偿)
N30M3S2000
主轴正转,转速2000r/min
N40Z2M8
Z轴下降,切削液开
N50M98P43115
调用O3115子程序4次
N60G0Z200M9
加工结束后返回到Z200,切削液关
N70G49G90Z0
取消长度补偿,Z轴快速移动到机床坐标Z0处
N80M30
程序结束
%
子程序
%
:
3115
子程序名
N10G68X0Y0R90
增量绕原点旋转90°
N20G0X16.263Y-16.263
快速定位到起始点(#1=-45时刀具中心所处的位置)
N30G1Z0F50
下降到Z0平面
N40#1=-45
定义变量的初值(角度初始值)
N50#2=15
定义变量(上面的半径)
N60#3=20
定义变量(下面的半边长)
N70#4=8
定义变量(刀具半径)
N80#9=20
定义变量(锥台高)
N90WHILE[#1LE45]DO1
循环语句,当#1≤45°时在N90~N180之间循环,加工锥台
N100#5=[#2+#4]*COS[#1]
计算变量
N110#6=[#2+#4]*SIN[#1]
计算变量
N120#7=#3+#4
计算变量
N130#8=#3*TAN[#1]
计算变量
N140G1X#5Y#6Z0F300
铣削时,上面的起始位置
N150X#7Y#8Z-#9
铣削时,下面的终止位置
N160G0Z0
快速抬刀
N170#1=#1+1
更新角度(加工精度越高,则角度的增量值应取得越小,这儿取1°)
N180END1
循环语句结束
N190G0Z2
切削结束后快速返回到Z2平面
N200M99
子程序结束并返回到主程序
%
对于上方下圆、方锥台的宏程序编写可参考进行。
4.加工抛物线回转体的宏程序
抛物线回转体在车灯的加工中是非常常用的,其方程及编程点的计算式见表1-7。
表1-7抛物线方程及刀具中心编程点的计算式
图形
方程及特性点
标准方程:
极坐标方程:
顶点
,焦点
,准线
法线
长
曲率半径
(顶点曲率半径
)
用球铣刀加工抛物线回转体:
用立铣刀加工抛物线回转体:
用球铣刀加工抛物线回转凹面:
所选的球铣刀半径应满足
在由抛物线回转体与回转凹面组成的车灯模具中,凸模注出的为车灯的发光面。
注塑件一般有一定的壁厚,此厚度应