宏程序调用说明
可以用下列方式调用宏程序:
简单调用 G65模调用 G66、G67G码宏调用M码宏调用G码子程序调用M码子程序调用 |
宏调用和子程序调用之间的区别:
☆ 用G65,可以指定一个自变量(传递给宏的数据),而M98没有这个功能。
☆ 当M98段含有另一个NC语句时(如:G01 X100.0M98Pp),则执行命令之后调用子程序,而G65无条件调用一个宏。
☆ 当M98段含有另一个NC语句时(如:G01 X100.0M98Pp),在单段方式下机床停止,而使用G65时机床不停止。
☆ 用G65地方变量的级要改变,而M98不改变。
1、 简单调用(G65)
功能 G65被指定时,地址P所指定的用户宏被调用,数据(自变量)能传递到用户宏程序中。
格式 G65 Pp Ll <自变量表>;
其中:
p 要调用的程序号
l 重复的次数(缺省值为1,取值范围1~9999)
自变量 传递给宏的数。通过使用自变量表,值被分配给相应的地方变量。
如下列中#1=1.0,#2=2.0

自变量分为两类。第一类可以使用除G、L、O、N、P之外的字母并且只能使用一次。第二类可以使用A、B、C(一次),也何以使用I、J、K(最多十次)。自变量使用的类别根据使用的字母自动确定。见下表。
类别一:
地址 | 变量号 | 地址 | 变量号 | 地址 | 变量号 | ||
A | #1 | I | #4 | T | #20 | ||
B | #2 | J | #5 | U | #21 | ||
C | #3 | K | #6 | V | #22 | ||
D | #7 | M | #13 | W | #23 | ||
E | #8 | Q | #17 | X | #24 | ||
F | #9 | R | #18 | Y | #25 | ||
H | #11 | S | #19 | Z | #26 |
☆ 地址G、L、N、O、P不能当作自变量使用。
☆ 不需要的地址可以省略,与省略的地址相应的地方变量被置成空。
类别二:
地址 | 变量号 | 地址 | 变量号 | 地址 | 变量号 | ||
A | #1 | K3 | #12 | J7 | #23 | ||
B | #2 | I4 | #13 | K7 | #24 | ||
C | #3 | J4 | #14 | I8 | #25 | ||
I1 | #4 | K4 | #15 | J8 | #26 | ||
J1 | #5 | I5 | #16 | K8 | #27 | ||
K1 | #6 | J5 | #17 | I9 | #28 | ||
I2 | #7 | K5 | #18 | J9 | #29 | ||
J2 | #8 | I6 | #19 | K9 | #30 | ||
K2 | #9 | J6 | #20 | I10 | #31 | ||
I3 | #10 | K6 | #21 | J10 | #32 | ||
J3 | #11 | I7 | #22 | K10 | #33 |
☆ 在实际的程序中,I、J、K的下标不用写出来。
注意:
☆ 在自变量之前一定要指定G65。
☆ 如果将两类自变量混合使用, NC自己会辨别属于哪类,最后指定的那一类优先。
☆ 传递的不带小数点的自变量的单位与每个地址的最小输入增量一致,其值与机床的系统结构非常一致。为了程序的兼容性,建议使用带小数点的自变量。
☆ 最多可以嵌套含有简单调用(G65)和模调用(G66)的程序4级。不包括子程序调用(M98)。地方变量可以嵌套0~4级。主程序的级数是0。用G65和G66每调用一次宏,地方变量的级数增加一次。上一级地方变量的值保存在NC 中。宏程序执行到M99时,控制返回到调用的程序。这时地方变量的级数减1,恢复宏调用时存储的地方变量值。
2、模调用(G66、G67)
功能 一旦指定了G66,那么在以后的含有轴移动命令的段执行之后,地址P所指定的宏被调用,直到发出G67命令,该方式被取消。
格式 G66 Pp Ll <自变量表>;
其中:
p 要调用的程序号
l 重复的次数(缺省值为1,取值范围1~9999)
自变量 传递给宏的数。与G65调用一样,通过使用自变量表,值被分配给相应的地方变量。

注意:
☆ 最多可以嵌套含有简单调用(G65)和模调用(G66)的程序4级。不包括子程序调用(M98)。模调用期间可重复嵌套G66。
☆ 在G66段,不能调用宏。
☆ 在自变量前一定要指定G66。
☆ 在含有象M码这样与轴移动无关的段中不能调用宏。
☆ 地方变量(自变量)只能在G66段设定,每次模调用执行时不能设定。
3、 G码调用宏
通过在下表所列出的参数中设定调用宏程序的G码号,就可以象用G65一样调用相应的宏程序。G码号设定范围是1~255。重复次数l和自变量使用方法与G65一样。
程序号 | 参数号 |
O9010 | 220 |
O9011 | 221 |
O9012 | 222 |
O9013 | 223 |
O9014 | 224 |
O9015 | 225 |
O9016 | 226 |
O9017 | 227 |
O9018 | 228 |
O9019 | 229 |
注意:
在用G码调用的程序中,不能再用G码调用宏程序,在这样的程序中G码被看作是普通G码,在用M码和T码调用的子程序中也一样。
4、M码调用宏
通过在下表所列出的参数中设定调用宏程序的M码号,就可以象用G65一样调用相应的宏程序。M码号设定范围是1~255。重复次数l和自变量使用方法与G65一样。
程序号 | 参数号 |
O9020 | 230 |
O9021 | 231 |
O9022 | 232 |
O9023 | 233 |
O9024 | 234 |
O9025 | 235 |
O9026 | 236 |
O9027 | 237 |
O9028 | 238 |
O9029 | 239 |
注意:
☆ 调用宏程序的M码一定要在段首指定。
☆ 在用G码调用的宏或用M码和T码调用的子程序中,不能再用M码调用宏程序,在这样的宏或程序中M码被看作是普通M码。
5、 M码调用子程序
通过在下表所列出的参数中设定调用宏程序的M码号,就可以象用M98调用子程序一样调用相应的宏程序。M码号设定范围是1~255。重复次数l使用方法与M98一样。不允许使用自变量。
程序号 | 参数号 |
O9001 | 240 |
O9002 | 241 |
O9003 | 242 |
注意:
宏程序中,已用来调用宏程序的 M码被看作是普通M码。在用G码调用的宏和用M码或T码调用的程序中,不能再用M码调用子程序,在这样的程序中M码被看作是普通M码。
6、 T码调用子程序
将参数040的第5位置1,当在加工程序中指定一个T码时,宏程序O9000就被调用。在加工程序中指定的T码存储在公共变量#149中。
在用G码调用的宏和用M码或T码调用的程序中,不能再用T码调用子程序,在这样的程序中T码被看作是普通T码。
原创文章,作者:智造研习社,如若转载,请注明出处:https://www.sfqosk.com/index.php/2024/11/30/152/