汽车OBD2蓝牙诊断仪解决方案程序开发

news2024/10/5 13:13:57

1、因TL718已经为你建立了物理层、数据链层和部分应用层的协议,所以只要OBD2标准应用层协议文本,ISO15031-5 或 SAE J1979(这两个协议是相同的内容)。    
2、TL718诊断接口 1 套或用TL718芯片自建电路。
3、家用PC机电脑一台。
4、安装软件:Accessport调试软件及VC++(或VB、BC++等)你喜欢的开发软件。
5、符号OBD2标准的汽车发动机电脑一块(或汽车一台)

准备好以上这些,你就可以开始你的OBD2标准程序开发了!!!



TL718基本信息

    TL718通过一个UART串口与单片机、PDA或PC RS232通讯,在有的新的PC机上已没有装备RS232串口,可以通过虚拟串口实现与TL718通讯,例USB TO RS232、以太网TO RS232、或蓝牙 TO RS232等等。


        -------     RS232     ------    OBD2电缆    ----------
       |   PC  |<----------->| TL718|<------------>|汽车诊断口|
        -------               ------                ----------


   不管使用怎样的物理连接,你可以使用超级终端或串口调试工具,直接通过键盘发送和接收字符。在使用串口调试软件前,首先必须设置正确的COM端口号和正确的波特率。一般为9600波特率(PIN6=0V),或38400波特率(PIN6=VCC,PP OC设置默认值)。串口设置为:8个数据位,校验位:0, 停止位 1位。如果设置错误,将不能和TL718正常通讯。所有从TL718的响应以一个回车符(0X0D)及一个可选的换行符(0X0A)结束。正确连接,打开电源后。TL718将驱动测试LED灯,(闪亮3次)后,发送:


      TL718 starting

      〉

    如果正确收到以上信息代表串口及连接设置正确。第二行“〉”符号代表TL718为空闲状态,可以立即从RS232接收数据。如果没有收到“〉”符号就向TL718发送数据,可能引起数据丢失。而发生不正确的响应。PC从串口向TL718发送的指令格式:

      TL718有2种格式的命令
                       1、OBD连接命令,与车辆发生通讯。
                       2、内部命令,全部以AT开头,不与辆发生通讯




 

l发送必须以0x0d(回车符)结束的ASCII码字符,回车符后面的字符被TL718丢弃。
lTL718内部命令以“AT”开头,后面跟可见字符。不可见字附及空格被忽视。
lOBD命令只能包含16进制的ASCII码(0-9,a-f,A-F),空格被忽略。
l如果发送的指令,不能被TL718有效解释,TL718将返回一个“?”表明,发送指令无效。
l当TL718处理OBD命令时,TL718连续监视RTS引脚及RS232输入,其中任何一个情况发生,TL718将中断当前的OBD命令,使它快速返回提示符“〉”,等待接收新的命令。
l大小写字符都能被TL718接收,空格被忽略。比喻命令“ATZ”、“atz”、“at z”都是一样的。

比喻我们向TL718发送一个复位指令只要向RS232串口发送ASCII字符“ATZ”+0x0d(回车符);
 
TL718 Starting
>ATZ
ELM327 v1.2
>
 
注:ATZ指令返回 ELM327 V1.2是为了使用现成的国外OBD观软件,所以用了这个返回信息。
返回本芯片信息用“ATI”指令。
 
>ATI
TL718 v1.0
>
 
返回芯片编号用 "AT@S"指令(这个编号升级硬件和提供保修服务时需要)
>AT@S
CodeNumb:98764323
>
TL718的OBD命令
  
          如果你向TL718发送的指令以16进制数的ASCII开头,则TL718认为是OBD命令,TL718接收后,把成对的ASCII码16进制数转换成单个字节的16进制数据发送到车辆电脑数据总线。OBD命令实际是被嵌入到数据消息包内后发送到数据总线上的,大多数标准要求:在每个数据消息包内包含三字节的头及最后一个数据校验字节。TL718自动添加了这些附加的字节,这些默认的值对OBD2诊断模式请求指令都不需要更改,但如果你想要更改这些头字节值,可以用内部命令“ATSH XXXXXX”更改。

       大部分OBD指令长度只有一个字节或2个字节,TL718充许发送的最长度是对应标准规定的字节,超出部分将被丢弃。发出的OBD指令,不能出现单个的数字,16进制数必须成对发送,比喻0不可能发送单个的“0”,必须发送“00”,如果出现单个数字,TL718认为指令格式错误,将返回一个“?”。由于OBD(汽车诊断标准)都使用16进制,所以TL718接收发送的数据也是16进制的。例15的代表的十进制值是21;

       当发送完OBD2命令后,TL718等待从总线接收OBD消息,如果接收到地址的消息并且地址匹配,则TL718就把数据从RS232发送给PC,如果TL718接收到的消息和发送的地址不匹配,则忽略该消息。但也可以通过ATBD内部命令查看该接收到的消息包。 如果直到等待时间(P2MAX ATST命令的设置值,默认值100ms)结束,没有接收到匹配地址的数据,则TL718返回“NO DATA”,如果接收到数据并且地址匹配则复位计时间,继续等待,直到等待时间溢出。
        

OBD2标准诊断模式




 
开发OBD2诊断程序,必须掌握ISO 15031-5(  SAE J1979)定义的九种诊断模式,对于英文不是很好的朋友,本站有个中文的说明:
可以参考:

          
OBD系统输出信息的模式/服务
  • Mode 1: 请求动力系当前数据
  • Mode 2: 请求冻结祯数据
  • Mode 3: 请求排放相关的动力系诊断故障码
  • Mode 4: 清除/复位排放相关的诊断信息
  • Mode 5: 请求氧传感器监测测试结果
  • Mode 6: 请求非连续监测系统OBD测试结果
  • Mode 7: 请求连续监测系统OBD测试结果
  • Mode 8: 请求控制车载系统,测试或者部件
  • Mode 9: 读车辆和标定识别号
每个模式后面紧跟一个 参数标识(PID)表示后面是什么参数, 每个模式的PID 00 是ISO15031定义专用的参数,每个符合标准的电脑必须支持这个参数标识。代表该模式对其他PID是否支持。


   与车辆数据通讯

OBD2命令的格式

1、

上图是OBD2的诊断指令的消息包的完整格式(极大部分厂商专用的功能也是这种格式),TL718能自动设定了Header/ID/PCI/CHECKSUM这部分数据,对于标准的OBD2诊断程序你都几乎不用关心修改它。想了解有关内容,它们分别定义在ISO14230-2、J1850 、IS9141-2 和ISO15765-2数据链层定义的文本内。

       TL718自动检测数据总线的物理连接,能在协议1-9间自动搜寻当前车辆的协议,搜寻到后自动返回数据。当然也可手工设定到某个特定的协议。TL718不搜寻A-F协议,因为A-F协议它们没有象OBD2一样有一个统一的ISO15031应用层协议,那样的话自动搜索变得毫无意义。

2、ISO15031(SAE J1979)是应用层的协议,同样它也不用关心使用什么样的物理层协议(TL718自动连接),你编程时只要发送数据,和接收及处理接收回来的数据(计算或显示)。所以这么多种物理连接,以统一标准规定的数据包来发送接收,我們编程处理变得相对简单。下面我们来讨论OBD2指令。

3、这里我们只要关心数据消息包的7字节数据(data byte)部分就可以了

      ISO15031-5定义:

             字节               意义
              1         MODE    代表请求数据的类型
              2          PID    参数标识
              3-7               根据不同的MODE及PID ISO15031-5有详细的定义

 

如上图所示,连接好线路及打开车匙到ON,不要起动车辆。不用做任何设定,只要你向TL718发送指令,TL718自动返回车辆响应的数据。


例 1:  图所示:“0100”代表ISO15031-5定义MODE 01 PID 00 指令。

          >01 00
          41 00 BF 9F B9 90
         第1个字节 41  代表 Mode 01  (01+40,标准定义)   
         第2个字节 00  代表  PID 00
         3-6字节是车辆发送回来关于 MODE 01 PID 00 请求返回来的数据
          表示模式00 所支持其他(PID01---PID32)标识的按位定义的数据 1代表支持 0代表不支持。  

例 2:请求(读取)发动机水温 MODE 01 PID 05

         我们只要简单的向车辆发送0105指令
          >0105
           41 05 7B
        
          41代表MODE 01 
          05代表 PID 05
          7B是水温值 10进制数值是(7*16+11)123 水温是123-40=80度
          
例 3:读取发动机转速rpm  MODE 01 PID 0C

      同样只要向TL718发送:010C

          >01 0C
          41 0C 1A F8
       1AF8是2字节的16进制值,转换为10进制数是6904,每格1/4 rpm
       转速是6904/4=1726 rpm

       注:以上数据的转换,及格式在ISO15031-5内有详细定义
读OBD2故障码(DTCs Diagnostic Trouble Codes)

    读故障码是诊断仪最常用的功能,这里只是简单的说明一下,详细内容请查阅ISO15031-5文本
   一般情况下可直接用MODE 03读取当前故障码,但这里我们

先用MODE 01 PID 01读取现在有多少个故障码存在ECU内
      
       >01 01
        41 01 81 07 65 04
       >

      41 01 前面已说明是对MODE 01 PID 01的响应代码,
      81   代表当前的故障码数,这个10进制数值是129,不是代表有129个故障码,
            81它的最高位MSB 代表是否点亮故障指灯,低7位代表了故障码的数量
           16进制算法应是 0x81 & 0x7F = 0x01 所以是一个故障码。也可是10进制数值直接减128
            即:129-128=1;
      
       所以81代表了,故障灯点亮,有一个故障码,81后面的数据请参考标准文本,和读故障码没有关系。



 
在这个例子中,TL718只返回了一行数据,但是如果有另外的控制模块也附合响应条件,有可能返回多行信息。
比喻常见的:发动机电脑和自动波箱控制电脑同时返回信息,就会有2行信息,要确认是哪一个电脑返回的是哪一行
信息,必须设置返回OBD消息保的三字节头(AT H1内部命令打开),查看消息头字节中的第三个字节(源地址)确定
是那个电脑模块返回的消息包。这里先不讨论,在另外章节来详细讨论,多消息包数据。
 

现在已经读了有多少个故障码,下一步读实际的故障码是什么。

          用OBD2诊断模式MODE 03读取:只要简单地向TL718发送03
           
        >03

         可能的返回信息数据如下:
         43 01 33 00 00 00 00
         
        注:如果故障码数量多于3或多个电脑模块,会返回多行消息包,
           
     43是对MODE 03 请求的响应(03+40),另外的6个字节是故障代码,2个字节代表一个故障码。
     这里有3个代表故障码的数据:0133 0000 0000,“0000”是ISO15031在这个模式下返回的填充数据
     不是实际的故障码。
     
    故障码含义:ISO定义:二字节故障码(例0133)的第一个数如下表所示  现在来分析上面的故障码 0133:



 

第一个数字“0”按上表用“P0”代替。0133就代表是故障码P0133。
同样如果收到的是D016则,“D”用U1代替,则故障代码就时U1016;
如果收到是1131则代换后,故障代码是P1131。

   注:ISO15765 CAN故障码消息包和J11850、ISO9141 ISO14230返回的信息有稍不同,
       编写程序时要注意,ISO 15765 返回的信息第二个数据代表的是电脑模块有多少个故障码(DTCs),
       详细看ISO15031-5内定义。



清除故障代码

    OBD2诊断模式MODE04 是复位ECU的一个功能,同时也清触故障代码;执行后ECU将:

           1、复位故障代码的数量为0
           2、删除所有的故障代码
           3、删除存储的冻结桢数据
           4、删除所有O2传感器听测试数据
           5、删除模式MODE06 和 MODE 07的数据信息

     复位后你的汽车由于复位了一些数据,短时间内可能会引起工作异常。为了防止不小心复位ECU,
    ISO15031-5要求所有的扫描工具(诊断仪)在发送MODE 04指令前,必须加一个“确认信息”。
    TL718不监视发送信息的内容是否是复位指令。

        >04
         44
        >
     发送04指令后,车辆ECU接收成攻,将立即复位以上内容,
     并发回一个MODE 04的响应信息44(04+40)。


一般的流程:

结束语

  • ISO14230 ISO9141要求通讯前的初始化过程、及连接后要求有一个周期性的握手信号,这些TL718都已经自动完成,OBD2标准的诊断程序都不用更改。怎样更改这些参数
  • 看完这些内容,就可开始你的OBD2开发。实际上厂商专用的诊断功能程序差不多也是这么简单。为什么叫专用,是因为它没有公开应用层的协议。开发时比我们OBD2开发多少一个过程。就是怎样用TL718从专用的设备中读得专用的诊断指令(也就是应用层协议)。在开发专用功能的诊断仪中讨论这个问题。
  • OBD2其他的诊断模式这里不再说明,诊断方法都是一样的。详细内容查看ISO15031-5或SAE J1979。多试多做你会发现开发诊断程序原来如此简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1206924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

@Accessors使用和详解

一、什么是Accessors注解? RequiredArgsConstructor是Lombok的一个注解&#xff0c;简化了我们对setter和getter方法操作。它可以作用在类上&#xff0c;也可以作用在类的单个属性上。修饰类的时候对这个类的所有属性都是有效的&#xff0c;修饰单个属性的时候&#xff0c;只…

element ui + echarts点击表格显示对应的图形

一、vue封装饼图、树状图、雷达图等组件 目录 resize.js需要utils.js utils.js import { parseTime } from ./yunhis/*** 表格时间格式化*/ export function formatDate(cellValue) {if (cellValue null || cellValue "") return "";var date new Da…

使用yolov8的一些错误

出现这个报错的时候&#xff1a; AutoInstall will run now for ultralytics.nn.modules.conv but this feature will be removed in the future. Recommend fixes are to train a new model using the latest ultralytics package or to run a command with an official YOLO…

新能源充电桩物联网应用之工业4G路由器

新能源充电桩是智慧城市建设中不可缺少且可持续发展的重要设施&#xff0c;而工业4G路由器物联网应用为其提供了更加高效、智能、实时的管理方式。充电桩通过工业4G路由器可以与充电运营商的管理中心建立稳定的连接&#xff0c;实现双向数据传输&#xff0c;为用户提供优质的充…

浪潮服务器安装操作系统

文章目录 一、准备工作1.1 制作启动 U 盘 一、准备工作 一开始认为将镜像文件导入U盘即可&#xff0c;但实操中并不行&#xff0c;得首先将U盘制作成启动盘才行。   首先需要确定安装的版本&#xff0c;我这里要安装的是 CentOS 7.9 版本&#xff0c;镜像文件为 CentOS-7-x86…

JSP教务管理系统eclipse定制开发mysql数据库BS模式java编程servlet

一、源码特点 java 教务管理系统是一套完善的web设计系统 系统采用serlvetdaobean 模式开发&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发&#xff0c;数…

BUUCTF 爱因斯坦 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件&#xff0c;解压得到一张.jpg图片。 密文&#xff1a; 解题思路&#xff1a; 1、因为题目没有什么提示&#xff0c;我们就一一尝试。将图片放到StegSolve中&#xff0c;在查看图片的File Format时&#x…

盘点60个Python网站项目Python爱好者不容错过

盘点60个Python网站项目Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1mY8pNUpZEV0Q-5-UvJTtBA?pwd8888 提取码&#xff1a;8888 项目名称 (No longermainta…

【史上最全】涵盖所有「存图方式」与「最短路算法」

题目描述 这是 LeetCode 上的 「1334. 阈值距离内邻居最少的城市」 &#xff0c;难度为 「中等」。 Tag : 「最短路」、「图」 有 个城市&#xff0c;按从 到 编号。 给你一个边数组 edges&#xff0c;其中 代表 和 两个城市之间的双向加权边&#xff0c;距离阈值是一个整…

优化千万级数据表的实用指南

文章目录 优化千万级数据表的一次实践一、查询耗时太长二、优化解决方案三、优化后查询速度 优化千万级数据表的一次实践 一、查询耗时太长 随着数据量的增长&#xff0c;数据库性能往往成为关注的焦点。特别是在处理千万级数据表时&#xff0c;查询性能往往成为一个挑战。在这…

服务器数据恢复—服务器发生故障导致数据丢失如何恢复服务器数据?

服务器常见故障&#xff1a; 硬件故障&#xff1a;磁盘、板卡、电源故障等。 软件故障&#xff1a;操作系统崩溃、程序运行错误等。 入侵破坏&#xff1a;加密、删除服务数据等。 不可控力&#xff1a;浸水、火烧、倒塌等。 误操作&#xff1a;格式化、删除、覆盖等。 如何减少…

Cesium和Three.js的初步认识

一、Threejs和Cesium的对比 相同点&#xff1a; 都是基于WebGL技术开发的Javascript库&#xff0c;用于在浏览器中创建和显示动画3D计算机图形。 不同点&#xff1a; Threejs&#xff1a;受众面比较广&#xff0c;是封装了webgl的一些底层用法&#xff0c;让初学者更容易上…

[linux网络实验] 多网卡绑定

聚合链路技术 什么是bonding 提供了一种将多个网络接口设备绑定到一个网络接口的方法。这可用于网络负载平衡和网络冗余&#xff1b; 实现将两个网卡虚拟成一个网卡。这种聚合设备看起来就像一个以太网接口设备。通俗地说&#xff0c;这意味着两个网卡拥有相同的 IP 地址&am…

代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和

代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和 文章链接&#xff1a;最长公共子序列、不相交的线、最大子数组和 视频链接&#xff1a;最长公共子序列、不相交的线、最大子数组和 1. LeetCode 1143. 最长公共子序列 1…

WMS系统出库管理:功能、流程与优势

一、WMS系统出库管理概述 WMS系统是一种用于仓库管理的信息系统&#xff0c;它涵盖了从货物入库、在库管理到出库的全过程。在WMS系统中&#xff0c;出库管理是非常重要的一环&#xff0c;它涉及到的功能包括订单处理、拣货、打包、发货等。通过WMS系统的出库管理&#xff0c;…

世界互联网大会|美创科技新一代 数据安全管理平台,携五大新特性发布亮相

11月7日&#xff0c;2023年世界互联网大会“互联网之光”博览会在浙江乌镇开幕。今年是博览会办展第十年&#xff0c;重点突出国际性、创新性、引领性。在新产品新技术发布活动中&#xff0c;美创科技全新升级的新一代 数据安全管理平台&#xff08;简称&#xff1a;DSM Cloud&…

SaaS 电商设计 (四) 如何做大促压测

一.背景&目标 1.1 常见的压测场景 电商大促:一众各大厂的促销活动场景,如:淘宝率先推出的天猫双11,而后京东拉出的京东 618 .还是后续陆陆续续的一些年货节, 3.8 女神节等等.都属于一些常规的电商大促 票务抢购:常见的如承载咱们 80,90 青春回忆的 Jay 的演唱会,还有普罗…

基于Rabbitmq和Redis的延迟消息实现

1 基于Rabbitmq延迟消息实现 支付时间设置为30&#xff0c;未支付的消息会积压在mq中&#xff0c;给mq带来巨大压力。我们可以利用Rabbitmq的延迟队列插件实现消息前一分钟尽快处理 1.1定义延迟消息实体 由于我们要多次发送延迟消息&#xff0c;因此需要先定义一个记录消息…

小程序与公众号下发统一消息接口返回45109

根据微信官方通告&#xff0c;自 2023 年 9 月 20 日起&#xff0c;下发统一消息接口将被收回&#xff0c;返回45109。链接见 小程序与公众号下发统一消息接口调整通知 | 微信开放社区各位开发者&#xff1a;下发统一消息 接口曾支持小程序与公众号统一的模板消息下发。由于小程…

虹科示波器 | 汽车免拆检修 | 2014款保时捷卡宴车行驶中发动机偶尔自动熄火

一、故障现象 一辆2014款保时捷卡宴车&#xff0c;搭载4.8L自然吸气发动机&#xff0c;累计行驶里程约为10.3万km。车主反映&#xff0c;行驶中发动机偶尔自动熄火&#xff0c;尤其在减速至停车的过程中故障容易出现。 二、故障诊断 接车后路试&#xff0c;确认故障现象与车主所…