关于汽车诊断OBD的理解(ISO15031-5)
包含OBD(On-Board Diagnostic)指的是在线诊断系统,是汽车上的一种用于监控车辆状况以及控制排放的一种在线诊断系统。本篇文章主要围绕OBD的九种模式进行介绍,当然也会辅助介绍一些OBD相关的内容。
OBD用来做什么
对于一般的车主,可能有接触过OBD口,可以用它来查看一些车内的参数等等,但是OBD它到底用来做什么用呢?
还是以一贯的思路,进行分点说明:
a.用于监控车辆基本参数,例如监控里程、车速、油门踏板位置、冷却液温度等等的一些参数;
b.用于监控排放相关的参数,这是OBD很核心的一个功能,比如各种尾气的含量,氧含量等等,以此来保证满足各国的标准;
汽车诊断设备c.用于车辆故障的诊断,例如我们车故障灯亮了,送到维修店后,维修人员就会拿出诊断仪,请求发生的故障内容,以及故障时刻的冻结帧数据,以此来方便故障排查;
d.当然还有小部分会使用OBD进行一些控制功能,这部分在中国是没有的。
CAN OBD与UDS的区别
大家看过我前面的文章的话,也有对UDS进行介绍,那么UDS和OBD都是车上诊断的标准,他们有什么区别呢?
首先从适用对象来说,OBD出现的更早,那么它主要针对传统燃油车,并且OBD主要是用于排放相关的诊断,而UDS是统一诊断系统,那么它的适用性则更广一点,它囊括了非排放相关的车身上所有ECU的诊断。可以简单的理解OBD就是用于排放相关的ECU,如发送机控制单元,减速器控制器等;而UDS则包含了车身上几乎所有ECU的诊断,例如VCU BCM DCDC等等。
第二点:也是因为他们适用对象的不同,所以他们支持的服务是不一样的,这点看标准就知道了。
稍微总结一下就是OBD主要用于与排放相关的ECU的诊断,而UDS则是排放除外的其他ECU的统一诊断标准。OBD的使用对象主要是传统燃油车中排放相关的ECU,而UDS使用对象既可以是燃油车中的ECU也可以是混动纯电动中的ECU。一般传统燃油或混动车中与排放相关的ECU既要支持OBD也要支持UDS,而其他的ECU一般仅仅需要支持UDS。
OBD的硬件接口简介
从图中我们也知道,各个引脚之间的关系,那么这个端口也是通过国际标准进行定义的OBD-II端口,在使用时,我们需要买对应的端口来进行与汽车诊断端口进行通信。
一般汽车这个诊断端口在我们的方向盘下面,油门踏板上面(不同厂家可能不一致)。
OBD的9大服务介绍
从图中我们也知道,各个引脚之间的关系,那么这个端口也是通过国际标准进行定义的OBD-II端口,在使用时,我们需要买对应的端口来进行与汽车诊断端口进行通信。
为了能够快速的了解OBD的各个模式,以下针对每个模式从2方面进行介绍;
1).模式的作用(使用场景)
2),模式如何使用
a.模式1-请求动力系统当前数据
1).模式的作用
从这个定义我们就了解到,通过该模式我们可以去请求车辆上动力系统的一些数据,但是这些数据都是
需要预先定义好的,如何进行定义呢,那么ISO标准规定了一些参数标识符即PID(parameter Identifiers),每个PID代表一个变量参数,但是呢在CAN上传输怎么去识别这个参数呢,其实就是顶一个8bit的数据来代表这个参数,比如PID 0x01 表示DTC清除后的监控状态,比如PID 0x05 表示电机冷却液的温度,那么ISO15031-5它定义了很多这样的PID参数,这样定义是很有意义的,因为这可以保证所有厂家的OBD可以尽可能的统一,从而方便通用。
我们稍微总结一下,模式1的作用就是通过预先标准定义好的一些PID参数,去请求动力系统当前的一些数据(如速度、里程、温度等),以此来了解当前车辆的一些状态。
2).模式如何使用
ISO其实定义了很多PID参数,但是并不要求所有的主机厂把这些参数都实现,也就是说PID参数是可以选择支持的。那么我们怎么知道这个厂家支持哪一些参数呢?其实模式1中它有一些PID
0x00\0x20\0x40\0x60\0x80等就是用来查询到底支持哪些服务的。具体如何使用如下:
PID 0x00 用于查询(0x01~0x20)之间支持的PID参数
PID 0x20 用于查询(0x21~0x40)之间支持的PID参数
PID 0x40 用于查询(0x41~0x60)之间支持的PID参数
以此类推后面的0x60 0x80
使用第一步:查询支持的PID参数(req表示请求(request),res表示答复(response))
req:01 00
res:41 00 xx xx xx xx
左起第一个xx表示0x01~0x08之间的PID支持情况将xx转为2进制如xx=0x65  ->xx=0110 0101 从左往右那么表示支持PID 0x02 0x03 0x06 0x08
左起第二个xx表示0x09~0x10之间的PID支持情况按照同样的转化方式
左起第三个xx表示0x11~0x18之间的PID 支持情况按照同样的转化方式
左起第四个xx表示0x19~0x20之间的PID支持情况按照同样的转化方式
是不是0x00就是查询0x01~0x20之间支持的PID情况?
同理对0x20 0x40等进行查询
使用第二步:就可以读取相关支持的PID参数的值了,假如支持PID
0x04  0x05  0x0d
req:01 04 05 0c
res:41 04 xx xx 05 xx 0d xx
其中xx表示支持的PID的值了,比如0d表示当前的车速,0d后面的xx 的值是64,及对应的是100KM/h,即请求到的车速为当前100km/h
多说几句就是我们可以每次只请求一个PID,也可以一次请求多个,最多6个,而答复的话可能不会按照顺序来,如果在CAN上,答复的数据超过8个byte的话,那么它就会分出几个帧来进行答复。
b.模式2-请求冻结帧数据
1).模式的作用
首先解释一下冻结帧,所谓的冻结帧你可以理解为故障发生时刻的一些环境数据,冻结帧的存在就是为了尽可能了解故障发生时的一些参数,以此来方便分析故障。
因此我们可以这样说模式2的作用就是为了快速方便的了解,故障发生时刻的一个状态,以此来分析、排查以及定位故障,从而能够有效的提高售后维护的效率。