【车载开发系列】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)诊断通信管理功能单元

NoSID诊断服务名服务Service
010x10诊断会话控制Diagnostic Session Control
020x11ECU复位ECU Reset
030x27安全访问Security Access
040x28通讯控制Communication Control
050x3E待机握手Tester Present
060x83访问时间参数Access Timing Parameter
070x84安全数据传输Secured Data Transmission
080x85控制DTC的设置Control DTC Setting
090x86事件响应Response On Event
100x87链路控制Link Control

2)数据传输功能单元

NoSID诊断服务名服务Service
010x22通过ID读数据Read Data by Identifier
020x23通过地址读取内存Read Memory by Address
030x24通过ID读比例数据Read Scaling Data by Identifier
040x2A通过周期ID读取数据Read Data By Periodic Identifier
050x2C动态定义标识符Dynamically Define Data Identifier
060x2E通过ID写数据Write Data By Identifier
070x3D通过地址写内存Write Memory By Address

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

NoSID诊断服务名服务Service
010x14清除诊断信息Clear Diagnostic Information
020x19读取故障码信息Read DTC Information

3)输入输出控制单元

NoSID诊断服务名服务Service
010x2F通过ID控制输入输出Input Output Control by Identifier

4)例行程序功能单元

NoSID诊断服务名服务Service
010x31例行程序控制Routine Control

5)上传下载功能单元

NoSID诊断服务名服务Service
010x34请求下载Request Download
020x35请求上传Request Upload
030x36数据传输Data Transfer
040x37请求退出传输Request Quit Transfer
050x38请求文件传输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

HexParameter Name/Definition参数名称/定义
0x00Positive Response该响应码不在否定响应报文中使用, 并为 ECU 内部实现而保留
0x01-0x09Reserved by ISOISO保留
0x10General Reject一般拒绝, ECU拒绝执行请求的动作
0x11Service Not Supported服务不被支持
0x12Sub Function not Supported子功能不被支持, ECU不支持请求报文中具体服务的参数
0x13Incorrect message length or invalid format接收到的请求报文的长度与具体服务预定义的长度不能匹配或参数的 格式与具体服务预定义的格式不能匹配
0x14Response too longECU生成的响应超过了下层的网络层可用的最大字节数
0x15-0x20Reserved by ISOISO保留
0x21Busy repeat request请求太频繁,在这种情况下,诊断工具必须将“同 一请求报文”或“其它请求报文”重新发送
0x22Conditions not Correct条件不具备, ECU 端先决条件不满足
0x23Reserved by ISOISO保留
0x24Request sequence error诊断工具所发送的请求报文的顺序不符合ECU的规定
0x25NoResponse From Subnet ComponentECU已经接收到请求,但是由于提供必需的被请求信息的子网部件未在规定的时间响应
0x26Failure Prevents Execution of Requested Action由于发生故障且该故障禁止 ECU 执行请求的动作
0x27-0x30Reserved by ISOISO保留
0x31Request out of range到请求报文中包含的参数值超出了授权范围
0x32Reserved by ISOISO保留
0x33Security access denied安全访问被拒绝
0x34Reserved by ISOISO保留
0x35Key Invalid无效的密钥
0x36Exceed number of attempts尝试次数过多,所以请求动作不能被执行
0x37Required time delay not expired要求延时时间未到达, 所以请求动作不能被执行
0x38-0x4FReserved by Extended Data Link Security Document为 Ref [4]( 扩展数据链路安全 )所保留
0x50-0x6FReserved by ISOISO保留
0x70Upload/Download not accepted向ECU的内存上传/下载的操作不能被完成
0x71Transfer Data Suspended数据传输操作被停止
0x72General Programming Failure编程失败, 擦除或编程一个存储器单元时检测到错误
0x73Wrong Block Sequence Counter错误的块数据
0x74-0x77Reserved by ISOISO保留
0x78Request Correctly Received-Response Pending正在执行,请等待,它是唯一对通信有影响的否定响应码
0x7ESubFunction Not Supported In Active Session当前会话不支持的子功能
0x7FService Not Supported In Active Session当前会话不支持的功能
  • 9
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值