M98:子程序调用
M98 为调用子程序指令。
指令格式
- M98 P_ Q_ L_
- M98 <文件名>_ Q_ L_
描述
P:子程序号码。范围
[
1, 99999]
。省略P时,则为本身的程序。<文件名>:指定文件名代替程序编号。
- 文件名为包含扩展名在内最多为32个字符。
- 使用<>将文件名括起来。
- 文件名必须紧跟在M98的后面予以描述。
Q:目标程序的起始顺序号。范围
[1,99999999
]`。省略Q时,从目标程序的开头开始执行。L:重复调用次数。范围
[
1, 99999]
。省略L时,重复调用次数为1次。
说明
跨文件子程序会忽略文件中的 O 指令。
跨文件子程序在遇到 M30 会停止所有加工。
跨文件子程序在遇到 M17/M99 会停止加工当前子程序并且返回。
跨文件子程序如果没有 M17/M99/M02/M30, 会加工到文件结束返回。
O 子程序和主程序在同一文件中时,O 子程序必须位于 M98 之后,否则 M98 无效。
为了兼容 FANUC, 现在主程序中只有 O, 没有 M17/M99 的情况, 不再报错, 而是加工到文件结束。
如果程序中的子程序和跨文件子程序重复, 报 子程序重复 错误。
对于一个刀路中出现多个 O, 并且没有 M17/M99, 报 在搜索子程序过程错误,存在多个O指令 错误。
子程序中调用子程序,深度最多不超过 32 个,否则报 程序调用层次超过32层 错误。
范例
要求:切槽加工,利用 “子程式呼叫” 执行重复加工。
- 写法一:M98单节内有下P指令
- 主程式.
T03; //使用三号刀具
G97 S710 M03; //主轴转速一定,正转 710 rpm
M08; //开启切削剂
G00 X45.0 Z-12.0; //快速定位至第一沟槽之上方
M98 P1234 Q102 L4 ; //呼叫序号 “O1234”之程式,从其序号
//N102之单节开始执行,执行4次
G28 X80.0 Z80.0; //快速移动至指定中间点,再回归至机械原点
M09; //关闭切削液
M05; //主轴停止
M30; //程序结束
- 子程式.
O1234
G00 X45.0 Z-12.0;
N102G01 X30.0 F200; //从此单节开始
//直线切削至槽底,进给率 200mm/rev
G00 X45.0; //快速退刀至起始位置
W-2.0; //快速向Z轴负方向移动2mm
G01 X30.0; //再直线切削至槽底
G00 X45.0; //快速退刀至起始位置
W-12.0; //快速向Z轴负方向移动12mm,等待下一槽的切削
M99; //返回主程式
- 写法二:M98单节内没有下P 指令
- 主程式.
T03; //使用三号刀具
G97 S710 M03; //主轴转速一定,正转 710 rpm
M08; //开启切削液
G00 X45.0 Z-12.0; //快速定位至第一沟槽之上方
M98 Q0010 L4 ; //从其主程式序号N0010之单节开始执行,
//执行4次
G28 X80.0 Z80.0; //快速移动至指定中间点,再回归至机械原点
M09; //关闭切削剂
M05; //主轴停止
M02; //程式结束
N0010G01 X30.0 F200; //执行M98 后从此单节开始
//直线切削至槽底,进给率 200mm/rev
G00 X45.0; //快速退刀至起始位置
W-2.0; //快速向Z轴负方向移动2mm
G01 X30.0; //再直线线切削至槽底
G00 X45.0; //快速退刀至起始位置
W-12.0; //快速向Z轴负方向移动12mm,等待下一槽的切削
M99; //返回M98之下一单节N006