在UDS(Unified Diagnostic Services)中,读取故障码服务(Read DTC Information,0x19)用于从ECU中读取存储的故障码(DTC,Diagnostic Trouble Code)及其相关信息。故障码是汽车电子系统中用于指示故障状态的标准化代码。以下是读取故障码服务的详细使用方法,包括服务说明、请求格式、响应格式以及实际应用示例。
1. 读取故障码服务概述
- 服务ID:0x19
- 功能:读取ECU中存储的故障码及其状态信息。
- 子功能:
- 0x01:报告已确认的DTC(Confirmed DTCs)。
- 0x02:报告已确认的DTC及其状态位(DTC Status Mask)。
- 0x03:报告已确认的DTC及其快照数据(DTC Snapshot Data)。
- 0x04:报告已确认的DTC及其扩展数据(DTC Extended Data)。
- 0x0A:报告所有DTC(包括已确认和未确认的DTC)。
2. 读取故障码服务使用实例
(1) 读取已确认的DTC
- 场景:读取ECU中已确认的故障码。
- 请求:
请求:19 01
- 0x19:读取故障码服务ID。
- 0x01:子功能,表示读取已确认的DTC。
- 响应:
响应:59 01 01 02 03 04
- 0x59:正响应(0x19 + 0x40)。
- 0x01:确认子功能。
- 0x01 0x02 0x03 0x04:已确认的DTC列表(假设为0x01020304)。
(2) 读取已确认的DTC及其状态位
- 场景:读取已确认的DTC及其状态位(如故障是否发生、是否已修复等)。
- 请求:
请求:19 02 FF
- 0x19:读取故障码服务ID。
- 0x02:子功能,表示读取DTC及其状态位。
- 0xFF:状态掩码(表示请求所有状态位)。
- 响应:
响应:59 02 01 02 03 04 01 02 03 04
- 0x59:正响应(0x19 + 0x40)。
- 0x02:确认子功能。
- 0x01 0x02 0x03 0x04:已确认的DTC列表(假设为0x01020304)。
- 0x01 0x02 0x03 0x04:每个DTC对应的状态位。
(3) 读取所有DTC
- 场景:读取ECU中所有DTC(包括已确认和未确认的DTC)。
- 请求:
请求:19 0A
- 0x19:读取故障码服务ID。
- 0x0A:子功能,表示读取所有DTC。
- 响应:
响应:59 0A 01 02 03 04 05 06 07 08
- 0x59:正响应(0x19 + 0x40)。
- 0x0A:确认子功能。
- 0x01 0x02 0x03 0x04:已确认的DTC列表(假设为0x01020304)。
- 0x05 0x06 0x07 0x08:未确认的DTC列表(假设为0x05060708)。
3. DTC格式
DTC通常由3个字节组成,格式如下:
- 第1字节:故障类型(如P0、P1、C0、B0、U0等)。
- 第2字节:故障码的高字节。
- 第3字节:故障码的低字节。
例如:
- DTC:P0101
- 第1字节:0x01(P0)。
- 第2字节:0x01。
- 第3字节:0x01。
4. DTC状态位
DTC状态位用于描述故障码的状态,常见的状态位包括:
- bit 0:测试失败(Test Failed)。
- bit 1:当前故障(Test Failed This Operation Cycle)。
- bit 2:历史故障(Pending DTC)。
- bit 3:故障已确认(Confirmed DTC)。
- bit 4:故障已修复(Test Not Completed Since Last Clear)。
- bit 5:故障未修复(Test Failed Since Last Clear)。
- bit 6:故障警告灯激活(Warning Indicator Requested)。
5. 实际应用示例
场景:读取ECU中的故障码
- 切换到扩展会话:
请求:10 03 响应:50 03
- 读取已确认的DTC:
请求:19 01 响应:59 01 01 02 03 04
- 故障码列表:0x01020304。
- 读取DTC状态位:
请求:19 02 FF 响应:59 02 01 02 03 04 01 02 03 04
- 故障码状态位:0x01020304。
- 清除故障码:
请求:14 FF FF FF 响应:54
6. 注意事项
- 会话模式:
- 读取故障码服务通常需要在非默认会话模式下使用(如扩展会话)。
- 状态掩码:
- 状态掩码用于过滤DTC的状态位,0xFF表示请求所有状态位。
- 负响应:
- 如果请求的子功能不被支持,ECU会返回负响应:
请求:19 05 响应:7F 19 31
- 0x7F:负响应标识。
- 0x19:读取故障码服务ID。
- 0x31:NRC(Negative Response Code),表示请求超出范围。
- 如果请求的子功能不被支持,ECU会返回负响应:
7. 总结
- 读取故障码服务(0x19)是UDS中用于诊断ECU故障的重要服务。
- 通过不同的子功能,可以读取已确认的DTC、所有DTC及其状态位等信息。
- 在实际使用中,需注意会话模式、状态掩码和负响应的处理。
通过以上方法,可以有效地读取和分析ECU中的故障码,帮助诊断和修复汽车电子系统的问题。