作者介绍:张大侠,一汽大众资深攻城狮。主要从事汽车诊断刷新方面的工作,在UDS诊断、车载以太网等方面都有独到的见解,对这块感兴趣的朋友,请关注:汽车ECU网络诊断技术

为了监控排放相关系统,比如发动机和变速箱,美国和欧洲制定了OBD(On-Board-Diagnose)标准。OBD定义了排放相关系统必须支持的诊断服务和数据传输格式,支撑OBD数据传输的底层数据链路可以是K线,也可以是CAN线,目前大多数车的OBD接口都是CAN总线。OBD是与UDS并列的一套应用层协议,对于与排放相关的ECU来说,通常这种ECU上既要实现OBD,也实现UDS。下图展示了UDS与OBD在整个诊断通信协议栈中的位置。


ISO为OBD分配了ISO-15031系列标准号,总共7本。而美国的SAE也为OBD分配了相应的标准号。它们在内容上是相同的。具体对应关系如下。


本文只重点关注ISO-15031-5,即OBD所用的诊断服务。在理解了这些诊断服务之后,其他的内容也就很容易理解了。

OBD总共定义了9个诊断服务,每个服务用一个byte来代表,即所谓的Service ID(SID),从0x01到0x09。

 1 

Request Current Powertrain Diagnostic Data

该服务用于读取动力系统当前的诊断数据,比如某个传感器的状态、发动机转速、DTC数量、故障指示灯是否亮起等,命令格式是SID + 若干PID(Parameter ID)。每个PID也是一个byte,所以理论上PID取值范围是0x00至0xFF,但是ISO-15031-5只明确定义了部分PID,其余的值都保留。问题来了,OBD定义了如此多的PID,那么某个ECU到底支持哪些PID,诊断仪是如何获知的呢?实际上,PID分为两类,一类用于表征具体的数据,而另一类则用于指出该ECU支持哪些PID。用于第二种目的的PID分别是0x00 , 0x20 , 0x40…. 读取其中一个ID后ECU会返回4个字节的结果,这4个字节中的每个bit表示其所对应的PID是否被支持。以下面这个例子来说明就很容易理解了:

OBD request for SID 01

OBD response for SID 01

通常来说,诊断仪要首先读取00、20、40这些ID,然后就知道ECU支持哪些其他的PID了,而其他的PID就是很直接地表示某种数据,在ISO-15031-5的附录中有全部数据格式的定义。

 2 

Request Powertrain Freeze Frame Data

一旦ECU确定了某个故障,就要把这个故障被确定时的相关状态信息“冻结”下来,即所谓的冻结帧,这些状态信息对车辆故障的确定非常重要,因为它们记录了车辆发生故障时的很多相关信息,这些状态信息数据必须在ISO-15031-5的PID列表中选择(与Service 01使用的PID列表相同)。02命令和01命令的使用方式非常相似,只不过02读取的是故障发生时的数据,而01读取的当前数据,数据格式和含义都是相同的。与01命令不同的是,02命令中多了一个frame字节,如下图所示:


OBD规定,用frame = 0x00来代表读取冻结帧。如果主机厂想自己再定义些什么其他的帧,或者多定义几个冻结帧,则可以给frame分配上其他的编号。

需要指出的是,OBD只规定了ECU需要为一个DTC存储冻结帧,当ECU中同时存在多个DTC时,就要根据优先级来判定存储谁的冻结帧了。

 3 

Request Emission-Related Diagnostic Trouble Codes

服务03用于读取存储在ECU中的与排放相关的“confirmed” DTC(可以参见本专栏中“汽车控制器(ECU)中DTC的状态位”一文),用法非常简单,它没有任何参数,诊断仪只需要发送03即可。下面两张图分别展示了03命令的请求和响应格式。

OBD request for SID 03

OBD response for SID 03

在03命令的响应中,第2个字节表示DTC数量,后面每两个字节表示一个DTC。

Clear/Reset Emission-Related Diagnostic Information

04服务用于清空ECU中存储的与排放相关的DTC。除了DTC以外,以下的信息也要被清除。

执行04命令时被清理的信息

它的使用非常简单,请求是一个字节的04,响应是一个字节的44。只有在发动机没有运转的时候才可以执行这个服务,否则ECU应该给出NRC 0x22(条件不满足)来拒绝该服务。

 5 

Request Oxygen Sensor Monitoring Test Results

05服务用于读取氧传感器的状态,对于OBDonCAN来说不支持该服务,相应的功能由06服务实现。

Request On-Board Monitoring Test Results for Specific Monitored Systems

该服务用于请求对特定被监测系统的监测结果。OBD中定义了一个MID(Monitor ID)的表格,来标识被监测系统。一个ECU不一定需要支持所有的MID,获知具体支持哪些MID的方法与01和02服务所使用的方法相同,也是先读取00,20,40等ID。06服务的命令格式是SID + 若干MID,命令格式如下

06服务的request

06服务的response

06服务的response中,针对某一个MID,可能有多个TID(Test ID),因为针对一个系统可能有多个测试项目。TID表格也在OBD中定义。06服务的response格式固定,每个MID的每个TID有6部分组成,可以在上面的例子中看出:

1. MID

2. TID

3. Unit And Scaling ID,用于标识这个TID的测试内容是什么,比如电压、时间、计数器之类的。

4. Test Value,实际测量值

5. Min. Test Value,这个测量值的最小值

6. Max. Test Value,这个测量值的最大值

Request Emission-Related Diagnostic Trouble Codes Detected During Current or Last Completed Driving Cycle

07服务也是获取DTC,但是它与03服务区别在于,它用于获取在当前以及上一个驾驶循环中出现的处于“pending”状态的DTC(可以参见本专栏中“汽车控制器(ECU)中DTC的状态位”一文),而03服务获取的是confirmed DTC。它的请求格式和响应格式如下两幅图:

07服务的request

07服务的response

 8 

Request Control of On-Board System, Test or Component

08服务用于对系统进行控制,进行元件测试操作。它相当于UDS中定义的2F和31服务。它的使用方法是SID + TID,注意这个TID与05和06服务的TID不同,在OBD中有一个专门给08服务使用的TID表格。

 9

Request Vehicle Information

09服务用于读取车辆信息,它的命令请求格式是SID + 若干InfoType ,InfoType在OBD标准中有定义。并不是所有的InfoType都需要被支持,具体哪些InfoType被支持,可以采用和01服务相同的方法来获知,读取00,20,40等ID。比如InfoType = 02代表17个ASCII的Vehicle Identification Number。

目前,UDS和OBD是两套应用层协议,而OBD所提供诊断服务其实属于UDS所提供服务的一个子集,理论上来说UDS中的诊断服务都可以实现OBD中的要求。为了降低同时需要实现两套协议的成本,所以标准化组织分配了ISO 27145(World-Wide Harmonized OBD)这个标准号来将OBD与UDS统一,使用UDS中的诊断服务来替代OBD相关的诊断服务。具体替换方案如下表:

WWH-OBD中UDS与OBD服务的对应关系

比如,在OBD中,使用02,03,07分别读取confirmed DTC,DTC环境数据,pending DTC,而这些功能都可以通过UDS中的19服务来实现(配合上不同的状态掩码和读取参数)。

天籁obd接口针脚定义_OBD协议介绍相关推荐

  1. 天籁obd接口针脚定义_OBD各针脚定义

    标准的OBD-II-DLC接头定义是这样的: Pin 1 ......SAE J2411, GM single wire CAN;通用公司单线 CAN-BUS Pin 2 ......ISO 1151 ...

  2. 天籁obd接口针脚定义_OBD接口位置大全与obd接口针脚定义----太实用了!一定分享呀!...

    别克君威2.5:OBD诊断头在油门踏板上方. 别克君威3.0:OBD诊断头在油门踏板上方. 本田雅阁:OBD诊断头在仪表板的下方. 北京吉普2500:OBD诊断头在驾驶员左护板侧. 北京吉普2033: ...

  3. 天籁obd接口针脚定义_典藏 | OBD接口位置大全及部分常用手机型号语音播报设置流程...

    OBD接口的位置 OBD接口的位置一般都在方向盘下方的内饰板中,靠近驾驶员膝盖附近的地方,不同车型的位置稍有区别,但基本位置都差不多. OBD接口统一采用梯形的16针DLC形式接插件,梯形接口是防误插 ...

  4. 天籁obd接口针脚定义_关于手机MicroUSB接口数据线,这里有最详细解说

    众所周知,现在手机数据线的接口主要有三种:即Micro USB接口.USB Type C接口以及iOS系统手机的Lightning接口. 在安卓旗舰手机上,USB Type-C接口已逐渐取代Micro ...

  5. 天籁obd接口针脚定义_常见汽车诊断头位置(OBD针脚定义).pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp汽车/机械/制造&nbsp>&nbsp汽车试验与故障诊断 常见汽车诊断头位置(OBD针脚定义 ...

  6. 天籁obd接口针脚定义_2013新天籁加装OBD胎压监测+无损改装彻底解决亏电求加精...

    近日,原先安装在车上的胎压监测系统(TMPS)出现故障,老是出现胎压3.4.温度为0的错误信息,最后找厂家的技术人员也没法解决,说是要换胎压,呵,那是我花了900多米安装的,才用了不到二年就坏了.没办 ...

  7. 天籁obd接口针脚定义_汽车16针obd接口针脚定义

    汽车上的OBD-II接口(母): ELM327用到的引脚: 2: SAE-J1850 PWM和SAE-1850 VPW总线(+) 4. 车身接地 5. 信号接地 6. CAN high (ISO 15 ...

  8. 天籁obd接口针脚定义_汽车OBD接口定义

    ELM327 用到的引脚: 2: SAE-J1850 PWM 和 SAE-1850 VPW 总线 (+) 4. 车身地 5. 信号地 6. CAN high (ISO 15765-4 和 SAE-J2 ...

  9. 天籁obd接口针脚定义_汽车标准OBDⅡ(自诊断接头)针脚定义

    ELM327 用到的引脚: 2: SAE-J1850 PWM 和 SAE-1850 VPW 总线 (+) 4. 车身接地 5. 信号接地 6. CAN high (ISO 15765-4 和 SAE- ...

最新文章

  1. MVVM架构~knockoutjs系列之为validation.js扩展minLength和maxLength
  2. QQ好友列表数据模型封装
  3. SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】远程桌面 3389 Windows 2016
  4. 《THE LEAN STARTUP》 《精益创业》
  5. #51CTO学院四周年# 还好没放弃,终于等到你~
  6. 雅虎、领英接连退出中国,GitHub 会受到影响吗?
  7. 一个boost底下的线程池
  8. 信用卡逾期了还能网上贷款吗?
  9. python如何请求curl_Python爬虫偷懒神器 —— 一键构造请求头!
  10. 风云再续:他抖任他抖,IO诊断在我手
  11. 有道翻译 vs google翻译
  12. 从π与e开始 理解正态分布
  13. java 清除stdin缓冲区_使用fflush(stdin)
  14. Windows7SP1补丁包(Win7补丁汇总) 32位/64位版 更新截至2016年11月
  15. 基于DM6467的TVP7002 Linux驱动程序开发
  16. pyqt win32发送QQ消息
  17. 人机博弈小游戏(Java)
  18. 如何创建一个Java项目
  19. pako插件——数据压缩利器工具
  20. linux系统乘号怎么输入,Shell基本运算符

热门文章

  1. mysql null 和 空字符串 区别
  2. linux 内核模块加载错误 disagree about version of symbol module_layout
  3. 安全产品研发与落地的一些方法与思考
  4. python 同时给多个变量赋值
  5. docker部署openvas
  6. 线程的CloseHandle和WaitForSingleObject
  7. TCP/IP详解--第九章
  8. Python学习之猜数字小游戏
  9. java属性_Java Properties 类
  10. mysql 事务 查询 范围加锁_MySQL死锁系列-常见加锁场景分析