诊断错误 OB82
● 诊断错误 OB82 的功能
S7-1200支持诊断错误中断,可以为具有诊断功能的模块启用诊断错误中断功能来检测模块状态。
出现故障(进入事件),故障解除(离开事件)均会触发诊断中断 OB82 。当模块检测到故障并且在软件中使能了诊断错误中断时,操作系统将启动诊断错误中断,诊断错误中断 OB82 将中断正常的循环程序优先执行。此时无论程序中有没有诊断中断 OB82,CPU 都会保持 RUN 模式,同时 CPU 的 ERROR 指示灯闪烁。如果希望 CPU 在接收到该类型的错误时进入 STOP 模式,可以在 OB82 中加入 STP 指令使 CPU 进入 STOP 模式。
● 与诊断错误 OB82 相关的信息
当触发诊断错误中断时,通过 OB82 的接口变量可以读取相应的启动信息,可以帮助确定事件发生的设备、通道和错误原因。OB82 的接口变量及启动信息参考下图1、2。
图1. OB82 接口变量
图2. OB82 启动信息
● 诊断错误 OB 的使用示例:
例如:模拟量输出模块 SM1232 的电压输出通道,对于通道1使能短路诊断,当通道1出现短路错误时,随即触发诊断错误 OB82 ,此时可从 OB82 的启动参数中读取诊断信息。
1、按如下步骤创建诊断错误 OB82 。如图3。
图3. 创建诊断错误 OB82
2、OB82 中编程如下图,创建地址为 MW100、MW102、MW104 的变量用于存储出现诊断错误时读取到的启动信息。如图4。
图4. OB82 中编程
3、在硬件组态窗口中,选中模拟量输出模块,选择模拟量输出通道1的“启用短路诊断”功能。如图5。
图5. 设置诊断功能
4、测试结果:程序下载后,在监控表中给“channel1”设置输出值5000,如果此时出现了短路故障,则将立即触发诊断错误功能。如图6。
图6. 测试结果
在 OB82 中使用 SFB 54 进行诊断
支持诊断的信号模块和功能模块将检测内部和外部错误,并生成诊断中断(可通过调用中断 OB 对其进行响应)。与错误事件有关的 OB 编码和开始信息提供有关错误原因和位置的初始信息。
然后可以通过在此错误 OB 中调用 SFB54(读取附加的中断信息)获得详细的错误事件信息。
SFB54 功能
SFB54“RALARM”将从支持诊断的所有模块读取中断数据,而不管这些模块是插入到中央机架中还是用在 PROFIBUS DP 或 PROFINET IO 中。
此信息将写入到输出参数 STATUS、ID、LEN、TINFO 和 AINFO。可以在 TINFO 目标区域中找到 OB 启动和管理信息。页眉信息和附加的中断信息(例如,发生短路)位于 AINFO 目标区域中。
通过在 OB82 中调用 SFB54 进行诊断
如果支持诊断的模块检测到错误,它将向 CPU 输出诊断中断请求(不管是进入事件还是离开事件)。这要求已对相关模块启用诊断中断。操作系统调用 OB82 以对诊断请求进行响应。
OB82 的局部变量包含逻辑基址和关于故障模块的四个字节的诊断数据。如果未对 OB82 进行编程,则 CPU 状态将更改为 STOP。
使用 SFB54 对 OB82 进行编程 :
要求:
1. 您已创建并命名了新的 STEP 7 项目。
2. 您已添加了带有 CPU 317-2 PN/DP 的 SIMATIC 300 站。
3. 您已在 CPU 317-2 PN/DP 的 PROFINET 子网上组态了 ET 200S。
执行以下步骤:
1. 生成可以存储中断数据的背景数据块(IDB)。为此 IDB 分配称“IDB_SFB54”。
2. 插入 OB82
– 在 STEP 7 中打开您的项目
– 选择 Insert(插入) -> S7 block(S7 块)-> Organization block(组织块),然后在对话框中输入块名称“OB82”。
3. 启动 LAD/STL/FBD 编辑器
– 双击“OB82”符号,打开 LAD/STL/FBD 编辑器。
4. 声明 SFB54 中的变量
– 在对话框中输入“CALL SFB54, DB54”以调用 SFB。
– 然后为 SFB54 的参数分配从下表中获取的值。
CALL SFB54, DB54 通过实例 DB54 调用 SFB54
MODE := 1 将设置所有输出参数(与中断触发组件无关)
F_ID := 不必进行设置,因为 F_ID 在模式 1 下不相关
MLEN := 1500 将要读取的记录信息的最大长度设置为 1500 字节
NEW := M1000.1 如果已接收新记录,则存储器位 1000.1 = 1
STATUS := MD10 MD10 包含错误代码
ID := MD16 存储器双字 16 包含模块或子模块的逻辑起始地址,该地址用于接收中断。
LEN := MW24 存储器字 24 返回读取的记录信息的长度
TINFO := P#M 500.0 BYTE 32 指向 MB500 的 ANY 指针,长度为 32 个字节
AINFO := P#M 1500.0 BYTE 1431 指向 MB1500 的 ANY 指针,长度为 1431 个字节
在标志字节 500 或 1500 处开始,输入 TINFO 和 AINFO 变量中返回信息,长度为 32 字节或 1431 字节。TINFO 和 AINFO 目标区域的数据存储器未完全分配,取决于哪个 OB 调用 SFB54。
审核编辑:刘清
评论
查看更多