前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >宏程序的调用方法

宏程序的调用方法

作者头像
lrglu
发布2022-05-16 15:23:59
2.1K0
发布2022-05-16 15:23:59
举报
文章被收录于专栏:数控编程社区数控编程社区

宏程序可用以下方法调用:

① 简单调用 G65;

② 模态调用 G66、G67;

③ 用 G 代码调用宏程序;

④ 用 M 代码调用宏程序;

⑤ 用 M 代码的子程序调用;

⑥ 用 T 代码的子程序调用。

1.宏程序调用和子程序调用的区别

① 用 G65 可以指定实参(传送给宏程序的数据),而 M98 没有此能力。

② 当 M98 程序段包含其他 NC 指令(如:G01 X100.0 M98 P )时,在该指令执行完后调用子程序,而 G65 则无条件调用宏程序。

③ 当 M98 程序段包含其他 NC 指令(如:G01 X100.0 M98 P )时,在程序单段运行模式下机床停止,而 G65 不会让机床停止。

④ G65 调用时,局部变量的层次被修改,而 M98 调用不会更改局部变量的层次。

2.简单调用 G65

宏程序的简单调用是指在主程序中,宏程序可以被单个程序段单次调用。

当指定 G65 调用时,地址 P 后指定的用户宏程序被调用,同时数据(实参)被传递给用户宏程序。

调用指令格式:G65 P(宏程序号)L(重复次数)(变量分配)

其中:G65——宏程序调用指令;

P(宏程序号)——被调用的宏程序号;

L(重复次数)——宏程序重复运行的次数(1~99),重复次数为 1 时,可省略不写;

(变量分配)——为宏程序中使用的变量赋值,通过使用实参描述,数值被指定给对应的局部变量。

宏程序与子程序相同的是一个宏程序可被另一个宏程序调用,最多可调用 4 重。例如:

O0001;

G65 P9010 L2 A1.0 B2.0;

M30;

O9010;

#3=#1+#2;

IF [#3 GT 360] GOTO 9;

G00 G91 X#3;

N9 M99;

3.实参描述(变量分配)

有两种实参描述类型,实参描述类型Ⅰ(见表 1⁃3)可同时使用除 G、L、O、N 和 P 之外的字母各一次。而实参描述类型 Ⅱ(见表 1⁃4)只能使用 A、B、C 各一次,使用 I、J、K 最多十次。实参描述类型根据使用的字符自动判断。

表 1⁃3 实参描述类型 Ⅰ

  注:地址 G、L、N、O、P 不能用于实参;不需指定的地址可省略,省略地址对应的局部变量设成空(null)。

表 1⁃4 实参描述类型 Ⅱ

  注:I、J、K 的下标(subscripts)用于表示实参描述的顺序,实际程序中不需写出。

4.使用限制

(1)格式

G65 必须在实参之前指定。

(2)实参描述 Ⅰ 和 Ⅱ 的混合

NC 内部识别实参描述 Ⅰ 和 Ⅱ,当二者混合指定时,实参描述类型由后出现的地址决定,即两种类型可同时使用,当多个地址对应同一个局部变量时,该变量的值由后出现的地址决定。

(3)小数点的位置

一个不带小数点的实参在数据传递时,其单位按其地址对应的最小精度解释,因此,不带小数点的实参,其值在传递时有可能根据机床的系统参数设置而被更改。所以一般应该在宏调用实参中使用小数点,这样可以保持程序的兼容性。

(4)调用嵌套

调用可嵌套四层,包括简单调用 G65 和模态调用 G66,但不包括子程序调用 M98。

(5)局部变量的层次

嵌套调用时,局部变量的层次指定为 0~4。主程序的层次为 0。宏程序每(嵌套)调用一次(G65、G66),局部变量的层次加一,原有局部变量的值被 NC 保存(不可见)。

当 M99 执行时,控制返回调用该子程序的位置。此时,局部变量层次减一,宏程序调用时保存的原有局部变量值被恢复。

宏程序的嵌套关系及局部变量和全局变量的使用如图 1⁃2 所示。

图 1⁃2 宏程序的嵌套关系及局部变量和全局变量的使用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数控编程社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档