当指定G65时,调用以地址P指定的用户宏程序,数据(自变量)能传递到用户宏程序中,指令格式如下。
<p>:要调用的程序号;
<l>:重复次数(默认值为1);
<自变量赋值>:传递到宏程序的数据。
1.调用说明
1)在G65之后,用地址P指定用户宏程序的程序号。
2)任何自变量前必须指定G65。
3)当要求重复时,在地址L后指定1~9999的重复次数,省略L值时,默认L值等于1。
4)使用自变量指定(赋值),其值被赋值给宏程序中相应的局部变量。
2.自变量指定(赋值)
自变量指定又可称之为自变量赋值(以下统一采用该叫法),即若要向用户宏程序本体传递数据时,须由自变量赋值来指定,其值可以有符号和小数点,且与地址无关。
这里使用的是局部变量(#1~#33共有33个),与其对应的自变量赋值共有两种类型:
自变量赋值Ⅰ:用英文字母后加数值进行赋值,除了G、L、O、N和P之外,其余所有21个英文字母都可以给自变量赋值,每个字母赋值一次,从A、B、C、D、到X、Y、Z,赋值不必按字母顺序进行,但使用I、J、K时,必须按字母顺序指定(赋值),不赋值的地址可以省略。
自变量赋值Ⅱ:与自变量指定赋值Ⅰ类似,也是用英文字母后加数值进行赋值,但只用了A、B、C和I、J、K这6个字母,具体用法是:除了A、B、C之外,还用10组I、J、K来对自变量进行赋值,在这里I、J、K是分组定义的,同组的I、J、K必须按字母顺序指定,不赋值的地址可以省略。
自变量赋值Ⅰ和自变量赋值Ⅱ与用户宏程序本体中局部变量的对应关系见表4-3、表4-4。
表4-3 FANUC 0i第Ⅰ类自变量赋值(www.xing528.com)
表4-4 FANUC 0i第Ⅱ类自变量赋值
注意:对于自变量赋值Ⅱ,表4-4中I、J、K的下标用于确定自变量赋值的顺序,在实际编程中不写(也无法写,语法上无法表达)。
3.自变量赋值的其他说明
1)自变量赋值Ⅰ、Ⅱ的混合使用。CNC内部自动识别自变量赋值Ⅰ和Ⅱ。
赋值Ⅰ和Ⅱ混合赋值,较后赋值的自变量类型有效(以从左到右书写的顺序为准,左为先,右为后)。
该例中,I4.0和D5.0都给变量#7赋值,但后者D5.0有效。
由此可以看出,自变量赋值Ⅱ用10组I、J、K来对自变量进行赋值,在上述表4-4中似乎可以通过I、J、K的下标很容易识别地址和变量的关系,但实际上存在实际编程中无法输入下标的问题,尽管自变量值Ⅱ“充分利用资源”,可以对#1~#33全部33个局部变量进行赋值,但是在实际编程时要分清是哪一组I、J、K,又是第几个I或J或K,是一件非常麻烦的事。如果再让自变量赋值Ⅰ和自变量赋值Ⅱ混合使用,那就更是烦上加烦。
相反,如果只用自变量赋值Ⅰ进行赋值,由于地址和变量是一一对应的关系,混淆和出错的机会相当小,尽管只有21个英文字母可以给自变量赋值,但是95%以上的编程工作再复杂也不会出现超过21个变量的情况。因此,在此建议在实际编程时,使用自变量赋值Ⅰ进行赋值。
2)小数点的问题。没有小数点的自变量数据的单位为各地址的最小设定单位。传递的没有小数点的自变量的值将根据机床实际的系统配置而定。因此建议在宏程序调用中一律使用小数点,既可避免无谓的差错,也可使程序对机床及系统的兼容性好。
3)调用嵌套。调用可以四级嵌套,包括非模态调用(G65)和模态调用(G66),但不包括子程序调用(M98)。
4)局部变量的级别。局部变量嵌套从0到4级,主程序是0级。用G65或G66调用宏程序,每调用一次(2、3、4级),局部变量级别加1,而前一级的局部变量值保存在CNC中,即每级局部变量(1、2、3级)被保存,下一级的局部变量(2、3、4级)被准备,可以进行自变量赋值。
当宏程序执行M99时,控制返回到调用的程序,此时,局部变量级别减1,并恢复宏程序调用时保存的局部变量值,即上一级被储存的局部变量被恢复,如同它被储存一样,而下一级的局部变量被清除。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。