打印
[总线技术]

一种基于ISO15765协议的获取车辆信息的方法

[复制链接]
857|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一,背景
随着家用轿车的越来越普及,汽车保有量也越来越大,随之而产生的车联网产品也越来越多。所有的车联网产品几乎都需要获取原车的数据,简单到车速,转速,节气门开度,剩余油量等等。专车专用的车联网产品也进一步获取到了车门,车灯,安全带,档位等信息。这里面其实就包含了获取原车数据的2种办法,一种是通过OBD诊断接口发送请求命令获取车辆信息,一种是通过监听CAN总线数据分析获取车辆信息。今天我们来介绍通过OBD诊断接口获取原车信息的办法。
二,方法简介
通过OBD诊断接口获取原车数据的办法,是一种最常用的办法。也是市面上很多车联网产品的技术方案选择该办法。
如下图,这是汽车OBD接口的针脚定义图,6针脚是CANH14针脚是CANL4,5针脚是地线,16针脚是VCC,接电瓶电源的,常电,即使车辆熄火该针脚也有电压。就是通过该接口,连接6,14号针脚,CAN总线发送数据给行车电脑,然后行车电脑会返回车辆信息。
三,具体发送命令解析
外部终端发送、和行车电脑返回数据的通用格式如下:
终端发送:  CANID为:7DF   报文数据为:02 01 PIDx 00 00 00 00 00
ECU回复:  CANID为:7E8   报文数据为:07 41 PIDx  A  B  C  D 00
来直接的,如果想要从OBD口获取到发动机转速如何发送和接受解析命令?
发送SID:0x07DF    数据字节(HEX):02 01 0C 00 00 00 00 00
接收SID:0x07E8   数据字节(HEX):04 41 0C 0B 3E 00 00 00
以上发送命令解析为:7DF,为CANID,这个CANID是所有具有诊断功能的行车电脑都会相应的一个CANID。发送的数据中,02代表数据长度,后面有效字节长度为2,即01 0C01代表服务号,也叫SID,其中01是动力有关的数据,01服务为用的最多的一个服务。0C代表参数ID,也叫PID,这个PID具体定义在IS015031-5里面,此处0C这个是发动机转速的PID。总结起来这条请求报文就是:外部设备要向行车电脑请求发动机转速!
     接收到的数据为行车电脑返回的数据,其中7E8为行车电脑的物理ID,也是CANIDCAN报文数据为:04,代表后续有效字节有4个。41为对01服务的一个应答,所有行车电脑返回的数据,都会在请求数据的基础上加0x40返回(0X01+0X400x41)。0C对应请求命令中的0C,代表发动机转速。0B 3E代表转速值,为十六进制的转换为十进制为:0x0B3E=2878,但是这个里面还有一个解析算法,这个值除以4为实际转速,也就是实际转速为2878/4=719转。
四,PID对应关系以及算法解析
通过第3部分我们知道,其实请求车子数据项,除了知道以上的数据格式之外,还需要清除的知道各个PID的定义,以及行车电脑对应PID的解析算法。这个我们已经帮大家总结好,见我另一篇**<<乘用车汽车诊断总结>>
五,对应硬件套件
外部请求设备,也叫OBD诊断板,提供硬件原理图和软件源码。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

56

帖子

1

粉丝