1.前言
本文亦在通过OBD技术获取汽车实时车速,OBD技术涉及的内容繁多,如何在如此繁多的内容中提炼出一个行之有效的方法去实现我们的目的是本文的创作目的。所以如果你对OBD不是很熟悉,或者在网络上繁杂的信息里很难提炼出关键的解决手段,通过本文或许会给你一些启发和思路。
2. 知识预备
2.1 什么是OBD?
在了解这个领域之前,首先需要解决什么是OBD?它是用来做什么的?
OBD全称也叫On-Board Diagnostic[ɒn bɔːd ˌdaɪəɡˈnɒstɪk] 翻译成中文叫“车载诊断”,是汽车上的一种用于监控车辆状况以及控制排放的一种在线诊断系统。因此如果你的小汽车出现了故障开去4S店进行维修,维修师傅都会进行OBD来了解你的小汽车的基本情况。
同时也要注意诊断分为两种:在线诊断和离线诊断
比如汽车仪表对油温、水温、车速等数据的实时监测,车载仪表盘的相关显示就属于在线诊断;离线诊断是外部诊断设备通过车辆的OBD接口与汽车进行通讯,从而获知汽车的相关数据和故障信息。因此我们获取车速是采用离线诊断。
2.2 OBD可以监测车辆什么数据呢?
用于监控车辆基本参数,例如监控里程、车速、油门踏板位置、冷却液温度等等的一些参数。
2.3 OBD的硬件接口
硬件上接线:
CAN_H-----接OBD接口第6引脚
CAN_L-----接OBD接口第14引脚
信号地------接OBD接口第5引脚
电源正端---接OBD接口第16引脚
公共地------接OBD接口第4引脚
我们通常需要接的主要有5号GND线,6号CAN-H,14号CAN-L,即可完成OBD硬件通信。
2.4 OBD通信诊断协议
什么是诊断协议?
外部设备和车辆通讯的方式和原则我们就称作为诊断协议。诊断协议主要定义了请求和响应的规则,也定义了ECU如何处理响应的机制,还定义了在请求和响应中的报文所承载的物理意义的解析方式。(注:ECU(Electronic Control Unit)电子控制器单元,又称为汽车的“行车电脑”,它们的用途就是控制汽车的行驶状态以及实现其各种功能。主要是利用各种传感器、总线的数据采集与交换,来判断车辆状态以及司机的意图并通过执行器来操控汽车。)
常见的诊断协议:ISO15031、ISO15765、ISO14229等
对于每一层都有一个协议来约束&规定,通过物理的线路和MCU的运算,将电信号转换成表示诊断信息的报文,就是依据这些协议完成的。