车载开发系列UDS诊断协议总括篇
【车载开发系列】UDS诊断协议总括篇
一.UDS诊断协议简介
UDS英文全称为Unified Diagnostic Services,既通用诊断协议。相对于传统的OBD诊断不仅具有车辆ECU诊断功能,同时兼具数据传输、数据读写、通信控制等功能。也就是说已经不是传统意义上的诊断服务,可以称之为增强型诊断协议。
为什么要设计UDS诊断协议
因为在汽车诊断协议诞生之前,修车只能靠机师的经验,因为汽车零部件不会告诉你它哪里出了问题。但有了诊断协议之后,一旦零部件出了问题或者出过问题,它们会把故障信息保存在内存里面,维修机师就可以通过通信总线读取这些故障信息,比如一个ECU经历欠压故障之后,它会将欠压故障代表的DTC(诊断故障码)存储起来,可选择性保存的还有发生故障时的快照信息(比如此时的车速、读到的电压值等)。快照信息有助于测试工程师和售后技师查找发生故障的原因。
二. UDS诊断协议详细
UDS诊断包括了六大类诊断服务类型,一共有26种诊断服务。
SID就是Service Identifier诊断服务ID。UDS本质上是一种定向的通信,是一种交互协议(Request/Response),即诊断方(Tester)给ECU发送指定的请求数据(Request),这条数据中需要包含SID,且SID处于该应用层数据的第一个字节。如果是肯定的响应(Positive Response),首字节回复[SID 0x40];如果是否定的响应(Negative Response),首字节回复0x7F,第二字节回复刚才询问的SID。
1)诊断通信管理功能单元
No | SID | 诊断服务名 | 服务Service |
---|---|---|---|
01 | 0x10 | 诊断会话控制 | Diagnostic Session Control |
02 | 0x11 | ECU复位 | ECU Reset |
03 | 0x27 | 安全访问 | Security Access |
04 | 0x28 | 通讯控制 | Communication Control |
05 | 0x3E | 待机握手 | Tester Present |
06 | 0x83 | 访问时间参数 | Access Timing Parameter |
07 | 0x84 | 安全数据传输 | Secured Data Transmission |
08 | 0x85 | 控制DTC的设置 | Control DTC Setting |
09 | 0x86 | 事件响应 | Response On Event |
10 | 0x87 | 链路控制 | Link Control |
2)数据传输功能单元
No | SID | 诊断服务名 | 服务Service |
---|---|---|---|
01 | 0x22 | 通过ID读数据 | Read Data by Identifier |
02 | 0x23 | 通过地址读取内存 | Read Memory by Address |
03 | 0x24 | 通过ID读比例数据 | Read Scaling Data by Identifier |
04 | 0x2A | 通过周期ID读取数据 | Read Data By Periodic Identifier |
05 | 0x2C | 动态定义标识符 | Dynamically Define Data Identifier |
06 | 0x2E | 通过ID写数据 | Write Data By Identifier |
07 | 0x3D | 通过地址写内存 | Write Memory By Address |
3)存储数据传输功能单元
No | SID | 诊断服务名 | 服务Service |
---|---|---|---|
01 | 0x14 | 清除诊断信息 | Clear Diagnostic Information |
02 | 0x19 | 读取故障码信息 | Read DTC Information |
3)输入输出控制单元
No | SID | 诊断服务名 | 服务Service |
---|---|---|---|
01 | 0x2F | 通过ID控制输入输出 | Input Output Control by Identifier |
4)例行程序功能单元
No | SID | 诊断服务名 | 服务Service |
---|---|---|---|
01 | 0x31 | 例行程序控制 | Routine Control |
5)上传下载功能单元
No | SID | 诊断服务名 | 服务Service |
---|---|---|---|
01 | 0x34 | 请求下载 | Request Download |
02 | 0x35 | 请求上传 | Request Upload |
03 | 0x36 | 数据传输 | Data Transfer |
04 | 0x37 | 请求退出传输 | Request Quit Transfer |
05 | 0x38 | 请求文件传输 | Request File Transfer |
三.UDS诊断协议通信
消息发送时有两种寻址方式:物理寻址和功能寻址。
所谓的寻址信息包含了源地址(Source Address)和目标地址(Target Address),就是这条信息是由谁发给谁的,类似于收件人和发件人。当然,ECU回信给Tester时,ECU就变成源地址了。因此源地址和目标地址在UDS中并不是一成不变的。
除了CAN总线以外,UDS也可在不同的汽车总线(例如 LIN, Flexray, Internet 和K-line)上实现。
1)物理寻址
点对点、一对一。
物理寻址是向特定的CAN ID发送请求,CAN ID对应的服务端发送响应消息。
2)功能寻址
广播、一对多。通常是0x7DF。
功能寻址是特定的CAN ID向网络内的所有节点发送消息,各节点根据是否支持该能选择是否进行响应
四.UDS诊断服务否定响应码
否定响应码列表 Negative Response Codes List
Hex | Parameter Name/Definition | 参数名称/定义 |
---|---|---|
0x00 | Positive Response | 该响应码不在否定响应报文中使用, 并为 ECU 内部实现而保留 |
0x01-0x09 | Reserved by ISO | ISO保留 |
0x10 | General Reject | 一般拒绝, ECU拒绝执行请求的动作 |
0x11 | Service Not Supported | 服务不被支持 |
0x12 | Sub Function not Supported | 子功能不被支持, ECU不支持请求报文中具体服务的参数 |
0x13 | Incorrect message length or invalid format | 接收到的请求报文的长度与具体服务预定义的长度不能匹配或参数的 格式与具体服务预定义的格式不能匹配 |
0x14 | Response too long | ECU生成的响应超过了下层的网络层可用的最大字节数 |
0x15-0x20 | Reserved by ISO | ISO保留 |
0x21 | Busy repeat request | 请求太频繁,在这种情况下,诊断工具必须将“同 一请求报文”或“其它请求报文”重新发送 |
0x22 | Conditions not Correct | 条件不具备, ECU 端先决条件不满足 |
0x23 | Reserved by ISO | ISO保留 |
0x24 | Request sequence error | 诊断工具所发送的请求报文的顺序不符合ECU的规定 |
0x25 | NoResponse From Subnet Component | ECU已经接收到请求,但是由于提供必需的被请求信息的子网部件未在规定的时间响应 |
0x26 | Failure Prevents Execution of Requested Action | 由于发生故障且该故障禁止 ECU 执行请求的动作 |
0x27-0x30 | Reserved by ISO | ISO保留 |
0x31 | Request out of range | 到请求报文中包含的参数值超出了授权范围 |
0x32 | Reserved by ISO | ISO保留 |
0x33 | Security access denied | 安全访问被拒绝 |
0x34 | Reserved by ISO | ISO保留 |
0x35 | Key Invalid | 无效的密钥 |
0x36 | Exceed number of attempts | 尝试次数过多,所以请求动作不能被执行 |
0x37 | Required time delay not expired | 要求延时时间未到达, 所以请求动作不能被执行 |
0x38-0x4F | Reserved by Extended Data Link Security Document | 为 Ref [4]( 扩展数据链路安全 )所保留 |
0x50-0x6F | Reserved by ISO | ISO保留 |
0x70 | Upload/Download not accepted | 向ECU的内存上传/下载的操作不能被完成 |
0x71 | Transfer Data Suspended | 数据传输操作被停止 |
0x72 | General Programming Failure | 编程失败, 擦除或编程一个存储器单元时检测到错误 |
0x73 | Wrong Block Sequence Counter | 错误的块数据 |
0x74-0x77 | Reserved by ISO | ISO保留 |
0x78 | Request Correctly Received-Response Pending | 正在执行,请等待,它是唯一对通信有影响的否定响应码 |
0x7E | SubFunction Not Supported In Active Session | 当前会话不支持的子功能 |
0x7F | Service Not Supported In Active Session | 当前会话不支持的功能 |
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcjgik
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01