1.诊断概述
什么是诊断(Diagnostics)?在日常生活中我们理解的诊断一般都是医生与病人之间进行的活动,也就是医生从医学角度对人们的精神和体质状态作出的判断。中国传统的诊断方法有问诊,望诊等。相似的,车辆也有诊断功能,从而反映出车辆的状态以及故障等。
车辆诊断
车辆诊断是一种允许在ECU的整个生命周期内对选定ECU信息或内存区域进行读取(有时写入)访问,并使用选定ECU功能的方法,当无法直接访问ECU或需耗费大量资源时,通常会使用车辆诊断。
车辆网络诊断
-
诊断协议是ECU与诊断测试仪之间通信的必要条件。
-
诊断协议示例:ISO 14230/ISO 15031/ISO 15765/ISO 14229...
-
诊断协议定义了诊断请求/响应规则、ECU对请求的处理行为,以及请求/响应消息的内容
诊断规范历史
-
1996年:ISO 9141-2 CARB数字信息交换要求
-
1999年:ISO 14230 关键字协议2000(KWP2000)
-
1999年:ISO/DIS 15765 基于KWP2000的CAN诊断
-
2001年:ISO 15031 排放相关诊断通信
-
2001年:ISO 15765 基于UDS的CAN诊断
-
2006年:ISO 14229-1 统一诊断服务(UDS)
-
2013/3月:ISO 14229-1 统一诊断服务(UDS)
2.UDS(统一诊断服务,Unified Diagnostic Services)
“UDS(统一诊断服务,Unified Diagnostic Services)是一种常见的汽车诊断通信协议,广泛应用于汽车电子控制单元(ECU)的诊断和维护。UDS协议的核心目的是通过车载诊断工具与汽车的ECU进行通信,获取汽车的故障码、读取传感器数据、进行软件编程等操作。UDS主要基于ISO 14229标准,在车辆诊断、故障排查以及控制模块的编程和配置等领域发挥着重要作用。”
UDS术语
-
Communication Services:通信服务
-
Standardized Data:标准化数据
-
UDS Standard:UDS标准
-
UDS Application:UDS应用
-
OEM specific data:OEM特定数据
-
Unified Diagnostic Services:统一诊断服务
UDS范围
ISO 14229/2013:统一诊断服务(UDS)
- -1 规范与要求
- -2 会话层服务
- -3 CAN实现的统一诊断服务(UDSonCAN)
- -4 FlexRay实现的统一诊断服务(UDSonFR)
- -5 IP实现的统一诊断服务(UDSonIP)
- -6 K线实现的统一诊断服务(UDSonK-Line)
- -7 LIN实现的统一诊断服务(UDSonLIN)
UDS的诊断应用
网络示例
OSI模型中的UDS
3.诊断服务概述
服务类型包括诊断通信管理请求、数据请求、故障码请求、输入/输出控制、安全访问、重编程请求等。UDS 本质上是一系列的服务,共包含 6 大类 26 种。每种服务都有 自己独立的 ID,即 SID。上是一种 定向的通信,是一种交互协议(Request/Response),即诊断方(Tester)给 ECU 发送指定的请求数据(Request),这条数据中 需要包含 SID。
原则:定向通信,即定向呼唤应答机制,需要做到一问一答,非常类似于问诊。
Tester:诊断仪 ECU:车载控制器
-
如果是肯定的响应(Positive Response),回复[SID+0x40], 如请求 10,响应 50;请求 22,响应 62。
-
如果是否定的响应(Negative Response),回复 7F+SID+NRC,回复的是一个声明。
拒绝请求的否定响应码(NRC)
如果 ECU 拒 绝了一个请求,它会回应一个 NRC。
NRC | 描述 |
---|---|
10 | 通用拒绝 |
11 | 服务不支持 |
12 | 子功能不支持 |
13 | 消息长度错误或格式无效 |
22 | 条件不满足 |
31 | 请求超出范围 |
7E | 当前会话不支持子功能 |
7F | 当前会话不支持服务 |
... | ... |
响应超时时间 P2 和 P2*
协议服务标识符范围
服务标识符 | 服务类型 | 定义标准 |
---|---|---|
00 – 0F | OBD服务请求 | ISO 15031-5 |
10 – 3E | ISO 14229-1服务请求 | ISO 14229-1 |
3F | 不适用 | 文档保留 |
40 – 4F | OBD服务响应 | ISO 15031-5 |
50 – 7E | ISO 14229-1肯定响应 | ISO 14229-1 |
7F | 否定响应服务标识符 | ISO 14229-1 |
80 | 不适用 | ISO 14229-1保留 |
81 – 82 | 不适用 | ISO 14230保留 |
83 – 88 | ISO 14229-1服务请求 | ISO 14229-1 |
89 – 9F | 服务请求 | 未来扩展保留 |
A0 – B9 | 服务请求 | 车辆制造商定义 |
BA – BE | 服务请求 | 系统供应商定义 |
BF | 不适用 | 文档保留 |
C0 | 不适用 | ISO 14229-1保留 |
C1 – C2 | 不适用 | ISO 14230保留 |
C3 – C8 | ISO 14229-1肯定响应 | ISO 14229-1 |
C9 – DF | 肯定响应 | 未来扩展保留 |
E0 – F9 | 肯定响应 | 车辆制造商定义 |
FA – FE | 肯定响应 | 系统供应商定义 |
FF | 不适用 | 保留 |
UDS的26种服务
子功能与标识符
► 多个UDS服务支持子功能(SF)
► 多个UDS服务支持数据标识符(DID),通过逻辑编号访问数据。
两种服务同时支持子功能和标识符:SID SF RID
缩写 | 描述 |
---|---|
SF | 子功能 |
DID | 数据标识符 |
RID | 例程标识符 |
IOCP | 输入输出控制参数 |
抑制肯定响应指示位(SPRMIB)
SF的第7位值(SPRMIB) 描述
0 → 不抑制肯定响应
1 → 抑制肯定响应
协议服务分类
-
诊断管理功能单元
-
示例:诊断会话控制(0x10)
-
示例:ECU复位(0x11)
-
-
数据传输功能单元
-
示例:按标识符读取数据(0x22)
-
示例:按标识符写入数据(0x2E)
-
-
存储数据传输功能单元
-
示例:读取DTC信息(0x19)
-
示例:清除诊断信息(0x14)
-
-
输入/输出控制功能单元
-
示例:按标识符输入输出控制(0x2F)
-
-
例程功能单元
-
示例:例程控制(0x31)
-
-
上传/下载功能单元
-
示例:请求下载(0x34)
-
4.诊断会话控制
诊断会话即10服务:10 包含 3 个子功能, 01 默认会话(Default), 02 编程会话( Programming), 03 扩展会话(Extende)
非默认会话受超时控制通过发送测试仪在线(0x3E)或其他请求保持会话激活
注意
1.ECU上电是处于默认会话模式,如果您进入了一个 非默认会话的状态,一个定时器会运转,如果一段时间内没有请求, 那么到时间后,诊断退回到默认会话 01。当然,我们有一个$3E 的服务,可以使诊断保持在非默认的状态。
2.默认会话模式不能切换到编程会话模式,需要通过扩展会话模式进行切换。
3.编程会话模式也无法直接切换到扩展会话模式,需要通过默认会话模式切换。
会话超时时间 S3
由于网关等因素,S3客户端 < S3服务器
请求/响应格式
数据字节 | 参数名称 | 约束 | 十六进制值 | 助记符 |
---|---|---|---|---|
#1 | 诊断会话控制请求服务ID | M | 10 | DSC |
#2 | 子功能 = [诊断会话类型] | M | 00-FF | LEV_DS_ |
十六进制 | 描述 | 约束 | 助记符 |
---|---|---|---|
00 | ISO保留 | M | ISOSAERESRVD |
01 | 默认会话 | M | DS |
02 | 编程会话 | U | PRGS |
03 | 扩展诊断会话 | U | EXTDS |
... | ... | ... | ... |
数据字节 | 参数名称 | 约束 | 十六进制值 | 助记符 |
---|---|---|---|---|
#1 | 诊断会话控制响应服务ID | S | 50 | DSCPR |
#2 | 诊断会话类型 | M | 00-FF | LEV_DS_ |
#3 | 会话参数记录[] #1 = [数据#1 : 数据#m] | C | 00-FF : 00-FF | SPREC_DATA_1 : DATA_m |
#n | C |
支持的否定响应码(NRC)
描述 | 助记符 |
---|---|
子功能不支持:当子功能参数不被支持时发送此NRC。 | SFNS |
消息长度错误或格式无效:当消息长度错误时发送此NRC。 | IMLOIF |
条件不满足:当诊断会话控制请求的条件不满足时返回此NRC。 | CNC |
服务支持的会话类型
服务 | 默认会话 | 非默认会话 |
---|---|---|
诊断会话控制(0x10) | ✔️ | ✔️ |
ECU复位(0x11) | ✔️ | ✔️ |
安全访问(0x27) | 不适用 | ✔️ |
通信控制(0x28) | 不适用 | ✔️ |
传输电源(0x05) | ✔️ | ✔️ |
访问传输参数(0x63) | 不适用 | ✔️ |
安全数据传输(0x64) | 不适用 | ✔️ |
控制DTC设置(0x65) | 不适用 | ✔️ |
事件响应(0x66) | ✔️ | ✔️ |
链路控制(0x87) | 不适用 | ✔️ |
按标识符读取数据(0x22) | ✔️ | ✔️ |
按地址读取内存(0x23) | ✔️ | ✔️ |
按标识符读取缩放数据(0x24) | ✔️ | ✔️ |
动态定义数据标识符(0x2C) | ✔️ | ✔️ |
按标识符写入数据(0x2E) | ✔️ | ✔️ |
按地址写入内存(0x3D) | ✔️ | ✔️ |
清除诊断信息(0x14) | ✔️ | ✔️ |
读取DTC信息(0x19) | ✔️ | ✔️ |
例程控制(0x31) | ✔️ | ✔️ |
请求下载(0x34) | 不适用 | ✔️ |
请求上传(0x35) | 不适用 | ✔️ |
传输数据(0x36) | 不适用 | ✔️ |
请求传输退出(0x37) | 不适用 | ✔️ |
注:
-
部分服务需通过安全访问解锁,因此需要非默认会话。
-
内存区域访问需通过安全访问解锁,因此需要非默认会话。
更多后续,敬请关注!
下期预告:
UDS诊断概述(2)----- 27安全访问(Security Access)、22按标识符读取数据(Read Data By Identifier)、2E按标识符写入数据(Write Data By Identifier)