加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线18475208684
公司新闻
什么是子程序?子程序有什么优点?西门子S7-200 PLC子程序如何编程调用?
发布时间: 2024-06-26 10:24 更新时间: 2024-11-10 08:00

  西门子S7-200 PLC把程序主要分为三大类:主程序、子程序和中断程序。在实际应用中有些程序内容可能被反复使用,对那些需要经常执行的程序段,可设计成子程序的形式,并为每个子程序赋以不同的编号,在程序执行的过程中,可随时调用某个编号的子程序。

     子程序的优点在于它可以用于对一个大的程序进行分段及分块,使其成为较小的更易管理的程序块。程序调试、程序检查和程序维护时,可充分利用这项优势。子程序只在需要时才被调用、执行。这样就可以更有效地使用PLC,充分利用CPU的时间。

     1)子程序的建立。可以采用下列方法创建子程序:

     ·在编辑环境的程序块中点击鼠标右键,选择“插入子程序SBR_n”(n的范围为:0~63)。

     ·从编辑菜单中,选择插入子程序SBR_n。

     只要插入了子程序,程序编辑器底部就将出现一个新标签,标志新的子程序名。此时,可以对新的子程序编程。

     2)为子程序定义参数

     根据子程序有无参数,可以将子程序分为有参子程序和无参子程序,如果该子程序带有参数,就要使用该子程序的局部变量表来定义参数。S7-200为每个程序都安排了局部变量表,必须利用选定该子程序后出现的局部变量表为该子程序的局部变量,S7-200对其局部变量参数有以下规定:

     ·子程序在带参数调用时,Zui多可以带16个参数。每个参数包含变量名、变量类型和数据类型。这些参数在子程序的局部变量表中进行定义。

     ·变量名由不超过8个字符的字母和数字组成,但第一个字符必须是字母。       ·变量类型:在子程序带参数调用时可以使用4种变量类型,根据数据传递的方向,依次安排这些变量类型在局部变量表中的位置,包含:

     ①IN类型(传入子程序型)。

     ②IN/OUT类型(传入/传出子程序型,调用子程序时,将指定地址的参数传入子程序,子程序执行结束时,将得到的结果值返回达到同一个地址)。

     ③OUT类型(传出子程序型)。

     ④TEMP类型(暂时型,用于在子程序内部暂时存储数据,不能用来与主程序传递参数数据)。

     ·变量的数据类型,可以是:

     ①布尔能流型( BOOL):该数据类型仅对位输入操作有效,它是位逻辑运算的结果。对能流输入类型的数据,要安排在局部变量表的Zui前面。

     ②布尔型( BOOL):该数据类型用于单独的位输入和位输出。

     ③字节型( BYTE)、字型(WORD)、双字型(DWORD):该数据类型分别用于说明1个字节、2个字节和4个字节的无符号的输入参数或输出参数。

     ④整数( INT)和双整数型(DINT):该数据类型分别用于说明2个字节和4个字节的有符号的输入参数或输出参数。

     ⑤实数型( REAL):该数据类型用于说明IEEE标准的32位浮点输入参数或输出参数。

     【例1】 SBR1子程序是一个含有4个输入参数、1个输入输出参数、1个输出参数的带参数的子程序。在创建这个子程序时,首先要打开这个子程序的“SIMATIC LAD”(局部变量表)。在局部变量表中,为这6个参数赋予名称(如IN1、IN2、IN3、IN4、INOUT、OUT),然后选定变量类型(IN或者IN OUT或者OUT),并赋予正确的数据类型(如BOOL、BYTE、BOOL、WORD、DWORD、WORD),见下表:

局部变量表

图片

     注:首先完成局部变量表SBR1的编辑,这时再调用SBR1时,这个子程序自然就带参数了。表中局部变量一项(L区)参数是自动形成的,不需用户填写。

     3)子程序调用指令和返回指令

     子程序调用指令CALL的功能是将程序执行转移到编号为n的子程序。

     子程序的入口用指令SBR n表示,在子程序执行过程中,子程序将执行全部指令直至满足返回条件而返回,或者执行到子程序末尾而返回。当子程序返回时,返回到原主程序出口的下一条指令执行,继续向下扫描程序。

     在梯形图中,子程序调用指令以功能框形式编程,子程序返回指令以线圈形式编程,如下图所示,其中调用指令“CALL SBR_1”,也可写成“CALL 1”。

子程序调用及返回指令

图片

     4)子程序编程步骤  

     ①建立子程序( SBR_n)。

     ②在子程序( SBR_n)中编写应用程序,如果子程序带有参数,应首先在子程序中填写局部变量表,然后再编写应用程序。

     ③在主程序或其他子程序中编写调用子程序(SBR_n)指令。

     5)注意事项  

     ①程序内一共可有64个子程序,允许子程序嵌套调用(在子程序内放置子程序的调用指令),嵌套深度Zui多为8重。

     ②S7-200不允许直接递归调用(例如,不能在SBR0中调用SBR0),但允许间接递归。

     ③各子程序的参数Zui大限制是16个,如果要下载的程序超过此限制,将返回错误。

     ④用Micro/WIN32软件编程时,编程人员不用手工输入RET指令,而是由软件自动加在每个子程序的结束处,在子程序中不能使用END指令。

     【例2】  采用子程序的形式来控制一台交流电动机的起/停控制,系统的I/O分配为:

     电动机起动按钮(常开):I0.0;停止按钮(常开);I0.1;电动机电源接触器:Q0.0编程步骤:

     ①采用子程序编写电动机的起/停控制,则该子程序一定带有参数,且需要2个输入参数,1个输出参数。所以建立子程序SBR0后,应先填写局部变量表,见下表。

      SBR0局部变量表 

图片

    ②填写完局部变量表后,就可以编写应用程序,应采用名称作为指令的操作数。

     ③在主程序中应一直(采用常闭点SM0.0)调用子程序SBR0。具体的子程序及主程序如下图所示。

子程序编程举例

图片


联系方式

  • 电  话:13922889745
  • 经理:向小姐
  • 手  机:18475208684
  • 微  信:18475208684