收藏 分享(赏)

OBD2诊断程序开发.doc

上传人:精品资料 文档编号:10506953 上传时间:2019-11-24 格式:DOC 页数:11 大小:346KB
下载 相关 举报
OBD2诊断程序开发.doc_第1页
第1页 / 共11页
OBD2诊断程序开发.doc_第2页
第2页 / 共11页
OBD2诊断程序开发.doc_第3页
第3页 / 共11页
OBD2诊断程序开发.doc_第4页
第4页 / 共11页
OBD2诊断程序开发.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

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

2、 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 个数据

3、位,校验位:0, 停止位 1 位。如果设置错误,将不能和 TL718 正常通讯。所有从 TL718 的响应以一个回车符(0X0D)及一个可选的换行符(0X0A)结束。正确连接,打开电源后。TL718 将驱动测试 LED 灯,(闪亮 3 次)后,发送:TL718 starting如果正确收到以上信息代表串口及连接设置正确。第二行“”符号代表TL718 为空闲状态,可以立即从 RS232 接收数据。如果没有收到“”符号就向 TL718 发送数据,可能引起数据丢失。而发生不正确的响应。PC 从串口向TL718 发送的指令格式:TL718 有 2 种格式的命令1、OBD 连接命令,与车辆发生通讯。2、

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

5、大小写字符都能被 TL718 接收,空格被忽略。比喻命令 “ATZ”、“atz”、“at z”都是一样的。比喻我们向 TL718 发送一个复位指令只要向 RS232 串口发送 ASCII 字符“ATZ”+0x0d( 回车符);TL718 StartingATZELM327 v1.2注:ATZ 指令返回 ELM327 V1.2 是为了使用现成的国外 OBD 观软件,所以用了这个返回信息。返回本芯片信息用“ATI”指令。ATITL718 v1.0返回芯片编号用 “ATS“指令(这个编号升级硬件和提供保修服务时需要)ATSCodeNumb:98764323TL718 的 OBD 命令如果你向 TL7

6、18 发送的指令以 16 进制数的 ASCII 开头,则 TL718 认为是 OBD 命令,TL718 接收后,把成对的 ASCII 码 16 进制数转换成单个字节的 16 进制数据发送到车辆电脑数据总线。OBD 命令实际是被嵌入到数据消息包内后发送到数据总线上的,大多数标准要求:在每个数据消息包内包含三字节的头及最后一个数据校验字节。TL718 自动添加了这些附加的字节,这些默认的值对 OBD2 诊断模式请求指令都不需要更改,但如果你想要更改这些头字节值,可以用内部命令“ATSH XXXXXX”更改。大部分 OBD 指令长度只有一个字节或 2 个字节,TL718 充许发送的最长度是对应标准规

7、定的字节,超出部分将被丢弃。发出的 OBD 指令,不能出现单个的数字,16 进制数必须成对发送,比喻 0 不可能发送单个的“0”,必须发送“00” ,如果出现单个数字,TL718 认为指令格式错误,将返回一个“?”。由于 OBD(汽车诊断标准)都使用 16 进制,所以 TL718 接收发送的数据也是 16 进制的。例 15 的代表的十进制值是 21;当发送完 OBD2 命令后, TL718 等待从总线接收 OBD 消息,如果接收到地址的消息并且地址匹配,则 TL718 就把数据从 RS232 发送给 PC,如果 TL718 接收到的消息和发送的地址不匹配,则忽略该消息。但也可以通过 ATBD

8、内部命令查看该接收到的消息包。如果直到等待时间(P2MAX ATST 命令的设置值,默认值 100ms)结束,没有接收到匹配地址的数据,则TL718 返回“NO DATA”,如果接收到数据并且地址匹配则复位计时间,继续等待,直到等待时间溢出。OBD2 标准诊断模式开发 OBD2 诊断程序,必须掌握 ISO 15031-5( SAE J1979)定义的九种诊断模式,对于英文不是很好的朋友,本站有个中文的说明:可以参考:OBD2 的九种诊断模式更详细的内容,还是要看 ISO15031-5 标准文本,150315 给出了可供选择的所有参数的标准定义,包括存储格式、单位和文字描述等信息。每个参数都有一

9、个参数标识(PID)与之相对应。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 定义专用的参数,每个符合标准的电脑

10、必须支持这个参数标识。代表该模式对其他 PID 是否支持。用 Accessport 串口调试 进行 OBD2 诊断与车辆数据通讯OBD2 命令的格式1、上图是 OBD2 的诊断指令的消息包的完整格式(极大部分厂商专用的功能也是这种格式),TL718 能自动设定了 Header/ID/PCI/CHECKSUM 这部分数据,对于标准的 OBD2 诊断程序你都几乎不用关心修改它。想了解有关内容,它们分别定义在 ISO14230-2、J1850 、IS9141-2 和 ISO15765-2 数据链层定义的文本内。TL718 自动检测数据总线的物理连接,能在协议 1-9 间自动搜寻当前车辆的协议,搜寻到

11、后自动返回数据。当然也可手工设定到某个特定的协议。TL718 不搜寻 A-F 协议,因为 A-F 协议它们没有象 OBD2 一样有一个统一的 ISO15031 应用层协议,那样的话自动搜索变得毫无意义。2、ISO15031 (SAE J1979)是应用层的协议,同样它也不用关心使用什么样的物理层协议(TL718 自动连接),你编程时只要发送数据,和接收及处理接收回来的数据(计算或显示)。所以这么多种物理连接,以统一标准规定的数据包来发送接收,我們编程处理变得相对简单。下面我们来讨论 OBD2 指令。3、这里我们只要关心数据消息包的 7 字节数据(data byte)部分就可以了ISO15031

12、-5 定义:字节 意义1 MODE 代表请求数据的类型2 PID 参数标识3-7 根据不同的 MODE 及 PID ISO15031-5 有详细的定义如上图所示,连接好线路及打开车匙到 ON,不要起动车辆。不用做任何设定,只要你向 TL718 发送指令,TL718 自动返回车辆响应的数据。例 1: 图所示:“0100”代表 ISO15031-5 定义 MODE 01 PID 00 指令。01 0041 00 BF 9F B9 90第 1 个字节 41 代表 Mode 01 (01+40,标准定义) 第 2 个字节 00 代表 PID 003-6 字节是车辆发送回来关于 MODE 01 PID

13、00 请求返回来的数据表示模式 00 所支持其他(PID01-PID32)标识的按位定义的数据 1 代表支持 0 代表不支持。 例 2:请求(读取)发动机水温 MODE 01 PID 05我们只要简单的向车辆发送 0105 指令010541 05 7B41 代表 MODE 01 05 代表 PID 057B 是水温值 10 进制数值是(7*16+11)123 水温是 123-40=80 度例 3:读取发动机转速 rpm MODE 01 PID 0C同样只要向 TL718 发送:010C01 0C41 0C 1A F81AF8 是 2 字节的 16 进制值,转换为 10 进制数是 6904,每格

14、 1/4 rpm转速是 6904/4=1726 rpm注:以上数据的转换,及格式在 ISO15031-5 内有详细定义读 OBD2 故障码 (DTCs Diagnostic Trouble Codes)读故障码是诊断仪最常用的功能,这里只是简单的说明一下,详细内容请查阅 ISO15031-5 文本一般情况下可直接用 MODE 03 读取当前故障码,但这里我们先用 MODE 01 PID 01 读取现在有多少个故障码存在 ECU 内01 0141 01 81 07 65 0441 01 前面已说明是对 MODE 01 PID 01 的响应代码,81 代表当前的故障码数,这个 10 进制数值是 1

15、29,不是代表有 129 个故障码,81 它的最高位 MSB 代表是否点亮故障指灯,低 7 位代表了故障码的数量16 进制算法应是 0x81 所以 81 代表了,故障灯点亮,有一个故障码,81 后面的数据请参考标准文本,和读故障码没有关系。在这个例子中,TL718 只返回了一行数据,但是如果有另外的控制模块也附合响应条件,有可能返回多行信息。比喻常见的:发动机电脑和自动波箱控制电脑同时返回信息,就会有 2 行信息,要确认是哪一个电脑返回的是哪一行信息,必须设置返回 OBD 消息保的三字节头(AT H1 内部命令打开 ),查看消息头字节中的第三个字节(源地址)确定是那个电脑模块返回的消息包。这里

16、先不讨论,在另外章节来详细讨论,多消息包数据。现在已经读了有多少个故障码,下一步读实际的故障码是什么。用 OBD2 诊断模式 MODE 03 读取:只要简单地向 TL718 发送 0303可能的返回信息数据如下:43 01 33 00 00 00 00注:如果故障码数量多于 3 或多个电脑模块,会返回多行消息包,43 是对 MODE 03 请求的响应( 03+40),另外的 6 个字节是故障代码,2 个字节代表一个故障码。这里有 3 个代表故障码的数据: 0133 0000 0000,“0000”是 ISO15031 在这个模式下返回的填充数据不是实际的故障码。故障码含义:ISO 定义:二字节

17、故障码(例 0133)的第一个数如下表所示 现在来分析上面的故障码 0133:第一个数字“0”按上表用“P0”代替。0133 就代表是故障码 P0133。同样如果收到的是 D016 则,“D”用 U1 代替,则故障代码就时 U1016;如果收到是 1131 则代换后,故障代码是 P1131。故障码的定义,详细请看: SAE J2012 - 2002注:ISO15765 CAN 故障码消息包和 J11850、ISO9141 ISO14230 返回的信息有稍不同,编写程序时要注意,ISO 15765 返回的信息第二个数据代表的是电脑模块有多少个故障码(DTCs ),详细看 ISO15031-5 内

18、定义。清除故障代码OBD2 诊断模式 MODE04 是复位 ECU 的一个功能,同时也清触故障代码;执行后 ECU 将:1、复位故障代码的数量为 02、删除所有的故障代码3、删除存储的冻结桢数据4、删除所有 O2 传感器听测试数据5、删除模式 MODE06 和 MODE 07 的数据信息复位后你的汽车由于复位了一些数据,短时间内可能会引起工作异常。为了防止不小心复位 ECU,ISO15031-5 要求所有的扫描工具(诊断仪)在发送 MODE 04 指令前,必须加一个 “确认信息”。TL718 不监视发送信息的内容是否是复位指令。0444发送 04 指令后,车辆 ECU 接收成攻,将立即复位以上

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报