时间中断组织块(OB 10 至 OB 17)

时间:2021-07-26点击次数:505

时间中断组织块(OB 10 至 OB 17)

说明

S7 较多提供八个 OB(OB 10 至 OB 17),这些 OB 可单次启动,也可定期启动。 可以采用按下列间隔处理这些 OB 的方法,为 CPU 分配参数:

一次

每分钟

每小时

每天

每周

每月

每年

月末


提示

如果是每月执行时间中断 OB,则只能将 1、2 至 28 用作开始日期。



时间中断 OB 的功能

要启动时间中断,必须先设置中断,然后再将其激活。 有以下三种启动方式:

自动启动时间中断。 若已设定并激活每个组态的时间中断,则会发生该中断。 下表显示了根据组态激活时间中断时的几种可能。

根据组态设置时间中断,然后通过在程序中调用 "ACT_TINT" 指令来激活时间中断。

通过调用 "SET_TINT" 指令来设置时间中断,然后通过 "ACT_TINT" 指令激活。

间隔

说明

未激活

不执行时间中断 OB,即便将其加载到 CPU 中。 通过调用 "ACT_TINT" 指令激活时间中断。

仅激活一次

时间中断 OB 在按照*的时间运行一次后,即自动取消。

可在程序中使用 "SET_TINT" 指令复位时间中断,并使用 "ACT_TINT" 指令重新激活。

定期激活

当发生时间中断时,CPU 将根据当前的时间和周期计算时间中断的下一次启动时间。



提示

如果采用只处理一次相应 OB 的方法组态时间中断,则日期和时间不可为过去的日期和时间(相对于 CPU 的实时时钟)。

如果采用定期处理相应 OB 的方法组态时间中断,但起始日期和时间已经过去,则将在下次到达该日期和时间时处理时间中断。 在下图中对此进行了说明,下图显示了如果起始时间已经过去且已设置定期激活,时间中断 OB 的初始处理。



可使用 "DIS_IRT" 指令禁止调用时间中断 OB,使用 "EN_IRT" 指令重新调用,并使用 "DIS_AIRT" 和 "EN_AIRT" 指令对其进行延时。

影响时间中断 OB 的条件

由于时间中断仅以*的时间间隔发生,因此在程序执行期间,某些条件可能会影响相关 OB 的功能。 下表显示了其中一些条件,并说明了这些条件对处理时间中断 OB 的影响。

条件

结果

用户程序调用 "CAN_TINT" 指令,并取消时间中断。

操作系统删除时间中断的启动事件(日期和时间)。 如果要再次调用该 OB,则必须复位和激活启动事件。

用户程序试图激活时间中断 OB,但激活时该 OB 未加载到 CPU。

操作系统随后调用 OB 85。如果 OB 85 未编程(装载到 CPU),则 CPU 切换到 STOP 模式。

通过同步或更正 CPU 的系统时钟用户预设了时间,并跳过了启动事件(时间中断 OB 的日期或时间)。

操作系统调用 OB 80 并对时间中断 OB 的编号和 OB 80 中的启动事件信息进行编码。

然后,操作系统对时间中断 OB 处理一次,不论此 OB 的实际处理频率为何。 OB 80 的启动事件信息显示了较初跳过时间中断 OB 时的日期和时间。

通过同步或更正 CPU 的系统时钟用户重置了时间,并重复了启动事件(时间中断 OB 的日期或时间)。

S7-400-CPU:
如果在重置时间之前已激活时间中断 OB,则不会针对已**时的时间再次调用该 OB。

S7-300-CPU: 执行时间中断 OB。

CPU 执行暖启动或冷启动。

然后,通过指令组态的每个时间中断 OB 重新采用*的组态。

如果已为相关 OB 组态一次性启动的时间中断,并通过组态进行设置和激活,则只要组态的起始时间已经过去(相对于 CPU 的实时时钟),在操作系统暖启动或冷启动之后,将调用一次 OB。

当已经发生下一间隔的启动事件时,仍在处理时间中断 OB。

操作系统然后调用 OB 80。如果 OB 80 未编程,则 CPU 切换到 STOP 模式。

否则,在处理完 OB 80 并且时间中断 OB 完成后将执行所请求的 OB。

时间中断 OB 的本地数据

下表包含了时间中断 OB 的临时 (TEMP) 变量。选择 OB 10 的默认名称作为变量名称。

变量

数据类型

说明

OB10_EV_CLASS

BYTE

事件类别和标识符:
B#16#11: 中断处于激活状态

OB10_STRT_INFO

BYTE

B#16#11:OB 10 的启动请求

(B#16#12:OB 11 的启动请求)

:

:

(B#16#18:OB 17 的启动请求)

OB10_PRIORITY

BYTE

*的**等级;默认值: 2

OB10_OB_NUMBR

BYTE

OB 编号(10 至 17)

OB10_RESERVED_1

BYTE

预留

OB10_RESERVED_2

BYTE

预留

OB10_PERIOD_EXE

WORD

按*的时间间隔处理 OB:

W#16#0000:一次

W#16#0201:每分钟

W#16#0401:每小时

W#16#1001:每天

W#16#1201:每周

W#16#1401:每月

W#16#1801:每年

W#16#2001:月末

OB10_RESERVED_3

INT

预留

OB10_RESERVED_4

INT

预留

OB10_DATE_TIME

DATE_AND_TIME

调用 OB 时
的日期和时间


http://shtxjd.cn.b2b168.com

产品推荐