宏程序编程

  • 格式:doc
  • 大小:12.36 MB
  • 文档页数:36

宏程序编程实训要点:●熟悉FANUC系统宏程序编程的基本指令;●掌握常用的几个宏程序应用范例第一节宏程序编程概述宏程序编程简单地解释就是利用变量编程的方法。

在本书第二章中介绍的数控指令,其指令代码的功能是固定的,使用者只需(只能)按照指令规定的参数编程。

但有时候这些指令满足不了用户的需求,数控系统因此提供了宏程序编程功能,利用数控系统提供的变量、数学运算功能、逻辑判断功能、程序循环功能等功能,来实现一些特殊的用法。

宏程序编程实际上是数控系统对用户的开放,在数控系统的平台上进行二次开发,当然这里的开放和开发都是有条件和有限制的。

宏程序与普通程序存在一定的区别,认识和了解这些区别,将有助于宏程序的学习理解和掌握运用,表5-1为宏程序和普通程序的简要对比。

表5-1宏程序和普通程序的简要对比宏程序编程的技术特点和应用领域手工编程是数控编程的基础,在手工编程中使用宏程序编程。

其最大特点就是将有规律的形状或尺寸用最短的程序段表示出来,编写出的程序非常简洁,逻辑严密,通用性强。

任何数控加工只要能够用宏程序完整地表达,即使再复杂,其程序篇幅都比较精炼,任何一个合理、优化的宏程序,极少会超过60行,换算成字节数,至多不过2KB。

即使是最廉价的机床数控系统,其内部程序存储空间也完全容纳得下任何复杂的宏程序。

为了对复杂的加工运动进行描述,宏程序必然会最大限度地使用数控系统内部的各种指令代码,例如直线插补G01指令和圆弧插补G02/G03指令等。

因此机床在执行宏程序时,数控系统的计算机可以直接进行插补运算,且运算速度快,再加上伺服电动机和机床的迅速响应,使得加工效率极高。

宏程序的技术特点,使其特别适宜机械零件的批量加工。

机械零件的形状主要是由各种凸台、凹槽、圆孔、斜平面、回转面等组成,很少包含不规则的复杂曲面,构成其的几何因素无外乎点、直线、圆弧,最多加上各种二次圆锥曲线(椭圆、抛物线、双曲线),以及一些渐开线(常应用于齿轮及凸轮等),所有这些都是基于三角函数、解析几何的应用,而数学上都可以用三角函数表达式及参数方程加以表述,因此宏程序在此有广泛的应用空间,可以发挥其强大的作用。

机械零件绝大多数都是批量生产,在保证质量的前提下要求最大限度地提高加工效率以降低生产成本,一个零件哪怕仅仅节省1秒,成百上千的同样零件合计起来节省的时间就非常可观了。

另外批量零件在加工的几何尺寸精度和形状位置精度方面都要求保证高度的一致性,而加工工艺的优化主要就是程序的优化,这是一个反复调整、尝试的过程,要求操作者能够非常方便地调整程序中的各项加工参数(如刀具尺寸、刀具补偿值、每层切削量、步距、计算精度、进给速度等)。

宏程序在这方面有很大的优越性,只要能用宏程序来表述,操作者就根本无需触动程序本身,而只需针对各项加工参数所对应的自变量赋值做出个别调整,就能迅速的将程序调整到最优化的状态。

如果使用CAD/CAM软件编制机械零件的批量加工程序,前面提到的加工参数,只要其中一项或几项发生变化,再智能的CAD/CAM软件也要根据变化后的加工参数重新计算刀具轨迹,再经后处理生成程序,这个过程繁琐且耗时很多。

当然,宏程序也不是无所不能。

对于主要由大量不规则复杂曲面构成的模具成型零件,特别是各种注塑模、压铸模等型腔类模具的型芯、型腔和电极,以及汽车覆盖件模具的凸模、凹模等,由于从设计、分析到制造的整个产业链在技术层面及生产管理上都是通过以各种CAD /CAM软件为核心(还包括PDM、CAE等)的纽带紧密相联的,从而形成一种高度的一体化和关联性,无论从哪个角度来看,此类零件的数控加工程序几乎百分之百地依赖各种CAD/CAM软件来编制,宏程序在这里的发挥空间是非常有限的。

第二节宏程序基础 (FANUC Oi系统)FANUC 0i系统提供两种用户宏程序,即用户宏程序功能A和用户宏程序功能B。

由于用户宏程序功能A的宏程序需要使用“G65Hm”格式的宏指令来表达各种数学运算和逻辑关系,极不直观,且可读性非常差,因而导致在实际工作中很少人使用它。

由于绝大部分的FANUC系统都支持用户宏程序功能B,本书篇幅有限,只介绍用户宏程序功能B的相关知识。

一.变量普通加工程序直接用数值指定G代码和移动距离;例如:G01和X100.0。

使用用户宏程序时,数值可以直接指定或用变量指定,当用变量时,变量值可用程序或由MDl设定或修改。

例如:#1=#2+100;G01X#1 F80;1.变量的表示宏程序的变量是用变量符号“#”和后面的变量号指定。

例如:#2表达式可以用于指定变量号,这时表达式必须封闭在括号中。

例如:#1[#2+#41-15]2.变量的类型变量根据变量号可以分成四种类型。

表5-2 变量类型变量从功能上主要可归纳为两种,即:系统变量(系统占用部分),用于系统内部运算时各种数据的存储。

用户变量,包括局部变量和公共变量,用户可以单独使用,系统作为处理资料的一部分。

3.变量值的范围局部变量和公共变量可以为0 值或下面范围中的值:-1047到10-29或10-29到1047如果计算结果超出有效范围,则触发程序错误P/S 报警No.111。

4. 小数点的省略当在程序中定义变量值时,小数点可以省略。

例:当定义#1=123;变量#1的实际值是123.000。

5. 变量的引用在地址后指定变量号即可引用其变量值。

当用表达式指定变量时,要把表达式放在括号中。

例如:G01 X[#1+#2] F#3;被引用变量的值根据地址的最小设定单位自动地舍入。

例如:当系统的最小输入增量为0.001mm 单位,指令G00X#1,并将12.3456 赋值给变量#1,实际指令值为G00X12.346;。

改变引用变量的值的符号,要把负号(-)放在#的前面。

例如:G00X-#1;当引用未定义的变量时,变量及地址字都被忽略。

例如:当变量#1的值是0,并且变量#2的值是空时,G00 X#1 Y#2;的执行结果为G00X0;。

注意:从这个例子可以看出,所谓“变量的值是0”与“变量的值是空”是两个完全不同的概念,可以这样理解:“变量的值是0”相当于“变量的数值等于0”,而“变量的值是空”则意味着“该变量所对应的地址根本就不存在,不生效”。

不能用变量代表的地址符有:程序号O,顺序号N,任选程序段跳转号/。

例如以下情况不能使用变量:O#11;/O#22 G0 X100.0; N#33 Y200.0;另外,使用IS0代码编程时,可用“#”代码表示变量,若用EIA代码,则应用“&”代码代替“#”代码,因为EIA代码中没有“#”代码。

二. 系统变量系统变量用于读和写NC 内部数据,例如,刀具偏置值和当前位置数据。

但是,某些系统变量只能读。

系统变量是自动控制和通用加工程序开发的基础,在这里仅介绍与编程及操作相关性较大的系统变量部分。

表5-3 FANUC 0i系统变量一览表1.用系统变量可读和写刀具补偿值。

通过对系统变量赋值,可以修改刀具补偿值。

表5-4 FANUC 0i刀具补偿存储器C的系统变量分开的。

刀具补偿号可达400个,理论上数控系统支持控制达400把刀的刀库。

当刀具补偿号≤200时(一般情况也的确如此),刀具长度补偿(H)也可使用#2001~#2400。

刀具补偿值的系统变量,在宏程序编程中,可以这样使用:假设有一把Φ10mm的立铣刀,在机床上刀号为10号刀,刀具半径补偿(D)为 5.0,即#130lO=5.0 ;刀具半径补偿中的磨损补偿为0.02,即#12010=0.02。

那么在应用宏程序编写加工程序时,就可以有以下形式的描述:#2=#13010;把lO号刀的半径补偿值赋值给变量#2,即#2=5.0。

#3=#12010;把lO号刀的半径补偿值中的磨损补偿值赋值给变量#3,即#3=0.02。

在程序中,调用#2就可以理解为对刀具的识别,设置和调整磨损补偿值(#3)则可以控制10号刀铣削零件的尺寸了。

2. 模态信息正在处理的当前程序段之前的模态信息可以从系统变量中读出。

表5-5 FANUC 0i模态信息的系统变量注:l.P代码为当前选择的附加工件坐标系。

2.当执行#1=#4002时,在#1中得到的值是l7,18或19。

3.系统变量#4001~#4l20不能用于运算指令左边的项。

4.模态信息不能写,只能读。

如果阅读模态信息指定的系统变量为不能用的G代码时,系统则发出程序错误P/S报警。

3.当前位置信息FANUC 0i系统中当前位置信息的系统变量见表5-6。

表5-6 FANUC 0i当前位置信息的系统变量注:l.ABSIO:工件坐标系中,前一程序段终点坐标值。

ABSMT:机床坐标系中,当前机床坐标位置。

ABSOT:工件坐标系中,当前坐标位置。

ABSKP:工件坐标系中,G31程序段中跳跃信号有效的位置。

2.在G31(触发功能)程序段中,当触发信号接通时的刀具位置存储在变量#5061~#5064中。

当G31程序段中的触发信号不接通时,这些变量存储指定程序段的终点值。

3.变量#5081~#5084所存储的刀具长度补偿值是当前的执行值(即当前正在执行中的程序段的量),不是后面的程序段的处理值。

4.移动期间不能读取是由于缓冲(预读)功能的原因,不能读取目标指令值。

4. 工件坐标系补偿值(工件零点偏移值)用系统变量可以读和写工件零点偏移值(表5-7)。

表5-7 FANUC Oi工件零点偏移值的系统变量三.算术和逻辑运算表5-8中列出的运算可以在变量中运行。

等式右边的表达式可包含常量或由函数或运算符组成的变量。

表达式中的变量#j和#k可以用常量赋值。

等式左边的变量也可以用表达式赋值。

其中算术运算主要是指加、减、乘、除函数等,逻辑运算可以理解为比较运算。

表2-8 FANU0 0i算术和逻辑运算一览表从BIN转为BCD #i=BCD[#j]以下是算术和逻辑运算指令的详细说明。

1.反正弦运算 #i=ASIN[#j]1)取值范围如下:当参数(NO.6004#0)NAT位设置为0时,在270°~90°范围内取值。

当参数(NO.6004#0)NAT位设置为l时,在-90°~90°范围内取值。

2)当#j超出-1到1的范围时,触发程序错误P/S报警NO.111。

3)常数可替代变量#j。

2.反余弦运算#i=ACOS[#j]1)取值范围:180°~0°。

2)当#j超出-1到1的范围时,触发程序错误P/S报警NO.111。

3)常数可替代变量#j3.反正切运算#i=ATAN[#j]/[#K]1)采用比值的书写方式(可理解为对边/邻边)。

2)取值范围如下:当参数(NO.6004#0)NAT位设置为0时,取值范围为0°~360°。

例如,当指定#1=ATAN[-1]/[-1]时,#1=225°。