1.建立子程序
    可用编程软件Edit菜单中的Insert选项,选择Subroutine,以建立或插入一个新的子程序,同时在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR_n,编号n从0开始按递增顺序生成,可以在图标上直接更改子程序的程序名。在指令树窗口双击子程序的图标就可对它进行编辑。
    2.子程序调用
    子程序可以多次被调用,也可以嵌套(最多8层),还可以递归调用(自己调用自己)。
    CALL SBR0    //子程序调用
   CRET    //条件返回
    RET    //无条件返回(自动)
    【例4-18】循环、跳转及子程序调用指令应用程序,循环、跳转的梯形图程序如图4-45所示,子程序调用的梯形图程序如图4-46所示。


图4-45 循环、跳转指令的应用


图4-46 子程序调用指令的应用
    STL指令如下:
    LDW>= AC0,+100
    JMP 10    //跳转
    LD    M0.0
    FOR VW100,+1,+20 //循环开始
    LD    I0.0
    CAIL SBR_0    //调用子程序
    NEXT    //循环返回
    LD    I0.1
    SQ0.0,1    //位置1
    LBL 10    //标号
    子程序SBR0如下:
    LD SM0.0
    INCW VW200    //VW200增1
    LD 10.2
    CRET    //条件返回
    3.带参数的子程序调用指令
子程序可能有要传递的参数(变量和数据),这时可以在子程序调用指令中包含相应参数,它可以在子程序与调用程序之间传送。参数在子程序的局部变量表中定义,定义参数时必须指定参数的符号名称(最多23个英文字符)、变量类型和数据类型。一个子程序最多可以传送16个参数。
    局部变量表中的变量有IN、OUT、IN/OUT和TEMP等4种类型。
    带参数子程序调用指令示例如图4-47(b)所示,EN和INI的输人为布尔型能流输入。


图4-47 带参数的子程序及其调用的应用
(a)带参数的子程序及其变量表;(b)主程序调用
    子程序调用时,输人参数被拷贝到局部存储器。子程序完成时,从局部存储器拷贝输出参数到指定的输出参数地址。
    IN类型:将指定位置的参数传人子程序。
    OUT类型:从子程序的结果值(数据)传人到指定参数位置。
    IN/OUT类型:将指定位置的参数传到子程序,从子程序来的结果值被返回到同样的地址。
    TEMP类型:局部存储器只用作子程序内部的暂时存储器,不能用来传递参数。
    在局部变量表中定义的变量表和带参数的子程序如图4-47 (a)所示。


 会员中心
 会员中心 会员注册
 会员注册 返回顶部
返回顶部 刷新页面
刷新页面 下到页底
下到页底