分享

S7 300PLC之旅——用户程序的入口“OB1”

 黄友囯 2017-09-05

在SIMATIC S7中,用户的程序都维护在一个个的逻辑块中。Block是用户程序最重要的组成部分。STEP 7有三大类块:

1、逻辑块 Logic blocks:OB、FB、FC、SFB、SFC五种

2、数据块 Data blocks:DB、SDB

3、用户自定义数据类型 User-defined data types:UDT

今天,我们一起探讨一下OB块,并着重介绍一下OB1。


OB即组织块(Organization block)。它是指CPU的操作系统与用户程序之间的接口。OB用于执行特定的程序段:

  • 启动CPU时

  • 在循环或定时执行过程中

  • 出错时

  • 发生硬件中断时。

组织块按照已分配的优先级来执行。

OB块大致可以分为以下几类:

  1. 程序周期循环组织块OB1;

  2. 时间日期中断组织块OB10~OB17;

  3. 延时中断组织块OB20~OB23;

  4. 循环中断组织块OB30~OB38;

  5. 硬件中断组织块OB40~OB47;

等等。。。

Siemens的S7系列CPU,提供了丰富的组织块,我们可以根据实际需求,灵活的调用相应的组织块,完成既定的控制目标。


程序循环组织块OB1

OB1是S7程序的入口,它与C语言中的main()函数有些许类似。系统上电、自检、启动完成后,系统会周期性的执行OB1。我们用户可以在OB1中编写控制程序,处理输入数据、控制输出设备,以完成生产控制要求。

在所有的OB块中,OB1的优先级最低,除了OB90外的所有其他OB块都能中断OB1的执行。

OB1执行后,系统会发送全局数据。在再次执行OB1之前,系统会做以下三件事:

  • 将过程输出映像的数据传给输出模块;

  • 更新过程输入映像;

  • 接收全局数据。

S7会监控程序的扫描时间。系统预设的最大扫描周期为150ms(改时间可更改),同时通过调用SFC43可以重启时间监控。如果OB1的程序执行时间超过了最大扫描周期,系统会调用OB80(时间错误中断),进行中断响应。如果OB80没有专门编程,CPU则会进入STOP模式。

系统除了最大扫描周期之外,还有最小扫描周期。如果OB1程序太小,执行完一次后,仍未达到最小扫描周期,程序会停止执行,直到其达到最小扫描周期。


一个良好的编程习惯是,每类现场设备的控制程序最好编写在独立的FB块或FC块中,然后在OB1中根据需要,随时调用相应的块即可。

下一篇我们将汇总一下FB块、FC块以及DB块的功能和编程要点,尽请期待。

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多