目录
5.1.1 0x01 - reportNumberOfDTCByStatusMask
5.1.2 0x02 - reportDTCByStatusMask
5.1.3 0x03 - reportDTCSnapshotIdentification
5.1.4 0x04 - reportDTCSnapshotRecordByDTCNumber
5.1.5 0x06 - reportDTCExtendedDataRecordByDTCNumber
5.1.6 0x0A - reportSupportedDTCs
1. 文档概述
本文档详细说明基于ISO 14229-1标准的读取诊断故障码信息服务(Read DTC Information, Service ID 0x19)的Python实现。该服务是UDS协议中最复杂的服务之一,提供了多种子功能来读取和管理ECU中的诊断故障码(DTC)及其相关数据。
2. 服务简介
2.1 服务定义
读取诊断故障码信息服务(0x19)允许客户端从服务器(ECU)读取诊断故障码信息,包括DTC状态、数量、快照数据和扩展数据等。
2.2 服务重要性
- 故障诊断:获取当前和历史故障信息
- 系统监控:监控ECU健康状态
- 数据分析:收集故障相关数据用于分析
- 维护支持:支持预防性和 corrective 维护
2.3 协议规范
本实现遵循ISO 14229-1:2020标准中关于0x19服务的规范,支持6个核心子功能。
3. 类结构设计
3.1 继承关系
ReadDTCInformation(BaseService)
├── Sub_function(BaseService_fun)
└── Response_Interpret(Response)
3.2 类成员说明
3.2.1 ReadDTCInformation 类属性
| 属性 | 类型 | 值 | 描述 |
|---|---|---|---|
_sid |
int |
0x19 |
服务标识符 |
_use_sub_function |
bool |
True |
使用子功能参数 |
_has_response_data |
bool |
True |
有响应数据 |
supported_negative_response |
List[ResponseCode] |
[0x12, 0x13, 0x31] |
支持的否定响应码 |
3.2.2 Sub_function 嵌套类
定义了6个子功能:
- 0x01:
reportNumberOfDTCByStatusMask- 按状态掩码报告DTC数量 - 0x02:
reportDTCByStatusMask- 按状态掩码报告DTC状态 - 0x03:
reportDTCSnapshotIdentification- 报告DTC快照标识 - 0x04:
reportDTCSnapshotRecordByDTCNumber- 按DTC编号报告快照记录 - 0x06:
reportDTCExtendedDataRecordByDTCNumber- 按DTC编号报告扩展数据记录 - 0x0A:
reportSupportedDTCs- 报告支持的DTC
3.2.3 Response_Interpret 嵌套类
class Response_Interpret(Response):
dtc_list: list[DTC]
dtc_count: Optional[int]
status_availability: Optional[DTC.Status]
响应解析类包含DTC列表、数量和状态可用性信息。
4. 核心方法详解
4.1 make_request 方法
4.1.1 方法签名
@classmethod
def make_request(cls,
sub_function: int,
status_mask: Optional[Union[int, DTC.Status]] = None,
dtc: Optional[Union[int, DTC]] = None,
snapshot_record_number: Optional[int] = None,
extended_data_record_number: Optional[int] = None) -> Request
4.1.2 参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
sub_function |
int |
子功能代码 (0x01-0x0A) |
status_mask |
Optional[Union[int, DTC.Status]] |
状态掩码 |
dtc |
Optional[Union[int, DTC]] |
DTC标识符 |
snapshot_record_number |
Optional[int] |
快照记录编号 |
extended_data_record_number |
Optional[int] |
扩展数据记录编号 |
4.1.3 子功能参数要求
| 子功能 | 必需参数 | 可选参数 |
|---|---|---|
| 0x01 | status_mask | - |
| 0x02 | status_mask | - |
| 0x03 | - | - |
| 0x04 | dtc, snapshot_record_number | - |
| 0x06 | dtc, extended_data_record_number | - |
| 0x0A | - | - |
4.2 interpret_response 方法
4.2.1 方法签名
@classmethod
def interpret_response(cls, response_data: Optional[Union[int, list[int], bytes]]) -> Response_Interpret
4.2.2 响应解析逻辑
根据不同的子功能,解析响应数据:
- 0x01: 解析状态可用性和DTC数量
- 0x02/0x0A: 解析DTC列表和状态
- 0x03: 解析DTC快照标识
- 0x04: 解析DTC快照记录数据
- 0x06: 解析DTC扩展数据
5. 协议细节
5.1 子功能详细说明
5.1.1 0x01 - reportNumberOfDTCByStatusMask
- 功能: 报告符合状态掩码的DTC数量
- 请求格式:
[0x19, 0x01, status_mask] - 响应格式:
[0x59, 0x01, status_availability, count_high, count_low]
5.1.2 0x02 - reportDTCByStatusMask
- 功能: 报告符合状态掩码的DTC列表
- 请求格式:
[0x19, 0x02, status_mask] - 响应格式:
[0x59, 0x02, status_availability, dtc1_high, dtc1_mid, dtc1_low, status1, ...]
5.1.3 0x03 - reportDTCSnapshotIdentification
- 功能: 报告有快照数据的DTC标识
- 请求格式:
[0x19, 0x03] - 响应格式:
[0x59, 0x03, dtc1_high, dtc1_mid, dtc1_low, snapshot_count1, ...]

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



