1.3 子程序

        原则上主程序和子程序之间并没有区别。零件加工主程序也可作为子程序被调用。可以用子程序编写经常重复进行的加工,比如某一确定的轮廓形状。子程序单独在一个文件中进行编程,在需要时进行调用。

        子程序的一种形式就是加工循环,加工循环包含一般通用的加工工序,如螺纹切削,坯料切削加工等等。通过对规定的计算参数赋值就可以实现各种具体的加工。为了方便地选择某一个子程序,必须给子程序取一个程序名。程序名可以自由选择,但必须符合相关规定(与主程序相同),并且建议具有一定含义。

1.3.1 子程序的分类和定义

        子程序分类:

        标准子程序:不带参数的子程序,可以被主程序和其他子程序调用。

         参数子程序:调用参数子程序时,通过传递参数给子程序来实现具体功能。

        子程序定义:

        标准子程序:和主程序一样。

        参数子程序:子程序中开头处必须有PROC,末尾处RET。

示例:

        PROC SUN (TYPE1 VAR1, TYPE2 VAR2, ……)

        ……

        RET

1.3.2 子程序调用

        在一个程序中(主程序或子程序)可以直接用程序名调用子程序。被调用的子程序必须与主程序在同一目录下。子程序调用要求占用一个独立的程序段。如果要求多次连续地执行某一子程序,则在编程时必须在所调用子程序的程序名后对地址P进行次数编程,最大次数为99次。

示例1标准子程序的调用,后面“()”可以省略

          N10 WELLE7() P3                      ;调用子程序WELLE7 3次

        或N10 CALL WELLE7() P3         ;调用子程序WELLE7 3次

示例2参数子程序的调用(假设WELLE8有5个参数)

        N10 WELLE8(10, 50, R32, , R45) P5           ;调用子程序WELLE8 5次

        或N10 CALL WELLE8(10, 50, R32, , R45)  ;调用一次子程序WELLE8

        实参可以是常量、变量或R参数,没有赋值的参数以零代之,也就是说第四个参数为零。

注意:

        1. 在退出子程序后,主程序中必须重新进行技术定义(G91/G90,G71/G70,DIAMOF/DIAMON等等)。另外,子程序的名称是区分大小写的,后缀名必须是小写iso;

        2. 在子程序中执行M02时,程序跳出子程  序,返回到主程序,同时主程序结束。

1.3.3 程序嵌套深度

        子程序不仅可以从主程序中调用,也可以从其它子程序中调用,这个过程称为子程序的嵌套,嵌套的深度可以为12级(包括主程序)。

                                                                                                        图1.4 程序调用嵌套 

1.3.4 子程序参数传递

         子程序参数传递分为两种形式,按值传递和按地址传递。按值传递的参数仅作为输入参数,在被调用子程序中参与计算,即使其值发生变化也不反馈回上层程序。而按地址传递的参数作为输入输出参数,在被调用子程序中参与计算后,其值将重新返回至上层程序。为实现参数的按地址传递,只需在被调用子程序的对应参数前加上“VAR”关键字即可。

 

示例:

        PROC  SUB1 (……)

        DEF REAL PT

        DEF REAL M2PIT

        ……

        SUB2 (PT, M2PIT)

         ……

        RET

        PROC SUB2 (VAR REAL PT, REAL M2PIT)

        ……

        RET

        在子程序“SUB1”中定义了两个参数“PT”和“M2PIT”。在调用子程序“SUB2”时,“PT”为按地址传递,“M2PIT”为按值传递。调用的目的是在“SUB2”中根据“M2PIT”的值对“PT”进行相应修改,并把结果反馈给“SUB1”继续使用。即“SUB2”对“PT”的更改能够传递至“SUB1”。

0 (0)
文章评级 (未投票)
文章评级
附件
暂无附件。
评论
暂无评论,第一发布评论。
姓名
邮箱地址
验证码 Security Code
相关文章 RSS Feed
1.2 NC程序的结构和内容名称规定
从 Fri, Aug 12, 2016起,访问5968 次。
1.7 指令表
从 Fri, Aug 12, 2016起,访问2859 次。
1.8 G功能分组
从 Fri, Aug 12, 2016起,访问2690 次。
1.9 M功能分组
从 Fri, Aug 12, 2016起,访问2624 次。
1.5 变量定义
从 Fri, Aug 12, 2016起,访问2565 次。
1.6 程序结构
从 Fri, Aug 12, 2016起,访问2324 次。
1.4 程序跳转
从 Fri, Aug 12, 2016起,访问2237 次。
1.1 坐标系定义
从 Fri, Aug 12, 2016起,访问3905 次。