M98 调用子程序
M99 子程序结束返回/重复执行
加工程序分为主程序和子程序,一般地,NC执行主程序的指令,但当执行到一条子程序调用指令时,NC转向执行子程序,在子程序中执行到返回指令时,再回到主程序。
当我们的加工程序需要多次运行一段同样的轨迹时,可以将这段轨迹编成子程序存储在机床的程序存储器中,每次在程序中需要执行这段轨迹时便可以调用该子程序。
当一个主程序调用一个子程序时,该子程序可以调用另一个子程序,这样的情况,我们称之为子程序的两重嵌套。一般机床可以允许最多达四重的子程序嵌套。在调用子程序指令中,可以指令重复执行所调用的子程序,可以指令重复最多达999次。
一个子程序应该具有如下格式:
O××××; 子程序号
…………;
…………;
…………; 子程序内容
…………;
M99; 返回主程序
在程序的开始,应该有一个由地址O指定的子程序号,在程序的结尾,返回主程序的指令M99是必不可少的。M99可以不必出现在一个单独的程序段中,作为子程序的结尾,这样的程序段也是可以的:
G90 G00 X0 Y100. M99;
在主程序中,调用子程序的程序段应包含如下内容:
M98 P×××××××;
在这里,地址P后面所跟的数字中,后面的四位用于指定被调用的子程序的程序号,前面的三位用于指定调用的重复次数。
M98 P51002;调用1002号子程序,重复5次。
M98 P1002; 调用1002号子程序,重复1次。
M98 P50004;调用4号子程序,重复5次。
子程序调用指令可以和运动指令出现在同一程序段中:
G90 G00 X75. Y50. Z53. M98 P40035;
该程序段指令X、Y、Z三轴以快速定位进给速度运动到指令位置,然后调用执行4次35号子程序。
包含子程序调用的主程序 ,程序执行顺序如下例:
主程序 1 2 3 子程序
N10 ……………; O1010 ;
N20 ……………; N1020 …………;
N30 M98P21010; N1030 ……… N40 ……………; N1040 …………;
N50 M98P1010; N1050 …………; N60 ……………; N1060 ……M99;
和其它M代码不同,M98和M99执行时,不向机床侧发送信号。
当NC找不到地址P指定的程序号时,发出PS078报警。
子程序调用指令M98不能在MDI方式下执行,如果需要单独执行一个子程序,可以在程序编辑方式下编辑如下程序,并在自动运行方式下执行。
× ×××;
M98 P××××;
M02(或M30);
在M99返回主程序指令中,我们可以用地址P来指定一个顺序号,当这样的一个M99指令在子程序中被执行时,返回主程序后并不是执行紧接着调用子程序的程序段后的那个程序段,而是转向执行具有地址P指定的顺序号的那个程序段。如下例:
主程序 子程序
N10 …………; O1010;
N20 …………; N1020 …………;
N30 M98P1010; N1030 …………;
N40 …………; N1040 …………;
N50 …………; N1050 …………;
N60 …………; N106
不需要设置的 M98是调用子程序 一般用不到的 除非你要循环个什么指令 或步骤才用的 前提是你要编制子程序 m98 PXXXX 你的子程序号就好了
不会吧,M98是调用子程序指令,前提是你有可调用的子程序
这个问题挺奇怪的,直接调用M98就可以了,哪来的设置?