宏程序.docx
《宏程序.docx》由会员分享,可在线阅读,更多相关《宏程序.docx(27页珍藏版)》请在冰豆网上搜索。
宏程序
FUNNC用户宏程序
用户宏程序
能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
l所存入的这一系列指令——用户宏程序
l调用宏程序的指令————宏指令
l特点:
使用变量
一.变量的表示和使用
(一)变量表示
#I(I=1,2,3,…)或#[<式子>]
例:
#5,#109,#501,#[#1+#2-12]
(二)变量的使用
1.地址字后面指定变量号或公式
格式:
<地址字>#I
<地址字>-#I
<地址字>[<式子>]
例:
F#103,设#103=15 则为F15
Z-#110,设#110=250 则为Z-250
X[#24+#18*COS[#1]]
2.变量号可用变量代替
例:
#[#30],设#30=3 则为#3
3.变量不能使用地址O,N,I
例:
下述方法下允许
O#1;
I#2 6.00×100.0;
N#3 Z200.0;
4.变量号所对应的变量,对每个地址来说,都有具体数值范围
例:
#30=1100时,则M#30是不允许的
5.#0为空变量,没有定义变量值的变量也是空变量
6.变量值定义:
程序定义时可省略小数点,例:
#123=149
MDI键盘输一.变量的种类
1.局部变量#1~#33
一个在宏程序中局部使用的变量
例:
A宏程序 B宏程序
… …
#10=20 X#10 不表示X20
… …
断电后清空,调用宏程序时代入变量值
2.公共变量#100~#149,#500~#531
各用户宏程序内公用的变量
例:
上例中#10改用#100时,B宏程序中的
X#100表示X20
#100~#149 断电后清空
#500~#531保持型变量(断电后不丢失)
3.系统变量
固定用途的变量,其值取决于系统的状态
例:
#2001值为1号刀补X轴补偿值
#5221值为X轴G54工件原点偏置值
入时必须输入小数点,小数点省略时单位为μm
一.运算指令
运算式的右边可以是常数、变量、函数、式子
式中#j,#k也可为常量
式子右边为变量号、运算式
1.定义
#I=#j
2.算术运算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3.逻辑运算
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
4.函数
#I=SIN[#j]正弦
#I=COS[#j]余弦
#I=TAN[#j]正切
#I=ATAN[#j]反正切
#I=SQRT[#j] 平方根
#I=ABS[#j] 绝对值
#I=ROUND[#j] 四舍五入化整
#I=FIX[#j] 下取整
#I=FUP[#j] 上取整
#I=BIN[#j] BCD→BIN(二进制)
#I=BCN[#j] BIN→BCD
1.说明
1)角度单位为度
例:
90度30分为90.5度
2)ATAN函数后的两个边长要用“1”隔开
例:
#1=ATAN[1]/[-1]时,#1为了35.0
3)ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入
例:
设#1=1.2345,#2=2.3456,设定单位1μm
G91 X-#1;X-1.235
X-#2 F300;X-2.346
X[#1+#2];X3.580
未返回原处,应改为
X[ROUND[#1]+ROUND[#2]];
4)取整后的绝对值比原值大为上取整,反之为下取整
例:
设#1=1.2,#2=-1.2时
若#3=FUP[#1]时,则#3=2.0
若#3=FIX[#1]时,则#3=1.0
若#3=FUP[#2]时,则#3=-2.0
若#3=FIX[#2]时,则#3=-1.0
5)指令函数时,可只写开头2个字母
例:
ROUND→RO
FIX→FI
6)优先级
函数→乘除(*,1,AND)→加减(+,-,OR,XOR)
例:
#1=#2+#3*SIN[#4];
7)括号为中括号,最多5重,园括号用于注释语句
例:
#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)
一.转移与循环指令
1.无条件的转移
格式:
GOTO 1;
GOTO #10;
2.条件转移
格式:
IF[<条件式>] GOTO n
条件式:
#j EQ#k表示=
#j NE#k表示≠
#j GT#k表示>
#j LT#k表示<
#j GE#k表示≥
#j LE#k表示≤
例:
IF[#1 GT 10] GOTO 100;
…
N100 G00 691 X10;
例:
求1到10之和
O9500;
#1=0
#2=1
N1 IF [#2 GT10] GOTO 2
#1=#1+#2;
#2=#2+1;
GOTO 1
N2 M301.循环
格式:
WHILE[<条件式>]DO m;(m=1,2,3)
…
…
…
ENDm
说明:
1.条件满足时,执行DOm到ENDm,则从DOm的程序段
不满足时,执行DOm到ENDm的程序段
2.省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循环
3.嵌套
4.EQ NE时,空和“0”不同
其他条件下,空和“0”相同
例:
求1到10之和
O0001;
#1=0;
#2=1;
WHILE [#2LE10] DO1;
#1=#1+#2;
#2=#2+#1;
END1;
M30;
FANUC宏程序条件循环格式
。
。
。
。
WHILE[。
。
。
。
。
。
。
]DO1
。
。
。
。
。
。
当条件未达到要求时,在此范围内循环;当达到条件时
。
。
。
。
。
。
。
END1结束,再继续运行下面的程序
END1
。
。
。
。
条件转换:
LT------小于
LE——小于并等于
GT——大于
GE——大于并等于
一、宏程序下刀
O00001
G54G90G40G0Z20
M3S1000
G0X-70Y-50Z5
#1=-2起始深度为-2
WHILE[#1GE-10]DO1当深度达到大于等于-10时,循环到达END1结束
G1Z#1F200下刀到深度值
G41X-60Y-42D1
Y40
X60
Y-40外形铣削
X-62
G40X-70Y-50
#1=#1-2每循环一次深度下2mm
END1
G90G0Z20
M30
二、铣平面
平面铣削(Ф10刀具)
G54G40G90G0Z20
M3S2400
G0X-70Y-40Z5
G1Z0F600
#1=-40设定#1为Y值,起始值为-40
WHILE[#1LE44]DO1总共6次来回,下面循环1次14mm
X70
Y#1Y方向进给
#1=#1+7走1次增量进给7mm
X-70
Y#1再一次Y方向进给
#1=#1+7再增量Y方向7mm
END1
G90G0Z20
M30
三、椭圆铣削(Ф10刀具)
G54G40G90G0Z20
M3S2400
G0X60Y0Z5
G1Z-5F300
#1=0设定角度为#1,起始角度为0度
WHILE[#1LE360]DO1当角度小于等于360度时,循环结束
#2=COS[#1]*40设#2为X值
#3=SIN[#1]*20设#3为Y值
G42X#2Y#3D1半径补偿到椭圆并铣削椭圆
#1=#1+1每次增量1度
END1
G40X60Y0取消半径补偿
G90G0Z20
M30.
四、分层铣削椭圆
G54G40G90G0Z20
M3S2400
G0X60Y0Z5
#10=-1设定#10为深度起始值
WHILE[#10GE-5]DO2当深度等于-5时循环结束
G1Z#10F800下刀到深度
#1=0设定角度为#1,起始角度为0度
WHILE[#1LE360]DO1当角度小于等于360度时,循环结束
#2=COS[#1]*40设#2为X值
#3=SIN[#1]*20设#3为Y值
G42X#2Y#3D1半径补偿到椭圆并铣削椭圆
#1=#1+1每次增量1度
END1
G40X60Y0取消半径补偿
#10=#10-1每铣一次下1mm
END2
G90G0Z20
M30.
五、球刀铣削凸圆球(球心对刀)
G54G40G90G0Z20
M3S3000
G0X40Y0Z40
G1Z0F500
#1=0设定角度为#1变量,起始值为0度
WHILE[#1LE90]DO1当角度小于等于90度时,循环结束
#2=COS[#1]*35设#2为X值
#3=SIN[#1]*35设#3为Y值
G1X#2Z#3F200刀具从下往上进给
G3I-#2F1000每进给一次,铣削圆
#1=#1+1每次增量1度
END1
G90G0Z100
M30
六、平刀铣削凸球面
G54G40G90G0Z20
MS3000
G0X40Y0Z40
G1Z0F300
#1=0设定#1为角度变量,起始值为0度
WHILE[#1LE90]DO1
#2=COS[#1]*30+5X值
#3=SIN[#1]*30Z值
G1X#2Z#3F200
G3I-#2
#1=#1+1
END1
G90G0Z20
M30
七、球刀铣削凹球面
G54G40G90G0Z20
M3S3000
G0X0Y0Z20
#1=20#1为角度变量,从工件上方开始铣削
WHILE[#1GE-90]DO1
#2=COS[#1]*25X值
#3=SIN[#1]*25Z值
G1X#2Z#3F300
G3I-#2F1000
#1=#1-1
END1
G90G0Z100
M30
八、铣削锥圆台(Ф10平刀)
G54G40G90G0Z20
M3S3000
G0X20Y0Z20
#1=10
#2=0
#3=-30
WHILE[#2LE30]DO1
#4=10-TAN[#1]*#2+5
#5=#2+#3
G1X#4Z#5F200
G42G3I-#4F1000
#2=#2+0.1
END1
G90G0Z20
M30
九、螺旋下刀加工孔
1、不用半径补偿
O0001(Ф12平刀)
G54G90G40G0X0Y0Z20
M3S2200
G1Z0F800
#1=-0.5深度变量
#2=-10总深度
#3=4刀具中心圆半径
X#3走到象限点起刀处
WHILE[#1GE#2]DO1
G2I-#3Z#1
#1=#1-0.5每次下0.5mm
END1
G2I-#3孔底补平
G90G0Z50
M30
2、用半径补偿
O0001(Ф12平刀)
G54G90G40G0X0Y0Z20G3I-#1
M3S2200G90G0Z20
G1Z0F800M30
#1=R孔半径
#2=-0.5深度变量
#3=-10总深度
G41X#1D1补偿到孔半径象限点
WHILE[#2GE#3]DO1
G3I-#1Z#2
#2=#2-0.5
END1
十、用G10指令加工倒圆角
格式:
G10L12P01R
G10参数设置
L12半径偏置
L11长度偏置
P01半径偏置补偿号
R半径偏置值(通过公式计算得出)
图形举例:
O0001(R4球刀,球底为对到点)
G54G90G40M3S3000
G0X-68Y0Z20
#1=0角度变量起始值为0
#2=5倒圆角半径
#3=4球刀半径
WHILE[#1LE90]DO1
#4=COS[#1]*[#2+#3]-#2半径偏置值
#5=SIN[#1]*[#2+#3]-[#2+#3]Z值
G1Z#5F1000先下刀到深度
G10L12P1R#4利用半径补偿参数设置
G41X-60Y0D1
Y40,R20
X60,R20
Y-40,R20铣削轮廓
X-60,R20
Y0
G40X-65Y0
#1=#1+1每次增量1度
END1循环结束
G90G0Z20
M30
十一、G10指令加工凸半圆球,平刀加工(Ф10平刀)
G54G90G40M3S1200
G0X30Y0Z10
#1=0角度变量起始值为0
WHILE[#1LE90]DO1
#4=COS[#1]*20+5-20刀具半径偏置值D
#5=SIN[#1]*20-20Z值
G1Z#5F1000下刀
G10L12P1R#4
G41X20Y0D1
补偿铣圆
G3I-20
#1=#1+1
END1
G90G0Z20
M30
十二、G10指令加工锥台(Ф10平刀)
O0001
G54G40G90M3S2500
G0X-60Y0Z10
#1=10角度值
#2=0高度变量起始值为0
#3=-30总深度
WHILE[#2LE30]DO1
#4=5-TAN[#1]*#2刀具半径偏置值D
#5=#2+#3深度值
G1Z#5F1000从下到上铣削
G10L12P1R#4
G41X-50Y0D1
Y30,R10
X60,R10
Y-30,R10铣削轮廓
X-60,R10
Y30
G40X-55Y0
#1=#2+0.1每次增量0.1mm
END1
G90G0Z20M30
十三、用G10指令加工锥度。
圆角不变,平刀加工
O0001
G54G40G90M3S2500
G0X-60Y0Z10
#1=10角度值
#2=0高度变量起始值为0
#3=-30
WHILE[#2LE30]DO1
#4=5-TAN[#1]*#2刀具半径偏置值D
#5=#2+#3深度值
#6=10+TAN[#1]*#2当每次上升一个高度往轮廓补偿进多少,铣圆角就退出多少
G1Z#5F1000从下到上铣削
G10L12P1R#4
G41X-50Y0D1
Y30,R#6
X60,R#6
Y-30,R#6铣削轮廓
X-60,R#6
Y30
G40X-55Y0
#1=#2+0.1每次增量0.1mm
END1
G90G0Z20
M30
十四、用G10指令加工四面锥度,两面角度不一样,平刀加工
O0001(Ф10平刀)
G54G40G90M3S2500
G0X-60Y-40Z10
#1=15Y方向角度
#2=10X方向角度
#3=0高度变量起始值为0
#4=-30总深度
WHILE[#3LE30]DO1
#5=5-TAN[#1]*#3半径偏置值D,以X方向为基准
#6=#3+#4深度值
#7=#3*[TAN[#1]-TAN[#2]]两角度半径偏值差值
G1Z#6F1000
G10L12P1R#5
G42X-52Y-[30+#7]D1加上半径偏值的差值
X50
Y[30+#7]
X-50
Y-32
G40X-55Y-35
#3=#3+0.1
END1
G90G0Z50
M30
十五、用平底刀加工锥度椭圆
O0001(Ф10平刀)
G54G40G90M3S2500
G0X60Y0Z20
#1=10
#2=0
#3=-30
WHILE[#2LE30]DO1
#4=5-TAN[#1]*#2
#5=#2+#3
G1Z#5F1000
G10L12P1R#4
#10=0
WHILE[#10LE360]DO2
#11=50*COS[#10]
#12=30*SIN[#10]铣椭圆程序
G42X#11Y#12D1
#10=#10+1
END2
#2=#2+0.1
END1
G90G0Z20
M30
十六、用球刀加工椭圆倒圆角
O0001(Ф10球刀)
G54G40G90M3S2500
G0X60Y0Z20
#1=0
WHILE[#1LE90]DO1
#2=COS[#1]*15-10
#3=SIN[#1]*15-15
G1Z#3F1000
G10L12P1R#2
#10=0
WHILE[#10LE360]DO2
#11=50*COS[#10]
#12=30*SIN[#10]
G42X#11Y#12D1
#10=#10+1
END2
#1=#1+1
END1
G90G0Z20
M30