FANUC系统宏程序编程
- 格式:doc
- 大小:812.00 KB
- 文档页数:10
本系统宏程序体系采用FANUC系统宏程序B方式实现
一 变量
普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100
G01 X#1 F300
说明:
变量的表示
计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。
例如:#1
表达式可以用于指定变量号。此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]
变量的类型
变量根据变量号可以分成四种类型
#0-#49 局部变量 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为0.调用宏程序时,自变量对局部变量赋值,
#50-#499 公共变量 公共变量在不同的宏程序中的意义相同.当断电时, 公共变量初始化为0.
目前版本中,某些公众变量被赋予特殊意义(系统变量),用于描述CNC运行时各种数据的变化,这些变量包括:
#449用于指明固定循环退刀模式(G98,G99), 如在G99方式下,#449变量为1;如在G98方式下,#449变量为-1.
#450用于指明当前程序段处于绝对坐标编程模式(G90)还是相对坐标编程模式(G91).如在G90方式下,#450变量为1;如在G91方式下,#450变量为-1.
#451,#452,#453,#454用于存储刀具当前位置(X,Y,Z,A轴)
在后期的版本中,将会安排专门的空间作为系统变量区.
变量值的范围
局部变量和公共变量在系统内采用浮点数方式存储
小数点的省略
当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
变量的引用
为在程序中使用变量值,指定后跟变量号的地址。
例如:G01X#1+#2F#3或者G01X[#1+#2]F#3
限制
程序号,顺序号和任选程序段跳转号不能使用变量。
例:下面情况不能使用变量:
0#1;
/#2G00X100.0;
N#3Y200.0;
二 算术运算和逻辑运算
置换
#I=#j
算术运算
加:#I=#j+#k,减:#I=#j-#k,乘:#I=#j*#k,除:#I=#j/#k。
逻辑运算
下一版本将增加以下函数调用:
与:#I=#J AND #k或:#I=#J OR #k,
异:#I=#J XOR #k,
函数 正弦:#I=SIN[#j],余弦:#I=COS[#j] 正切:#I=TAN[#j]
(目前版本角度单位为弧度,后续版本将改为度)
下一版本将增加以下函数调用:
反正切:#I=ATAN[#j]
平方根:#I=SQRT[#j],绝对值:#I=ABS[#j]
下取整:#I=FIX[#j],上取整:#I=FUP[#j]
四舍五入:#I=ROUND[#j]
转移与循环
在宏程序中,使用GOTO语句和IF语句可以改变程序的执行方向,转移和循环指令有3种。
无条件的转移
格式:GOTO n;n为程序的顺序号(1—9999)
如GOTO 99,GOTO #10
条件转移
格式:IF[〈条件式〉]GOTO n
条件式的运算符由两个字母组成,用于两个值的比较,运算符有:
“EQ”表示“=”,“NE”表示“≠”,“GT”表示“>”,
“LT”表示“<”,“GE”表示“≥”,“LE”表示“≤”。
循环
格式:WHLE [〈条件式〉] DO m;(m=1,2,3…)
END m
说明:
(1)当条件满足时,执行从Do m到END m之间的程序,否则,转到END m后的程序段。
(2)省略WHILE语句只有DO m…END m,则从DO m到END m之间形成死循环。
(3)在一个子程序中,m不能重复,m取值范围0-999。
三 程序举例
铣椭圆: 轨迹:
椭圆程序代码如下:
%99;定义第99号子程序
G0 X0 Y0 Z3
G0 Z1
G1 Z-5 F150
#1=0;循环变量
#2=34;斜椭圆横向长度
#3=24;斜椭圆纵向长度
N1 #4=#2*COS[#1];斜椭圆算法
#5=#3*SIN[#1]; 斜椭圆算法
#10=#4*COS[45]-#5*SIN[45]; 斜椭圆算法, 45°为斜椭圆横轴与X轴夹角
#11=#4*SIN[45]+#5*COS[45]; 斜椭圆算法
G41 P1.3 G1X#10Y#11;以左半径补偿,刀具半径1.3方式进行斜椭圆加工 #1=#1+1;循环变量递增,递增量为1,该值越小,精度越高
IF#1LT370GOTO1;斜椭圆加工退出条件判别
G40G1X0Y0;半径补偿结束
M99;子程序结束
铣半球:
轨迹:
铣半球代码如下:
%100;定义第99号子程序
G90G0G54X-10.Y0M3S4500
Z5.
#1=0.5;循环变量,用于表示Z轴下刀深度
WHILE#1LE5DO1,当下刀深度>=5时,WHILE循环结束
#2=5-#1;#2变量用于后续半球算法的解算
#3=SQRT[25-#2*#2] ;半球算法 G1Z-#1F20;加工代码
X-#3F500;加工代码
G2Y0I#3;加工代码
#1=#1+0.1;循环变量递增,递增量为0.1,该值越小,精度越高
END1
G0Z5.M5
M99
铣喇叭:
轨迹:
铣喇叭代码如下:
%101;定义第99号子程序
#1=0
#2=0
G0 Z1.5
X15 Y0
N11 #2=3*SIN[#1]
#3=3+3*[1-COS[#1]]
G01 Z-#2 F40
X#3
G03 X#3 I-#3
G01 X15 Y0
#1=#1+3
IF [#1 LE 90] GOTO 11
G0 Z3
M99 固定循环指令G81的实现:
本系统可通过宏指令实现用户自定义G指令,下面以G81指令实现为例进行讲解:
G81循环可以用于镗孔,执行程序G81 X~ Y~ Z~ A~ B~ C~ R~ L~ ,其过程如下:
1. 预备移动。
2. 以当前进给移动Z轴到Z位置。
3. Z轴以最大进给速度回缩到清除碎片的Z轴位置。
例 1. 假定当前点的坐标为(1、2、3),被选平面为XY平面,执行下面的数控代码:
G90 G81 G98 X4 Y5 Z1.5 R2.8
G90把距离模式设定为绝对距离模式,G98设定回缩模式是回到循环起始点,G81设定固定循环只运行一次。X数字和 X位置为 4,Y数字和 Y位置为 5,Z数字和Z位置为 1.5, R数字和清除碎片时Z轴位置为2.8,执行上面的程序会发生以下动作:
1. 平行于XY平面以最大进给速度移动到坐标为(4、5、3) 的位置。
2. 平行于Z轴以最大进给速度移动到坐标为(4、5、2.8) 的位置。
3. 平行于Z轴进给到坐标为(4、5、1.5)的位置。
4. 平行于Z轴以最大进给速度移动到坐标为(4、5、3) 的位置。
例2. 假定当前点的坐标为(1、2、3),被选平面为XY平面,执行下面的数控代码:
G91 G81 G98 X4 Y5 Z-0.6 R1.8 L3
G91把距离模式设定为增量距离模式,G98设定回缩模式是回到循环起始点,G81设定固定循环次数为3次。X数字为4,Y数字为5,Z数字为-0.6,R数字为1.8, X初始位置为 5 (=1+4), Y初始位置为7 (=2+5),
Z初始位置为4.8 (=1.8+3),Z位置为4.2 (=4.8-0.6),固定循环开始前的Z位置为3。执行上面的程序会发生以下动作:
第一个动作是沿Z轴以最大进给速度移动到坐标为(1、2、4.8)的位置,因为固定循环开始前的Z位置小于清除碎片的Z轴位置。
第一个循环包括三个动作:
1. 平行于XY平面以最大进给速度移动到坐标为(5、7、4.8)的位置。
2. 平行于Z轴进给到坐标为(5、7、4.2) 的位置。
3. 平行于Z轴以最大进给速度移动到坐标为(5、7、4.8) 的位置。
第二个循环包括三个动作,X位置为9 (=5+4),Y位置为12 (=7+5) 。 1. 平行于XY平面以最大进给速度移动到坐标为(9、12、4.8)的位置。
2. 平行于Z轴进给到坐标为(9、12、4.2) 的位置。
3. 平行于Z轴以最大进给速度移动到坐标为(9、12、4.8) 的位置。
第三个循环包括三个动作,X位置为13 (=9+4),Y位置为17 (=12+5)。
1. 平行于XY平面以最大进给速度移动到坐标为(13、17、4.8)的位置。
2. 平行于Z轴进给到坐标为(13、17、4.2) 的位置。
3. 平行于Z轴以最大进给速度移动到坐标为(13、17、4.8) 的位置。
G81实现代码如下:
(#490 X #491 Y #492 Z #493 R #494 L)
;#490变量接收G81指令X功能字
;#491变量接收G81指令Y功能字
;#492变量接收G81指令Z功能字
;#493变量接收G81指令R功能字
;#494变量接收G81指令L功能字
O9081;自定义G81指令子程序号,如预定义G103号指令,则该指令的子程序号
;为9103
#1=#451;#1变量用于接收刀具X轴位置,注意该位置坐标为工件坐标
#2=#452; #2变量用于接收刀具Y轴位置,注意该位置坐标为工件坐标
#3=#453; #3变量用于接收刀具Z轴位置,注意该位置坐标为工件坐标
IF #450LT0 GOTO1;判别当前坐标模式为绝对坐标模式还是增量坐标模式
(绝对坐标模式下变量初始化)
#4=#493;
#5=#492
#6=#490-#1
#7=#491-#2