分享

S7-200 PLC子程序指令及应用实例

 titifeng 2017-12-29
    S7-200 PLC把程序主要分为三大类:主程序、子程序和中断程序。在实际应用中有些程序内容可能被反复使用,对那些需要经常执行的程序段,可设计成子程序的形式,并为每个子程序赋以不同的编号,在程序执行的过程中,可随时调用某个编号的子程序。
    子程序的优点在于它可以用于对一个大的程序进行分段及分块,使其成为较小的更易管理的程序块。程序调试、程序检查和程序维护时,可充分利用这项优势。子程序只在需要时才被调用、执行。这样就可以更有效地使用PLC,充分利用CPU的时间。
    1)子程序的建立。可以采用下列方法创建子程序:
    ·在编辑环境的程序块中点击鼠标右键,选择“插入子程序SBR_n”(n的范围为:0~63)。
    ·从编辑菜单中,选择插入子程序SBR_n
    只要插入了子程序,程序编辑器底部就将出现一个新标签,标志新的子程序名。此时,可以对新的子程序编程。
    2)为子程序定义参数
    根据子程序有无参数,可以将子程序分为有参子程序和无参子程序,如果该子程序带有参数,就要使用该子程序的局部变量表来定义参数。S7-200为每个程序都安排了局部变量表,必须利用选定该子程序后出现的局部变量表为该子程序的局部变量,S7-200对其局部变量参数有以下规定:
    ·子程序在带参数调用时,最多可以带16个参数。每个参数包含变量名、变量类型和数据类型。这些参数在子程序的局部变量表中进行定义。
    ·变量名由不超过8个字符的字母和数字组成,但第一个字符必须是字母。
    ·变量类型:在子程序带参数调用时可以使用4种变量类型,根据数据传递的方向,依次安排这些变量类型在局部变量表中的位置,包含:
    IN类型(传入子程序型)。
    IN/OUT类型(传入/传出子程序型,调用子程序时,将指定地址的参数传入子程序,子程序执行结束时,将得到的结果值返回达到同一个地址)。
    OUT类型(传出子程序型)。
    TEMP类型(暂时型,用于在子程序内部暂时存储数据,不能用来与主程序传递参数数据)。
    ·变量的数据类型,可以是:
    ①布尔能流型( BOOL):该数据类型仅对位输入操作有效,它是位逻辑运算的结果。对能流输入类型的数据,要安排在局部变量表的最前面。
    ②布尔型( BOOL):该数据类型用于单独的位输入和位输出。
    ③字节型( BYTE)、字型(WORD)、双字型(DWORD):该数据类型分别用于说明1个字节、2个字节和4个字节的无符号的输入参数或输出参数。
    ④整数( INT)和双整数型(DINT):该数据类型分别用于说明2个字节和4个字节的有符号的输入参数或输出参数。
    ⑤实数型( REAL):该数据类型用于说明IEEE标准的32位浮点输入参数或输出参数。
    【例1 SBR1子程序是一个含有4个输入参数、1个输入输出参数、1个输出参数的带参数的子程序。在创建这个子程序时,首先要打开这个子程序的“SIMATIC LAD”(局部变量表)。在局部变量表中,为这6个参数赋予名称(如IN1IN2IN3IN4INOUTOUT),然后选定变量类型(IN或者IN OUT或者OUT),并赋予正确的数据类型(BOOLBYTEBOOLWORDDWORDWORD),见表4-22
    4-22    局部变量表
局部变量表
    注:首先完成局部变量表SBR1的编辑,这时再调用SBR1时,这个子程序自然就带参数了。表中局部变量一项(L)参数是自动形成的,不需用户填写。
    3)子程序调用指令和返回指令
    子程序调用指令CALL的功能是将程序执行转移到编号为n的子程序。
    子程序的入口用指令SBR n表示,在子程序执行过程中,子程序将执行全部指令直至满足返回条件而返回,或者执行到子程序末尾而返回。当子程序返回时,返回到原主程序出口的下一条指令执行,继续向下扫描程序。
    在梯形图中,子程序调用指令以功能框形式编程,子程序返回指令以线圈形式编程,如图4-59所示,其中调用指令“CALL SBR_1”,也可写成“CALL 1”。
子程序调用及返回指令
    4-59    子程序调用及返回指令
    4)子程序编程步骤
    ①建立子程序( SBR_n)
    ②在子程序( SBR_n)中编写应用程序,如果子程序带有参数,应首先在子程序中填写局部变量表,然后再编写应用程序。
    ③在主程序或其他子程序中编写调用子程序(SBR_n)指令。
    5)注意事项
    ①程序内一共可有64个子程序,允许子程序嵌套调用(在子程序内放置子程序的调用指令),嵌套深度最多为8重。
    S7-200不允许直接递归调用(例如,不能在SBR0中调用SBR0),但允许间接递归。
    ③各子程序的参数最大限制是16个,如果要下载的程序超过此限制,将返回错误。
    ④用Micro/WIN32软件编程时,编程人员不用手工输入RET指令,而是由软件自动加在每个子程序的结束处,在子程序中不能使用END指令。
带参数的子程序调用
    4-60    带参数的子程序调用
    【例2  4-60是一个带有6个参数的子程序调用。在这个例子中,在建立SBR1时,要首先填写局部变量表,见表4-25
    在使用语句表编程时,要注意CALL指令的第一个参数是子程序标号,接着是有关参数,其中参数的顺序和局部变量表中参数填写的顺序完全相同,先输入,后输入/输出,最后是输出。
    【例3  采用子程序的形式来控制一台交流电动机的起/停控制,系统的I/O分配为:
    电动机起动按钮(常开):I0.0;停止按钮(常开);I0.1;电动机电源接触器:Q0.0编程步骤:
    ①采用子程序编写电动机的起/停控制,则该子程序一定带有参数,且需要2个输入参数,1个输出参数。所以建立子程序SBR0后,应先填写局部变量表,见表4-23
    4-23    SBR0局部变量表
 SBR0局部变量表
    ②填写完局部变量表后,就可以编写应用程序,应采用名称作为指令的操作数。
    ③在主程序中应一直(采用常闭点SM0.0)调用子程序SBR0。具体的子程序及主程序如图4-61所示。
子程序编程举例
    4-61    子程序编程举例

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多