OBD诊断
什么是OBD?
OBD代表”诊断接口”(On-Board Diagnostics),它是一种用于汽车的标准化接口系统,旨在监测和报告车辆的运行状况。主要有两个版本,OBD-I和OBD-II。
- OBD-I: 早期的汽车诊断系统,它的实施并不标准化,各个汽车制造商可能有不同的实现方式。OBD-I 主要用于20世纪80年代和90年代的汽车。
- OBD-II: 在1996年后引入的,并成为几乎所有新型汽车的标准。OBD-II标准化了诊断接口和故障码的格式,使得无论是何种汽车制造商,诊断工具都能够兼容。这使得汽车技师和车主能够更容易地检测和修复车辆问题。
OBD-II接口通常位于车辆驾驶室下部,可以通过连接OBD-II扫描工具与车辆的电脑系统通信。通过这个接口,可以读取车辆的实时数据,诊断发动机和车辆系统的问题,并检索故障码,这有助于更快地定位和解决车辆故障。
接口针脚定义图
对应关系
具体情况不同厂家可能存在差异
针脚 | 对应关系 |
---|---|
1针脚 | 开电门12V(可打开功率试灯),关电门0V。 |
4/5针脚 | 长地线,找个正极接起来(4/5)可以点亮功率试灯。 |
6针脚 | CAN高 通讯线 |
7针脚 | 诊断K线,单独和变速箱,电脑板之间通讯,比电瓶电压低1V(11V左右) |
14针脚 | CAN低 通讯线 |
15针脚 | L线,汽车电脑板连接(电压一般是电瓶的一半,6V左右) |
16针脚 | 30长电源,在任何情况下,必须可以点亮功率试灯 |
3针脚 | CAN高 |
11针脚 | CAN低 |
OBD 如何工作?
基本的 OBD 系统由中央系统、传感器网络、连接点和指示器组成,创建具有标准化访问和可读性的完整监控系统。 OBD系统由以下部分组成:
- ECU: OBD 系统的核心部分是电子控制单元(ECU)。 ECU 收集来自车辆各个传感器的输入。然后,ECU 使用这些数据来控制车辆的部件(例如喷油器)或监控问题。
- 传感器:车辆各处都有传感器,覆盖从发动机和底盘到电子系统本身的每个区域。这些系统中的每一个都会向 ECU 发送代码,指定信号源和信号参数。然后 ECU“读取”并解释该信号。
- DTC:如果传感器向 ECU 发送的信息超出正常范围,ECU 会将信息保存为称为诊断故障代码 (DTC) 的代码。 DTC 代码本质上是字母和数字的列表,表明问题的根源和性质。 DTC 代码通常是标准化的,但也可能是制造商特定的。保存 DTC 后,ECU 会向指示灯发送信号,表明已发现问题。还可以通过将传感器连接到 OBD 系统的连接器来提取 DTC。
- MIL:当ECU收集到DTC代码时,它会向车辆仪表板发送信号以打开相应的指示灯。这些灯的正式名称为故障指示灯或 MIL,为车辆故障提供早期预警系统。一般来说,如果灯亮起并保持亮起状态,则问题较小。如果指示灯闪烁,则表明问题很紧急。
- DLC: ECU 收集的所有数据和 DTC 代码都可以通过诊断链路连接器或 DLC 访问。 DLC 端口是带有 OBD 系统的车辆的接入点,通常位于车辆驾驶员侧仪表板下方,但也可能位于商用车的其他位置。当前的车辆采用标准 OBDII 系统制造,因此任何带有2 型电缆的扫描工具都可以连接到 2 型连接器。
OBD-II数据包
- 标识符:标识符是标准的11位,用于区分请求消息和响应消息。 OBD-II请求消息为7DF,响应标识范围为7E8~7EF。
长度:数据包中剩余数据的字节数。 - 模式:SAE J1979 OBD2 标准中描述的 10 种模式。模式1显示当前数据和实时数据,模式为1,其他模式用于显示或清除存储的DTC。
模式 | 描述 |
---|---|
01 | 当前数据 |
02 | 用于当前冻结帧数据 |
03 | 存储诊断故障代码 |
04 | 清除任何存储的值或 DTC |
05 | 显示非 CAN O2 传感器的结果 |
06 | 显示系统监控的测试结果 |
07 | 待处理的 DTC |
08 | 用于机载系统控制操作 |
09 | 获取 VIN 码 |
10 | 永久性 DTC |
安全测试
OBD接口可能存在多种安全风险,我们可以使用安全测试工具对如下风险进行测试
- 物理访问:OBD接口通常用于诊断端口进行访问,该端口通常位于汽车易于访问的区域,如仪表板下方,这使攻击者很容易物理访问端口并进行恶意连接。
- 身份校验:许多OBD端口不需要身份验证,这使得攻击者不需要密码或凭证即可直接访问汽车上的计算机。
- 安全控制:OBD系统旨在促进诊断和维修工作,通常没有考虑安全性,因此它们可能存在缺少加密、访问控制和入侵检测等安全控制,从而容易受到攻击。
最常见的OBD工具是OBD诊断仪,车辆在维修机构开始维修汽车前,通常使用OBD诊断仪来读取车内的故障码,以帮助维修人员快速定位故障。
- 找到OBD-II接口: 通常位于车辆驾驶座下方,在仪表板附近或驾驶座的脚踏板下。连接OBD诊断仪时,确保车辆处于关键位置,以便OBD-II接口处于活动状态。
- 插入OBD诊断仪: 将OBD诊断仪的插头插入车辆的OBD-II接口,确保插头正确对准并完全插入。
- 启动车辆引擎: 有些OBD诊断仪要求车辆引擎运行,以便能够读取实时数据。在连接后,启动车辆引擎。
- 选择功能: 使用OBD诊断仪的控制面板或连接的移动设备选择所需的功能。这可能包括读取实时数据、检索故障码、执行特定测试等。
- 读取实时数据: 如果您希望监视车辆的实时性能数据,选择相应的功能并查看屏幕上的数据。这可以包括引擎转速、车速、冷却液温度等信息。
- 检索故障码: 如果车辆发生故障,您可以使用诊断仪读取存储在车辆电脑系统中的故障码。这些故障码提供有关车辆问题的信息,有助于定位和解决故障。
- 执行测试和操作: 一些高级的OBD诊断仪具有执行特定测试或操作的功能。根据需要,执行相应的操作,例如发动机测试或清除故障码。
- 断开连接: 在完成使用后,安全地断开OBD诊断仪与车辆的连接。这通常涉及从OBD-II接口中拔出插头。
使用OBD访问车内ECU和通信数据
- 将CAN工具连接到OBD接口,例如,可以使用CANoe,将CAN设备的CANH和CANL通过电线连接到OBD接口的CANH和CANL上。
- 使用该工具,可以通过CAN发送“请求帧”。
- 相关ECU通过CAN发送“响应帧”。
- 读取相关通信报文,并使用DBC文件进行解码。
OBD诊断
https://g1at.github.io/2024/03/14/OBD/