不是有效的win32程序_【西门子PLC编程实例】S7200 PLC子程序指令及应用实例

    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个参数赋予名称(如IN1、IN2、IN3、IN4、INOUT、OUT),然后选定变量类型(IN或者IN OUT或者OUT),并赋予正确的数据类型(如BOOL、BYTE、BOOL、WORD、DWORD、WORD),见下表:

局部变量表

54f45b8e810395ab31d3872fec444d48.png

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

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

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

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

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

子程序调用及返回指令

0788ffdc80a8ff473a5edef8f2beb2a4.png

     4)子程序编程步骤  

     ①建立子程序( SBR_n)。

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

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

     5)注意事项  

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

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

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

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

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

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

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

      SBR0局部变量表 

52b36ee6c87feb01e6933f6280c3edb9.png

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

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

子程序编程举例

177a962c12ee134a90e34534d19beadc.png

来源:网络

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
S7200智能PLC是由西门子公司生产的一种可编程控制器。它具有高度可靠性、性能卓越和灵活性强的特点,被广泛应用于工业自动化系统中。 下面是一个关于S7200智能PLC实例程序: 假设我们要设计一个自动控制系统,用于控制一个灯光设备的开关。系统由一个按钮和一个指示灯组成。当按钮按下时,指示灯亮起;再次按下按钮,指示灯熄灭。 首先,我们需要定义输入、输出和内部变量。输入变量为按钮信号,输出变量为指示灯信号。内部变量为存储状态的开关信号。 接下来,我们创建一个主程序程序的第一步是初始化所有变量,并将指示灯设置为初始状态:熄灭。 然后,我们进入一个循环。在每个循环中,我们读取按钮信号,并根据按钮信号进行逻辑判断。 如果按钮信号为1(即按钮按下),我们将开关信号与1进行比较。如果开关信号为0,则将指示灯信号置为1,表示指示灯亮起,并将开关信号更新为1。然后,等待一段时间,以确保指示灯的状态稳定再进行下一步操作。如果开关信号为1,则将指示灯信号置为0,表示指示灯熄灭,并将开关信号更新为0。同样,等待一段时间。 如果按钮信号为0(即按钮未按下),我们不进行任何操作,继续循环等待按钮信号。 在每个循环的最后,我们更新输出变量,使得指示灯信号能够输出到相应的输出端口。 最后,我们将程序下载到S7200智能PLC中,并将输入和输出端口连接到按钮和指示灯设备。 通过以上步骤设计的S7200智能PLC实例程序,能够实现按下按钮时,指示灯亮起;再次按下按钮时,指示灯熄灭的功能。这个例子展示了S7200智能PLC在自动控制系统中的应用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值