ISO27145协议使用两字节的数据标识符DID;
下图显示了如何基于SAE J1979-DA规范定义2字节数据标识符和例程标识符。

2字节数据标识符DID的“低字节”来源于SAE J1979-DA定义的1字节标识符(PID)。2字节数据标识符DID的“高字节”在ISO 14229-1中定义。常用的OBD数据流DID如下:

1、设备先按照11位CAN-ID(0x7DF)去请求,看车辆是否支持,如果支持的话,有哪些数据流可以获取。
请求如下:7DF 03 22 F4 00 00 00 00 00
ECU#1响应:7E8 07 62 F4 00 98 3B A0 17
此响应中,

07:响应有效数据长度7个字节;
62:服务22对应的响应SID;
F400:响应DID,对应请求的DID;
98(二进制10011000):代表支持0x01~0x08之间的PID中的0x01、0x04、0x05;
3B(二进制00111011):代表支持0x09~0x10之间的PID中的0x0B、0x0C、0x0D、0x0F、0x10;
A0(二进制10100000):代表支持0x11~0x18之间的PID中的0x11、0x13;
17(二进制00010111):代表支持0x19~0x20之间的PID中的0x1C、0x1E、0x1F、0x20;
注意:支持了0x20的PID,说明后续还有支持的PID。需要继续发送服务0x22和DID=0xF420的请求。

请求如下:7DF 03 22 F4 20 00 00 00 00
ECU#1响应:7E8 07 62 F4 20 A0 13 A0 01
此响应中,

07:响应有效数据长度7个字节;
62:服务22对应的响应SID;
F420:响应DID,对应请求的DID;
。
。
。
01(二进制00000001):代表支持0x39~0x40之间的PID中的0x40;
注意:支持了0x40的PID,说明后续还有支持的PID。需要继续发送服务0x22和DID=0xF440的请求。
按照这个规律进行下去,直到没有支持的PID。比如:服务0x22和DID=0xF480的请求

请求如下:7DF 03 22 F4 80 00 00 00 00
ECU#1响应:7E8 07 62 F4 80 EE 00 00 00
车辆不支持0xA0的PID,就不需要再发送服务0x22和PID=0xF4A0的请求了。

**注意:部分车会有多个ECU响应**,比如:
请求如下:7DF     03 22 F4  00 00 00 00 00
ECU#1响应:7E8      07 62 F4 00 98 3B A0 17
ECU#2响应:7E9      07 62 F4 00 80 08 00 00
说明
ECU#1 (ECM)支持以下PID: 0x01、0x04、0x05、0x0B~0x0D、0x0F~0x11、0x13、0x1C、0x1E~0x20。
ECU#2 (TCM)支持以下PID: 0x01和0x0D。

2、根据第1条请求到的支持的PID,依次请求具体的数据流。
如发动机转速,查找SAE J1979-DA,其PID为0x0C,车辆支持此PID,
请求如下:7DF 03 22 F4 0C 00 00 00 00
#ECU1响应:7E8 05 62 F4 0C 0A EE 00 00
按照协议解析:

0xAEE=2798;2798*0.25=699.5(rpm)。

3、如果11位CAN-ID不应答,说明不支持11位CAN-ID(0x7DF)。用29位CAN-ID(0x18DB33F1)去请求:
请求:18DB33F1 03 22 F4 00 00 00 00 00
响应:18DAF100 07 62 F4 00 98 3B A0 17
具体数据解析同11位CAN-ID。

读取WWH-OBD(ISO27145协议)数据流相关推荐

  1. 读取ISO15031协议数据流

    向车辆请求支持的PID项 所有与排放相关的OBD ECU,如果至少支持ISO 15031中定义的一种服务,则应支持服务0x01和PID=0x00. 服务0x01和PID:0x00被定义为所有与排放相关 ...

  2. 开发人员不可不看的 OBD通讯协议知识

    OBD-II Network Standards » J1850 VPW – Adopted by GM; also known as Class 2. – Adopted by Chrysler ( ...

  3. php读取ds18b20,DS18B20_单总线协议

    .H文件 #ifndef _ONEWIRE_H #define _ONEWIRE_H #include "STC15F2K60S2.H" #include #define OW_S ...

  4. 西门子三菱台达PLC读取国网DLT645协议电表数据方案

    根据需求,提供一套带边缘计算协议解析功能的硬件设备,DLT645转modbus RTU协议,可以解决上述问题. 参考原文链接: dlt645协议电表数据采集接入PLC或scada等组态软件系统实现内网 ...

  5. 2018-01-29-python-buildin_datatype

    title category layout tags date python教程之3基本数据类型 python post python 2018-01-29 23:00:24 上篇文章简单介绍了Pyt ...

  6. obd 与服务器 通讯协议,经典   OBD-2是什么及接口针脚定义和通信协议

    在车辆年检新标准的实施中,不仅增加了与排放相关部件的外观检查(如连接管路是否老化.龟裂.漏气等),还新增了OBD检测项目,并且要求在进行排放污染物检测的整个过程中,都不能断开OBD设备. 如此一来使得 ...

  7. 读取 DTC 信息服务 (0x19) – UDS 协议

    总目录链接==>> AutoSAR入门和实战系列总目录 0x19读取 DTC 信息服务概述 读取 DTC 信息服务在 UDS 协议中用于从车辆或特定 ECU 或节点读取 DTC.UDS 协 ...

  8. BACnet协议读取与发送

    BACnet协议读取与发送 注意 我的提问: 更新 开发环境 BACnet相关基础知识 BACnet格式 BACnet代码 BACnet设备查找 BACnet设备读取 BACnet写入操作 AND其他 ...

  9. 获取车辆VIN等OBD信息

    获取车辆如下OBD信息: VIN:Vehicle Identification Number CALID:Calibration Identifications CVN:Calibration ver ...

最新文章

  1. Swift 中枚举、结构体、类(enum、struct、class)
  2. Python--day7--面向对象编程进阶
  3. 1625 宝石项链 大视野评测
  4. [转]C++中extern C的含义
  5. Python基础项目实践之:面向对象方法模拟简单计算器
  6. Atom飞行手册翻译: 4.3 作用域设置、作用域和作用域描述符
  7. 7-14 与数据库相连
  8. Sonya and Robots(set应用)
  9. 如何提高代码复用性,定义骨架?
  10. python如何下载os库_python下载os库的方法
  11. 能否构成三角形的条件代码_中考三角形专题复习:一般三角形知识全面梳理
  12. 秋日登洪府滕王阁饯别序
  13. HTML音频视频、JS方法,以及插件使用教学
  14. Python脚本教程、问题与解决方案的文章汇总索引目录
  15. python教你画一棵树
  16. linux怎么下载vi,Linux下Vim的使用
  17. Typora 标题无法对齐
  18. 快速搞懂Lombok使用与原理
  19. NetApp SnapCenter 备份管理 ——借助应用程序一致的数据备份管理,简化混合云操作
  20. vscode c++不能使用bits/stdc++.h 解决方案

热门文章

  1. KAS培训法(转载)
  2. html5文档首行缩进,pages文稿首行缩进
  3. AEJoy —— 表达式之基础音频动画【JS】
  4. Java String的split方法总结
  5. 采访拍摄镜头技巧_5个现场直播采访的有效技巧
  6. 作为一名程序员在北京月薪12k意味着什么?
  7. openstack资源统计监控系列之ceilometer+gnocchi获取cpu、memory项目实战及实现源码(三)
  8. 蓝桥杯 蚂蚁感冒 不要模拟!
  9. 金融数据获取:当爬虫遇上要鼠标滚轮滚动才会刷新数据的网页(保姆级教程)
  10. 老宇哥带你玩转ESP32:03 GPIO数字输入与数字输出