UDS诊断系列介绍08-19服务

本文介绍了UDS(UnifiedDiagnosticServices)中的19服务,包括读取DTC信息的相关内容。19服务用于从ECU读取故障诊断码,如1901服务查找匹配DTC数量,1902服务获取DTC状态,1904服务获取冻结帧数据,1906服务获取扩展数据,以及190A服务获取所有支持的DTC状态。此外,文章还提及了DTC故障码的定义和状态位的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 系列介绍

本系列Autosar 诊断入门介绍,会详细介绍诊断相关基础知识,如您对诊断实战有更高需求,可参见诊断实战系列专栏,快速链接:Autosar诊断实战系列导读
如您MCAL配置,通信,诊断,OS等Autosar全栈等实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是面向整车所有ECU的一种诊断通信方式,是基于ISO 14229规范的规范化诊断服务标准,其位于OSI模型中的应用层,UDS可基于不同的总线实现,如基于CAN总线可再结合ISO1576协议进一步实现传输层,本篇将介绍19服务相关内容:

1.1 19服务概述

19服务英文全称为ReadDTCInformation Service,即读取DTC相关信息的服务,DTC(Diagnositc Trouble Code),诊断故障码读取是UDS诊断中非常重要的一环,在ECU运行过程中如检测到故障如检测到汽车的三效催化器发生老化,会记录对应的故障码,不同的故障码根据故障严重及危害程度确定是否需要点亮仪表盘的发动机故障灯。

19服务允许诊断仪/上位机从车辆内的任何ECU读取故障诊断码(DTC)信息的状态。此服务常用的操作如下:

  • 根据DTC状态掩码查找匹配的DTC数量;
  • 根据DTC状态掩码查找匹配的所有DTC列表;
  • 根据提供的冻结帧记录号,获取DTC和DTC对应的冻结帧数据;
  • 根据DTC值和扩展数据记录号,获取DTC和DTC对应的扩展数据
  • 获取所有支持的DTC和DTC对应的UDS状态

1.2 DTC故障码定义

在ISO 15031中对DTC故障码各Bit格式进行了定义:
在这里插入图片描述

1.3 DTC状态位

DTC的八个状态位分别代表含义:
在这里插入图片描述

2. 19服务常用子服务

在ISO 14229中定义了28个Sub-Function,大家可以参考协议进一步学习,篇幅问题在这里仅对如下几个常用的子服务进行介绍。
几个常用的Sub-Function:
19 01:根据DTC状态掩码查找匹配的DTC数量
19 02 :通过DTC 状态掩码获取DTC状态
19 04:根据提供的冻结帧记录号,获取DTC和DTC对应的冻结帧数据
19 06:根据DTC值和扩展数据记录号,获取DTC和DTC对应的扩展数据
19 0A:获取支持的所有DTC的状态

2.1 19 01服务

19 01即根据DTC状态掩码查找匹配的DTC数量的服务,上位机发送的请求格式如下:在这里插入图片描述
在肯定响应格式如下:
在这里插入图片描述

2.2 19 02服务

该子服务为根据状态掩码报告对应的DTC,其规则为与请求掩码Bit位求与后不为0的DTC都会被上报给上围巾,即任意Bit对上都会被上报,其报文请求格式:
在这里插入图片描述
肯定响应格式如下:
在这里插入图片描述

2.3 19 04服务

该子服务为根据DTC号报告相关的快照信息,一般会根据主机厂需求记录上车速,电源电压,车辆点火状态,里程,时间等参数,对应的服务请求如下:
在这里插入图片描述
其正响应:
在这里插入图片描述

2.4 19 06服务

除快照信息外,还会记录DTC对应的一些扩展信息,如老化计数器及故障发生次数等,如需获取以上扩展信息,就需要用到19 06服务,其请求格式为:
在这里插入图片描述
其正响应报文格式为:
在这里插入图片描述

2.5 19 0A服务

该服务为请求获取所有支持的DTC,报文请求格式为:
在这里插入图片描述
对应的正响应报文:
在这里插入图片描述

2.6 否定响应

如应答为否定应答,则对应的否定NRC代号对应解析:在这里插入图片描述

3. Autosar系列文章快速链接

Autosar系列文章概览及快速链接
在这里插入图片描述

### 关于 UDS 19 服务的使用说明 UDS (Unified Diagnostic Services) 是一种基于 ISO 14229 和 ISO 15765 的汽车通用诊断协议,广泛应用于现代车辆的车载诊断系统。其中 `Service ID 0x19` 被称为 **ReadDTCInformation** 服务,用于读取存储在 ECU 中的故障码(Diagnostic Trouble Codes, DTCs)。以下是关于该服务的具体功能描述及其常见错误排查方法。 #### ReadDTCInformation 服务的功能 `0x19` 服务允许客户端请求不同类型的 DTC 数据。其子功能(Subfunction)决定了具体的操作模式。例如: - 子功能 `0x01`: 报告当前活动的 DTC 列表。 - 子功能 `0x02`: 报告历史记录中的 DTC 列表。 - 子功能 `0x0A`: 清除所有的 DTC 记录以及相关的测试结果数据。 - 子功能 `0x55`: 报告带有永久状态的 WWH-OBD-DTC 列表[^1]。 这些子功能通过特定的数据结构返回相应的 DTC 及其附加信息,如严重性等级、类别等。 #### 实现细节与注意事项 当调用 `reportWWHOBDDTCWithPermanentStatus` 子功能 (`sub-function = 0x55`) 时,需注意以下几点: - 返回的结果可能包含多个 DTC 条目,每条目都附带额外的状态标志位来指示是否为永久性故障。 - 如果目标 ECU 不支持此子功能,则会收到负响应代码 `0x12` 表示服务未被支持。 #### DOIP 通信异常案例分析 对于某些场景下可能出现的服务超时问题,可以参考实际项目经验来进行定位和修复。比如,在使用 ETAS 提供的 DOIP 协议栈工具时遇到 `0x19` 请求失败的情况,通常涉及以下几个方面的原因调查[^2]: - 网络延迟过高导致无法及时完成握手过程; - 防火墙设置阻止了必要的端口通讯; - ECUs 内部软件逻辑存在缺陷未能正确解析输入参数; 针对上述情况可采取相应措施加以改进优化网络配置或者升级固件版本从而提高系统的稳定性和兼容性表现。 ```python def send_uds_request(service_id, sub_function=None): request_data = bytearray([service_id]) if sub_function is not None: request_data.append(sub_function) # Simulate sending the request over a diagnostic interface. response = simulate_diagnostic_response(request_data) return parse_response(response) def simulate_diagnostic_response(request_bytes): service_id = request_bytes[0] if service_id == 0x19 and len(request_bytes) >= 2: sub_func = request_bytes[1] if sub_func == 0x01 or sub_func == 0x02: return b'\x59\xFB' + bytes.fromhex('C0FFEE') # Example positive response with dummy data. raise NotImplementedError(f"No simulation defined for {request_bytes.hex()}.") def parse_response(raw_response): status_byte = raw_response[0] if ((status_byte & 0xF0) >> 4) != 0x5: raise ValueError("Invalid Response Format") payload = raw_response[1:] return {"payload": list(payload)} ``` 以上 Python 函数展示了如何构建并发送一个简单的 UDS 请求到虚拟设备模拟器中去验证预期行为。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值