OBD是On Board Diagnose的简称,其主要用于与排放相关的ECU,目的是为了监控排放相关的参数,例如尾气中的氧含量,发动机转速等,使其满足国家的排放标准。与OBD相关标准主要为ISO15031和SAE J1979等,其OSI模型如下图所示。下面主要来看看SAE J1979中阐述的OBD的9个诊断服务。通过该服务请求车辆动力系统的一些数据,其中数据都是预先定义好的,数据的标识符为PID(parameter Identifiers),其取值范围为0x00~0xFF,与UDS中的DID概念类似,区别点在PID分可以分为两类:一类用于表示具体的参数,这与DID概念的完全相同,例如PID 0x05表示电机的冷却温度,其数据格式如图2所示,第二类用于表示该ECU支持的PID,包括0x00,0x20,0x40等,如图3所示,通常在连接诊断设备的时候,会通过第二类PID确认ECU所支持的PID。当故障故障确认后,需要把故障时刻的相关数据存储下来,用于后续的故障排查、分析,存储下来的数据就是所谓的冻结帧,其步骤通常是先读取造成冻结帧的DTC,数据格式如图4所示。然后在读取所支持的PID和PID的数值,其数据格式如图5所示。图5 02服务请求支持的PID和PID数值的数据格式03服务主要用于读取当前确认的的故障码,即DTC status的bit3被置位的故障码。以此来了解车辆发生了什么故障,其命令形式很简单,上位机只需发送03即可,详细的数据格式如图6所示。 04服务用于清除ECU中存储的与排放相关的DTC以及相关信息,如图7所示。其数据格式比03服务更简单,上位机仅需发送04,ECU响应为44,如图8所示。该服务只有在发动机没有运转的时候执行,否则执行负响应,NRC为22。 Service $05 - 请求氧传感器的检测结果 05服务用于检测氧传感器的状态,但是基于CAN的OBD不支持该服务,通常有06服务来实现该功能。Service $06 -请求指定监控系统的测试结果 通常在ECU开发OBD的时候,会定义一组MID,获取ECU支持哪些MID的方法,与01服务的00 02 04类似。通过06服务获取测试结果的数据格式如图9所示。每个MID至少包含一个TID,一个完整的MID+TID的数据格式如下:Unit And Scaling ID,用于表示TID的测试内容,例如电压、时间等。Service $07 -请求请求当前或上一驱动周期检测到的排放相关的故障码07服务跟03服务类似,都是用于请求故障码,但是与03服务请求确认故障码不相同的是,07服务请求的是pending故障码,其主要目的是方便维修人员修理完、清理故障之后,确认该故障是否真正解决,因此需要重新测试,通过03服务,至少需要3个循环,而07服务,仅需一个循环。其数据格式如图10所示。08服务主要用于控制系统和组件,例如打开或关闭某个组件,类似于UDS中的0x2F服务。其数据格式如图11所示,但是这个服务用的很少。09服务用来读取车辆的信息,例如VIN码、ECU名称、IPT等,类似于UDS的0x22服务,读取某个DID的信息。09服务的数据格式如下。
|