-
19 02(reportDTCByStatusMask)
作用:根据DTC状态掩码(Status Mask)报告匹配的DTC列表及其状态。
功能:
请求时需提供一个状态掩码(如0x09表示当前和历史故障)。
响应返回符合掩码条件的DTC列表,每个DTC包含3字节的DTC编号和1字节的状态位。
应用场景:用于诊断仪读取当前或历史故障码列表。 -
19 03(reportDTCSnapshotIdentification)
作用:获取DTC快照记录的ID信息(即快照记录的编号)。
功能:
返回所有已存储的DTC快照记录编号(Snapshot Record Number)。
每个快照记录对应一个DTC及其快照数据(如故障发生时的车速、电压等)。
应用场景:用于确定哪些快照记录可用于后续的19 04服务读取具体快照数据511。 -
19 04(reportDTCSnapshotRecordByDTCNumber)
作用:读取指定DTC的快照数据(Snapshot Data,又称冻结帧)。
功能:
请求时需提供DTC编号和快照记录编号(如0xFF表示读取所有快照数据)。
响应返回故障发生时的环境数据(如车速、发动机转速、电压等)。
应用场景:用于分析故障发生时的车辆状态,帮助诊断问题根源。
在ISO 14229协议(UDS,统一诊断服务)中,DTCMaskRecord 是用于标识和筛选特定DTC(诊断故障码)的数据结构,主要用于0x19(ReadDTCInformation)服务的某些子功能,如reportDTCSnapshotRecordByDTCNumber(子功能0x04)和reportDTCExtDataRecordByDTCNumber(子功能0x06)。以下是其定义和关键要点: -
DTCMaskRecord的结构
DTCMaskRecord通常由3个字节组成,分别表示DTC的高字节(High Byte)、中字节(Middle Byte)和低字节(Low Byte)。其格式如下:
Byte 1 (High Byte):DTC的高位部分,通常表示故障类别(如动力系统、底盘、车身等)。
Byte 2 (Middle Byte):DTC的中间部分,进一步细化故障类型。
Byte 3 (Low Byte):DTC的低位部分,具体标识故障码。
例如,假设转向灯故障码为 0xC14041,则:
High Byte = 0xC1
Middle Byte = 0x40
Low Byte = 0x41
在请求报文中,DTCMaskRecord的格式通常为 19 04 C1 40 41 FF(0x04子功能,读取快照数据,FF表示读取所有快照记录)。 -
DTCMaskRecord的用途
筛选特定DTC:用于在ECU存储的DTC列表中精确匹配某个DTC,例如读取该DTC的快照数据(冻结帧)或扩展数据(如故障发生次数)。
支持通配符(Wildcard):在某些情况下,可以使用 0xFF 作为通配符,表示匹配任意值。例如:
19 04 FF FF FF 表示读取所有DTC的快照数据。
19 04 C1 FF FF 表示读取高字节为 0xC1 的所有DTC的快照数据18。 -
在0x19服务中的应用
子功能0x04(reportDTCSnapshotRecordByDTCNumber):
请求格式:19 04 [DTCMaskRecord] [SnapshotRecordNumber]
例如:19 04 C1 40 41 FF 表示读取DTC 0xC14041 的所有快照数据18。
子功能0x06(reportDTCExtDataRecordByDTCNumber):
请求格式:19 06 [DTCMaskRecord] [ExtDataRecordNumber]
例如:19 06 C1 40 41 01 表示读取DTC 0xC14041 的扩展数据记录编号 0x01(如故障发生次数)18。 -
DTCMaskRecord的匹配规则
如果DTCMaskRecord完全匹配某个DTC(如 C1 40 41),则返回该DTC的相关信息。如果使用通配符(如 FF),则匹配所有可能的DTC值。
如果ECU未找到匹配的DTC,则可能返回否定响应(NRC 0x13,表示“请求数据长度错误”或NRC 0x31,表示“请求超出范围”)810。 -
示例
读取特定DTC的快照数据:
请求:19 04 C1 40 41 FF(读取 0xC14041 的所有快照数据)
响应:59 04 C1 40 41 09 01 02 01 12 00 78 01 13 01(其中 09 是状态掩码,01 是快照组号,02 是DID数量,01 12 是DID,00 78 是数据)18。
读取DTC的扩展数据(故障次数):
请求:19 06 C1 40 41 01(读取 0xC14041 的扩展数据记录 0x01)
响应:59 06 C1 40 41 09 01 05(表示该DTC发生了5次)18。
总结
DTCMaskRecord在UDS协议中是一个关键的数据结构,用于精确或模糊匹配DTC,以便读取相关的快照数据或扩展数据。其格式为3字节(High-Middle-Low),并支持通配符匹配。该机制广泛应用于故障诊断、数据记录和维修分析中
- 实际应用示例
19 02:
请求:19 02 09(查询所有当前故障)
响应:59 02 09 C1 40 41 09 C1 40 42 09(返回两个当前故障的DTC)1。
19 04:
请求:19 04 C1 40 41 FF(查询DTC 0xC14041 的所有快照)
响应:59 04 C1 40 41 09 01 02 01 12 00 78 01 13 01(返回故障时的电源电压和按钮状态)1。
总结
19 02 用于批量查询DTC状态,适用于故障码扫描。
19 04 用于获取特定DTC的快照数据,适用于故障分析。
两者在UDS诊断中互补,分别用于不同阶段的故障诊断流程
-
19 17(reportUserDefMemoryDTCByStatusMask)
作用:读取用户定义内存中符合状态掩码的DTC列表。
功能:
类似于19 02,但针对用户自定义的DTC存储区域(非标准DTC)。
用于OEM(主机厂)或特殊应用场景下的自定义故障码管理。
应用场景:某些ECU可能支持自定义DTC存储,此服务用于读取这些非标准DTC5。 -
19 18(reportUserDefMemoryDTCSnapshotRecord)
作用:读取用户定义内存中DTC的快照数据。
功能:
类似于19 04,但针对用户自定义的快照数据。
可能用于特殊诊断需求,如记录非标准参数。
应用场景:某些ECU可能存储自定义快照数据,此服务用于读取这些数据5。 -
19 19(reportUserDefMemoryDTCExtDataRecord)
作用:读取用户定义内存中DTC的扩展数据记录。
功能:
类似于19 06(读取标准DTC的扩展数据),但针对用户自定义的扩展数据。
可能包括故障发生次数、时间戳等自定义信息。
应用场景:用于读取非标准扩展数据,如特殊ECU的故障统计信息5。 -
19 1A(reportUserDefMemoryDTCByDTCNumber)
作用:根据DTC编号读取用户定义内存中的DTC信息。
功能:
类似于19 02,但针对特定的DTC编号(而非状态掩码)。
可能用于精确查询某个自定义DTC的状态。
应用场景:某些ECU可能支持按DTC编号查询自定义故障码5。
总结
子服务功能描述类似标准服务
19 02 按状态掩码报告DTC列表 -
19 03 获取DTC快照记录ID -
19 04 读取DTC快照数据 -
19 17 读取用户定义内存中的DTC列表 类似19 02
19 18 读取用户定义内存中的快照数据 类似19 04
19 19 读取用户定义内存中的扩展数据 类似19 06
19 1A 按DTC编号读取用户定义内存中的DTC 类似19 02
这些子服务在UDS诊断中用于不同层级的故障信息获取,标准服务(如02、04)较为常用,而用户定义内存相关服务(17-1A)通常用于特殊需求或OEM定制场景。如需更详细的协议定义,可参考ISO 14229-1标准5811。