常用的OB组织块的使用说明,结合S7软件中插入OB组织块,详细介绍其功能及使用方法.
一.常用组织块
程序循环组织块 (OB1);
日期时间中断组织块 (以 OB10 为例);
延时中断组织块 (以 OB20 为例);
循环中断组织块 (以 OB35 为例);
二.各个组织块介绍
1.循环组织块OB1
在OB_Example项目中插入一S7300站,命名为OB1_Example,然后插入CPU 315- 2DP,硬件组态完成后,保存编译.

OB1程序执行:OB1程序循环执行,STEP7可以实时监控程序运行,具体程序如下:
MB100 为时钟存储器,设置方法为进入硬件组态(HW Config),双击CPU315- 2DP,选择Cycle/Clock Memory,具体设置画面如下:

STEP7实时监控如下:

2.日期时间中断组织块(OB10 )
双击 CPU 315-2DP,选择Time-of- Day Interrupts 选项,选中 Active,同时设置 Execution 选项,本例选择 Every minute,Execution 选项包括:
None不使用 Once只执行一次 Everym ute 每分钟执行一次
Everyhour每小时执行一次 Everyweek每周执行一次
Every month 每月执行一次 Every year每年执行一次

硬件组态完成后,保存编译下载.
OB10 程序按照设定的时间执行,使用 Step7 不能时时监控程序的运行,可用 Variable Table 监控实时数据变化,在程序的 Blocks 中插入 OB10 组织块,编写如下程序

我们打开监控,查看经过1Min后MW0数据加1,一直循环中.

三.延时中断组织块 ( OB20)
双击 我们建立的工程中CPU 315-2DP,选择 Interrupts 选项,可以看到 CPU 支持 OB20,画面如下:

硬件组态完成后,保存编译.
OB20 程序执行:
每一次OB20 的程序执行,必须调用 SFC32 (SRT_DINT),延迟时间在SFC 的输入参数中给定,同时给定 OB 号,调用 SFC32 且设定的时间延迟到后,执行OB 程序,如果再次执行 OB 程序,需要再次调用 SFC32。如果在延迟时间未到之前想取消程序的执行,可以调用 SFC33(CAN_DINT),同时可以使用 SFC34 (QRY_DINT)取得延迟中断的状态,具体SFC32/33/34 的调用方法可参考在线帮助,Step7 不能时时监控程序的运行,可用Variable Table 监控实时数据变化,在程序的 Blocks 中插入 OB20 组织块。
在OB1中编写如下程序:

OB20中编写如下程序:

此时可以监控MW2的变化,将M20.0置为true,10秒钟后延迟时间到,MW2加1,再将M20.0置为true,10秒钟后延迟时间到,MW2再加1。如果当延迟时间未到,此时将M20.1置为true,那么此次时间延迟中断被取消,MW2不会加1

每次执行的状态都可以从MW18 中读出,具体状态的含义请参阅SFC34(QRY_DINT)的在线帮助。
三.循环中断组织块(OB35)
双击 CPU315-2DP,选择 CyclicInterrupts 选项,修改 OB35 的执行周期CExecution(ms),范围是 1-60000ms),本例设为 1000ms,具体画面如下:

OB20 程序执行:
OB35 程序按照设定的执行周期循环执行,使用 Step7 不能时时监控程序的运行,可用Variable Table 监控实时数据变化。在 OB35_Example 程序的 Blocks 中插入 OB35 组织块,打开OB35,编写如下程序:

将 OB35 和硬件组态下载到CPU 中

夜雨聆风