UDS(统一诊断服务)分为6大类的服务信息表格:

一、ISO-14229标准基本知识
(1) 服务ID(SID,Service Identifier)
ISO-14229标准定义了25种不同的诊断服务,为区分具体的诊断服务,使用1个字节的服务ID作为服务的唯一识别码。当我们想表达一个具体的诊断服务时,有时候直接说出它的服务ID比起全称会更加简洁有效。表1所示是ISO-14229标准定义的诊断服务汇总列表。当然,并不是所有的诊断服务需要支持,标注有*符号为常用诊断服务。
UDS诊断服务汇总
诊断和通信管理服务 (Diagnostic and Communication Management Services)
| 服务 ID | 服务名称 | 服务描述 |
|---|---|---|
| 0x10 | 诊断会话控制服务 | Tester 请求控制与某个 ECU 的诊断会话 |
| 0x11 | ECU 复位服务 | Tester 强制对 ECU 执行复位 |
| 0x27 | 安全访问服务 | Tester 请求控制某个 ECU 受安全保护的功能 |
| 0x28 | 设备控制服务 | Tester 向 ECU 提供设备控制 |
| 0x3E | 测试仪呈现服务 | Tester 请求控制某个 ECU 发送定时参数 |
| 0x83 | 访问时间参数服务 | Tester 请求控制某个 ECU 发送时间参数 |
| 0x84 | 访问下载数据传输服务 | Tester 请求控制某个 ECU 发送下载数据传输 |
| 0x85 | 访问上传数据传输服务 | Tester 请求控制某个 ECU 发送上传数据传输 |
| 0x86 | 访问传输数据服务 | Tester 请求控制某个 ECU 发送传输数据 |
| 0x87 | 访问传输数据服务 | Tester 请求控制通信波特率参数 |
数据传输服务 (Data Transfer Services)
| 服务 ID | 服务名称 | 服务描述 |
|---|---|---|
| 0x22 | 读取数据服务 | Tester 请求读取数据标识识别码请求的当前值 |
| 0x23 | 读取内存服务 | Tester 请求读取在存储器中的数据的当前值 |
| 0x24 | 读取标识信息服务 | Tester 请求读取数据标识请求的定标信息 |
| 0x2A | 周期数据传输服务 | Tester 请求控制某个 ECU 发送周期数据 |
| 0x2B | 动态数据传输服务 | Tester 请求发送以 0x22 请求的标识符 |
| 0x2C | 动态数据传输服务 | Tester 请求发送以 0x22 请求的数据 |
存储数据传输服务 (Stored Data Transfer Services)
| 服务 ID | 服务名称 | 服务描述 |
|---|---|---|
| 0x3D | 写内存服务 | Tester 请求写入存储器中的某个值 |
| 0x3E | 写内存服务 | Tester 请求写入存储器中的某个值 |
例程控制服务 (Routine Control Services)
| 服务 ID | 服务名称 | 服务描述 |
|---|---|---|
| 0x31 | 例程控制服务 | Tester 请求启动、停止例程或请求例程的执行结果 |
上传下载服务 (Upload and Download Services)
| 服务 ID | 服务名称 | 服务描述 |
|---|---|---|
| 0x34 | 请求上传服务 | Tester 请求传输数据至 ECU |
| 0x35 | 请求下载服务 | Tester 请求传输数据至 ECU |
| 0x36 | 请求上传数据传输服务 | Tester 请求传输上传数据 |
| 0x37 | 请求下载数据传输服务 | Tester 请求传输下载数据 |
(2) 子功能(Sub-function)
有些诊断服务支持子功能,以细分为更具体的服务类型。比如,0x11服务用于ECU复位,子功能01和03可分别解释为硬件复位和软件复位。前面提到的表1中标注了$符号的服务表示支持子功能。值得注意的是,当子功能所占的1字节最高位(正响应抑制位)置1时,其正响应不需要回复。
(3) 参数(Parameter)
用于描述诊断服务的额外信息(如Data Identifier),多见于子功能不支持的服务,但子功能支持的服务不一定都有参数信息。
(4) 寻址模式(Addressing Type)
Tester发送Request的目标ECU地址根据以下方式指定:
①物理寻址(Physical Address):即一对一通信,用于Tester已知需要诊断的ECU;
②功能寻址(Functional Address):即一对多通信,用于Tester向所有ECU请求诊断服务。
(5) 负响应码(Negative Response Code)
当请求服务执行失败时,ECU向Tester反馈的失败原因代号,简称NRC。表2列出了常见的负响应码。
表2 常见负响应码
| Hex Value | 负响应代码 (Negative Response Code) |
|---|---|
| 10 | General Reject 一般拒绝 |
| 11 | Service Not Supported 服务不受支持 |
| 12 | Sub-function Not Supported 子功能不受支持 |
| 13 | Incorrect Message Length 消息长度不正确 |
| 14 | Response Too Long 响应过长 |
| 21 | Busy Repeat Request 繁忙重复请求 |
| 22 | Conditions Not Correct 条件不正确 |
| 24 | Request Sequence Error 请求顺序错误 |
| 26 | Failure Prevents Execution of Requested Action 故障防止执行所请求的操作 |
| 31 | Request Out of Range 请求超出范围 |
| 33 | Security Access Denied 安全访问被拒绝 |
| 35 | Invalid Key 密钥无效 |
| 36 | Exceed Number of Attempts 尝试次数超限 |
| 37 | Required Time Delay Not Expired 所需时间延迟未过 |
| 72 | General Programming Failure 一般编程故障 |
| 78 | Request Correctly Received-Response Pending 请求正确接收 - 响应待定 |
| 7E | Sub-function Not Supported in Active Session 活动会话中不支持子功能 |
| 7F | Service Not Supported in Active Session 活动会话中不支持服务 |
| 92 | Voltage Too High 电压过高 |
| 93 | Voltage Too Low 电压过低 |
二、诊断数据分析
(1) 报文基本格式
诊断报文格式的主要区分于服务是否带子功能,如表3所示。明显的规律是正响应报文的SID字段在其请求报文的SID基础上增加了0x40,而负响应帧都含有0x7F和NRC负响应码。
| 是否带子功能 | 报文类型 | 格式 |
|---|---|---|
| 是 | 请求帧 | <SID> + <Sub-Function> + <Parameter> |
| 正响应帧 | <SID+0x40> + <Sub-Function> + <Parameter> | |
| 负响应帧 | <0x7F> + <SID> + <NRC> | |
| 否 | 请求帧 | <SID> + <Parameter> |
| 正响应帧 | <SID+0x40> + <Parameter> | |
| 负响应帧 | <0x7F> + <SID> + <NRC> |
表3 报文基本格式
(2)多帧报文传输
当报文超过8个字节时,则需要将报文拆分成多帧,依次使用首帧、流控帧和连续帧进行传输,该部分知识可参考ISO-15765标准定义的传输层协议内容。
(3) 响应机制总结
ECU主要根据诊断服务请求报文<SID> + <Sub-Function> + <Parameter>各字段进行响应动作:
①物理寻址模式时,ECU处理请求报文的一般过程如图4所示(含正负响应过程)。只有当所有处理流程顺利执行时,ECU才会回复正响应;否则,ECU回复含有负响应码的错误。
②功能寻址模式时,多数情况下,ECU只回复正响应,负响应不予回复。
更具体的响应机制请见于本文最后的查阅附表总结,限于篇幅,这里不再逐个解释。
分为6大类的服务信息表格:&spm=1001.2101.3001.5002&articleId=142378427&d=1&t=3&u=e130e2bf28f24ce087406541ef71892e)
3549

被折叠的 条评论
为什么被折叠?



