电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

如何理解子程序的调用

2016-09-10 16:11分类:PLC编程入门 阅读:

 

    S7-200 CPU226的套调用,即在子程序中可以调用别的子程序,最多可以嵌套8层。
    在中断服务程序中调用的子程序不能再调用别的子程序。不禁止递归调用(子程序自己调用自己),但是应慎重使用递归调用。
    创建子程序后,STEP 7 Micro/WIN在指令树最下面的“子程序”文件夹中自动生成刚创建的子程序“模拟量计算”对应的图标。对于梯形图程序,在子程序局部变量表中为该子程序定义参数后,将生成客户化调用指令块(见图6-83),指令块中自动包含了子程序的输入参数和输出参数。
    在梯形图程序中插入子程序调用指令时,首先打开程序编辑器视窗中需要调用子程序的POU,找到需要调用子程序的地方。用鼠标双击打开指令树最下面的“子程序”文件夹,用鼠标左键按住需要调用的子程序图标,将它从指令树“拖”到程序编辑器视窗中正确的位置。放开左键,子程序块便被放置在该位置。也可以将矩形光标置于程序编辑器视窗中需要放置该子程序的地方,然后双击指令树中要调用的子程序,子程序图标会自动出现在光标所在的位置。
    如果用语句表编程,子程序调用指令的格式如下:
    CALL子程序号,参数1,参数2,…,参数n
    n =0—16,最多可传递16个参数。图6-83中的梯形图对应的语句表程序如下:
    LD    10.4
    CALL  模拟量计算,AIW2,VW20.+22356,VD40
    在带参数调用子程序指令中,参数必须按一定的顺序排列,输人参数在最前面,其次是输入/输出参数,最后是输出参数。从上面的例子可以看出,梯形图中从上到下的同类参数,在语句表中按从左到右的顺序排列。
    子程序调用指令中的有效操作数为存储器地址、常量、全局符号和调用指令所在的POU中的局部变量,不能指定被调用子程序中的局部变量。
    在调用子程序时,CPU保存当前的逻辑堆栈,将栈顶值置为1,堆栈中的其他值清0,控制权转移至被调用的子程序。子程序执行完成时,用调用时保存的数据恢复堆栈,控制权返回调用程序。子程序和调用程序共用累加器,不会因使用子程序自动保存或恢复累加器。
    当给子程序传递值时,它们放在子程序的局部存储器中。局部变量表的最左列是每个被传递参数的局部存储器地址。调用子程序时,输入参数被复制到子程序的局部存储器,子程序执行完后,从局部存储器区复制输出参数值到指定的输出参数地址。
    如果在使用子程序调用指令后修改该子程序中的局部变量表,调用指令将变为无效。必须删除无效调用,并用能反映正确参数的新的调用指令代替。

上一篇:如果要进行局部变量数据类型检查应该怎么办

下一篇:如何解释PID回路控制指令

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部