OBD
是英文On-Board Diagnostics的缩写,中文翻译为“车载自动诊断系统”。 当与控制系统有关的系统和或相关部件发生故障时,可以向驾驶者发生警告。

OBD的由来: 
由于世界各主要汽车厂的OBD系统随其发动机管理系统不同而各不相同,这给售后服务维修造成较大的不便。更重要的是OBD对自身的工作状态是否达到原厂技术要求无法自测,使得维修后的汽车常常不符合原厂技术要求。这种现象在我国较为普遍,严重影响了汽车的可靠性和寿命。这种车载诊断系统称为第一-代车载诊断(OBD I)系统。自1996年开始,各主要汽车生产厂家都开始装备统- -的第二代车载诊断( OBD II)系统,以弥补OBD I的不足。
从1996年开始,凡在美国销售的全部新车,其诊断仪器、故障编码和检修步骤必须相似,即符合OBD Ⅱ程序规定。随着经济全球化和汽车国际化的程度越来越高,作为驱动性和排放诊断基础,OBD
Ⅱ系统将得到越来越广泛的实施和应用。OBD Ⅱ程序使得汽车故障诊断简单而统一,维修人员不需专门学习每一个厂家的新系统。

OBD的工作原理:
OBD系统将从发动机的运行状况随时监控汽车是否尾气超标,一旦超标,会马上发出警示。当系统出现故障时,故障(MIL)灯或检查发动机(Check Engine)警告灯亮,同时动力总成控制模块(PCM)将故障信息存入存储器,通过一定的程序可以将故障码从PCM中读出。根据故障码的提示,维修人员能迅速准确地确定故障的性质和部位。
OBD实时监测发动机、催化转化器、颗粒捕集器、氧传感器、排放控制系统、燃油系统、EGR等系统和部件。然后通过不同与排放有关的部件信息,联接到ECU【电控单,它能检测、分析与排放相关故障的功能】,当出现排放故障时,ECU记录故障信息和相关代码,并通过故障灯发出警告,告知驾驶员。ECU通过标准数据接口,保证对故障信息的访问和处理。

 

OBD接口:
汽车的OBD接口位置一般都在方向盘下方的内饰板里,靠近驾驶员膝盖附近位置。OBD接口一般有16个针脚,接口为梯形状,各个针脚代表了不同的作用,其中1、3、8、9、11、12、13为厂家自定义; 2、4、5、6、7、10、14、15、16为使用接口。
2号接口叫做Bus positive line,4号接口叫做底盘地线,5号接口叫做信号地线,6号接口叫做CAN高线,即CAN-H line,7号接口叫做K-Line;10号接口叫做Bus negative line,14号接口叫做CAN低线,即CAN-L
line,15号接口是L line,16号接口是常电源。

OBD的功能:

1.行车电脑数据显示

OBD接口作为车载监控系统的通讯接口,除了读取故障码以供修车外,首要的功能就是可以提供车辆的各种工况数据,除了车辆仪表显示的数据外,实际在行车电脑中所记录的数据要多的多,包括很多无行车电脑显示屏配置的车辆,其实各项油耗记录、电池电压、空燃比、节气门开度、爆震数量等数据在系统中都是有记录的,但厂家会因为价格配置等因素,在较低配置车型上去掉行车电脑显示这项配置,导致用户无法参考这些有用的数据,所以市场上出现了一些专门的行车电脑显示产品。

这类产品有两种形式,一种就是通过一条专用的数据线连接到车辆的OBD接口。将数据读取出来再显示到配套的显示屏上,基本等于自己加装了一个行车电脑显示屏。平时连接线可以一直插在OBD接口上不用摘下,而只需固定显示屏即可,车主可以自行选择需要显示的数据。

另一种产品形式就是无线OBD接口适配器+智能手机端软件。这种与手机端配合的OBD端口读取器类似于一个加入了无线通讯模块的单片机,通过蓝牙或Wifi将OBD接口读取的数据传输到智能手机端,再通过手机端的软件呈献给使用者。

2.更改代码实现更多功能

现代汽车的电控系统可以通过OBD接口接入车辆控制系统的CANBUS总线,对车辆的各个控制模块的功能进行调节,这里最出名的应用就是由Ross
Tech开发的数据线及VCDS系统诊断软件,许多大众系的车友都爱用这套设备调节大众车系的系统功能,由于大众车系的CAN-BUS功能强大,而由于配置及售价的因素,使得大众在不同车型上“关闭“了很多与舒适配置相关的功能,而通过OBD接口的数据线接入车辆的CAN总线并调节各个模块的代码就可以实现许多不同的“隐藏”功能,这样免费的“增配”对于许多大众车主来说都非常具有吸引力。

3.读取刷写ECU TCU程序

随着车载电脑系统的硬件升级,现代车辆的ECU(Electronic Control
Unit)发动机电子控制单元内的程序存储器都由之前的只读式变为了可刷写式,厂家这样设置是为了随时能对ECU的控制程序进行更新,就像手机的固件升级一样,针对不同的行驶地区或工况通过对ECU系统程序的升级使得发动机能适应各种

不同工作环境。

针对制动变速箱有些厂家还加入了可刷写的TCU(Transmission
Control Unit)传动系统控制单元。大众的7速DSG变速箱在出问题的初期就曾经试图通过在4S店用电脑刷写TCU的方式来改变DSG变速箱的一些相应参数,来避免出现问题。

改装厂商很敏捷的发现了可刷写程序的ECU和TCU的便利性,所以现代汽车改装多了ECU程序刷写这样的改装项目。原厂的ECU程序出于稳定性和经济性的考虑,一般在动力输出上都有所保留,而改装厂商通过改写原车ECU数据即可实现对动力的提升,而TCU的程序改写可以让变速箱反应更灵敏或者让换挡时机变得更激进来提升车辆的性能。这一切在有了OBD接口之后变得轻而易举,只需电脑和数据线连接到OBD接口就可以完成刷写的工作。

OBD的常见协议:(重点)


KWP 2000
和IS0-14230 
在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,最早欧洲出现了一种标准诊断协议KWP2000,那时候KWP2000是基于K线的诊断协议,有一条线K,或两条线(K线和L线),那具体KWP2000协议是什么?这时候就要讲讲ISO-14230协议。 采集设备要从K先采集数据,需要电平拉高特定时间, 然后在拉低特定时间才能通讯。
当时的KWP2000只有三个子层有定义说明,即:应用层、数据链路层、物理层。并且这三个层分别由ISO-14230-3、ISO-14230-2、ISO-14230-1定义标准,所以一直都这么说,ISO-14230就是基于K线的KWP2000。

                        1、应用层               ISO-14230-3

KWP2000          2、数据链路层       
ISO-14230-2

                        3、物理层                ISO-14230-1

ISO-14229和UDS 

先知道一件事,ISO-14229协议就是UDS(Unified diagnostic
services),这个标准定义了诊断的应用层服务,不基于任何底层标准。它是诊断服务的规范化标准,比如读取故障码应该向ecu发什么指令,读数据流又是发什么指令等…

比如说给 ECU发送   22  F1  86  

                ECU回复  62 F1 86 01

简单点说就是: ISO-14229就是UDS。

ISO-15765 和UDSonCAN 

由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。这时候CAN总线出现并代替了K线,也就是我们说的ISO-15765。ISO-15765是基于CAN,它的ISO-15765-2、ISO-15765-3定义了诊断数据网络层和应用层的定义标准。

又因为ISO-15765-3使用了ISO-14229(UDS)的诊断服务,所以ISO-15765也叫UDSonCAN。

简洁一点的理解就是:

基于K线的KWP2000协议就是ISO-14230

基于CAN的KWP2000协议就是ISO-15765

目前国内的车子使用K线的新车是没有了, 市面上存量的K线的车也不多了,十年前生产的柴油车,估计才有采用K线的ECU。

SAE J1939  
SAE J1939是美国汽车工程协会(SAE)基于CAN总线而设计的一个标准协议,它的数据链路层规定了CAN总线使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps。
J1939协议,采集数据的时候比较方便,ECU一直会主动外发,从OBD口采集数据只需要监听ECU的广播报文即可。收到的报文可以过滤掉不需要的0xAABBCCDD地址,只挑选自己需要的地址数据,然后根据厂家的通讯协议,解析8个Byte里具体的数据存储到数据库即可。
而14230, 14229, 15765都是需要主动向ECU请求数据,ECU才会返回,需要知道请求每个数据的具体指令,ECU就相当于Web服务器,采集设备就相当于浏览器。具体的指令可以从厂家获取, 厂家获取不到,就需要购买一个官方的诊断仪,用CAN盒抓包进行分析了。
当然了, 汽车的数据也不是你想读取就能读取的,就好比京东淘宝你要是没有账号密码,你是无法购物的,ECU也要认证采集设备是不是合法的,有安全算法,安全算法的破解就需要购买市面上能读取数据的诊断仪去破解分析了。
J1939虽然主动外发数据, 但是外发的数据都是一些常规数据, 有很多数据是不外发的,比如油门开度之类,要让ECU主动外发,就涉及到要配置ECU的参数,需要专用软件配置了之后刷写HEX文件,风险很大,弄错了 ,发动机启动不了,或者仪表报错。

原文链接:    https://blog.csdn.net/langeldep/java/article/details/83989197
什么是OBD:   https://wenku.baidu.com/view/66f02a01e87101f69e3195b9.html
OBD的功能:   http://www.360doc.com/content/15/1207/16/281812_518553656.shtml
关于协议:https://blog.csdn.net/langeldep/article/details/83989197?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
协议具体可以看内网上,中文版和英文版