分析诊断数据的实例
简介
诊断数据的目标区域应该足够长,以容纳标准诊断(6 个字节)、标识符特定诊断(3 个字节,用于 12 个插槽)和分析设备特定的诊断(仅适用于模块状态,需要 7 个附加字节)。 OB82 中的扩展指令“RALRM”用于此功能。
要进行更广泛的分析(通道特定的诊断),则需要保留附加字节(假定 DP 从站支持此功能)。
使用“RALRM” (SFB 54) 分析 OB82 中的诊断数据
STL |
---|
// ... // ... L 120 //*设备/模块的起始地址, T "Slotadress_Diag" //从待诊断的插槽开始 CALL "RALRM" , "DB54" MODE :="Alle_Params" // 1 = 设置所有的输出参数 F_ID :="Slotadresse_Diag" //将开始诊断的插槽的起始地址 MLEN :=20 //诊断数据的较大长度,单位为字节 NEW :="new" //不相关 STATUS:="RET_VAL" //函数结果,出错消息 ID :="Slotadresse_Alarm" //要接收中断的插槽的起始地址 LEN :="Laenge_Alarminfo" //附加中断信息的长度(4 字节的标头信息 + 16 字节的诊断数据) TINFO :=P#M 100.0 BYTE 28 //指向 OB 起始信息的指针 + MB 100 的 28 个字节的管理信息 AINFO :=P#M 130.0 BYTE 20 //指向用于存储诊断数据的目标区域的指针 // ... //已存储的诊断数据的结构: // MB 130 到 MB 133: 标头信息(长度,标识符,插槽) // MB 134 到 MB 139: 标准诊断信息(6 个字节) // MB 140 到 MB 142: 特定标识符的诊断信息(3 个字节) // MB 143 到 MB 149: 模块状态(7 个字节) // ... A M 141.0 //插槽 1 有错误? JC stp1 BE stp1: L MB 147 //插槽 1 到 4 的模块状态 AW W#16#3 //排除插槽 1 L W#16#2 //在* 2 位插入状态“错误模块”(wrong module) ==I S Q 0.1 //对出错模块的响应 L MB 147 //插槽 1 到 4 的模块状态 AW W#16#3 //排除插槽 1 L W#16#1 //* 2 位的状态“无效数据”(invalid data) ==I S Q 0.2 //对无效用户数据的响应 // ... |
shtxjd.cn.b2b168.com/m/