数控车削中经常会遇到一些形状复杂但却有一定规律的零件,如:椭圆、抛物线、双曲线等异形曲面的加工,尽管使用各种C A D/C A M软件来自动编制数控加工程序已经成为现实,但自动生成的程序不能直接应用于生产,所以各种“疑难杂症”的解决往往还要依靠手动编程。手动编程可以使用变量编程即用户宏程序,它是FANU C数控系统中的特殊编程功能,其实质就是带有变量的子程序,用户宏程序本体中既可以使用变量进行编程,还可以用宏指令对这些变量进行赋值、运算等处理,从而将有规律的形状或尺寸用最短的程序段表示出来,编写的程序清晰简洁、逻辑严密、通用性强,在机械加工中得到了广泛应用。
一、宏指令的基本理论
FANUC系统提供两类用户宏指令,即A类宏指令和B类宏指令。早期的FANU C系统中曾广泛使用A类宏指令,主要特征为使用G65代码作为宏指令专用代码,包括宏变量的赋值、运算、条件调用等。FANUC 0i系统使用B类宏指令,其可以兼容A类宏指令,且功能更强大,编程更直观。因此本文重点介绍B类宏指令的基本概念及其用法。
1.变量
普通加工程序直接用数值指定G代码和移动距离,例如:G01X150.0;当使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或由M D I方式设定、修改。例如:#1=#22=100;G0lX#lF0.1;其与G01X100F0.1效果一样。
(1)变量的表示
一般的编程中允许对变量命名,用户宏程序不可以,一个变量需用“#”号和后面的变量号指定。变量号可以是数值或表达式,但必须注意此时表达式必须封闭在“[]”中。例如:#1(主要用于A类宏指令);#[#1+#3+5]若#1=100,#3=2,则该变量表示#107。
(2)变量的类型
变量根据变量号可以分成4种类型
(3)变量值范围
局部变量和公共变量可以是0值或以下范围中的值:-1047~-10-29或10-29~1047,若计算结果超出该范围,则发出报警NO.111。
(4)变量的引用
在程序中的地址后指定变量号即可引用其变量值。例如:G00X#1Z#2;当用表达式指定变量时,必须将表达式放在括号中,例如:G01X[#2+#5] F#1。被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当C N C把10.1428赋值给变量#102,且以1um为单位执行G00 X#102语句时,实际指令值为10.143。改变引用变量的值的符号,要把“—”号放在“#”的前面。即:G00 X —#120。
(5)关于变量的其他说明
表达式可以表示变量号和变量,且两者并不相同。例如:X#[#1+#2]和X[#1+#2]不相等。
在程序中定义变量时,小数点可以省略。例如:当定义#1=108;变量#1的实际值是108.000。
若变量值未定义即为“空”变量。当引用未定义的变量并执行时,变量及地址字都被忽略。例如:当变量#130的值是0,变量#150的值为空时,执行G00X#130Z#150;程序的结果为G00X0。
变量#0总是空变量。其不能写,只能读。
程序号、顺序号和任选程序跳转号不能使用变量。例如:O#2,/#5G00X80;N#6Z100;等语句不能在程序中出现。
2.变量的算术和逻辑运算
宏程序可以利用变量进行算术和逻辑运算,例如减法:#i=#j-#k;运算符右边的表达式可包含常量和“/”或由函数、运算符组的变量。表达式中的变量#j和#k可以用常数赋值,左边的变量也可以用表达式赋值。
(1)运算符的优先级
按照优先的先后顺序依次是:函数乘和除运算(*,/,AND,MOD)加和减运算(+,﹣,OR,XOR)。用“[]”可以改变运算的优先级,最里层的“[]”优先运算,“[]”最多可以嵌套使用5级(包括函数内部使用的括号)当超出5级时,会出现NO.118报警。
(2)变量的赋值
直接赋值
变量可以在操作面版上用M D I方式直接赋值,也可以在程序中以等式方式赋值,但等号左边不能用表达式。
如:#110=60;
#110=40+30;
引用赋值
宏程序以子程序方式出现,所用的变量可在宏调用时赋值。如:G65 P0060 X120 Z30 F100;此程序段中,X,Z不代表进给字,而是对应于宏程序中的变量号,变量的具体数值由引数后的数值决定。
二、宏程序的功能语句
在程序中,使用G O T O和IF语句可以起到改变和控制程序流向的作用。有4种转移和循环操作可供使用:
1.无条件转移语句(GOTO)
转移到有顺序号m的程序段,如:G O T O1;(转移到第一行)。
2.条件转移IF[表达式]GOTOm如果条件表达式满足,转移到标有顺序号m的程序段;如果条件不满足,则执行下一个程序段(如图1所示)。
3.条件转移IF[表达式]THEN
如果表达式满足,执行预先决定的宏程序语句,且只执行一个宏程序语句。例如:I F[#1EQ#3] T HE N #4=8;表示如果#1和#3的值相同,将8赋给#4。
4.循环功能(WHILE)语句
如果WHIL E后指定的表达式条件满足,执行D O到E N D之间的程序;否则,转到E N D后的程序(如图2所示)。
三、宏程序的调用
宏程序的调用可以通过指令M98或G65来实现,使用M98方式调用和子程序调用格式一样,但使用前必须了解宏程序使用了哪些变量,并对变量赋值。G65指令称为宏程序非模态调用指令,其使用格式如:G65 P0040 L6自变量地址;P为宏程序号。L为调用次数,缺省时为1次。自变量地址为用户使用系统提供的自定义地址号表达的变量值。
四、宏程序在椭圆加工中的应用实例
一带有椭球面的工件(如图3所示)。长轴a=40㎜,短轴b=20㎜。
椭圆标准方程为:(X-m)2
/b2
+(Z-n)2
/a2
=1,m,n
分别为X方向和Z方向中心坐标。
参数方程:Z=20cosΦ X=2×10sinΦ
椭球的中心为图3中的(0,0)点,但一般工件坐标系建立在工件的右端面,为了让椭球的中心与工件坐标系重合,通过程序将椭球的中心向右移动一个长半轴即#103=20,这样才能顺利地完成工件的加工。手工编制加工程序:
O0005
N10G98;
N20T0202;
N30M03S800;
N40G00X100Z100;
N50G00X30Z10;
N60G73U2W2R5;
N70G73P80Q140U0.5W0.1F100;
N80G01X0Z0F50;
N90M98P0002;
N100G01X20Z-50;
N110Z-60;
N120G01X28;
N130G00X100;
N140Z10;
N150M00;
N160G42X25Z2;
N170M03S1000;
N180G70P80Q140F60;
N190G40G00X100;
N200Z100
N210M30;
子程序
N10T0202;
N20M03S500;
N30G01X30Z10F50;
N40#101=20;
N50#102=10;
N60#103=20;
N70#104=SQRT[#101*#101-#103*#103];
N80G01X#104Z[#103-20];
N90#103=#103-0.5;
N100IF [#103GT-15] GO TO 70;
N110M99;(返回主程序)
领取专属 10元无门槛券
私享最新 技术干货