在统一诊断服务 (UDS) 中配置"0x1902: Report DTC by Status Mask"



我正在使用读取DTC信息(0x19(协议,子功能:0x02:通过状态掩码报告DTC

但我的问题具体涉及0x1902逻辑。

我试图通过使用不同的状态掩码来报告DTC。例如,0x19020D和0x190201通过190201请求,我只能获得失败的DTC,但我不知道这背后的逻辑?如何使用状态掩码配置请求?我需要1902请求的主要逻辑。如果有人能帮我理解它,我将不胜感激。谢谢。

如果我只想过滤失败的DTC,我需要使用190201。我尝试过,得到的回复只有激活的失败DTC。如果我想再只过滤存储的(未激活的DTC(怎么办?

当请求存储的DTC时,我们指的是经过测试的旧DTC,因此我们不会考虑位6和位4。那么,在询问DTC时,最终的掩码应该是什么呢?有可能使用1902AF吗?我有点困惑。如果你能回复我,我将不胜感激。

ECU诊断请求

评论说,通过掩码过滤DTC的公式是

(status_byte & mask) == mask,但实际上是(status_byte & mask) != 0,"来自掩码的至少一个比特被设置";。因此,1902FF列出了除已测试和通过的DTC之外的所有支持的DTC(状态为==0的DTC总是被忽略(。

命令190A列出了所有DTC,因此可能(也应该!(显示的DTC多于1902FF。响应有效负载兼容(每个DTC的3B DTC+1B状态(。

可能是不同的车辆标记实现了不同的功能,但它们不应该。

最新更新