


文章目录
>>>>>>>>>>返回专栏总目录《AUTOSAR从入门到精通专栏》<<<<<<<<<<
关注文章末尾公众号或微信中搜索“AUTOSAR解忧杂货铺”,后台发送“资料”领取汽车电子入门资料,发送“加群”加入汽车电子交流群
一、前言
在人类医学领域,医生运用传统的“望闻问切”诊断方法,结合现代仪器的精确检测,对患者的病情进行准确判断。
同理,在汽车领域,为快速而准确地识别车辆或特定控制器的故障及其原因,进而为维修工作提供坚实的数据支持,车载诊断系统的概念应运而生。
二、什么是车载诊断
2.1 汽车诊断的发展
汽车诊断作为汽车整体状况把控的重要事项,其实质是对汽车进行故障检测与定位的一系列操作过程,它对于稳固汽车的安全系数、保障汽车各项性能的正常发挥,有着非常重要的意义。
随着科技水平不断的进步,汽车诊断的方式也发生了翻天覆地的变化。起初,汽车故障主要仰仗人工检测行为,依靠检测者过往经验所形成的判断力来甄别汽车问题所在。可随着时间的推移与科技的进步,当下的汽车故障诊断已演变成为一个自动化、数字化的工具。而汽车诊断协议则是诊断工具与车辆之间的通信协议。目前,市场上常见的两种汽车诊断协议是OBD(On-Board Diagnostics)和UDS(Unified diagnostic services)。
2.2 常见的诊断协议介绍
OBD和UDS是两种常见的诊断协议,它们在目标和应用领域上存在一些区别。
其中OBD协议主要是针对排放问题而对传统燃油车制定的诊断协议,电动汽车无需满足,它主要是通过读取车辆的故障码来判断燃油车排放是否符合法规标准,用于汽车排放系统相关的ECU上。
UDS协议则更加全面和灵活,在各个ECU上是一种通用型的协议。它与OBD最大的区别在于它是面向整车所有ECU的。但就UDS而言,它只是一个应用层协议(ISO 14229-1),其实现无需关注应用层以下的实现。因此,它可以基于CAN总线、Lin总线或者Ethernet总线等不同的物理传输方式实现与ECU硬件的通信。此外,UDS提供的是一个诊断服务的基本框架,定义了一系列的诊断服务和通用化的诊断流程,主机厂和零部件供应商可以根据实际情况选择实现其中的一部分或是自定义出一些私有化的诊断服务来,所以基于UDS的诊断又称为增强型诊断。
三、诊断协议中的专业术语
3.1 服务标识(Service ID;SID)
在UDS协议中,服务标识用于标识要执行的服务。每个服务都有一个唯一的服务标识(即SID),在诊断会话中通过服务标识来区分要执行响应哪种服务请求。UDS中定义了26种服务,并将这些服务划分为6大类:诊断和通信管理类、数据传输类、存储数据传输类、输入输出控制类、例程功能类、上传下载类。
大类 | SID(Hex) | 诊断服务名 |
---|---|---|
诊断和通信管理类 | 10 | 诊断会话控制 |
11 | ECU复位 | |
27 | 安全访问 | |
28 | 通讯控制 | |
3E | 待机握手 | |
83 | 访问时间参数 | |
84 | 安全数据传输 | |
85 | 控制DTC的设置 | |
86 | 事件响应 | |
87 | 链路控制 | |
数据传输类 | 22 | 通过ID读数据 |
23 | 通过地址读内存 | |
24 | 通过ID读比例数据 | |
2A | 通过周期ID读取数据 | |
2C | 动态定义标识符 | |
2E | 通过ID写数据 | |
3D | 通过地址写内存 | |
存储数据传输类 | 14 | 清除诊断信息 |
19 | 读取故障码信息 | |
输入输出控制类 | 2F | 通过ID控制输入输出 |
例程功能类 | 31 | 例行程序控制 |
上传下载类 | 34 | 请求下载 |
35 | 请求上传 | |
36 | 数据传输 | |
37 | 请求退出传输 | |
38 | 请求文件传输 |
3.2 诊断的请求
诊断请求是指诊断工具或诊断仪向车辆发送的请求消息,用于请求执行某个服务。诊断请求消息由三个部分组成:SID、子功能和实际数据。其中,SID用于标识要执行的服务,至于子功能:指的是这个服务还能更进一步的划分或者具有启动/暂停之类的子功能。
尽管服务类型不尽相同,但UDS针对这些服务定义了统一的诊断请求包的格式,每个诊断请求由1个Byte的SID + 1个Byte的sub-function(实际上是1bit spr+7bit sub-function,具体解释看下文)+不定长的实际数据构成,其格式如下所示
- spr=1,抑制正响应,即ECU不给出正响应
- spr=0,需要ECU给出正响应,如果某个服务没有sub-function,即没有第二个字节,那默认是要发正响应的
3.3 诊断的响应
诊断工具向车辆发送服务请求后,如果服务执行成功,则返回的响应消息称为正响应,反之返回的响应消息称为负响应。
3.3.1 正响应报文格式
正响应报文首字节会回复【SID + 0x40】。在这里举个简单的例子,当诊断仪请求的服务ID为0x10时,若是正响应,则目标ECU会返回0x50;若请求的是0x22,则目标ECU会响应0x62。正响应的字节组成格式如下所图所示:
3.3.2 负响应报文格式
负响应消息由三部分组成:0x7F + SID + 负响应码(Negative Response Code ; NRC)。其中首字节0x7F是固定值,SID用于标识响应的服务,负响应码指示服务执行失败的原因。负响应报文的字节组成格式如下所示:
这里以诊断会话0x10服务为例,具体负响应流程如下图所示:
3.3.3 负响应码(Negative Response Code ; NRC)
在UDS协议栈中,负响应码用于指示服务执行失败的原因。NRC用一个字节表示,每个取值都对应一种不同类型的错误类型。
NRC码 | 含义 | NRC码 | 含义 | NRC码 | 含义 |
---|---|---|---|---|---|
0x01-0x0f | 暂时保留 | 0x10 | 未知错误,服务被拒绝 | 0x11 | 不支持该服务请求 |
0x12 | 不支持子功能 | 0x13 | 消息长度或格式错误 | 0x14 | 请求信息长度超出 |
0x15-0x20 | 暂时保留 | 0x21 | 服务端正忙 | 0x22 | 条件不满足 |
0x23 | 暂时保留 | 0x24 | 请求顺序错误 | 0x25 | 指令被接收,但未被执行 |
0x26 | 失败的操作导致当前操作无法执行 | 0x27-0x30 | 暂保留 | 0x31 | 参数错误 |
0x32 | 暂保留 | 0x33 | 安全校验未通过 | 0x34 | 暂保留 |
0x35 | 秘钥不匹配 | 0x36 | 达到解锁最大错误次数 | 0x37 | 超时时间未到 |
0x38-0x4f | 由扩展数据链路安全性保留 | 0x50-0x6f | 暂保留 | 0x70 | 不允许上传下载 |
0x71 | 数据传输中断 | 0x72 | 擦除或烧写内存错误 | 0x73 | 块序列技术错误 |
0x74-0x77 | 暂保留 | 0x78 | 收到请求,延迟响应 | 0x79-0x7d | 暂保留 |
0x7e | 当前会话下,子功能不支持 | 0x7f | 当前会话下,服务不支持 | 0x80 | 暂保留 |
0x81 | rpm太高 | 0x82 | rpm太低 | 0x83 | 当前引擎正在运行 |
0x84 | 当前引擎未运行 | 0x85 | 截止当前时间,引擎运行时间太短 | 0x86 | 温度过高 |
0x87 | 温度过低 | 0x88 | 车速过高 | 0x89 | 车速过低 |
0x8a | 油门/踏板过高 | 0x8b | 油门/踏板过低 | 0x8c | 变速器档位不在空挡 |
0x8d | 变速器档位不在排档 | 0x8e | 暂保留 | 0x8f | 制动开关没有关闭 |
0x90 | 换挡杆不在驻车挡 | 0x91 | 变矩器离合器锁定 | 0x92 | 电压过高 |
0x93 | 电压过低 | 0x94-0xef | 暂保留 | 0xf0-0xfe | 为汽车制造商保留 |
0xff | 暂时保留 |
四、总结
车载诊断技术是现代汽车维护和管理的关键工具,其核心在于通过标准化的诊断协议来实现对车辆系统的有效监测和故障诊断。本章详细介绍了常见的诊断协议,如OBD和UDS,以及这些协议中的专业术语,如服务标识(Service ID)、诊断请求和响应等。这些内容为深入理解和学习诊断服务及故障码提供了坚实的基础。