同步循环中断 OB(OB 61 至 OB 64) (S7-300, S7-400) 说明 通过等时同步模式中断,可选择在具有 DP 周期或 PN 发送时钟的等时同步周期中启动程序。 OB 6y(1 <= y <= 4)用作等时同步模式中断 TSAL y 的接口 OB。可以在 0(取消选择 OB) 和 2 到 26 之间设置 OB 61 到 OB 64 的优先级。 小心 直接访问 在使用 L 或 T 命令(例如 L PIB、T PQB)直接访问或使用指令“DPRD_DAT”和“DPWR_DAT” 时,请避免访问已分配了带 OB6x 连接的过程映像分区的 I/O 区域(等时同步模式中断)。时间错误 OB (OB 80) (S7-300, S7-400) 说明 CPU 操作系统如果在执行 OB 时出错,就会调用 OB 80,此类错误包括: • 超过循环时间 • OB 执行期间的确认错误 • 设置时间转发(跳过时间)以启动 OB例如,如果在完成某个循环中断 OB 的前一次执行之前,发生了该 OB 的启动事件,则操作 系统调用 OB 80。 如果未对 OB 80 编程,则 CPU 切换为 STOP 模式。 可使用指令 "DIS_IRT" 禁止调用时间错误 OB,使用指令 "EN_IRT" 重新调用,并使用指令 "DIS_AIRT" 和 "EN_AIRT" 对其进行延时。 说明 如果因超出了循环时间而导致在同一循环内调用了两次 OB 80,则 CPU 转为 STOP 模式。通 过在适当情况下调用指令 "RE_TRIGR",可防止这种情况。 请注意“Report System Errors”的使用 Report System Errors”将延时执过程中的中断处理时间。 如果满足“Report System Errors”的执行时间 > 50% 的循环时间这一条件,这种效果将更 加明显(这里,“Report System Errors”的执行时间指的是循环时间内“Report System Errors” 所有处理时间的总和)。这会导致调用时间错误 OB 并有可能导致 CPU STOP(如果未装载 时间错误 OB)。 可以使用以下措施来防止这种情况: • 如果使用等时同步模式中断 OB(OB 61 到 OB 64),必须确保每单位时间的调用频率比 之前要低。这可以通过为每个等时同步模式中断 OB 增加相关的“应用循环系数”参数来 实现。 • 增加比率(循环时间 - “Report System Errors”的执行时间)/(“Report System Errors”的执 行时间)。可使用以下两个选项进行该操作: – 如果在循环中断 OB(OB 30 到 OB 38)中调用了“Report System Errors”,那么请增加 相关 OB 的循环时钟。 – 在 OB 1 中,增加与“Report System Errors”无关的程序部分的执行时间。这可以通过使 用“WAIT”指令来实现。电源错误组织块 (OB 81) (S7-300, S7-400) 说明 只要发生由错误或故障所触发的事件,而此错误或故障又与电源(仅在 S7-400 上)或备用 电池(进入或离去事件)有关,则 CPU 操作系统调用 OB 81。 在 S7-400 中,如果已使用 BATT.INDIC 开关激活了电池测试功能,则只有在出现电池故障时 才会调用 OB 81。 如果没有对 OB 81 编程,则 CPU 不会转为 STOP 模式。 可使用指令 "DIS_IRT" 禁止调用电源错误 OB,使用指令 "EN_IRT" 重新调用,并使用指令 "DIS_AIRT" 和 "EN_AIRT" 对其进行延时。 电源错误 OB 的本地数据 下表列出了电源错误 OB 的临时 (TEMP) 变量。已选择 OB 81 的默认名称作为变量名称。诊断中断 OB (OB 82) (S7-300, S7-400) 说明 如果具有诊断功能的模块(已为其启用了诊断中断)检测到诊断状态更改,则它会向 CPU 发 送一个诊断中断请求: • 存在问题或一个组件需要维护或两者都包括(到达事件)。 • 没有问题或没有更多组件需要维护(离去事件)。 操作系统然后调用 OB 82。 OB 82 的本地变量包含逻辑起始地址和四字节的故障模块诊断数据(请参见下表)。 如果未对 OB 82 编程,则 CPU 切换为 STOP 模式。
可使用指令 "DIS_IRT" 禁止调用诊断中断 OB,使用指令 "EN_IRT" 重新调用,并使用指令 "DIS_AIRT" 和 "EN_AIRT" 对其进行延时。 说明 对于 PROFINET IO 控制器,可在组态过程中指定通信中断是否触发诊断中断 OB 的调用。这 些中断包括 PROFINET 接口的诊断事件。 默认设置:这些事件并不触发 OB 82 调用。OB 82 编程 必须在 CPU 的块中添加 OB 82。将要在 OB 82 中执行的程序写入到生成的块中,并将块加 载到 CPU,作为用户程序的一部分。 例如,可使用 OB 82,步骤如下: • 对 OB 82 中的开始信息进行评估。 • 对发生的故障执行详细诊断。 如果触发诊断中断,则故障模块将自动输入 4 字节诊断数据,以及其在诊断中断 OB 起始信 息中和诊断缓冲区中的起始地址。这提供了故障发生时间及发生模块的相关信息。 使用 OB 82 中的适当程序,可评估故障模块的附加诊断信息(哪个通道发生错误、发生的 是哪条错误)。可使用指令 "RDSYSST" 读取模块诊断数据,使用指令 "WR_USRMSG" 在诊断 缓冲区中输入该信息。还可向已登录监视设备发送用户自定义诊断报警。 插入/删除模块中断组织块 (OB 83) (S7-300, S7-400) 说明 插拔所组态的模块后,CPU 操作系统将调用 OB 83。 如果未编程 OB 83,则 CPU 将转换为 STOP 模式。 使用“DIS_IRT”指令,可禁止插拔入中断 OB 调用;使用“EN_IRT”指令,可重新启用该调用;使 用“DIS_AIRT”和“EN_AIRT”指令,可延时该调用。移除和插入模块 在 RUN、STOP 或 STARTUP 模式下,每次移除和插入所组态的模块(不支持电源模块、CPU、 适配器盒和 IM)时,将导致发生插拔入中断。此中断会导致在相关 CPU 的诊断缓冲区和系 统状态列表中生成一个条目。如果 CPU 为 RIN 模式,还将启动插拔 OB。如果未编程此 OB, 则 CPU 将转换为 STOP 模式。 在系统中,始终监视 S7-400 模块的插入与移除。为确保 CPU 可检测到 S7-400 模块的移除 与插入,移除操作与插入操作之间至少需留有两秒钟的间隔时间。其它模块的Zui短时间值明 显较长。 如果在 RUN 模式下移除所组态的模块,则将启动 OB 83。直接访问该模块或更新过程映像时, 可能会首先检测到访问错误。 如果在 RUN 模式下将一个模块插入到已组态的插槽中,操作系统将检查所插入模块的类型 是否与组态相符。如果模块类型匹配,则启动 OB 83 并分配参数。 指向有关 S7-300、ET 200S 和 ET 200Pro 的注意事项 • 在 S7-300 中,不得移除和插入中央 IO 设备。 • S7-300 CPU 中,仅 31x PN/DP CPU 支持插拔中断,且仅 PROFINET IO 组件支持。 • 在 ET 200Pro(以 IM 154-4-8 CPU 为例)上,仅中央 IO 设备支持插拔中断。 • 在 ET 200S(以 IM151-8 PN/DP CPU 为例)上,仅中央 IO 设备支持插拔中断。 插拔 OB 的本地数据 下表列出了插拔 OB 的临时变量 (TEMP)。系统将 OB 83 的默认名称选作为变量名称。如果正在使用支持 DPV1 或 PROFINET 功能的 CPU,则可通过指令“RALRM”获取除 OB 启动信 息之外有关该中断的更多信息。在 S7 兼容模式下操作 DP 主站时,该指令同样适用。CPU 硬件故障组织块 (OB 84) (S7-300, S7-400) 说明 在下列情况下,CPU 操作系统会调用 OB 84: • 已检测到并更正了内存错误之后 • 对于 WinAC RTX: 操作系统出错(例如“蓝屏”)若还未对 OB 84 编程,则 CPU 不会切换到 STOP 模式。 可以使用指令“DIS_IRT”禁用 CPU 硬件错误 OB,使用指令“EN_IRT”再重新启用,使用指令 “DIS_AIRT”和“EN_AIRT”对其进行延时。 CPU 硬件故障 OB 的本地数据 下表包括了 CPU 硬件故障的临时 (TEMP) 变量。 已选择 OB 84 的默认名称作为变量名称。OB 84 编程 必须将 OB 84 添加到 CPU 的块中。 将要在 OB 84 中执行的程序写入生成的块,并将该块作 为用户程序的一部分,装入 CPU。 例如,可以如下使用 OB 84: • 在 OB 84 中评估启动信息。 • 使用指令“WR_USMSG”,将报警发送到诊断缓冲区。 优先等级错误组织块 (OB 85) (S7-300, S7-400) 说明 只要发生以下事件之一,CPU 操作系统就会调用 OB 85: • 非装入 OB 的启动事件(OB 80、OB 81、OB 82、OB 83 和 OB 86 除外) • 操作系统访问块时出错 • 在系统更新过程映像期间出现 I/O 访问错误(如果由于组态原因,未禁止 OB 85 的调用)。 说明 若 OB 85 还没编程,则在检测到这些事件中的一个时,CPU 才切换到 STOP 模式。 可以使用指令“DIS_IRT”禁用优先等级错误 OB,使用指令“EN_IRT”再重新启用,使用指令 “DIS_AIRT”和“EN_AIRT”对其进行延时。 优先等级错误 OB 的本地数据 下表列出了优先等级错误 OB 的临时 (TEMP) 变量。已选择 OB 85 的默认名称作为变量名称。