资源描述
用户宏程序(或变量编程)
宏程序是一种特殊的子程序,是用户根据实际需要,用变量,计算机指令,控制指令等编制的用以完成某一机能的子程序。例如非圆曲线的加工程序,自动换刀,自动交换工作台,数控滚齿机的窜刀程序,数控磨床砂轮修正程序等。
特点:1 可以引用变量,可以通过主程序给变量赋值。
2 变量之间可以进行运算(加、减、乘、除、开方、平方等;函数)
3 增加了逻缉功能。
FANUC系统的用户宏程序
一 变量
1 变量的表示
变量用变量符号(#)和后面数字、变量、表达式构成。如#1,#[#5],#[#1+#5-12]。
2 变量的类型-----四种
#0-- -空变量。 该变量总是空,没有值能赋给该变量。
#1~#33-- -局部变量。 局部变量只能用在宏程序中存储数据。断电时局部变量被初始化为空。调用宏程序时,自变量对局部变量赋值。
#100~#149, #500~#549 公共变量。它在不同的宏程序中的意义相同。其中#100~#149为操作型变量,断电初始化为空,而#500~#549 为保持型,断电数据也不丢失。
系统变量 用于读和写CNC的各种数据,有固定用途的变量。系统变量包括接口信号,刀具补偿值,报警,模态信息,当前位置,工件坐标系补偿值等。
3 变量的引用
将跟随在地址后的数值用变量来代替。当用表达式指定变量时,要把表达式放在方括号内。如G01 X#100 Z-#101 F#102;G01 X[#1+#3] F#5
在编程时,变量的定义,变量的运算只允许每行写一个。否则系统报警。
二 算术和逻缉运算
例 加法 #i=#j+#k 乘法 #i=#j*#k 平方根 #i=SQRT[#j] 正弦 #i=SIN[#j]
或 #i=#jOR#k
运算次序 函数-----乘和除------加和减
括号嵌套 括号(方括号) 用于改变运算次序. 括号可以使用5级, 包括函数内部使用的括号。如:#1=COS[[#2+#3]*#4]*#5]
运算符:等于(=)-----EQ 不等于(≠)-----NE 大于(>)-----GT
大于或等于(>=)---- GE 小于 (<)-----LT 小于或等于(<= ) LE
三 转移和循环
1无条件转移
编程格式:GOTO N;
2条件转移
编程格式:IF[条件表达式] GOTO N;
IF[条件表达式] THEN 宏程序语句。只执行一个宏程序语句。
例 IF[#1EQ#2]THEN #3=0;如果#1的值与#2的值相等,则将0赋值给#3。
3循环指令
编程格式:WHILF [条件式] Dom(m=1、2、3);
…………
ENDm;
当条件式满足时, 就循环执行WHILE与END之间的程序段m次, 当条件不满足时, 就执行ENDm的下一个程序段.
四 零件加工宏程序编程的步骤
非圆曲线的数控编程加工的思路:当数控系统只具备直线插补,圆弧插补功能时,如何加工非圆曲线轮廓的零件时,在确保加工精度的前提条件下,往往采用短直线或圆弧去近似替代非圆曲线。将曲线细分成若干段,每一段用直线拟合法拟合曲线轮廓,进行直线插补。曲线细分越密加工出的曲线精度越高。
一般由分析图形特征、建立数学模型、定义变量和程序出口、编写参数程序四步组成。
例1 用¢16mm的立铣刀加工长半轴为50, 短半轴为30的椭圆的周边轮廓部分.
椭圆的方程为X2/50*50+Y2/30*30=1
椭圆的方程的另一种表达方式(参数方程) 为:X=50*COSα Y=30*SINα
“α” 是自变量, 坐标值X Z随角度的变化而变化, 是因变量。
#1:自变量角度
#2:因变量X坐标值
#3:因变量Z坐标值
O9001;
N05 #1=0; 定义变量初值(角度)
N10 WHILE[#1LE360]DO1; 循环语句, 当#1的值小等于360°时
在N10~N40之间循环
N15 #2=50*COS[#1] ; 变量计箅
N20 #3=30*SIN[#1]; 变量计箅
N30 G01 X#3 Y#4 F100; 加工
N35 #1=#1+1; 计算变量更新角度,角度增量为1度
N40 END1; 循环语句结束
N50 M99;
例2数控车加工抛物线曲面
抛物线方程:Z=-X*X/40
#101: 曲线上各点的Z坐标
#102: 曲线上各点的X坐标
曲线精加工程序如下: SEIMENS编程:
R1:Z坐标值变量
R2:X函数值变量(半径)
FANUC编程: R3: X坐标值变量(直径)
O111;
G00 X10. Z2.0; G00 X10.0 Z2.0.
#101=0; Z坐标赋初值 R1=0;
MA1:R2=SQRT(-R1*40.0);
R3=R2*2 ;
N10 #101=#101-0.1; Z坐标变量每次减0.1mm G01 X=R3 Z=R1 F100;
#103=SQRT[-#101*40] ;中间变量 R1=R1-0.1;
#104=#103*2; 中间变量 IF R1>=-50. GOTOB MA1;
; GOO Z5.
G01 X#104 Z#101 F100 ; G00 X100. Z100.;
IF [#101GE-50.]GOTO 10 ; M05;
G01 X40.; M30;
G00 X100.0 Z120.0;
M05;
M30;
例3 椭圆手柄的数控车精加工程序
椭圆的标准方程为:X*X/a*a+Y*Y/b*b=1
在数控车床坐标系中X轴为标准方程的Y轴,Z轴为标准方程的X轴。当编程原点与椭圆中心不重合时需进行坐标平移,得到新的方程。
椭圆手柄的曲线方程为:X*X/12.5*12.5+(Z+25)2/25*25=1
椭圆手柄的曲线方程的另一种表达方式(参数方程) 为:
X=12.5*SINα Z=25*COSα-25
注意: 用极坐标编写椭圆时, 应注意终点处的极角不等于图样上已知的平面角146.3度, 经换算后锝到该点的极角为126.86度.
10=12.5*sinα sinα=10/12.5=0.8 α=126.86度
变量设定:
#100: 椭圆X向半轴a的长度
#101: 椭圆Z向半轴b的长度
#102: 自变量角度α
#103: a*sinα
#104: b*cosα
#105: 椭圆上各点在编程坐标系中的X坐标
#106: 椭圆上各点在编程坐标系中的Z坐标
O1234;
T0101; 1号刀(93度硬质合金外圆车刀)
M03 S1200;
G00 X0 Z5.0; 宏程序起点
M98 P402; 调用子程序(精加工宏程序)
G02 X20. Z-70. R40;
G01 Z-85.;
G00 X100. Z100.;
M30;
O402; 椭圆精加工宏程序
#100=12.5; 短半轴赋值
#101=25.; 长半轴赋值
#102=0; 角度自变量α赋值
N40 #103=#100*SIN[#102];
#104=#101*COS[#102];
#105=2*#103; X坐标因变量
#106=#104-25.; Z坐标因变量
G01 X#105 Z#106 F0.1; 直线轨迹拟合
#102=#102+1; 自变量角度增量为1度
IF [#102 LE 126.86] GOTO 40; 条件判断, 极角<=126.86度
M99; 返回主程序
SIEMENS 802D编程:
R1:椭圆X向半轴a的长度
R2: 椭圆Z向半轴b的长度
R3:自变量角度α
R4:a*sinα
R5: b*cosα
R6: 椭圆上各点在编程坐标系中的X坐标
R7: 椭圆上各点在编程坐标系中的Z坐标
AA402;
R1=12.5; 短半轴赋值
R2=25.; 长半轴赋值
R3=0; 角度自变量α赋值
MA1:R4=R1*SINR3;
R5=R2*COSR3;
R6=2*#103; X坐标因变量
R7=R4-25.; Z坐标因变量
G01 X=R6 Z=R7 F0.1; 直线轨迹拟合
R3=R3+1; 自变量角度增量为1度
IF [R3 < 126.86] GOTOB MA1; 条件判断, 极角<=126.86度
M99; 返回主程序
用代数方程编制数控加工程序:自变量为Z,每次变化为1,X为因变量。加工宏程序格式如下:
#1=××; 椭圆Z轴起点坐标
WHILE[#1 GT××(椭圆Z轴终点坐标)]DO1;
#2=[#1-(Z原点至椭圆心距离)]×[#1-(Z原点至椭圆心距离)]/ 长半轴*长半轴;
#3=[1-#2]* 短半轴*短半轴;
#4=SQRT[#3];
#5=2*#4+(X原点至椭圆心距离);X轴直径编程
G01 X#5 Z#1 F0.1;
#1=#1-1;
END1;
例4凸模曲线(双曲线) 的精加工程序
双曲线方程:X=36/Z+3 编制程序时, 根据方程找出各点的X坐标和Z坐标之间的对应关系并设定相应的变量.
#101为方程中的Z坐标(起点Z=72)
#102为方程中的X坐标(起点半径值X=3.5)
#103为工件坐标系中的Z坐标,#103=#101-72.
#104为工件坐标系中的X坐标,#104=2*#102 (直径值)
O555;
…….
G00 X9.0 Z2.0;
#101=72.;
#102=3.5;
N100 #103=#101-72.;
#104=2*#102;
G01 X#104 Z#103 F0.1;
#101=#101-0.1; 自变量Z每次递减0.1mm
#102=36/#101+3; 因变量X坐标(运算)
IF [#101 GE 2.0] GOTO100; 判断Z坐标值大于等于2, 跳转到N100程序段
G28 U0 W0;
M30;
例5绕线筒曲线轮廓的数控车加工程序
该正弦曲线由两个周期组成, 总角度为720度(-630~90度)
正弦曲线方程为:X=34+6*sinα
沿Z轴方向将该曲线分成1000条线段, 每段直线在Z轴方向的间距为0.04mm, 对应其正弦曲线的角度增加720/1000=0.72度 X坐标值,X=34+6sinα
变量设定
例6数控车加工油槽
O0012;(宏B)
M03 S360
N1 T0404;
G10 P4 U-0.2; (可编程数据设定,4号刀刀补。)
G00 X6. Z6;
G32 X-0.3 Z3.3 F3.18;
G32 X-3.2 Z1.3 F3.18;
G32 X-3.2 Z-0.8 F3.18;
G32 X-0.3 Z-3.3 F3.18;
G32 X6. Z-6. F3.18;
G00 Z6.0;
#511=#5081; (#5081:读取当X轴刀具长度补偿值。)
#512=ABS[#511]; (ABS: 取绝对值)
IF [#512GT#501] GOTO2;
IF [#512LT#501] GOTO1;
N2 G0 X100;.
G10 P4 X#500;
M99; (#500=0;#501=3200)
%
若用宏A,只需更改宏语句
G65 H01 P#511 Q#5081;
G65 H22 P#512 Q#511;
G65 H83 P2 Q#512 R#511; H83:大于
G65 H84 P1 Q#512 R#511; H84:小于
例7:数控滚齿机窜刀子程序
13
O9000
G90G01Y#504F100
IF[#505LE#506]GOTO5
IF[#503NE0]GOTO2
N1#504=#504+#502
IF[#504GE#501]GOTO3
G90G01Y#504F20
#505=1
GOTO6
N2#504=#504-#502
IF[#504LE#500]GOTO4
G90G01Y#504F20
#505=1
GOTO6
N3G90G01Y#501F20
#504=#501
#503=1
#505=1
GOTO6
N4G90G01Y#500F20
#504=#500
#503=0
#505=1
GOTO6
N5#505=#505+1
N6M99
#500:Y向起始点
#501:Y向终点
#502: 窜刀量
#503:
#504:当前坐标
#505:几件活一窜
例8求1~100之和 两种程序:
O1;
#1=0; 变量和的初始值设定
#2=1; 加数变量的始值设定
N1 IF[#2GT100] GOTO2; 加数变量的值设定>100转移到N2
#1=#1+#2; 求和计算
#2=#2+1; 下一个加数
GOTO 1; 转移到N1程序段
N2 M30; 程序结束
O2;
#1=0; 变量和的初始值设定
#2=1; 加数变量的初始值设定
WHILE[#2LE100] DO1; 当加数小于等于100时,执行从DO1到END1之间的程序
#1=#1+#2; 求和计算
#2=#2+1; 下一个加数
END1; 条件满足,执行从DO1到END1之间的程序
M30;
例9自动换刀程序
O9000;
#100=#4001;
#101=#4003;
#102=#4120;
#103=#1032AND255;
#104=BIN[#103];
IF [#102LT1]GOTO 2000;
IF [#102GT16]GOTO 2000;
IF [#102EQ#104]GOTO 1000;
G91 G00 G30 Z0 M80;
M81;
M87;
G28 Z0 M77;
T#149;
G30 Z0 M77;
M88;
M86;
M82;
G#100 G#101;
N1000 M99;
N2000 #3000=20 (TOOLNO.ALARM)
五 用户宏程序调用指令(宏B)
1 宏程序非模态调用G65
格式:G65 P(p)L(l)(自变量赋值);
(p):要调用的程序号
(l):重复次数(默认值为1)
(自变量赋值):数据传递到宏程序
例O123; O9011;
. #3=#1+#4;
G01 X#1 Y#3 F150;
. .
.
G65 P9011 A10 I5; (自变量赋值1地址A=用用户宏程序本体中的变
量#1; 地址I=#4 )
.
M30;
2宏程序调用还有模态调用(G66,G67);G代码调用;M代码调用;T代码调用
附:常用非圆曲线方程
1、参数方程
(1)渐开线
圆(半径为a)的渐开线方程为:
(2)摆线
圆(半径为a)的摆线方程为:
2、椭圆、双曲线、抛物线方程
见表
表 椭圆、双曲线和抛物线方程
椭圆、双曲线抛物线的一般参数方程:
1 椭圆: X=a*cosα Y=b*sinα (a: 长半轴,b: 短半轴)
2 双曲线: X=a*secα Y=tgα
3 抛物线: X=2pt*t Y=2pt
实例1、加工如图所示零件椭圆槽,材料为YL12。使用¢10键槽铣刀分两层铣削,每一次切削深度为4㎜,试编程并加工零件。
图1 椭圆槽加工编程
(1)零件图分析
该零件材料为YL12,已知毛坯尺寸为100×100×15的方形坯料,且顶面、底面和四个侧面均已加工好。
(2)工艺分析
①装夹定位的确定 装夹采用压板或平口钳均可。
②加工刀具的确定 为了提高切削效率,采用T01为φ10mm的键槽铣刀,按椭圆槽中心轨迹运动,每次铣削深度为4㎜。
(3)确定加工坐标原点
根据零件图,可设置程序原点为工件中心的上表面。
(4)椭圆长半轴a=40,短半轴b=25,由椭圆方程 得
图1(工件)的刀具清单
产品名称及代号
Xxxxx
零件名称
Xxxx
零件图号
Xxxx
序号
刀具
编号
刀具规格/名称
数量
加工内容
刀具半径/mm
刀具材料
1
T01
Φ10键槽刀
1
Φ10椭圆槽
5
图1(工件)加工工艺表
单位名称
产品名称或
代号
零件名称
零件图号
材料
工序号
工序编号
夹具名称
夹具编号
使用设备
平口+垫块
立式铣床
工序号
加工内容
刀具号
刀具
名称
刀具规格
(mm)
主轴转速
(r / min)
进给速度
(mm / min)
背吃刀量
(mm)
加工余量
(mm)
备注
1
铣椭圆槽
T01
键槽铣刀
Φ10
900
80
0
图1(工件)加工程序单
序号
程序内容
注释
%1510
程序名
N10
G90 G54 G00 X0 Y0 Z100
调用G54坐标系,初始定位
N20
M03 S900
主轴正转,转速900 r / min
N30
X-40 Y0
快速定位至椭圆左端点
N40
G43 Z5 H01
快速下到Z5
N50
#10=-4
Z坐标赋值
N60
IF [#10 GE -8]
条件语句
N70
M98 P0001
调用子程序
N80
#10=#10-4
修改Z坐标
N90
ENDIF
条件语句结束
N100
G01 Z5
抬刀
N110
G00 G49 X0 Y0 Z100
返回起始点
N120
M05
主轴停
N130
M30
程序结束
序号
子程序内容
注释
%0001
程序名
N10
G01 Z[#10] F100
下刀至铣削深度
N20
#1=-40
给自变量X赋值,起点为-40
N30
WHILE[#1LE40]
循环语句,加工上半椭圆
N40
#2=25/40*SQRT[40*40-#1*#1]
计算因变量Y的值
N50
G01 X{#1} Y[#2] F200
直线插补至相邻节点
N60
#1=#1+0.5
修改X坐标
N70
ENDW
循环语句结束
N80
#1=40
给自变量X赋值,起点为40
N90
WHILE[#1GE-40]
循环语句,加工下半椭圆
N100
#2=25/40*SQRT[40*40-#1*#1]
计算因变量Y的值
N110
G01 X{#1} Y-[#2] F200
直线插补至相邻节点
N120
#1=#1-0.5
修改X坐标
N130
ENDW
循环语句结束
N140
M99
子程序结束返回
展开阅读全文