2017年,北京五环上,李彦宏坐百度无人车首秀,去参加百度AI开发者大会,相信很多人都看到了这个新闻,那段时间也上了微博热搜 。哈哈哈~~本文和无人驾驶汽车无关,但是和汽车还是有关系。
(如下图文无关)
一、前言
相信不少人在汽车上看到过如下的接口,这个叫OBD接口,几乎每个车都有,本文章主要围绕OBD
是什么展开的。
有车一族,车辆出现问题去4S店维修的时候,可能遇见过技术人员将行车电脑连接上OBD口,敲了一敲键盘,电脑显示了一行行代码,很快说问题找到了,这又是怎么一回事?他们是怎么通过这个接口定位车辆故障的?
另一方面,市面上有很多OBD产品,将产品插上汽车的OBD接口,通过手机APP就能获取汽车的很多参数及车辆状态。比如车辆的行驶速度,行驶路径,行驶距离,车辆门窗状态,车辆的油量,故障诊断,甚至驾驶员的驾驶习惯(不好的驾驶习惯如急刹急减等)等等,那这些OBD产品是如何获得这些汽车数据的呢?
二、OBD是什么?
1、定义
OBD,是On-Board Diagnostics的缩写,意为车载自动诊断系统。OBD系统从发动机的运行状况随时监控汽车是否尾气超标,一旦超标,会马上发出警示。当系统出现故障时,故障(MIL)灯或检查发动机(Check Engine)警告灯亮,同时动力总成控制模块(PCM)将故障信息存入存储器,通过一定的程序可以将故障码从PCM中读出。根据故障码的提示,维修人员能迅速准确地确定故障的性质和部位。
简单说,OBD系统就是基于计算机系统检测主要发动机部件的性能,减少排放。
2、组成
基本的OBD系统主要由ECU(电子控制单元)组成,该ECU会接收来自各种Sensors(例如氧气传感器)的输入来控制Actuator(例如燃料喷射器)以获得所需的性能;检查引擎指示灯,也称为MIL(故障指示灯),向车主提供故障预警,另外可以通过DLC(诊断链接连接器)进行访问,这个DLC也就是OBD接口。
3、OBD-I
OBD-I是在整个1980年代开发的第一代OBD系统,不同厂商的OBD系统之问各行其是、互不兼容,得使用专有的连接器,硬件接口和协议,使用起来比较麻烦。
4、OBD-II
在1990年代初期,汽车工程师协会(SAE)和国际标准化组织(ISO)发布了一系列标准,描述了ECU和诊断扫描工具之间的数字信息交换。所有符合OBD-II的车辆都必须使用标准诊断连接器(SAE J1962),并通过标准OBD-II通信协议之一进行通信。
OBD-II相比较于OBD-I,统一了标准,兼容性更高;并且具有严格的排放针对性,用于实时监测汽车尾气排放情况,应征了那一句话,“一代更比一代强”。
OBD-II最早是在1994年的几种车型中引入的,并从1996年开始成为所有汽车和轻型卡车的要求。
5、应用
OBD的应用广泛,不同的OBD产品可以用在:车辆诊断,性能调节,车队管理,远程通信/车辆跟踪,基于使用量而定保费的保险(UBI),驾驶员行为监控/反馈等。
三、OBD接口定义
1、硬件接口
如下是一个DLC标准连接器的示意图,共有16个PIN,包含了多个总线。每个总线都有对应的协议,如果想通过对应的总线与汽车总线通信,或者是从汽车总线上获取数据,必须遵从相应的总线规范。
PIN脚 | 定义 |
---|---|
1 | Single Wire CAN,单线CAN |
2,10 | J1850 Bus+/Bus-,J1850总线 |
3,11 | CAN_HI/CAN_LO (MS CAN),中速CAN总线 |
6,14 | CAN_HI/CAN_LO (HS CAN),高速CAN总线 |
7,15 | K-line/L-line (ISO & KWP),ISO总线 |
4,5 | 底盘地/信号地(Ground),电源负 |
16 | 电源(Power),电源正 |
2、总线速率
如下是各个总线的速率表,其中速率最高的是高速CAN总线,使用较广泛的是HS CAN,MS CAN和J1939,J1939其实也是HS CAN的一种,主要用在卡车中。
汽车总线网络系统
能出现这么多总线类型,也是应用而生的,中速CAN和高速CAN总线有逐渐取代低速总线(ISO,J1850等)的趋势。如下是一个汽车总线的网络系统,很重要的如发动机控制ECU,ABS控制ECU,牵引力控制ECU等都是使用的高速总线,这些CAN总线被称为“动力CAN”,给汽车提供动力的部分。中速CAN和低速CAN被称为“舒适CAN”,上面挂载的是安全气囊,仪表显示,电动门窗等。
3、总线发展
4、总线协议
列举了几种总线常见的协议,不一定是完整的,但包含了大部分。其中,ISO 14230也被称为基于K线的KWP2000协议,所以一般讲KWP2000和ISO 14230放在一起;单线CAN,MS CAN和HS CAN都是CAN总线,所以协议都是一样的,但是内部会有具体的细分,速率也不同。
总线 | 协议 |
---|---|
单线CAN | ISO 11898,ISO 15765 |
J1850总线 | SAE J1850 PWM,SAE J1850 VPW |
中速CAN | ISO 11898,ISO 15765 |
高速CAN | ISO 11898,ISO 15765 |
ISO总线 | ISO 9141,ISO 9141-2,ISO 14230(KWP2000) |
四、总结
笔者画了一个简易的图,结合上面的内容,有如下信息:
1、汽车各个部件与ECU通信是通过总线的方式,不同部件使用的总线和速率可能不相同。
2、每个汽车会预留一个OBD接口,接口上有很多总线类型。
3、利用OBD接口,我们可以获取汽车总线上的数据,但是要遵从总线的硬件和软件协议规范,通过数据解析,我们就可以知道汽车的状态,行使距离,故障诊断码等。
4、OBD产品的主要构成是收发器+控制器+外发器(蓝牙、WIFI等)
,收发器接收总线上的数据,发送给控制器,控制器解析之后,利用蓝牙,GSM/LTE等方式,将数据发送显示,这就是前言
说的OBD产品获取汽车数据的原理,行车电脑获取故障码也是同样的道理。OBD产品获取总线数据有两种,一种是被动获取,也就是监听,监听到有用的数据之后进行处理;另外一种是主动获取,OBD产品会向总线上发送命令来获取数据。
不同的车型,总线的权限不同,也就是说我们OBD产品获取总线的数据是有限的,汽车厂商没有释放的,我们是无法获取的;另外一方面,OBD产品随意向汽车总线上发数据,或者数据出错,都有可能导致汽车总线出错,影响汽车的正常工作,这是很危险的,OBD产品最安全的方式就是监听。