首页 理论教育 子程序及用法解析

子程序及用法解析

时间:2023-07-02 理论教育 版权反馈
【摘要】:当调用次数未输入时,子程序名的前导0可省略;当输入调用次数时,子程序名必须为4位数。M99通常用在子程序末尾,它表示子程序结束,并返回主程序。用这种方法比起正常返回到子程序方法要耗费长得多的时间。此时,M98、M99在产生移动后执行,即为后作用M功能,例如:G00 X100.M98 P1234;G00 X100.M99;在FANUC 0i-MC面板中,子程序调用可以嵌套4级;在FANUC 0i-MD面板中,子程序调用可以嵌套10级。此时可把子程序中下刀的指令修改为G91方式。

子程序及用法解析

在一个加工程序的若干位置上,如果包括有一个或多个在加工轨迹上完全相同或类似的内容,为了简化编程,可以把这些程序段单独抽出,并按照一定的格式编成子程序并单独加以命名,称之为子程序,原来的程序称为主程序。主程序在执行时可以调用子程序,执行完子程序后又可返回到主程序,继续执行后面的程序段。

在FANUC 0i-MC面板中,子程序的调用格式为:

M98 P□□□○○○○;

在FANUC 0i-MD面板中,子程序的调用格式为:

M98 P□□□□○○○○;或M98 P○○○○L□□□□□□□□;

其中,□□□或□□□□为子程序重复调用的次数,在FANUC 0i-MC面板中,最多可以重复调用999次;在FANUC 0i-MD面板中,前一种格式可以重复调用9999次,后一种格式可以调用99999999次,如果省略,则表示调用1次。当调用次数未输入时,子程序名的前导0可省略;当输入调用次数时,子程序名必须为4位数。

○○○○指定调用的子程序名。

M99通常用在子程序末尾,它表示子程序结束,并返回主程序。除此之外,它还有另外的用法。

①M99用在主程序末尾或MDI方式中程序的末尾,表示无限循环,执行了M99之后光标返回程序开头。可以这样使用:“/M99;”或“G04 X;/M99;”,用跳段来控制M99是否执行。有些工人用“G04 X;/M99;”编程来结束主程序,他装卸工件的时间比较短,编写的暂停时间相对较长,当暂停没有结束时已经换上了新的工件,但不建议这么编程,以免出现危险。还有,主程序末尾使用M99时,和使用M30结尾不同,M99不给工件计数器计数。

②特殊用法:如果用P指定一个顺序号,当子程序结束时,子程序不是返回到调用该子程序的那个程序段后的一个程序段,而是返回到有P指定其顺序号的那个程序段。但是,要注意如果主程序不是在存储器方式工作P被忽略用这种方法比起正常返回到子程序方法要耗费长得多的时间。

978-7-111-52218-8-Chapter03-147.jpg

M98、M99也可以编在含有移动的指令后面。此时,M98、M99在产生移动后执行,即为后作用M功能,例如:

G00 X100.M98 P1234;

G00 X100.M99;

在FANUC 0i-MC面板中,子程序调用可以嵌套4级;在FANUC 0i-MD面板中,子程序调用可以嵌套10级。

【例3-27】 使用M98、M99编程,完成图3-81所示1、2、3、4位置M8螺纹的攻螺纹。

978-7-111-52218-8-Chapter03-148.jpg

图3-81 固定循环时M98的应用

978-7-111-52218-8-Chapter03-149.jpg

978-7-111-52218-8-Chapter03-150.jpg

【例3-28】 很多时候图样上标注的孔的尺寸是刀具尺寸所没有的,比如某孔标注为ϕ11.4mm,孔心坐标为(10,10),深为20mm,材质为铝合金。用ϕ10mm中心有刃的立铣刀去加工,程序如下:

978-7-111-52218-8-Chapter03-151.jpg

下面是粗铣的子程序,左侧的是没有使用刀具半径补偿的程序,右侧的是使用了刀具半径补偿的程序,978-7-111-52218-8-Chapter03-152.jpg设置为5.000,铣削方式为顺铣。

00059:不合刀具半径补偿

Nlo G91 G01 Z-2.F50;

N20 G90 Xl0.5 F160;

N30 G03 l-0.5;

N40 G01 Xl0.;

N50 M99;

l00059;含刀具半径补偿

IN10 G91 C01 Z-2.F50;

IN20 G90 CAl X15.5 D 01 F160;

IN30 G03 I-5.5;

IN40 G01 C40 Xl0.;

IN50 M99;

下面是精铣的子程序,左侧的是没有使用刀具半径补偿的程序,右侧的是使用了刀具半径补偿的程序,D 02设置为5.000,铣削方式为顺铣。00060:不合刀具半径补偿

G90 C01 Xl0.7 F160;

C03 I-0.7;

N40 C01 Xl0.;

M99;

100060;含刀具半径补偿

G90 C41 C01 X15.7 D 02 F160;

G03 I-5.7;

N40 C01 C40 Xl0.;

M99;

注意:每一次调用子程序,子程序结尾时都要让刀具返回到原来的XY轴的位置上,否则下一次调用的起点就不是前一次调用的起点,如上述子程序O0059和O0060的N40程序段。

上述介绍的是一个孔的加工程序的编写。但是,如果所要加工的孔不是1个,而是2个或多个,且在同一个平面上,用上面的程序来加工,第一个孔能正常加工,后面的就会产生碰撞,因为上面的程序中只有Z轴是G91方式,XY轴都是G90方式的。修改如下:

978-7-111-52218-8-Chapter03-153.jpg

则O0059可以修改如下:

00059:不合刀具半径补偿

N10 C91 C01 Z-2.F50;

N20 XO.5 F160;

N30 C03 I-0.5;

N40 C01 X-0.5;

N50 M99:

100059;含刀具半径补偿

N10 G91 G01 2-2.F50;

N20 G41 X5.5 D01 F160;

N30 G03 I -5.5;

N40 G01 G4O X-5.5;

N50 M99;

O0060可以修改如下:

00060:不合刀具半径补偿

G91 C01 XO.7 F160:

G03 I-0.7:

G01 X-0.7:

M99:

00060:含刀具半径补偿

G91 G41 G01 X5.7 D 02 F160:

G03 I-5.7:

G01 G4O X -5.7:(www.xing528.com)

M99:

注意:子程序中保持的模态信息,在返回主程序时仍然保持有效!主程序O0058中“N60G0 G90 Z2.;”和“N80 G0 G90 Z2.;”这两段程序,如果没有编写“G90”,就会产生严重碰撞:因为这里的“Z2.”仍然是子程序O0060末尾的G91方式!

一般情况下,如果多次铣削,只把产生分层的轴的分层动作指令编写在子程序中,并以G91方式编写在子程序的开头,该轴不产生分层动作的指令编在主程序中,但需注意G90和G91方式的区别;当铣削多个孔时,其他轴也以G91方式编写;建议铣孔时的子程序中使用刀具半径补偿指令。

如果上述孔不在同一个平面上,需要在主程序中的孔心定位后(子程序调用前)的程序段和主程序调用完成返回主程序后的第一个程序段,指令Z轴移动到合适的位置上,然后再下刀。

铣孔时常见的情况分析:

1)调用了多次子程序,但铣削了一层之后就不再下刀。此时可把子程序中下刀的指令修改为G91方式。

2)铣不通孔时深度尺寸正常或浅了一层,孔底中心有刀具下刀的凹坑。此时,注意要把分层铣削下刀的指令编在程序的开头,在结束时已经完成了平面的铣削;如果在子程序开头是平面的铣削,结束时就是Z轴的下刀,必然在不通孔中心留下凹坑。另外,要注意调用子程序前Z轴到达的位置,切入一层后调用子程序,尺寸正常,但孔底中心有凹坑;未切入就调用子程序,会浅一层,孔底中心有凹坑。

978-7-111-52218-8-Chapter03-154.jpg

图3-82 子程序用法举例

【例3-29】 如图3-82所示,在一块长方体上铣去一部分,成为一个凹槽,长方体已经加工好,材料为铝。

设工件上表面的对称中心为XYZ轴的坐标原点,用ϕ20mm的立铣刀加工。

O0062;

T01 M06;

G00 G56 G90 X64.8 Y-42.;

G43 H01 Z50.M03 S1000;

Z0.4 M08;

M98 P60064;

G01 X0.2 F300 M03 S1400;

M98 P66;

G00 G90 Z2.M09;

G91 G30 Z0 M05;

G90 G00 X 0 Y 100.; 移动到便于装卸工件的位置上

M30;

100064;

GOO G91 Z -6.7

G01 Y84. F150;

GOO X -14.8;

G01 Y - 84;

GOO X -15.;

G01 Y84;

GOO X -15.;

G01 Y - 84;

GOO X -15.;

G01 Y84;

GOO X -15.;

G01 Y - 84;

GOO X -15.;

G01 Y84;

GOO X -15.;

G01 Y - 84;

GOO X -15.;

GOl Y84;

GOO X -9.8;

G01 Y - 84;

GOO X129.6;

M9;

100066;

G01 G91 Z -0.2 F400;

G01 Y84. F120;

GOO X -15.;

G01 Y - 84.;

GOO X -15.;

G01 Y84.;

GOO X -15.;

G01 Y - 84.;

GOO X -15.;

G01 Y84.;

GOO X -15.;

G01 Y - 84.;

GOO X -15.;

G01 Y84.;

GOO X -15.;

G01 Y - 84.;

GOO X -15.;

G01 Y84;

GOO X -10.;

G01 Y - 84;

IM99;

此例中,从Z0.4平面开始调用O0064子程序6次,由于刀具在工件外,所以每次快速下刀6.7mm,铣削至Z-39.8mm,Z向留有0.2mm精加工余量,+X、-X方向均留有0.2mm精加工余量,X向行距前几刀为75%刀具直径,最后一刀为剩余的量,当分层加工完最后一刀后,刀具停留在-Y一侧,和刀具起始位置同一侧,因此不需抬刀,直接快速移动至起始点的XY坐标,G00 X129.6。

O0066和O0064类似,只是不需要返回起始点的XY坐标。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈