当CPU检测到诊断错误,或者具有诊断功能的模块发现错误且为该模块启用了诊断错误中断时, 将执行诊断错误中断 OB。 诊断错误中断 OB 将中断正常的循环程序执行。 如果希望 CPU 在收到诊断错误后进入 STOP 模式,可在诊断错误中断 OB 中包含一个 STP 指令,以使 CPU 进入 STOP 模式。
如果未在程序中包含诊断错误中断 OB,CPU 将忽略此类错误并保持 RUN 模式。
诊断错误事件
模拟(本地)、PROFINET、PROFIBUS 和其它一些数字(本地)设备都能够检测并报告诊断错误。 发生或清除几种不同诊断错误情况中的任何一种都会引起诊断错误事件。 所支持的诊断错误有以下几种:
- 无用户电源
- 超出上限
- 超出下限
- 断路
- 短路
如果存在诊断错误中断 OB (OB 82),那么诊断错误事件将触发中断执行。 如果不存在,CPU 将忽略该错误。
要在项目中包括诊断错误中断 OB,请在树形结构的“程序块”(Program blocks) 下双击“添加新块”(Add new block),然后依次选择“组织块”(Organization block)、“诊断错误中断”(Diagnostic error interrupt),将诊断错误中断添加到项目中。
当 CPU
检测到诊断错误,或者具有诊断功能的模块发现错误且为该模块启用了诊断错误中断时, 将执行诊断错误中断 OB。 诊断错误中断 OB 将中断正常的循环程序执行。 如果希望 CPU 在收到诊断错误后进入 STOP 模式,可在诊断错误中断 OB 中包含一个 STP 指令,以使 CPU 进入 STOP 模式。
如果未在程序中包含诊断错误中断 OB,CPU 将忽略此类错误并保持 RUN 模式。
诊断错误事件
模拟(本地)、PROFINET、PROFIBUS 和其它一些数字(本地)设备都能够检测并报告诊断错误。 发生或清除几种不同诊断错误情况中的任何一种都会引起诊断错误事件。 所支持的诊断错误有以下几种:
- 无用户电源
- 超出上限
- 超出下限
- 断路
- 短路
如果存在诊断错误中断 OB (OB 82),那么诊断错误事件将触发中断执行。 如果不存在,CPU 将忽略该错误。
要在项目中包括诊断错误中断 OB,请在树形结构的“程序块”(Program blocks) 下双击“添加新块”(Add new block),然后依次选择“组织块”(Organization block)、“诊断错误中断”(Diagnostic error interrupt),将诊断错误中断添加到项目中。
诊断错误中断 OB
包含的启动信息可帮助您确定事件发生原因是错误的出现还是清除所致,以及确定报告错误的设备和通道。 可以在诊断错误中断 OB中编写指令,以检查这些启动值并采取适当的措施。
如果没有未决诊断事件,诊断错误 OB 启动信息会将子模块作为一个整体来参考 在 V3.0 中,诊断错误离去事件的启动信息始终指示事件源。 在 V4.0中,如果离去事件离开子模块时无未决诊断,启动信息将完全参考子模块(16#8000),即使事件源为特定通道。 例如,如果断路触发了通道 2上的诊断错误事件,纠正故障后清除诊断错误事件,启动信息将不参考通道2,而是参考子模块 (16#8000)。
表格 5- 7 诊断错误中断 OB 的启动信息
输入 | 数据类型 | 说明 |
IOstate | WORD | 设备的 IO 状态:
· 如果组态正确,则位 0 = 1,如果组态不再正确,则 = 0。 · 如果出现错误(如断线),则位 4 = 1。 (如果没有错误,则位 4 = 0。) · 如果组态不正确,则位 5 = 1,如果组态再次正确,则 = 0。 · 如果出现 I/O 访问错误,则位 6 = 1。 有关存在访问错误的 I/O 的硬件标识符,请参见 LADDR。 (如果没有错误,则位 6 = 0。) |
LADDR | HW_ANY | 报告错误的设备或功能单元的硬件标识符1 |
Channel | UINT | 通道号 |
MultiError | BOOL | 如果存在多个错误,参数值为 TRUE |
1 LADDR 输入包含返回错误的设备或功能单元的硬件标识符。 硬件标识符是在设备或网络视图中插入组件时自动分配的,它出现在 PLC 变量的“常量”(Constants) 选项卡中。 还会自动为硬件标识符分配名称。 不能更改这些 PLC 变量的“常量”(Constants) 选项卡中的条目。

评论