您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400 PLC的子程序定义、调用及结束指令

来源:艾特贸易2017-06-04

简介对于大型的控制项目,往往需要将其按照流程或者功能模块划分为几个相对较小的控制单元,这些小的控制单元就称为子控制单元。子控制单元对应着子程序。要完成整个控制,也就需

    对于大型的控制项目,往往需要将其按照流程或者功能模块划分为几个相对较小的控制单元,这些小的控制单元就称为子控制单元。子控制单元对应着子程序。要完成整个控制,也就需要多个子控制单元有序地组合起来。    在实际应用中,通常都是用主程序来协调和调用这些子程序,进而完成整个控制过程。那么就涉及到对子程序的定义、调用和结束等问题,下面依次介绍相应的指令。    S7-300/400系统中,可以通过主控继电器来打开或关闭一个区域,区域内部包含一个或多个梯形图,并且在其中还可以调用块功能;进而通过控制区域是否处于工作状态来决定这段程序执行与否。    主控继电器(MCR)存在于接触控制系统中,当它关闭一个区域时,这个区域内所有非保持性接触全部断开,所有保持性接触依然保持。主控继电器(MCR)具体包含4个指令,其符号和相应的功能如表4-14所示。    4-14    MCR相应的指令符号及功能
MCR相应的指令符号及功能
    主控继电器还存在一个MCR相关性的问题,用MCRA指令激活的区域,直到用MCRD指令使其失效之前,MCR相关性都是激活的。在MCRA~MCRD区域内,还要具体运用MCR<MCR>来打开和关闭一个程序段,这个子程序段的MCR相关性要受MCR<的影响。    MCRAMCRD区域内,多个MCR<MCR>可以并列放置来控制程序段,也可以嵌套放置来控制程序段。这时各个子程序段内的MCR相关性就要受到多方面的影响。    1.多个MCR<MCR>并列放置    如图4-67所示,3MCR<MCR>的组合放置在MCRA~MCRD区域内,各个MCR<~MCR>区域内的相关性是彼此独立的,受各自MCR<前面的逻辑运算的影响。当前面的逻辑运算接通,即RLO=1时,MCR相关性关闭;当逻辑运算断开时,即RLO=0时,MCR相关性打开。如第一个MCR<~MCR>区域,当I1.0置位时,MCR相关性关闭;当I1.0复位时,MCR相关性打开;而其他两个MCR<~CR>区域的MCR相关性不受影响。在MCR<~MCR>区域内插入子程序,然后运用MCR<指令控制其执行与否,这样就完成了一个子程序段的定义。
多个MCR<和MCR>并列放置的程序结构
    4-67    多个MCR<MCR>并列放置的程序结构    2.多个MCR<MCR>嵌套放置    MCRAMCRD区域内,用第一个MCR<打开了一个程序段区域,但是没有用MCR>结束这段区域之前,又有第二个MCR<、第三个MCR<依次打开相应的执行区域,最后从里向外依次用MCR>指令来关闭相应的区域,这种放置方式叫做嵌套放置。下面一起来看看嵌套放置时是怎么影响各个小区域的MCR相关性的打开和关闭的。    如图4-68所示,区域1、区域2、区域3各自的MCR相关性与前面介绍的并列放置所受的影响不同。嵌套放置时,最多可以嵌套8层,外层的MCR相关性是打开或关闭对内层的MCR相关性有着直接的影响;当外层的MCR相关性打开,内层的MCR相关性一定也打开;当外层的MCR相关性关闭,内层的MCR相关性打开或者关闭取决于内层MCR<指令前的逻辑运算是置位或者复位,置位(即RLO=1)时,内层MCR相关性关闭,复位 (即RLO=0)时,内层MCR相关性打开。具体的MCR相关性情况如表4-15所示。    4-15    嵌套放置时的MCR相关性情况
嵌套放置时的MCR相关性情况
    注意:MCR相关性打开,则该区域内的程序不可以执行;MCR相关性关闭,则可以执行。    如上所述,在实际应用中可以通过MCRA指令激活一个区域,然后再运用MCR<指令定义打开一个子程序段,通过控制MCR<指令前的逻辑运算等来控制子程序的执行,每个子程序段通过MCR>指令来结束;在MCRA指令激活的区域中完成多个子程序段的定义以后,通过指令MCRD来使整个区域处于失效状态,进而控制程序的执行。这样就完成了子程序的定义、调用执行和结束等操作。下面以嵌套运行的实例来说明。    【例4-24】如图4-69所示,在MCRAMCRD区域内有两个嵌套布置的MCR<~MCR>程序段。
多个MCR<和MCR>嵌套放置的程序结构
    4-68    多个MCR<MCR>嵌套放置的程序结构
主控继电器控制程序实例
    4-69    主控继电器控制程序实例    I1.0置位时,外层MCR<~MCR>区域的MCR相关性关闭,则程序段可以执行,因此I2.1置位就可以使Q1.0置位;此时如果I1.2置位,则内层MCR<~MCR>区域的MCR相关性同样关闭,相应的程序段可以执行,因此I2.2置位可以使Q1.1置位;相反,如果I1.2复位,则内层MCR<MCR>区域的MCR相关性打开,程序段不能执行,即使I2.2置位,Q1.1也处于复位状态。    I1.0复位时,外层MCR<~MCR>区域的MCR相关性打开,程序段不能执行,此时不管I1.2处于什么状态,内层MCR<MCR>区域的MCR相关性同样打开,相应的程序段不能执行。