“没错,我又来了,这次是一篇OBD2(On Board Diagnostic )协议的简单、实用指南。”—— 虹科

obd接口对接javaapp_网络

开篇:在这篇介绍中,我们介绍了OBD2(On Board Diagnostic )的协议,其中包括OBD2连接器,OBD2 PID(parameter IDs)以与CAN总线的关系。因为这是一篇偏向应用的简介,因此您还将学习如何请求和解码OBD2数据,关键日志记录用例以及应用技巧。下面,来了解下这份简单易懂的OBD2介绍吧~

**

什么是OBD2?

**
简而言之,OBD2——On Board DiagnosticsⅡ是您爱车的自我诊断系统。

您可能早已接触过了OBD2:

试着回忆一下,您是否注意到故障指示灯突然在您仪表盘上弹出了?

这就说明您的爱车向您反馈它出现了点问题。如果您去找修理师求助,他会使用OBD2 扫描仪来进行诊断。

通常,他会将OBD2扫描仪通过OBD2 16针的连接器连接到您的车辆,这样修理师就可以读取到OBD2的代码——诊断故障代码来判断故障问题所在。

obd接口对接javaapp_网络_02


**

OBD2连接器

**
您可以通过OBD2连接器轻松地访问汽车中的数据。SAE J1962标准中指定了两种OBD2母头16针连接器类型(A和B)。

图中是A型OBD2引脚连接器(有时也称为DLC(Data Link Connector))的示例。

需要注意的是:

  • OBD2连接器在方向盘周围,但也有可能在垫子下面或者仪表盘后
  • 并非所有的公头都适合所有的OBD2母头,需检查接头类型和OBD的引脚
  • 引脚16连着汽车电池,一般熄火后也是连通的
  • 引脚6(CAN-H)和引脚14(CAN-L)是最重要的,因为CAN(ISO15765-4)是大多数现代汽车(包括电动车)的标准配置

obd接口对接javaapp_can_03

**

我们车上有OBD吗?

**

基本上都有!

几乎最近几年生产的汽车都支持OBD2,并且大多数都是基于CAN(ISO 15765)的。对于比较老的汽车,请注意,即使有16针OBD2连接器,它可能也不支持OBD2。确定车辆上是否有OBD2的一种方法是看您是在何时何处购买的产品。

下图是适配OBD2的国家和年限:

obd接口对接javaapp_网络协议_04

**

连接OBD2和CAN

**

CAN总线是一种像电话似的通信方法,而OBD2是一种高层协议,可以理解为一种语言。

值得说明的是,OBD2标准指定了的OBD2连接器,可以由5个协议运行。然而,自从2008年以来,CAN总线(ISO 15764)规定了美国出售的所有汽车强制性应用OBD2,这基本消除了其他4种协议。

ISO 15765是指一组限制应用的CAN标准,它是由ISO 11898定义的。ISO11898又被称为为汽车而定的CAN。

另外,OBD2 与其他高层协议如J1939,CANopen有相似。

obd接口对接javaapp_数据_05

**

OBD2的历史

**
OBD2来源于加利福尼亚,加州空气资源委员会(CARB)从1991年起要求所有新车都使用OBD,以达到控制排放的目的。

汽车工程师协会(SAE)和标准化的转轨以及OBD转接器制造商(SAE j1962)联合推荐OBD2标准的使用。

OBD2 标准按如下顺序一步步推出:

  • 1996:OBD2在美国被强制用于汽车/轻型卡车
  • 2001:应用于欧盟汽油车
  • 2003:应用于欧盟的柴油车
  • 2005:美国要求OBD2应用于中型车辆
  • 2008:美国汽车必须使用ISO 15765-4 (CAN)作为OBD2基础
  • 2010:美国要求OBD2应用于重型车辆

**

OBD2的未来

**

OBD2未来将以何种形式存在呢?

以下两种潜在的途径可能从根本上改变OBD2:

**

OBD3无线发送测试

**

在如今这个汽车智能网联的时代,OBD2测试似乎有些麻烦:需要手工进行排放控制,这样检查既费时又昂贵。

OBD3可以为所有汽车添加远程信息处理功能来解决上述问题。

基本上,OBD3给所有的汽车都增加了一个小型的无线电应答器(比如网关)。通过这种方式,车辆识别号码(VIN)和DTCs可以通过WiFi发送到中央服务器进行检查。

现如今,许多CAN和OBD2的设备可以通过Wifi/移动网络完成数据传输——比如CANedge2 Wifi版CAN记录仪。

这样既方便又能节省成本,但是从政治角度来说,出于监管方面的考虑,这也是一个挑战。

**

减少第三方OBD2服务

**

上面提到过,OBD2协议最初是为了控制排放才设计的。

然而,现在的OBD2被第三方开发者广泛地用于生成实时型数据——通过OBD2加密软件和CAN记录仪等。然而,德国汽车行业正在寻求方法改变这种状况。

消除第三方OBD2服务,建议开车时停止OBD2服务,而是在中央服务器上收集相关数据,这样可以让汽车制造商控制“大数据”。

尽管许多人把OBD2的第三方服务认定为是商业行为,但这一论证是基于安全考虑的(例如消除汽车黑客的风险)。这是否会成为必定趋势还有待观察——但是这可能会真正扰乱OBD2第三方服务的市场。

obd接口对接javaapp_obd接口对接javaapp_06

**

OBD2的PID

**

我们为什么关心OBD2数据呢?

工程师显然更关注OBD2 DTCs(用户可能也同样),然而管理机构需要OBD2来控制排放。

但是OBD2同样支持一系列可以被大多数汽车记录的广泛性标准参数。

这意味着您可以很容易地从您的车中获得可读的OBD2数据,包括速度、转速、油门位置等。

换句话说,OBD2让您很容易分析您爱车相关数据——OEM特定专有的原始数据。

**

解码OBD2和CAN总线的数据

**

原则上,从汽车上记录原始的CAN帧很简单。如果将CAN记录器连接到OBD2连接器,则将立即开始记录CAN总线的广播数据。但是,原始CAN消息需要通过转换规则数据库进行解码,并且此类数据库通常是专有的,从而不能从原始CAN数据中获得有用的信息。

汽车黑客可以尝试对转换规则进行逆向工程,尽管这在技术上相当先进。但是,CAN仍然是“完全获得”汽车数据的唯一方法,而OBD2仅只能提供对有限数据部分的访问。

如何记录OBD2数据

OBD2数据记录的工作方式如下:

  • 您将OBD2记录器连接到OBD2连接器
  • 通过工具,您可以通过CAN发送“请求帧”
  • 相关的ECU通过CAN发送“响应帧”

换句话说,能够发送自定义CAN帧的CAN记录仪也可以用作OBD2记录仪。

请注意,汽车在支持的OBD2 PID方面因型号/年份而异。有关详细信息,请参见我们的OBD2数据记录器指南。

obd接口对接javaapp_can_07

**

CANedge OBD2数据记录仪

**

CANedge可以让您轻松记录OBD2数据到8-32 GB的SD卡。您只需指定想要请求的OBD2 PID,然后通过OBD2适配器将其连接到汽车即可开始记录。最后通过免费软件/ API和我们的OBD2 DBC处理数据。

obd接口对接javaapp_网络_08

**

原始OBD2报文细节

**

如果想要开始记录OBD2数据,那先了解下原始OBD2消息结构基础会对您非常有帮助。

简而言之,OBD2消息包含 标识符和数据。此外,数据按服务、PID和数据字节(A,B,C,D)拆分开来并如下图所示:

obd接口对接javaapp_can_09

PID“车辆速度”的值为50 km / h的请求/响应CAN消息示例如下所示:

请求:7DF 02 01 0D 55 55 55 55 55

响应:7E8 03 41 0D 32 AA AA AA AA AA

**

OBD2信息段解释

**

标识符:对于OBD2消息,标识符是标准的11位,用于区分“请求消息”(ID 7DF)和“响应消息”(ID 7E8至7EF)。请注意,7E8通常是主机或ECU响应的ID。

有效位:仅用来反映这一帧数据的字节数(03至06)。对于“车速”的这个示例,请求帧的有效位是02(因为仅跟随01和0D),而响应帧有效位是03,因为跟随41、0D和32。

服务:对于请求,这将在01-0A之间。对于响应,将0替换为4(即41、42,…,4A)。如SAE J1979 OBD2标准中所述,有10种服务。模式1显示当前数据,例如用于查看实时车速,RPM等。其他模式用于如显示或清除存储的诊断故障代码并显示冻结帧数据。

PID:对于每种服务,都存在标准OBD2 PID的列表,例如,在01服务中,PID 0D为车速。有关完整列表,请查看Wikipedia OBD2 PID概述。每个PID都有一个说明,有些PID具有指定的最小或最大值以及转换公式。

比如只有参数A,速度的公式就是将16进制的A转换为十进制以获得km / h转换后的值(即32变为50 km / h以上)再例如,对于RPM(PID 0C),公式为(256 * A + B)/ 4。

A,B,C,D:这些是十六进制中的数据字节,在将其用于PID公式计算之前,需要将其转换为十进制形式。注意,不使用最后一个数据字节(在Dh之后)。

**

OBD2数据记录实例

**
来自汽车和轻型卡车的OBD2数据可应用于各种案例:

记录汽车数据

来自汽车的OBD2数据可用于减少油耗,改善驾驶行为,测试新型零件和保险事务

实时汽车诊断

OBD2接口可用于实时传输人类可读的OBD2数据,比如用于车辆诊断

预测性维护

可以通过云端的IoT OBD2记录器监控汽车和轻型卡车,以预测和避免故障

车辆黑匣子记录器

OBD2记录器可以用作车辆或设备的“黑匣子”,例如为纠纷或诊断提供数据

**

需要什么样的OBD2的记录仪呢?

**

下面我们概述了最常见的OBD2分析仪类别:

OBD2诊断仪:维修师傅在车辆故障诊断(例如可能MIL灯相关)时,用于静态读取或者清除DTC。存在各种情况。

OBD2记录仪:用于将汽车中的OBD2数据记录到SD卡,非常适合例如黑匣子或新型零件现场测试。支持WiFi的版本也可用于例如车载远程信息处理。

OBD2接口:例如通过USB提供实时OBD2数据,通常用于专业诊断和OEM车辆开发中。

更专业的OBD2接口还可以用于传输OBD2数据以及专用的CAN总线数据,这对于CAN嗅探和汽车黑客攻击很有用。