打印

UDS诊断协议,看这个就够了

[复制链接]
846|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2023-8-15 17:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
keer_zu|  楼主 | 2023-8-15 17:16 | 只看该作者
1、UDS 诊断概念
UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是在汽车电子 ECU 环境下的一种诊断通信协议。简单来说,可以理解为 UDS 诊断协议就是 ISO 14229 协议,在 ISO 14229 协议中定义了 UDS 服务用法、服务格式等信息。
UDS 诊断最主要目的是为了能够快速准确判断车辆或者某个控制器的故障以及故障原因,从而为维修提供可靠的依据。

使用特权

评论回复
板凳
keer_zu|  楼主 | 2023-8-15 17:17 | 只看该作者
2、UDS 诊断组成部分
截止到 2020 年,UDS 诊断由以下 8 个部分组成:
  • ISO 14229-1-2020:规范和要求;
  • ISO 14229-2-2013:会话层服务;
  • ISO 14229-3-2012:CAN 实现的统一诊断服务(UDSonCAN) ;
  • ISO 14229-4-2012:FlexRay 实现的统一诊断服务(UDSonFR) ;
  • ISO 14229-5-2013:Internet 协议实现的统一诊断服务(UDSonIP);
  • ISO 14229-6-2013:K 线实现的统一诊断服务(UDSonK-Line) ;
  • ISO 14229-7-2015:本地互联网络实现的统一诊断服务(UDSonLIN);
  • ISO 14229-8-2020:时钟扩展外围接口实现的统一诊断服务(UDSonCXPI)。

在开放系统互连(OSI)基本参考模型中规定了各类物理层通信对应部分的 UDS 诊断协议。例如,CAN 通信(ISO 11898-1、ISO 11898-2 和 ISO 11898-3)在应用层的 UDS 诊断协议是 ISO 14229-1 和 ISO 14229-3。

使用特权

评论回复
地板
keer_zu|  楼主 | 2023-8-15 17:17 | 只看该作者
3、UDS 诊断服务
UDS 诊断是一种定向通信的交互协议(Request/Response),诊断方(Tester)发送服务请求,ECU 返回响应(肯定响应/否定响应)。


使用特权

评论回复
5
keer_zu|  楼主 | 2023-8-15 17:18 | 只看该作者
UDS 诊断包括 6 大类,26 种服务,每种服务都有自己独立的 ID,即 SID(Service Identifier)。


使用特权

评论回复
6
keer_zu|  楼主 | 2023-8-15 17:19 | 只看该作者
通信

UDS 诊断服务的通信协议基本相似,但又有所区别。
以诊断和通信管理功能单元(Diagnostic and Communication Management functional unit )为例,服务请求和响应有两类:一类是具有 Subfunction(子功能),另一类是不具有 Subfunction(子功能)。
不具有 Subfunction(子功能)的 UDS 诊断服务请求和响应机制如下图所示:

​诊断方(Tester)向 ECU 发送指定的请求数据(Request),这条数据中需要包含 SID,且 SID 处于该应用层数据的第一个字节。
ECU 接收到请求数据(Request)后会返回响应,可返回肯定响应或者否定响应。
肯定响应(Positive Response)格式为:(SID+0X40)+数据。例如,请求 0X10 服务,肯定响应第 1 个字节为 0X50;请求 0X22 服务,肯定响应第 1 个字节为 0X62。
否定响应(Negative Response)格式为:0X7F+SID+NRC。例如,请求 0X10 服务,否定响应第 1 个字节为固定的 0X7F,第 2 个字节为 0X10,第 3 个字节为 NRC。NRC 是否定响应码,可以根据返回的 NRC 判断是什么原因导致的否定响应。
具有 Subfunction(子功能)的 UDS 诊断服务请求和响应机制如下图所示:
​诊断方(Tester)向 ECU 发送指定的请求数据(Request),这条数据中需要包含 SID,且 SID 处于该应用层数据的第一个字节。
ECU 接收到请求数据(Request)后会返回响应,可返回肯定响应或者否定响应。
肯定响应(Positive Response)格式为:(SID+0X40)+Subfunction(子功能)+数据。例如,请求 0X10 服务,Subfunction(子功能)为 0X02,肯定响应第 1 个字节为 0X50,第 2 个字节为 0X02。
否定响应(Negative Response)格式为:0X7F+SID+NRC。例如,请求 0X10 服务,否定响应第 1 个字节为固定的 0X7F,第 2 个字节为 0X10,第 3 个字节为 NRC。NRC 是否定响应码,可以根据返回的 NRC 判断是什么原因导致的否定响应。

使用特权

评论回复
7
keer_zu|  楼主 | 2023-8-15 17:26 | 只看该作者
首先需要发送10 03进入扩展会话,再经过27服务解锁后才能进行2E服务的通信。27服务命令规则如下:
Tester: 27 01
ECU: 67 01 + Seed(四字节随机值)
Tester:27 02 + Key(四字节:Seed按位取反)
ECU: 67 02


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1352

主题

12436

帖子

53

粉丝