2.2 执行方法和顺序
子程序调用指令可以和运动指令出现在同一程序段中。例如:
G90 G00 X-75.Y50.Z53.M98 P40035;
该程序段指令快速定位到指令位置,然后调用执行4次35号子程序。
包含子程序调用的主程序,程序执行顺序如下:
和其他M代码不同,M98和M99执行时,不向机床侧发送信号。当数控系统找不到地址符P指定的程序号时,发出报警。子程序调用指令M98不能在MDI方式下执行,如果需要单独执行一个子程序,可以在程序编辑方式下编辑如下程序,并在自动运行方式下执行。
× ×××;
M98 P××××;
M02(或M30);
在M99返回主程序指令中,可以用地址符P来指定一个顺序号,当这样的一个M99指令在子程序中被执行时,返回主程序后并不是执行紧接着调用子程序的程序段后的那个程序段,而是转向执行具有地址符P指定的顺序号的那个程序段。例如:
主程序
N10 …;
N20 …;
N30 M98 P1010;
N40 …;
N50 …;
N60 …;
N70 …;
子程序
O1010;
N1020 …;
N1030 …;
N1040 …;
N1050 …;
N1060 …;
N1070 M99 P60;
这种主-子程序的执行方式只有在程序内存中的程序能够使用。如果M99指令出现在主程序中,执行到M99指令时,将返回程序头,重复执行该程序。这种情况下,如果M99指令中出现位址符P,则执行该指令。
【例2-1】 在120mm×120mm×23mm的45钢材料上,使用ϕ18mm的高速钢立铣刀加工如图2-1所示的方形台阶,取零件上表面的中心为工件原点,编写加工程序。
图2-1 方形台阶
主程序
O7;
N10 G54 G17 G90 G80 G40 G49;(建立工件坐标系,加工状态初始化)
N20 M03 S560;(主轴启动)
N25 G00 X-80.0 Y-80.0;(快速定位到毛坯外面一点)
N30 Z50.0;(Z方向降刀)
N40 Z0;
N50 M98 P20008;(调用2次8号子程序铣削加工外形轮廓)
N60 G90 G00 Z150.0;(抬刀)
N70 M05;(主轴停)
N80 M30;(程序结束)
子程序
O8;
N10 G91 G01 Z-4.0 F300;(刀具深度方向每次切深4mm)
N20 G90 G41 G01 X-48.0 D01 F120;(建立刀具半径补偿)
N30 Y48.0;(切削加工)
N40 X48.0;(切削加工)
N50 Y-48.0;(切削加工)
N60 X-80.0;(切削加工)
N70 G40 G00 X-80.0;(取消刀具半径补偿)
N80 M99;(子程序返回)
【例2-2】 在2A12铝合金材料上使用ϕ8mm的键槽铣刀加工如图2-2所示的字母“N”,每个字母的深度为2mm,工件上表面的左下角点为工件原点,编写加工程序。
图2-2 字母“N”形凹槽
主程序
O10;
N10 G54 G17 G90 G80 G40 G49;(建立工件坐标系,加工状态初始化)
N20 M03 S720;(主轴启动)
N25 G00 X15.0 Y50.0;(快速定位到第一个字母“N”的左下角角点)
N30 Z40.0;(Z方向降刀)
N40 Z2.0;
N50 M98 P20;(调20号子程序加工字母“N”)
N60 G90 G00 X50.0 Y50.0;(快速定位到第二个字母“N”的左下角角点)
N70 M98 P20;(调20号子程序加工字母“N”)
N80 G90 G00 X85.0 Y50.0;(快速定位到第三个字母“N”的左下角角点)
N90 M98 P20;(调20号子程序加工字母“N”)
N100 G90 G00 X 15.0Y10.0;(快速定位到第四个字母“N”的左下角角点)
N110 M98 P20;(调20号子程序加工字母“N”)
N120 G90 G00 X50.0 Y10.0;(快速定位到第五个字母“N”的左下角角点)
N130 M98 P20;(调20号子程序加工字母“N”)
N140 G90 G00 X85.0 Y10.0;(快速定位到第六个字母“N”的左下角角点)
N150 M98 P20;(调20号子程序加工字母“N”)
N160 G90 G00 Z40.0;(抬刀)
N170 M05;(主轴停)
N180 M30;(程序结束)
子程序
O20;
N10 G91 G01 Z-4.0 F30;(刀具深度方向切深2mm)
N20 G01 Y20.0 F150;(切削加工)
N30 G01 X 20.0 Y-20.0;(切削加工)
N40 G01 Y20.0;(切削加工)
N50 G00 Z4.0;(刀具抬高)
N60 M99;(子程序返回)
【例2-3】 在120mm×120mm×30mm的45钢材料上,使用合金立铣刀加工如图2-3所示带过渡圆角的台阶,取零件上表面的中心为工件原点,编写加工程序。
图2-3 带过渡圆角的台阶
主程序
O0001;
G91 G28 Z0;(机床返回参考点)
G28 X0 Y0;
T01 M06;(调用ϕ10mm的立铣刀)
G90 G54 G17 G80 G40;(机床加工状态初始化)
M3 S3200;(主轴启动)
G0 X0 Y-80.;(刀具在水平方向定位到毛坯外一点)
G43 Z50. H1;(降刀)
Z0;
M98 P100002;(调用10次2号子程序)
G0 Z150.;
M5;
M30;
子程序
O0002;
G91 G1 Z-1.0 F200;(每次下刀1mm)
D01;(刀具半径补偿13.0mm)
M98 P3;(调用3号子程序完成外形轮廓加工)
D02;(刀具半径补偿5.0mm)
M98 P3;
M99;(子程序返回)
子程序
O0003;
G90 G1 G42 X-30.;(建立刀具半径补偿)
G2 X0 Y-50. R30.;(圆弧切入工件)
G1 X45.;
G3 X50. Y-45. R5.;
G1 Y45.;
G3X45. Y50. R5.;
G1 X-45.;
G3 X-50. Y45. R5.;
G1 Y-45.;
G3 X-45. Y-50. R5.;
G1 X0;
G2 X30. Y-80. R30.;(圆弧切出工件)
G40 G1 X0;(取消刀具半径补偿)
M99;(子程序返回)