S7-1500支持诊断错误中断,可以为具有诊断功能的模块启用诊断错误中断功能来检测模块状态。
OB82 时唯一支持诊断错误事件的 OB ,出现故障(进入事件),故障解除(离开事件)均会触发诊断中断 OB82 。当模块检测到故障并且在软件中使能了诊断错误中断时,操作系统将启动诊断错误中断,诊断错误中断 OB82 将中断正常的循环程序优先执行。此时无论程序中有没有诊断中断 OB82,CPU 都会保持 RUN 模式,同时 CPU 的 ERROR 指示灯闪烁。如果希望 CPU 在接收到该类型的错误时进入 STOP 模式,可以在 OB82 中加入 STP 指令使 CPU 进入 STOP 模式。
当触发诊断错误中断时,通过 OB82 的接口变量可以读取相应的启动信息,可以帮助确定事件发生的设备、通道和错误原因。OB82 的接口变量及启动信息参考下图1、2。
图1. OB82 接口变量
图2. OB82 启动信息
1、按如下步骤创建诊断错误 OB82 。如图3。
图3. 创建诊断错误 OB82
2、OB82 中编程如下图,创建地址为 MW100、MW102、MW104 的变量用于存储出现诊断错误时读取到的启动信息。如图4。
图4. OB82 中编程
3、在硬件组态窗口中,选中模拟量输出模块,选择模拟量输出通道1 的启用“接地短路”诊断功能。如图5。
图5. 设置诊断功能
4、模块 AQ4xU/I ST 硬件标识 269,通道1地址是 98。程序下载后,在监控表中给“通道1”设置输出值5000,如果此时出现了短路故障,则将立即触发诊断错误功能。如图6。
图6. 测试结果
触发诊断错误中断时,CPU 如何响应?
1、启用诊断错误中断且 CPU 中创建了 OB82 ;
2、OB82 是唯一支持诊断错误事件的 OB ;一次只能报告一个通道的诊断错误;
3、如果多通道设备的两个通道出现错误,则第二个错误只会在以下情况触发 OB82 :第一个通道错误已清除,由第一个错误触发的 OB82 已执行完毕,并且第二个错误仍然存在;
4、事件的进入或离开都会触发一次 OB82 ;
5、触发 OB82 ,CPU 不会进入 STOP 模式。
哪些情况会触发诊断错误中断?
如下错误将触发诊断错误中断 OB82 :
① 无用户电源
② 超出上限
③ 超出下限
④ 断路(电流)
⑤ 短路(电压)