当程序中有重复的加工动作时,用子程序可以大幅减少程序长度,提高编程效率。本文讲解FANUC系统中子程序和宏程序的调用方法。
一、子程序(M98/M99)
什么是子程序
子程序是一个独立的程序段,可以被主程序多次调用。子程序以O开头编号,以M99结束。
子程序格式
O1001 (子程序号)
G01 X10 F200
…
M99 (返回主程序)
调用格式
M98 P_L_
P = 子程序号(如P1001表示调用O1001)
L = 调用次数(如L5表示调用5次)
示例:M98 P1001 L3 (调用O1001三次)
二、子程序应用实例
实例:加工一排等距孔
主程序:
G54 G90 G00 X0 Y0
#1 = 0 (孔位计数器)
N10 G00 X[#1*20] Y0
M98 P1001 (调用钻孔子程序)
#1 = #1 + 1
IF [#1 LT 5] GOTO 10
M30
O1001 (子程序:钻孔)
G81 Z-10 R5 F100
G80
M99
三、宏程序调用(G65)
G65比M98更强大,可以传递参数给子程序。
调用格式
G65 P_ L_ A_ B_ C_ …
P = 宏程序号
L = 调用次数
A B C … = 传递给宏程序的参数
参数对应关系
| 传递参数 | 宏程序中变量 |
|---|---|
| A | #1 |
| B | #2 |
| C | #3 |
| I | #4 |
| J | #5 |
| K | #6 |
G65应用实例
主程序:
G65 P9001 A50 B30 C10
(调用O9001,传递A=50给#1,B=30给#2,C=10给#3)
O9001 (宏程序)
G01 X#1 Y#2 F#3
…
M99
四、子程序 vs 宏程序
| 特性 | 子程序(M98) | 宏程序(G65) |
|---|---|---|
| 参数传递 | 不支持 | 支持 |
| 变量计算 | 不支持 | 支持 |
| 条件判断 | 不支持 | 支持 |
| 适用场景 | 简单重复动作 | 复杂计算和判断 |
五、注意事项
- 子程序号不要和主程序号重复
- 子程序中的模态G代码会影响主程序
- 调用子程序前确认当前坐标系和刀具状态
- 宏程序中的局部变量#1-#33在程序结束后清空
- 子程序可以嵌套调用,但嵌套层数有限制(通常4层)
相关阅读: