汽车OBD2诊断程序开发 (原文转载,思路很清晰!)

原文地址::https://www.cnblogs.com/mike88992/p/3274497.html


相关文章

1、一个完整的汽车OBD仪器的源码,每个模块的代码都在里面----http://www.pudn.com/Download/item/id/3057338.html

2、汽车OBDCAN信息解析----http://www.docin.com/p-1208669019.html

3、车联网-OBD应用----http://blog.csdn.net/mirkerson/article/details/17676795

4、汽车OBD2诊断程序开发----http://download.csdn.net/download/kukawho/2587476

5、OBD开源代码资料----http://download.csdn.net/download/chbqq/9451608

6、OBD完整协议----http://download.csdn.net/download/sqxsny/8356281

7、各大汽车品牌的OBD协议标准----http://download.csdn.net/download/966210/8310755


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”,如果接收到数据并且地址匹配则复位计时间,继续等待,直到等待时间溢出。

(原文转载自:汽车电子工程世界)




  • 11
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前言: 在淘宝搜了一圈,感觉成品的行车电脑,功能大多不实用。大部分都是基于标准的OBD协议进行开发,功能无非就是查看故障码、清除故障码、显示转速、车速、水温、进气压力、进气温度等等的一些发动机参数。其实这些参数如果不是维修的话,日常行车基本上没用的。 于是萌发了自己制作一款多功能行车电脑的念头。于是开始查资料、研究车辆的OBD协议,设计线路板、编程、调试,经过1年多的时间,经过了3个版本的修改,最终做成了现在的这款行车电脑。自我感觉还不错,用的效果也很好。现在开源出来给大家。 OBD行车电脑放在车上的效果: 整个系统采用ATmega64作为主控芯片,用24064的黄绿液晶作为显示屏(T6963C驱动),DS1302作为时钟芯片,读取时间。用2个DS18B20温度传感器检测车内及车外温度,用C3-370C的GPS模块作为GPS接收装置,读取经纬度、海拔、航向等信息。在发动机的OBD接口上安装一个蓝牙的OBD模块(买的),系统板上也采用一个蓝牙串口模块,系统板和车辆之间通过蓝牙串口来透明的传输发动机数据。电源采用的是LM2596,其实整机功耗不大,用7805也可应付。按键采用的是4个独立按键(上图搞错了)其实这4个按键我借用了乐风的电控后视镜按钮。(我的车是低配,是手动调节后视镜,但是有安装电调后视镜按钮的位置。所以我买了一个后视镜调节按钮,当作了系统的按键)。系统板上留出了ISP接口和JTAG接口,方便下载程序和在线调试。 目前实现的功能: 1.车速的实时显示。(这个是实际的车速,而不是表速。表速根据国标规定,比实际速度低一些) 2.超速报警功能。(设定一个报警值,当车速超过以后,蜂鸣器报警。可用按键关闭。高速上开车相对方便) 3.小计里程统计。(车速表上的小计里程一般最大统计1000Km,这个可以统计65535Km。可通过长按下键来清零) 4.每月行驶里程统计。(统计每个月的行驶里程,并可显示。每月自动清零,不可手动清零) 5.本次行驶平均油耗统计。(显示本次行驶的平均油耗,单位是 L/100Km) 6.历史平均油耗统计。(车辆在一个大的用车时间内的平均油耗) 7.剩余燃油续航里程。(根据当前的油耗计算出的油箱内燃油还能跑多少公里) 8.当前行驶方向。(分八个方向显示。东、西、南、北、东南、东北、西南、西北) 9.当前位置经纬度坐标。(度、分、秒格式) 9.当前位置海拔高度。 10.时间及日期显示(年、月、日、星期、时、分、秒根据GPS自动校时,无需手动调整) 11.车内温度显示。 12.车外温度显示。 13.本次行程统计。(在本次行车停车关机时显示,显示的信息有:本次行驶时间、本次行驶里程、本次行驶平均油耗、本次行驶最高速度、本次行驶平均速度) 14.最高速度记录。(记录开车的最高速度) 15.加油记录。(每次加油后,开机时可自动识别出加油,可记录本次加油单价、加油量、总价、加油时间) 16.用油统计。(可统计自某个时间以来,总的加油量、总天数、总行驶里程、总加油费用、总的平均油耗、平均费用,包括每天的费用和每公里费用) 17.根据环境光线,自动开启仪表照明。(这个功能硬件预留,程序中没设计。后序陆续添加) 先看一下线路板。这个线路板是画好以后在网上找的PCB厂家给做的。当时在验证设计时,曾经用感光法自制过PCB板,专门买了感光蓝油、PCB覆铜板,蚀刻液,用喷墨打印机打印PCB图到感光胶片上,覆盖在涂了感光蓝油的覆铜板上,用台灯曝光15分钟,然后显影、脱膜、蚀刻。效果很好,最小线宽可以做到10mil!但是打孔是个头疼问题。全是1mm一下的孔,太难钻了,而且过孔问题很难解决。所以后来还是让PCB厂家做的板。 下面是用的LCD屏。24064的黄绿点阵。T6963C的控制器。这个屏是我在单位的一台废旧设备上拆下的。工业级的。还不错。 屏和主板是两层设计,中间的是蓝牙串口模块。 下面介绍一下各个界面 第一屏,最常用的信息,开机后就在这个界面 第二屏,主要显示GPS的一些信息。按按钮上的“右”键切换到第二屏。 说明: 程序是用C语言写的。本人水平有限。我自己看着都很乱。附件中含有清晰版的原理图和源程序。用CodeVisionAVR V2.04.4a编译。压缩包内自带工程文件与源文件。编译没有错误,但是有警告。注意源文件中有DS1302.lib和DS18B20.lib两个文件,要拷贝到CodeVisionAVR的安装目录下的lib文件夹内,替换系统自带的两个文件。因为我对这两个文件做了修改。 一直想弄个外壳,在淘宝上找了很久,也没找到合适的外壳。没有外壳就暂时裸奔吧! 说说使用的感受: 1.跑高速时很爽!在这个安装位置正好,需要看时速时眼扫一下就可以,或者设定好超速报警,开就是了,根本不用低头看车速! 2.平均油耗,至少在我的车上还是比

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值