1/3
2/3
3/3
西门子S7-1200/1500博图中启动OB、循环中断 OB组织块
工控喵了个咪
2022年05月10日 11:05
收录于文集
共8篇

一、S7-1200/1500 启动组织块

(1)启动 OB 的功能说明

1 .如果 CPU 的操作模式从 STOP 切换到 RUN 时,包括启动模式处于 RUN 模式时CPU断电再上电和执行 STOP 到 RUN 命令切换时,启动组织块 OB 将被执行一次。

2. 启动组织块执行完毕后才开始执行主“程序循环”OB 。S7-1200 CPU 中支持多个启动OB,按照编号顺序(由小到大)依次执行,OB100 是默认设置。其它启动 OB 的编号必须大于、等于 123。

应用:

组织块-Startup

组织块-Startup应用

(2)使用启动组织块需要注意的几个方面:

1.只要工作模式从 STOP 切换到 RUN ,CPU 就会清除:过程映像输入;初始化:过程映像输出并处理启动 OB ;(即:在从 STOP-RUN 的过程约几秒钟,从断电到 RUN 时间更长一些的过程中,CPU 会清除所有输入输出过程映象状态,只有在启动完成的最后 1 个扫描周期才会执行 1 次程序运行过程。在启动过程中按 I0.5 程序是不会执行的,只有在最后 1 次扫描的那个时间I0.5=1 才会有效)

2.在启动阶段,对中断事件进行排队但不进行处理,需要等到启动事件完成后才进行处理;

3.启动 OB 的执行过程没有时间限制,不会激活程序最大循环监视时间,但程序会一直处于启动状态而不进入 RUN 状态(见下图6-10)(因为I0.5 的状态在过程映象区内,所以启动 OB 是读不到 I0.5 的状态的,只有写入:I0.5:P 才会被读到)

二、S7-1200/1500 循环中断组织块

(1)循环中断 OB 组织块说明

● 循环中断 OB 在经过一段固定的时间间隔后执行相应的中断 OB 中的程序。

● S7-1200 最多支持 4 个循环中断 OB ,在创建循环中断 OB 时可以设定固定的间隔扫描时间。在 CPU 运行期间,可以使用 “SET_CINT”指令重新设置循环中断的间隔扫描时间、相移时间;同时还可以使用“QRY_CINT”指令查询循环中断的状态。

● 循环中断 OB 的编号必须为 30~38,或大于、等于 123。

● 与循环中断 OB 相关的指令功能

(2)循环中断 OB 的执行过程,请参见下图:

1、PLC 启动后开始计时;

2、当到达固定的时间间隔后,操作系统将启动相应的循环中断 OB ;

(3)循环中断 OB 组织实际应用

1.在OB 循环组织块属性里面设置固定的中断循环时间(1-60000ms),相移时间

(0-1000ms)

在 OB30 里面的加法指令每秒自动加 1。

1. 通过在程序中调用功能块重新设置循环时间(优先于组态设置循环中断)设置循环中断参数指令

程序说明:

1.设置的循环时间单位为:微妙;

2.CYCLE/PHASE 为UDINT;

3.PHASE 相位偏移(0-1000ms);

4.如果CYCLE=0 则循环中断就会不工作。相移时间(Phase shift)功能

1.当使用多个时间间隔相同的循环中断事件时,设置相移时间可使时间间隔相同的循环中断事彼此错开一定的相移时间执行。请通过如下两幅图例理解相移时间的概念。

2.下图中,没有设置相移时间,以相同的时间间隔调用两个 OB ,则低优先级的OB 块将不能以固定间隔时间 t 执行;何时执行受高优先级的 OB 执行时间影响,请看下图:

没有相移的循环 OB 调用

有相移的循环 OB 调用

小结

如果以相同的时间间隔调用优先级较高和优先级较低的循环中断 OB ,则只有在优先级

较高的 OB 完成处理后才会执行优先级较低的 OB 。低优先级 OB 的执行起始时间会

根据优先级较高的 OB 的处理时间而延迟,如果希望以固定的时间间隔来执行优先级较

低的 OB ,则优先级较低的 OB 需要设置相移时间,且相移时间应大于优先级较高的

OB 的执行时间,否则回报 16#8092 错误。