状态中断 OB(S7-1500) 说明 接收到状态中断时,S7-1500 CPU 的操作系统将调用状态中断 OB。从站中的模块更改切换操作模式(如,从“RUN”切换为“STOP”)时,可能会执行以上操作。有关可触发状态中断的事件的更多详细信息,请参见从站或设备制造商文档。 启动信息结构 • 对于 S7-300 和 S7-400 CPU 请参见AUTOHOTSPOT • 优化启动信息:延时中断 OB (S7-1500) 说明 延时中断 OB在经过操作系统中一段可组态的延时时间后启动。 调用“SRT_DINT”指令时开始 计时延时时间(此时开始调用相关延时中断)。在可通过操作系统调用延时中断 OB 之前,必须满足以下条件: • 必须通过调用指令“SRT_DINT”来启动延时中断。 •在组态过程中不得禁用延时中断 OB。 CPU 中必须存在延时中断 OB。 指令对延时中断的影响还可使用“CAN_DINT”指令来取消已启动且尚未通过操作系统调用其相关延时中断 OB 的延时中断,并使用“SRT_DINT”指令来重新启动此中断(并指定了一个不同的延时时间)。 还可以使用“QRY_DINT”指令查询延时中断的当前状态。可以使用“DIS_AIRT”和“EN_AIRT”指令来禁用和重新启用延时中断。 说明如果在执行“SRT_DINT”后通过“DIS_AIRT”阻断了中断,则只能在通过“EN_AIRT”启用后继续进 行处理。这意味着相应延长了延时时间。 调用与延时中断 OB 相关的错误 OB 如果在处理完相关延时中断 OB之前已达到延时中断的延时时间,操作系统将产生时间错误 (调用 OB 80)。 根据操作模式处理延时中断 "在 Startup 和RUN 模式下可调用“SRT_DINT”,直至延时时间结束。延时时间中断 OB 只 能在 RUN 模式下进行处理。如果延时中断在启动 OB 中启动且在 CPU 进入 RUN 模式之前延 时时间已结束,则将延迟调用相应延时中断 OB,直至 CPU处于 RUN 模式。 暖启动或冷启动将清除延时中断 OB 的所有启动事件。下列事件可启动循环程序: • 启动处理结束 •循环程序先前的执行结束 执行循环程序之后,操作系统按照以下步骤更新过程映像: 1. 将过程映像输出中的值写到输出模块。 2.读取输入模块处的输入并传送到过程映像输入。 循环时间监视 循环时间是指循环程序运行时间,包括高优先级 OB中所有嵌套程序部分的运行时间。 如果 创建了多个程序循环 OB,每个程序循环 OB 都会占用循环时间。操作系统将监视循环时间是否仍小于所组态的Zui大循环时间。 如果循环时间超出Zui大循环 时间,则调用 OB 80(启动事件W#16#0002:3501)。 通过调用 RE_TRIGR 指令,可在程序 的任何位置重新启动该时间监视功能来防止超出Zui大循环时间。如果Zui大循环时间超出循 环中的第二个时间(未重新启动时间监视功能),CPU 将切换为 STOP 模式(事件W#16#0002:3500)。 Zui小循环时间 除监视Zui大循环时间外,还可以保证Zui小循环时间。 为此,操作系统会延时新循环的启动,直到达到了Zui小循环时间。 启动信息结构 • 对于 S7-300 和 S7-400 CPU 请参见 AUTOHOTSPOT 与S7-300 和 S7-400-CPU 中启动信息的分配的不同之处在于: –第一次调用时,SCAN_1=B#16#01;其它每次调用时,B#16#03 – 如果 OB 编号 > 254,则OB_NUMBR=B#16#FF • 优化启动信息: 名称 数据类型 含义 Initial_Call BOOL 为TRUE,在下列情况下将第一次调用此 OB: • 从 STOP 或 HOLD 切换为 RUN • 重新加载后 保持性 BOOL 为TRUE,如果有保持性数据。时间中断 OB (S7-1500) 说明 S7-1500 CPU 中具有时间中断OB,可通过如下方法启动: • 在指定时间(日期带有时间)启动一次 • 周期性启动(可按以下时间间隔启动:每分、每小时、每日、每周、每月、月末及每年) 启动时间中断 OB 只有满足以下要求,CPU 才能启动时间中断 OB: •必须提前设置并激活了相关的时间中断。 (设置时间中断意味着指定启动时间和持续时 间。) • 必须将时间中断 OB 加载到 CPU。可通过下列三种方式,设置并激活时间中断: • 通过 STEP 7 设置并激活时间中断。 • 通过 STEP 7设置时间中断,通过在程序中调用 ACT_TINT 指令激活中断。 • 通过调用 SET_TINTL指令设置时间中断,通过在程序中调用 ACT_TINT 指令激活中断。 时间中断的规则 • 如果设置时间中断,只处理相应 OB一次,则启动时间不允许为过去的时间(与 CPU 的 实时时钟相关)。 • 如果设置时间中断,循环处理相应OB,但启动时间已过,则将根据当前时间在下次的这 个时间处理该时间中断 OB。 •周期性时间中断的日期必须与实际日期相对应。例如,每月不能重复执行启动日期为 1/31 的时间中断 OB。 在这种情况下,只有在有 31天的月份中才会启动该 OB。 • 在启动完成之前,将不会执行启动期间激活的时间中断。
•启动将删除用户程序中通过指令设置和激活的所有时间中断。 • 在从 HOLD 转换为 RUN的事件中,操作系统将检查是否错过了时间中断。 如果错过,则 调用时间错误 OB。对于 S7-300 和 S7-400CPU,如果选择相同的启动信息,则确认 OB 10 到 17(且只确认这些 OB)是否错过了时间中断。 执行 OB 80后,将随后执行第一个丢 失的 OB。 时间中断在调快或调慢时间时的行为 时间中断的特征取决于调快或调慢时间所导致的时间差。下表将对此进行详细说明。 更改时间 对时间中断的影响 < 20 s • 调快时间:随后执行每个已跳过的时间中断。设置启动信息变量“CaughtUp”。 不调用 OB 80。 • 调慢时间:不重复执行已在其它时间执行过或当前 已激活的时间中断。> > > = 20 s • 调快时间:如果跳过了一个或多个时间中断,则调 用 OB 80。对于每个优先级,启动信息中都包含是 否至少跳过一个时间中断的信息。如果未在 OB 80 中删除时间中断,那么随后将执行跳过的第一个时间中断,并设置启动信息变量“CaughtUp”。 • 调慢时间:在其它时间重复执行时间中断。如果时间校正超出了时间中断持续时间,操作系统将计算 要重复执行的第一个时间中断的时间。对于一个重 复执行的时间中断,将设置启动信息变量“SecondTime”。 在标准时间和夏令时之间切换 这种切换仅在使用当地时间时有效。 •从标准时间切换到夏令时,随后将执行一个之前跳 过的时间中断,并设置启动信息变量“CaughtUp”。 不调用 OB 80。 •从夏令时切换到标准时间:在其它时间重复执行时 间中断。对于一个重复执行的时间中断,将设置启 动信息变量“SecondTime”。更改时区(导致当地时间发生更改) 重新计算当前激活的时间中断的启动时间。 • 调快当地时间后,随后将执行一个跳过的时间中断,并设置启动信息变量“CaughtUp”。 不调用 OB 80。 • 调慢当地时间后,可能会重复执行之前曾执行过的时间中断。对于一个重复执行的时间中断,将设置 启动信息变量“SecondTime”。循环中断 OB (S7-1500) 说明可通过循环中断 OB 以相间间隔启动程序部分。 循环中断 OB 的启动时间根据其时间间隔和相位偏移来通过以下公式确定: 启动时间= n * 时间间隔 + 相位偏移 (n = 0, 1, 2 ... ) • 时间间隔即为两次调用之间的时间段,是 1 µs基本时钟周期的整数倍。 • 相位偏移是以时间间隔为倍数,从启动时间进行偏移的时间间隔。 使用多个循环中断 OB时可使用相位偏移。例如,当它们的时间间隔具有公倍数时,可使 用相位偏移来防止启动。 使用相位偏移的示例 在用户程序中插入 2个循环中断 OB:一个 OB 的时间间隔为 20 ms,另一个的时间间隔为 100 ms。使用相位偏移来确保不在 100 ms的整数倍时调用这两个 OB。调用与循环中断 OB 相关的错误 OB 循环中断 OB的运行时间必须远小于其时间间隔。否则,会在循环中断时间间隔结束后仍在 处理相应循环中断 OB。此时,操作系统会生成时间错误(调用 OB80)。稍后将执行导致 错误的循环中断或将其放弃。对于每个优先级稍后只能执行一个循环中断 OB。 在 RUN模式中更改时间间隔或相位偏移 还可以通过 RUN 模式时下载或调用“SET_CINT”指令等方式更改 RUN 模式时的时间间隔或相位偏移。 请注意,CPU 的操作系统始终参照 CPU 的启动时间 (POWER ON) 计算循环中断 OB 的启动事件。新的时间间隔值可能不同于新指定的值,具体取决于参数更改的时间点: • 循环中断 OB的两个连续启动事件的时间间隔可以小于原时间间隔和新时间间隔(极端情 况下,可以是极短的间隔)。如下图中的 Δt1 所示(时间间隔由T0 改为 T1 时)。 • 循环中断 OB 的两个连续启动事件的时间间隔可以大于原时间间隔和新时间间隔(时间间隔Zui大可以是原时间间隔与新时间间隔之和)。如下图中的 Δt2所示(时间间隔由 T1改为 T2 时)。 RUN模式下时间间隔改变时的循环中断 OB 调用硬件中断 OB (S7-1500) 说明 可使用硬件中断 OB响应这些具有硬件中断能力的模块事件,这些事件可触发硬件中断。通 过组态定义具体的事件。 说明 硬件中断的使用如果可能,仅通过硬件中断对具有硬件中断功能的模块的偶发事件进行响应。 使用硬件中断响应常发事件毫无意义,可能会导致 CPU在不利条件下超时。 仅可为触发硬件中断的每个事件指定一个硬件中断 OB。可为一个硬件中断 OB 指定多个事件(极端情况下,可以是模块的所有触发硬件中断的事件) 对于 S7-1500模块,各通道均可触发硬件中断(例如,上升沿的二进制输入)。