子程序(M98、M99)
程序分为主程序和子程序,子程序是一段可以重复调用的加工指令代码。在主程序中通过M98指令调用子程序,通过M99指令从子程序返回主程序。子程序程序名为O+程序号,O不区分大小写,格式支持为无后缀,.txt,.nc,.g。M99不一定要构成独立的程序段,例如G00 X100 Y100 M99。
子程序举例如下所示:
O9999 '子程序号
G91 G1 X100
Y50
M99 '子程序结尾
在子程序中可以指定M99返回主程序目的地的顺序号
例
O100(主程序) O200(子程序)
N0010 G00 X100 N1010 G0 X10
N0020 M98 P200 N1020 G0 X8 Y8
N0030 G1 Y100 F500 N1030 G01 X30 Y30 F300
N0040 G00 X0 Y0 N1040 M99 P0040 '返回到主程序顺序号N0040处
N0050 M30
- 调用子程序
格式
M98 POOOO Qn LXXXX
OOOO:调用的子程序号,范围[1, 99999999]。
n:调用子程序的起始顺序号,范围[1,99999999],省略Q时,从目标程序的开头开始执行。
M98<程序名> Qn LXXXX
XXXX:子程序重复调用次数,范围[1, 99999999],省略表示调用1次子程序。
n:调用子程序的起始顺序号,范围[1, 99999999],省略Q时,从目标程序的开头开始执行。
<程序名>:调用的子程序名,程序名不区分大小写。
解释
当主程序调用一个子程序,认为1级子程序调用,系统最多可以进行15级子程序调用。
特殊用法:在主程序中使用M99
- 如果在主程序中使用M99可以返回到程序开头,如果指定了M99Pn不返回到程序开头,则返回到顺序号N的位置。
例
O300 (主程序) N0010 G00 X100 N0020 G01 X10 Y10 N0030 G1 Y100 F500 N0040 M99 '返回到主程序开头,一直循环加工 O400 (主程序) N0010 G00 X100 N0020 G01 X10 Y10 N0030 G1 Y100 F500 N0040 M99 P0020 '返回到顺序号N0020处,一直循环加工 N0050 M30
- 相同程序内调用的情况下,可以省略M98相同程序段内的P指定。
例
O500 N0010 G00 X100 N0020 M98 P500 Q0060 L3 N0030 G01 X800 Y80 F100 'P500可省略,执行到此处跳转到N0060处,并重复执行3次N0060和N0080 之间的程序段,之后返回N0030处顺序执行。 N0040 G00 X30 N0050 M30 N0060 G01 X100 Y50 F100 N0070 G01 X10 Y500 F300 N0080 M99