浅谈数控编程中的宏程序应用

/ 1

浅谈数控编程中的宏程序应用

韩成国顾曙光李树勇

韩成国顾曙光李树勇(青岛市技师学院山东青岛266229)

在编程工作中,我们经常把能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来代表它们,使用时只需给出这个总指令就能执行其功能。所存入的这一系列指令称作用户宏程序本体,简称宏程序。这个总指令称作用户宏程序调用指令。在编程时,编程员只要记住宏指令而不必记住宏程序。

用户宏程序与普通程序的区别在于:在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转;而普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。用户宏功能是用户提高数控机床性能的一种特殊功能,在相类似工件的加工中巧用宏程序将起到事半功倍的效果。

宏程序本体既可以由机床生产厂提供,也可以由机床用户自己编制。使用时,先将用户宏主体像子程序一样存入到内存里,然后用子程序调用指令调用。

一、用户宏程序本体的编写格式

用户宏程序本体的编写格式与子程序的格式相同。在用户宏程序本体中,可以使用普通的NC指令,采用变量的NC指令、运算指令和控制指令。

格式如下:

Oxxxx;

#26=#4+#18*Cos[#1];

G90GOOX#26;

……

IF[#22GE#9〕GOTO9;

……

N9M99

变量可以用于宏程序本体,可以指定运算和控制指令,用宏程序调用命令赋予变量实际值。

二、应用实例

圆角加工宏程序应用如图1所示的是某产品上部圆角的加工,如果以圆柱铣刀或球头刀采用直线拟合的方式进行加工时,采用CAM软件编制此圆角曲面的数控程序,其程序以直线拟合的方式进行加工,程序代码的容量是传统数控机床所无法容纳的,若采用DNC加工,则存在数据丢失的风险。如果以手工编程方式采用宏程序,采用圆柱立铣刀的刀尖或球头刀进行该圆角曲面的圆弧插补加工,则程序变得简洁短小,其程序如图1b所示;而以CAM软件进行编程的直线拟合的加工程序代码如图1a所示。从图中可以看出,CAM编制的程序容量较宏程序的容量大得多。如采用相同的加工插补精度,宏程序只需调节#110用户变量来调节每层Z轴的加工深度,即可满足加工精度要求。而以直线拟合加工方式提高精度时,程序容量可能呈倍数增加,传统数控机床的容量更难以满足生产要求。同时该程序通过调节#110用户变量可满足粗加工、半精加工和精加工要求,程序的柔性比用CAM软件编制出的数控程序适应性更好。

图1、用户宏程序循环加工示意图

(a)直线拟合加工程序代码

O8001;

N102G0G17G49G80G90

N104T1M6;

N106G0X-48.46Y-48.4S5000M3;

N108G43H1Z50.;

N112G1Z39.8F100;

N114X-46.395Y-50.391F1200;

N116X-44.203Y-52.325;

N118X-41.893Y-54.191;

……

N7160Z29.7F100;

N7162X-40.641Y-44.141F1200;

N7164X-38.72Y-45.835;

N7166X-36.697Y-47.47;

……

N7490Z50.;

N7492G91G28Z0;

N7494G28X0Y0;

N7500M30;

(b)用户宏程序循环加工程序

O8005;

#101=75.5;最大外圆半径)

#102=10.5;圆角半径)

#105=8;刀具半径补偿)

G0G17G40G49G80G90;

T1M6;

G0G90X40.Y0.S2000M3;

G43H1Z50.;

#110=0.(Z轴步距);

WHILE#110LT#102;

#120=#102-#110;

#130=SQRT[#102*#102-#120*#120];

#140=#101-#130(固定层半径);

G01Z[-#110]F300;

G01G41D[#105]X[#140];

G02I[-#140];

G02I[-#140];

G00G40X40.;

#110=#110+0.2;

ENDW;

G00Z50.M5;

G91G28Z0.;

G28X0.Y0.;

M30;

在编制宏程序时,要牢记变量的种类及特性,不可乱用。因为局部变量、系统变量、公共变量的用途和性质各不相同,局部变量#1-#33是在宏程序中局部使用的变量,公共变量#100-#149和#500-#531是通过主程序及其调出的子程序通用的变量。公共变量的用途,在系统中没有规定,用户可以自由使用。系统变量是在系统中用途固定的变量,如#200—#2932为刀具补偿量,#3001、#3002为时钟等。

数控编程中使用宏程序,能够给手工编程带来极大的方便,解决一些手工编程几乎无法解决的问题。