主程序里面可以调用N个一级子程序,每个99次。
每个一级子程序里面可以调用N个二级子程序,每个99次。
每个二级子程序里面可以调用N个三级子程序,每个99次。
每个三级子程序里面可以调用N个四级子程序,每个99次。
可以套4重(层)。
主、子程序的调用关系见图4-7。子程序中还可以再调用其他子程序,即可多重嵌套调用。M99的功能就是结束子程序的运行并使数控系统返回到主程序,重新按主程序的指令运行。每个子程序的最后一条指令必须是M99。主子程序调用编程:在图4-8中,轮廓的精加工用子程序编写,在主程序中,按轮廓的形状多次调用子程序,其参考程序如下:4.2.5 子程序调用指令M98、M99
数控车床程序的编写也可采用主、子程序的形式。数控系统按主程序的指令运行,但在主程序中遇见调用子程序的指令时,将开始按子程序的指令运行;在子程序中遇见调用结束指令时,自动返回到主程序,并重新按主程序的指令运行。
对程序中有一些顺序固定或反复出现的加工图形,可将其写成子程序,然后由主程序来调用,这样可以大大简化整个程序的编写。
1.子程序调用指令M98
指令格式:M98 PL
M98指令中的P后面跟的是被调用的子程序的程序号,而L后面跟的是调用该子程序的次数(默认值为1)。主、子程序的调用关系见图4-7。
在编写程序时,主、子程序必须写在同一个文件中,都是以字母“O”开头,以“O****”单独作为一程序行书写。子程序中还可以再调用其他子程序,即可多重嵌套调用。
图4-7 主、子程序调用关系
同一个子程序可被主程序多次调用。同一个主程序可以调用多个不同的子程序。
2.子程序结束指令M99
M99的功能就是结束子程序的运行并使数控系统返回到主程序,重新按主程序的指令运行。每个子程序的最后一条指令必须是M99。
【例4-6】主子程序调用编程:在图4-8中,轮廓的精加工用子程序编写,在主程序中,按轮廓的形状多次调用子程序,其参考程序如下:
图4-8 主、子程序编程
O1000
N001 G92 X150.0 Z100.0;
N002 M03 S800 M08;
N003 G00 X35.0 Z0;
N004 G01 X0 F0.3;
N005 G00 X30.0 Z2.0;
N006 G01 Z-55.0 F0.3;
N007 G00 X150.0 Z100.0;
N008 X32.0Z0T0303;
N009 M98 P1500 L2;
N010 G00 W-12.0;
N011 G01 X0 F0.12;
N012 G04 X2.0;
N013 G00 X150.0 Z100.0 M09;
N014 M30;
O1500
N101 G00 W-12.0;
N102 G01 U-12.0 F0.15;
N103 G04 X1.0;
N104G00U12;
N105W-8;
N106 G01 U-12 F0.15;
N107 G04 X1.0;
N108 G00U12;
N109 M99;
取工件左端面中心点为编程坐标原点,对刀点位置在编程坐标系中X150 Z100位置。
需要注意的是:在MDI方式下,使用子程序调用指令是无效的。
1 子程序嵌套调用可能存在问题。2 在程序中,当一个子程序调用另一个子程序时,程序的执行顺序可能会变得复杂,从而导致一些错误。
此外,如果嵌套调用过多,还可能会导致栈溢出的问题。
3 为避免上述问题,应该注意在程序编写时,合理地使用子程序嵌套调用,尽可能减少嵌套调用的层数,同时在子程序中,尽量避免修改传入的参数值。
此外,使用一些调试工具也可以帮助我们快速排查子程序嵌套调用中遇到的问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)