首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

宏程序在FANUC 0I系统的数控车加工特形件的探讨

数控车削中经常会遇到一些形状复杂但却有一定规律的零件,如:椭圆、抛物线、双曲线等异形曲面的加工,尽管使用各种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;(返回主程序)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171215G049YW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券