首页 理论教育宏程序调用与返回详解

宏程序调用与返回详解

【摘要】:表5.2-2 宏程序的调用指令一览表自由调用和特定调用用户宏程序调用有自由调用和特定调用两种方式。图5.2-2 用户宏程序的特定调用特定调用的指令编程格式如下:l:重复调用次数;变量赋值的方法见后述。一般情况下,宏程序执行完成后,程序将返回到调用程序段,然后继续执行下一程序段。表5.2-4 自变量指定Ⅱ的程序字与局部变量对应关系表混合赋值宏程序调用指令也可采用自变量指定Ⅰ、自变量指定Ⅱ混合赋值的方式,对局部变量#1~#33进行赋值。

1.宏程序调用

(1)调用指令

用户宏程序既可以作为独立程序运行,也可以由其他CNC加工程序调用。宏程序可通过表5.2-2所示的多种指令调用。

表5.2-2 宏程序的调用指令一览表

978-7-111-41794-1-Chapter05-34.jpg

(2)自由调用和特定调用

用户宏程序调用有自由调用和特定调用两种方式。自由调用是指调用指令可自由指定需要调用的宏程序号,它用于G65、G66调用,调用过程如图5.2-1所示。

自由调用的指令格式如下:

978-7-111-41794-1-Chapter05-35.jpg

p:宏程序号;

l:重复调用次数;

变量赋值的方法见后述。

978-7-111-41794-1-Chapter05-36.jpg

图5.2-1 用户宏程序的自由调用

特定调用是指调用指令和调用的宏程序号一一对应的调用方式,它用于特定G、M、T代码的调用。特定调用的宏程序号固定,其调用代码需要通过CNC参数进行设定,例如,设定PRM6050=70、PRM6051=71,则调用宏程序O9010、O9011的G代码分别为G70、G71;设定PRM6071=60、PRM6080=50,则调用宏程序O9001、O9020的M代码分别为M60、M50;设定PRM6001.5=1,程序中所有T代码均可调用宏程序O9000等。

以设定CNC参数PRM6080=50为例,宏程序的特定调用过程如图5.2-2所示。

978-7-111-41794-1-Chapter05-37.jpg

图5.2-2 用户宏程序的特定调用

特定调用的指令编程格式如下:

978-7-111-41794-1-Chapter05-38.jpg

l:重复调用次数;

变量赋值的方法见后述。

(3)宏程序返回

宏程序返回和子程序返回相同,它也通过结束指令M99返回。一般情况下,宏程序执行完成后,程序将返回到调用程序段,然后继续执行下一程序段。但也可通过结束指令978-7-111-41794-1-Chapter05-39.jpg,使得宏程序执行完成后,返回到程序号为n的程序段,有关内容可参见第2章2.1节。

2.自变量传送赋值

自变量传送赋值是通过宏程序调用指令中的指定程序字,直接将变量值写入到局部变量#1~#33的赋值方法,它可采用自变量指定Ⅰ、自变量指定Ⅱ和混合赋值3种方式赋值。

(1)自变量指定Ⅰ

采用自变量指定Ⅰ赋值时,局部变量中的#1~#26可利用程序字A~Z赋值,变量#27~#33不能赋值。自变量指定Ⅰ的程序字与赋值变量的对应关系见表5.2-3。

表5.2-3 自变量指定Ⅰ的程序字与局部变量对应关系表

978-7-111-41794-1-Chapter05-40.jpg

自变量指定Ⅰ赋值时需要注意:局部变量号和程序字的字母次序无对应关系,如程序字D所赋值的变量为#7而不是#4等;赋值指令中的I、J、K必须按次序排列,其余程序字次序无要求。例如,调用指令:

978-7-111-41794-1-Chapter05-41.jpg

可对宏程序O9100中的局部变量进行如下赋值:

#1=30.0、#2=45.0、#4=50.0、#18=-58.0、#24=100.0、#25=-200.0、#26=-80.0。

(2)自变量指定Ⅱ

自变量指定Ⅱ赋值在CNC参数PRM6008.7设定为0时有效,采用本方式赋值时,局部变量#1~#33可利用程序字A、B、C和I、J、K赋值,其中,I、J、K可在调用指令中多次重复编程,它可对全部局部变量进行赋值。自变量指定Ⅱ的程序字与赋值变量的对应关系见表5.2-4。

表5.2-4 自变量指定Ⅱ的程序字与局部变量对应关系表

978-7-111-41794-1-Chapter05-42.jpg

(3)混合赋值

宏程序调用指令也可采用自变量指定Ⅰ、自变量指定Ⅱ混合赋值的方式,对局部变量#1~#33进行赋值。两种赋值方式的优先级相同,如同一局部变量进行了重复赋值,则后赋值的变量值有效。例如,执行指令:

978-7-111-41794-1-Chapter05-43.jpg

独立赋值的局部变量为#1=30.0(A)、#2=45.0(B)#4=-3.0(I1指定);重复赋值的变量有#7=4.0(I2指定)和#7=5.0(D指定),以后定义的D值有效,变量#7=5.0。