• 【车载开发系列】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当前会话不支持的功能
  • 相关阅读:
    【愚公系列】2022年11月 uniapp专题-环境配置
    oracle数据同步报错请确认数据库名是否正确
    超详细教程—快速创建PD
    计算摄影——图像美学评分
    【无标题】
    Activiti工作流引擎详解与应用
    Flutter高仿微信-第45篇-群聊-文本
    Pve崩溃
    哈希表(二)
    使用SpringBoot整合数据库连接池Druid的错误总结
  • 原文地址:https://blog.csdn.net/Last_Impression/article/details/127989226