北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章528 浏览8043780

如何理解和使用STEP7的循环中断组织块OB3x?

在西门子Step7 PLC的编程中,组织块(OB)是操作系统与用户程序沟通的桥梁。Step7提供了各种各样的组织块,比如用于主程序循环的组织块OB1、用于日期时间中断的组织块OB10、用于延时中断的组织块OB20、用于硬件中断的组织块OB40、用于诊断中断的组织块OB82等等。今天这篇文章,我们想和大家谈谈Step7的循环中断组织块OB3x(x取值从0到8)。

cover.png所谓“循环中断(Cyclic Interrupt)”,其实就是周期性的触发中断。通俗的讲,就是每隔一段时间就触发一次中断。谁来触发呢?答案是:操作系统。

PLC的操作系统内部有若干定时器,可以给这些定时器设置不同的时间(Interval time)。当时间到了之后,定时器就会触发一次中断。之后定时器重新计时,下次时间到了之后,再次触发中断。如此循环,这就是“循环中断”(别问我它累不累)。

当然,触发中断并不是最终目的。操作系统希望当中断被触发后,用户能来干点什么。于是,它定义了一个接口模块,用户可以把程序写到这个模块中。当中断被触发后,操作系统会调用这个接口模块,于是用户程序就得以执行。这就是“中断处理(Interrupt Handling)”。

在Step7中,这个接口模块,就是循环中断组织块。

在S7-300/400中,总共有九个循环中断组织块:OB30~OB38。不同的组织块的时间周期和优先级是不同的,请看下面的表格:

Cyclic_OB_table.PNG

在Step7 V5.5中,OB35的时间周期是可以修改的,其它OB的周期都不能修改。优先级不能修改,如下图:

Cyclic_OB.png

怎么来使用循环中断组织块呢?最简单的例子是可以用来计时。

虽然PLC本身提供了定时器资源,但是这些定时器都只能在时间到了之后给一个信号。如果我们想查看定时器的当前时间,比如某个过程从计时开始已经走过了多少时间,传统的定时器是做不到的(IEC定时器可以在背景数据块中查看,但是不方便)。这种情况就可以利用循环中断组织块来实现。

比如,我们可以在OB35中写如下一段代码:

OB35.png

设我们使用OB35的默认时间周期:100ms。那么,每隔100ms,MD0的值就会加1,这样就可以实现一个时基为100ms(0.1s)的定时器。

注:完整功能的定时器还需要其它代码。

在S7-1200/1500中,循环中断组织块的时间周期和优先级都可以根据需要修改。循环时间周期的取值范围在1~60000ms之间;优先级的取值范围在2~24之间。如下图:

cycle_time.png

priority.PNG

好了,关于Step7的循环中断组织块就先介绍到这里。欢迎扫描下方的二维码关注我们的微信公众号。

founderchip.png

已经过安全软件检测无毒,请您放心下载。

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论