UDS诊断笔记

文章目录

  • 常见缩写
  • 简介
  • UDS寻址模式
    • 1. 物理寻址(点对点、一对一)
    • 2. 功能寻址(广播、一对多)
    • 3. 功能寻址使用场景举例
  • UDS报文格式
  • UDS协议栈
    • 网络层
      • 网络层功能
      • 网络层协议
      • 1. 单帧 SF(Single Frame)
      • 2. 首帧 FC(First Frame)
      • 3. 流控帧 FC(Flow Control Frame)
      • 4. 连续帧 CF(Continuous Frame)
      • 定时参数
  • UDS诊断服务
    • 1. 诊断和通信管理功能单元
    • 2. 数据传输功能单元
    • 3. 存储数据传输功能单元
    • 4. IO 控制功能单元
    • 5. 例程功能单元
    • 6. 上传下载功能单元
  • 引用与参考

常见缩写

  • ECU: 电 子 控 制 单 元
  • UDS:Unified Diagnostic Service( 统 一 诊 断 服 务 )
  • SID:Service Identifier(服 务 标 识 符 )
  • DID:Data Identifier(数 据 标 识 符 )
  • DTC:Diagnostic Trouble Code(故 障 诊 断 代 码 )
  • NRC:Negative Response Code(否 定 响 应 码 )
  • EOL:End Of Line(下 线 )
  • ISO:International Standards Organization(国际标准组织)
  • NA:Not Applicable(不适用)
  • NRC: 否定响应代码
  • USDT: Unacknowledged Segmented Data Transfer(不需响应的分段数据传输)
  • APP: Application(应用程序)
  • FBL: Flash Boot Loader(刷写引导程序)
  • OBD: 车辆诊断连接接口

简介

UDS本质上是一系列服务的集合。UDS的服务包含6大类,共26种。每种服务都有自己独立的ID,即SID(Service Identifier)。

UDS本质上是一种定向的通信,是一种交互协议Request/Response)
UDS诊断笔记_第1张图片

Tester发给ECU的数据,应包含 SID,且SID处于该 应用层数据 的第一个字节。

  • 如果是肯定的响应(Positive Response)首字节回复[SID+0x40]外,其他字节根据服务返回;例如,请求0x10,响应返回0x50
  • 如果是否定的响应(Negative Response)首字节回复0x7F第二字节回复刚才询问的SID第三字节NRC(否定响应码),代表否定的依据

UDS诊断笔记_第2张图片

  • 如上图,TesterECU 发送的数据 为 02 10 01 AA AA AA AA AA
    • N_PCI = 02, 表示 此帧为单帧有效数据长度2
    • N_Data = 10 01, 表示 Tester 发送的有效信息,请求ECU进入默认会话
    • AA AA AA AA AA自定义自动填充数据
  • ECUTester 响应的数据 为 06 50 01 00 32 01 F4 CC
    • N_PCI = 06, 表示 此帧为单帧有效数据长度6
    • N_Data = 50 01 00 32 01 F4, 50 =[SID+0x40], 后面为该服务返回数据
    • CC 为自定义自动填充数据

UDS寻址模式

1. 物理寻址(点对点、一对一)

根据物理地址的不同进行访问,但只能访问(通过CAN ID访问)单个ECU节点,TesterSA源地址,ECU作为TA目标地址

2. 功能寻址(广播、一对多)

根据功能的不同进行访问,它能访问(通过CAN ID访问)多个ECU节点,对于标准帧来说,通常是0x7DF,也就是说本网络中所有ECU都要对这条指令做出响应,即一对多模式

每个ECU 都有2个 CAN的诊断帧ID,分别对应物理寻址时 ECU发到CAN线上的报文CAN ID和处理指定CAN ID的数据报文

通常由主机厂来确定不同ECU的这两个特定的诊断ID。比如0x701对应接收Tester的消息,0x709对应发给Tester的消息

3. 功能寻址使用场景举例

  1. 刷写前使用0x85(ControlDTCSetting)服务关闭ECU故障检查功能
  2. 刷写前使用0x28(CommunicationControl)服务对某些ECU禁言
  3. 使用0x14(ClearDiagnosticInformation)服务清除多个ECU DTC等

UDS报文格式

UDS诊断笔记_第3张图片

UDS协议栈

UDS协议栈主要分为网络层和应用层两大部分
UDS诊断笔记_第4张图片

网络层

为了解决ISO 11898 协议中的经典can数据链路层与UDS 应用层 ISO 14229 协议中定义的应用层,彼此的数据长度不一样问题。经典can数据链路层最大支持8字节,但 ISO 14229 不仅仅支持can总线设计的,其最大容量是达到4095字节

例如,UDS应用需要发送20字节数据信息,而 经典CAN不能一帧报文处理完,需要3帧才能发送完毕。那么如何将多字节数据通过can进行有效,有序的传输呢?ISO 15765-2 由此而生。

网络层功能

  • 应用层诊断服务can数据帧的转发;
  • 多帧数据传输,进行数据的打包、解包,协调上下层工作;

网络层协议

N_PDU(网络层协议数据单元) 一般包含3个领域,N_PDU: { N_AI, N_PCI, N_Data }

参数名称 缩写 描述
寻址信息 N_AI 隐含源地址、目标地址和寻址方式信息
协议控制信息 N_PCI 用于标识N_PDU帧类型
数据 N_Data 包含应用层数据A_Data

网络层对于N_PDU分为单帧(SF)首帧(FF)流控帧(FC)连续帧(CF)这四种类型,每种类型是通过协议控制信息(N_PCI)进行区分的,每一个N_PDU都只有一个N_PCI。通常对于CAN诊断来说,就可以通过识别每条CAN帧数据域的 首个字节 来确定它属于四种类型中的哪类。

N_PDU类型 N_PCI
Byte 1 Byte 2 Byte 3
Bit 7-4 Bit 3-0
单帧(SF) N_PCI Type = 0 SF_DL <= 7 N_Data
首帧(FF) N_PCI Type = 1 7 < FF_DL <= 4095 N_Data
流控帧(FC) N_PCI Type = 3 FS BS STmin
连续帧(CF) N_PCI Type = 2 SN (0-F循环计数) N_Data

网络层分为单帧和多帧,单帧(SF)就是一帧can报文8字节内就可以把uds数据处理完毕。多帧就是一帧can报文8字节内处理不完,需分为首帧(FF),流控帧(FC),连续帧(CF)来处理。网络层还有时间参数,如N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs。后续网络层会详细讲解。

1. 单帧 SF(Single Frame)

单帧 顾名思义就是一帧can报文就可以处理完uds服务

2. 首帧 FC(First Frame)

发送方发送 N_Data 数据过长 时,则需要拆分成多帧报文 被拆分后的报文需要通过多个N_PDU来发送,而接收方接收到多个N_PDU信息后进行重组。
发送方发送多帧时,需要先发送首帧来告知接收方有多少字节数要发送到接收方。

3. 流控帧 FC(Flow Control Frame)

UDS多帧通讯时:

  1. 发送方 发送首帧FF 给接收方。
  2. 接收方接收到首帧, 解析首帧
  3. 接受方根据自身条件判断后(如:接收数据缓存大小,接收数据快慢能力,当前是否可以接收数据等), 回复一帧流控帧FC给发送方。
  4. 发送方根据接收到接收方的流控帧FC来决定后续的操作。

FS (Flow State) 流状态:

  • 0 : 继续发送
  • 1 : 等待
  • 2 : 溢出,即第一帧中的FF_DL信息的长度超过接受实体缓冲区的大小)

BS 表示 块大小(允许一次可连续发送连续帧 CF 的次数)
STmin 表示 发送方发送连续帧 CF 与连续帧 CF 间的最小间隔时间

4. 连续帧 CF(Continuous Frame)

发送方发送首帧FF,然后接收到接收方的流控帧FC后,若条件允许可继续发送信息,则需根据连续帧CF的控制信息格式来发送信息。

对于所有的拆分信息,SN开始于0。第一帧应当分配值为0。 虽然第一帧 N_PCI 没有明确表示出序列号,但是应该将首帧当作0号序列对待,第一个流控帧FC后的 连续帧SN设置为1,同一拆分信息上,每一个新增的连续帧顺序号SN增1,连续帧顺序号SN的值不受流控帧的影响,当连续帧顺序号SN值为0x0F时,下一个连续帧中将顺序号SN重置为0。

定时参数

网络层定义了N_ArN_AsN_BrN_BsN_CrN_Cs六个时间参数

定时参数 描述
N_As 发送方数据帧经数据链路层发送的时间
N_Ar 接收方数据帧经数据链路层发送的时间
N_Bs 发送方接收流控制帧的等待时间
N_Br 接收方发送流控制帧的间隔时间
N_Cs 发送方发送连续帧的间隔时间
N_Cr 接收方接收连续帧的等待时间
  • N_As超时:发送方没有及时发送N_PDU
  • N_Ar超时:接收方没有及时发送N_PDU
  • N_Bs超时:发送方没有接收到流控帧。
  • N_Br超时:接收方没有发出流控帧。
  • N_Cs:即STmin,发送两个连续帧需要等待的最短时间,N_Cr最大1000ms
  • N_Cr超时:接收方没有收到连续帧。

UDS诊断服务

1. 诊断和通信管理功能单元

序号 ID 服务 说明 服务详解
1 0x10 Diagnostic Session Control
(诊断会话控制)
客户端请求通过服务器控制会话 点击此处跳转
2 0x11 ECU Reset
(ECU重置)
客户端强制服务器执行重置 点击此处跳转
3 0x27 Security Access
(安全访问)
客户端请求解锁受保护的服务器 点击此处跳转
4 0x28 Communication Control
(通信控制)
客户端控制服务器内通信参数的设置(例如,通信波特率) 点击此处跳转
5 0x3E Tester Present
(测试仪 保活)
客户端向服务器发送其仍处于保活状态消息 点击此处跳转
6 0x83 Access Timing Parameter
(访问计时参数)
客户端使用该服务来读取/修改 有效通信的计数参数 点击此处跳转
7 0x84 Secured Data Transmission
(受保护的数据传输)
客户端使用该服务来执行具有扩展数据链路安全性的数据传输 点击此处跳转
8 0x85 Control DTC Setting
(控制DTC设置)
客户端控制服务器内DTC设置 点击此处跳转
9 0x86 Response On Event
(基于事件响应)
客户端请求设置/控制 服务器内的事件机制 点击此处跳转
10 0x87 Link Control
(链路控制)
客户端请求控制通信波特率 点击此处跳转

2. 数据传输功能单元

序号 ID 服务 说明 服务详解
1 0x22 Read Data By Identifier
(按标识符读取数据)
客户端请求读取通过给定 Data Identifier(数据标识符)所识别的记录的当前值 点击此处跳转
2 0x23 Read Memory By Address
(按地址读取内存)
客户端请求读取给定范围的当前值 点击此处跳转
3 0x24 Read Scaling Data By Identifier
(按标识符读取换算数据)
客户端请求读取通过给定 Data Identifier(数据标识符)所识别的记录的换算信息 点击此处跳转
4 0x2A Read Data By Periodic Identifier
(按周期性标识符读取数据)
客户端请求调度服务器中的数据供周期性传输 点击此处跳转
5 0x2C Dynamically Define Data Identifier
(动态定义数据标识符)
客户端请求动态定义后续可能成为 22 服务所读取的数据标识符 点击此处跳转
6 0x2E Write Data by Identifier
(按标识符写数据)
客户端请求写入通过给定 Data Identifier(数据标识符)所指定的记录 点击此处跳转
7 0x3D Write Memory By Address
(受保护的数据传输)
客户端请求改写给定的内存范围的值 点击此处跳转

3. 存储数据传输功能单元

序号 ID 服务 说明 服务详解
1 0x14 Clear Diagnostic Information
(清除诊断信息)
允许客户端从服务器中清除诊断信息(包括DTC 和捕获的数据等) 点击此处跳转
2 0x19 Read DTC Information
(读取诊断信息)
允许客户端从服务器中请求诊断信息(包括DTC 和捕获的数据等) 点击此处跳转

4. IO 控制功能单元

序号 ID 服务 说明 服务详解
1 0x2F Input Output Control By Identifier
(按标识符输入输出控制)
客户端请求服务器控制特定 输入/输出 点击此处跳转

5. 例程功能单元

序号 ID 服务 说明 服务详解
1 0x31 Routine Control
(例程控制)
客户端请求启动、停止服务器的例程,或请求例程结果 点击此处跳转

6. 上传下载功能单元

序号 ID 服务 说明 服务详解
1 0x34 Request Download
(请求下载)
客户端请求从客户端向通过服务器传输数据 点击此处跳转
2 0x35 Request Upload
(请求上传)
客户端请求从服务器向客户端传输数据 点击此处跳转
3 0x36 Transfer Data
(传输数据)
客户端向服务器传输数据(下载)或请求服务器传输数据(上传) 点击此处跳转
4 0x37 Request Transfer Exit
(请求传输终止)
客户端请求传输终止 点击此处跳转
5 0x38 Request File Transfer
(请求文件传输)
客户端请求在服务器和客户端之间传输文件 点击此处跳转

引用与参考

  • https://zhuanlan.zhihu.com/p/502441990
  • https://blog.csdn.net/weixin_48498880/article/details/126443147
  • https://blog.csdn.net/weixin_48498880/article/details/128255219

你可能感兴趣的:(UDS,汽车电子,CAN,诊断)