UDS诊断系列介绍09-14&85服务

本文介绍了Autosar诊断中的14服务和85服务,14服务用于清除DTC故障信息,85服务则用于启用和禁用DTC设置。UDS协议基于ISO14229,服务包括对DTC的全部或单个清除请求以及开关请求,并包含了相应的正响应和否定应答格式。

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

1. 系列介绍

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

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

1.1 14服务概述

在UDS协议中,0x14服务用语清除DTC故障信息,可以通过不同的子服务全部清除或只清除单个DTC的故障信息。
在这里插入图片描述

1.2 85服务概述

0x85服务用于启用和禁用ECU中诊断故障代码DTC的设置。

2. 14服务请求与应答

2.1 14服务请求

可以对全部或单个DTC的状态进行清除,对应的报文请求如下:
清除全部DTC状态:14+FF+FF+FF;
清除单个DTC : 14+DTC编号;
在这里插入图片描述

2.2 14服务正响应

14服务的正响应如下:
在这里插入图片描述

3. 85服务请求与应答

3.1 85服务请求

分别对应DTC的开关请求如下:
DTC 打开诊断请求:85 01
DTC 关闭诊断请求:85 02
在这里插入图片描述

3.2 85服务正响应

85服务的正响应如下:
在这里插入图片描述

3.3 否定应答

对应的否定应答格式如下:
在这里插入图片描述
其中可能的NRC如下表:
在这里插入图片描述

4. Autosar系列文章快速链接

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

### ISO 14229-1 Diagnostic Communication Services for UDS #### Service 0x14: ClearDiagnosticInformation (清除诊断信息) 此服务用于清除一个或多个ECU存储器中的诊断信息。通过发送特定的请求数据记录,可以指定要清除哪些类型的故障码和其他诊断信息[^1]。 该服务允许客户端向服务器发出指令来删除某些范围内的DTCs(诊断故障代码)。这通常是在维修完成之后执行的操作,以确保所有的历史错误都被移除并给客户提供干净的状态报告。为了实现这一点,请求中包含了指示应被清零的数据子集的一个掩码字节。 ```python def clear_diagnostic_information(mask_record): """ 发送ClearDiagnosticInformation请求到ECU :param mask_record: 掩码记录, 指定要清除哪类DTCs """ request = b'\x14' + bytes([mask_record]) response = send_request_to_ecu(request) if is_positive_response(response): print("成功清除诊断信息") else: handle_negative_response(response) ``` #### Service 0x19: ReadDTCInformation (读取DTC信息) ReadDTCInformation服务提供了多种方式来查询和检索有关当前存在以及过去发生的任何故障条件的信息。它支持不同的子功能,这些子功能决定了如何处理所选组别的DTC列表及其附加参数,比如冻结帧数据、严重程度等。 以下是几种常见的子功能: - **ReportNumberOfDTCByStatusMask**: 报告符合状态屏蔽条件的数量。 - **ReportDTCByStatusMask**: 返回满足特定状态位组合的所有活动/挂起的DTC。 - **SnapshotIdentification**: 获取快照标识符,可用于获取更多关于某个具体事件发生时环境状况的信息。 对于每种情况,都需要提供适当的选择标准作为输入参数的一部分,以便能够精确地定位所需的信息集合。 ```python def read_dtc_information(sub_function, status_mask=None): """ 向ECU发送ReadDTCInformation请求 :param sub_function: 子函数编号, 定义了具体的读取操作类型 :param status_mask: 可选参数, 当适用时用来过滤DTC """ data = [sub_function] if status_mask is not None: data.append(status_mask) request = b'\x19' + bytes(data) response = send_request_to_ecu(request) if is_positive_response(response): process_read_dtc_info(response) else: handle_negative_response(response) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Autosar汽车电子进阶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值