在之前的文章中,我们讨论了什么是组织块,并讨论了主循环中断 OB1 和时间中断 OB10。
在本文中,我们将继续讨论不同的 OB,这次我们讨论的是延时中断组织块或 OB20。
内容:
- 什么是 OB20?
- 如何调用 OB20?
- SRT_DINT 指令的参数。
- 示例程序。
- 结论。
什么是延时中断 (OB20)?
OB20 是一个组织块,由操作系统调用并执行,但是我们必须告诉操作系统什么时候调用这个 OB20。
操作系统从用户 PLC 程序获取信息来调用该 OB20,它将等待配置的延迟时间,然后调用并执行 OB20 内部的任何逻辑。
我们通过在项目树中添加新块来创建 OB20 块。见图1。
图 1 – 创建一个新的 OB20 块
现在我已经创建了延时中断,那么什么时候执行呢? 以及如何配置块执行的时间延迟?
同样,OB20 是一个组织块,这意味着您不调用要执行的块,而是告诉操作系统何时可以调用它并执行其中写入的任何功能。
如何让操作系统调用 OB20?
为了告诉操作系统我们要调用 OB20,我们使用 SRT_DINT 或启动时间延迟中断,见图 2。
图 2 - 启动延时指令
SRT_DINT 指令的参数
从上图可以看出,可以使用 SRT_DINT 指令来调用 OB20。但您需要配置一些参数才能使指令正常工作。
EN:在 EN 输入出现下降沿信号之前,不会执行指令。这意味着您必须指定一组条件中的一个条件来启用信号,并且只有当该条件为真然后再次为假时,指令才会起作用。
OB_NR:您分配需要调用的延迟中断的编号,在我们创建 OB20 的情况下为 20,但我们可以创建多个延迟中断,然后我们必须使用单独的 SRT_DINT 指令调用每个延迟中断。
DTIME:即执行OB20之前要等待的延迟时间,为了模拟,我们将这个时间设置为 5 秒。
SIGN:调用延时中断 OB 时在 OB 的启动事件信息中出现的标识符。
PLC 程序示例
为了更好地理解 OB20,我们将创建一个简单的逻辑来了解如何调用和执行 OB20。我们将基于之前文章中为 OB1 和 OB10 制作的逻辑构建此 PLC 示例。
在 OB20 内部,我们将创建一个逻辑,用于计算在我们为 OB20 配置的 5 秒延迟时间内调用和执行了多少个 OB1 周期。见图3。
图 3 – OB20 内部逻辑
在最后一张图中,您可以看到我们使用 MOVE 指令在 OB20 调用开始时以及执行后推送有关周期计数的信息。
其余逻辑请参见图 4。
图 4 – 计算 5 秒内有多少个周期
之后,我们将循环计数的两个值相减,即可得到在五秒延迟内执行了多少个循环。
现在我们已经创建了我们想要的逻辑,我们如何调用 OB20? 如前所述,我们必须使用 SRT_DINT 指令。我们将在之前配置为每分钟执行一次的 OB10 中使用该指令。这意味着 OB20 也将每分钟调用并执行一次,但延迟时间为 5 秒。
在上一篇文章中,我们构建了一个逻辑来调用 OB1 被调用和执行的次数,我们还构建了另一个逻辑来每分钟调用 OB10。
在本例中,我们将使用 OB10 的调用来调用 OB20。见图5。
图 5 – 通过 OB10 调用 OB20
我们之前说过,SRT_DINT 需要 EN 处的下降沿信号才能启动调用。这就是为什么我们使用 TimeOfDayInterruptEnabled 信号,我们知道执行 OB10 时该信号将为 true,然后返回 false,为我们提供所需的边沿信号。
现在所有 PLC 逻辑都已完成,让我们编译并运行一个新的仿真。请参阅以下我们项目的模拟。
您首先在动画中看到周期计数的值为零,但是当调用 OB10 并且 TimeOfDayInterruptEnabled 为 true 时,逻辑将等待 5 秒,然后计数值将使用周期计数进行更新。
结论
- OB20 是由操作系统调用并执行的组织块。
- 我们可以通过 SRT_DINT 指令告诉操作系统调用 OB20。