汽车诊断技术及常用协议(培训)

更新时间:2024-07-04 07:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

汽车诊断技术及常用协议介绍

(XTool内部资料)

目 录

第一章 汽车诊断技术 ........................................................................................................................ 3

1. 汽车电控自诊断系统的产生 ................................................................................................ 3 2. 汽车电控自诊断系统的工作原理 ........................................................................................ 3

2.1 自诊断的原理与故障运行 ......................................................................................... 4

2.2 电控自诊断系统故障代码的读取 ............................................................................. 6 3. OBD II随车诊断系统相关知识........................................................................................... 6

3.1 诊断座位置形状及接脚定义 ..................................................................................... 7 3.2 故障码类型定义 ......................................................................................................... 7 3.3 OBD II系统的监测功能 ............................................................................................ 8 第二章 常用协议介绍 ...................................................................................................................... 9

1. KWP 2000协议 ..................................................................................................................... 9 2. ISO-9141-2协议.................................................................................................................. 11 3. PWM协议 ........................................................................................................................... 12

4. VPW协议 ............................................................................................................................ 14 5. BOSCH协议 ....................................................................................................................... 16 6. CAN BUS协议 ................................................................................................................... 18

1. 汽车电控自诊断系统的产生

第一章 汽车诊断技术

随着汽车电子化控制的不断采用,带来了新的问题。一方面,汽车电控系统日趋复杂,给汽车维修工作带来了越来越多的困难,对汽车维修技术人员的要求越来越高;另一方面,电子控制系统的安全容错处理,汽车不能因为电子控制系统自身的突发故障导致汽车失控和不能运行。针对这种情况,汽车电控技术设计人员,在进行汽车电子控制系统设计的同时,增加了故障自诊断功能模块。它能够在汽车运行过程中不断监测电子控制系统各组成部分的工作情况,如有异常,根据特定的算法判断出具体的故障,并以代码形式存储下来,同时启动相应故障运行模块功能,使有故障的汽车能够被驾驶到修理厂进行维修,维修人员可以利用汽车故障自诊断功能调出故障码,快速对故障进行定位和修复。因此,从安全性和维修便利的角度来看,汽车电控系统都应配备故障自诊断功能。自1979年美国通用汽车公司率先在其汽车电控系统中采用故障自诊断功能后,世界上的各大汽车厂商纷纷效仿,在各自生产的电控汽车上都配备了故障自诊断功能。故障自诊断功能,已经成为新车出厂和维修厂故障检测不可缺少的重要手段。

1993年以前的电控汽车的故障自诊断系统自成体系,不具有通用性,且种类繁多,不利于用统一的专用仪器,给汽车的售后服务和维修工作造成了很大不便。这种自诊断系统,按照美国标准称为第一代随车自诊断系统(OBD-I)。1994年美国汽车工程师协会(SAE)提出了第二代随车自诊断系统(OBD-II)的标准规范。只要各汽车制造厂执行该规范,其诊断模式和诊断插座,便可得到统一。该系统的自诊断模块不仅能够解决汽车电控系统的安全性和存储汽车记忆故障,还能够实时提供汽车各传感器和开关的运行参数(即我们所说的数据流)和对执行器进行动作测试等功能。美国规定,96年以后在美国生产和销售的汽车必须装备第二代随车自诊断系统(OBD-II)。目前新的第三代随车自诊断系统(OBD-III)也已经在酝酿之中,它比第二代更完善,更全面。估计在不久将来会付诸实施,被各汽车制造商所采用。 2. 汽车电控自诊断系统的工作原理

当今的计算机控制系统非常复杂。为了诊断这些系统而使用计算机控制以前的方法将耗费无尽的时间。为此,大多数发动机的计算机控制都有自诊断能力。进入一种自测模式,计算机能够评定整个电控系统的运行,包括它本身。如果发现故障,它们或者被标识成硬故障(按需要),或者间断性故障。每种类型的故障或者错误都指定一个保存在计算机存储器里的数字故障代码。

硬故障指的是自测时在系统某个地方发现的故障。另一方面,周期性故障表明有故障发生(例如,接触不良造成周期性的断路或者短路),但这个故障自测时并不出现。永久性RAM允许周期性故障存储起来直到特定数量的点火开关断开/闭合循环次数。如果这段期间内,故障不再出现,它就会从计算机存储器里被删除掉。

有许多种不同方法来确定计算机产生的故障代码。大多数生产厂家有用来监控和测试它们车辆的电子元件的诊断仪器。售后服务公司也生产能够读取和记录经过计算机的输入和输出信号的检测工具。另一种读取故障代码的方法是使用模拟电压表。还有一些车辆通过仪表板灯闪烁代码或直接显示在CRT屏幕上。

在进行自诊断或者读取故障代码之前,作一次外观检查,以确定故障不是由于磨损,连接松动,真空软管松开而造成的。检查空气滤清器节气门或喷油系统。不要忘记PCV系统以及真空软管。确定蒸发碳罐没有浸满。查看线路配线、接头、充电和交流电机系统。并且检查接头有无腐蚀的痕迹。现代的电路中的低压信号不能容许由于接头腐蚀而引起的电阻增加。

随着电子技术的发展,单片计算机由于其体积小、成本低、可靠性高等显著优点,在汽车电子控制中得到了越来越广泛的应用:使汽车在动力性、经济性和排污控制以及舒适性等方面都有了极大的提高。然而,由于汽车控制的电子化,给汽车故障的诊断维修工作带来了越来越多的困难,对汽车维修技术人员的要求越来越高。在这种情况下,汽车电控技术人员,根据计算机不但可以进行测试、控制,而且可以利用软件程序很方便地进行判断,在进行电子控制系统设计的同时,增设系统故障自诊断功能和故障运行功能。自诊断功能就是利用ECU监视电子控制系统各组成部分的工作情况,发现故障后自动启动故障运行程序,不仅可以保证发动机在有故障的情况下可以继续行驶,而且还可以向驾驶员和维修人员提供故障情况,便于使用者及时发现和排除故障。

自诊断功能的出现,使电控汽车的维修变得比以前更简单,深受用户的欢迎。自1979年美国通用汽车公司在汽油喷射系统中使用自诊断以后,汽车几乎所有采用微机的控制系统都增设了故障自诊断功能。下面从自诊断的原理与故障运行、故障代码的读取方法等几个方面来介绍利用自诊断功能进行电控汽车故障诊断的技术原理。

2.1 自诊断的原理与故障运行

汽车正常运行时,电子控制单元ECU的输入、输出信号的电压值都有一定的变化范围。当某一信号的电压值超出了这一范围,并且这一现象在一段时间内不会消失,ECU便判断定为这一部分出现故障。ECU把这一故障以代码的形式存入内部随机存储器(RAM),同时点亮故障检查灯(如CHECK ENGINE,SRS,ABS等指示灯),这就是故障自诊断的基本原理。当某电路产生了故障后,其信号就不能作为发动机的控制参数而使用。

为了维持发动机的运转,ECU便从其程序存储器(ROM)中,调出某一固定值,作为发动机的应急参数,保证发动机可以继续运转。当ECU中的微机系统出现故障时,ECU自动启用后备控制回路对发动机进行简单控制,使汽车可以开回家或是到附近的汽修厂进行修理,这样的功能就是故障运行,又称“跛行”模式。另一方面,当ECU检测到某一执行器出现故障时,为了安全起见,采取一些安全措施。这种功能叫做故障保险。

ECU故障诊断是针对系统中的传感器、微机系统和执行器而进行的。当传感器和微机发

生故障时,往往采取故障运行方式。而当执行器发生故障时,往往采取故障保险方式。

2.1.1

传感器的故障自诊断与故障运行

由于传感器本身就是产生电信号的,因此,对传感器的故障诊断不需要专门的线路,而只需要在软件中,编制传感器输入信号识别程序即可实现对传感器的故障诊断。水温传感器的正常输入电压值为0.3-4.7V,对应的发动机冷却水温度为-30-120℃。所以,当ECU检测到的电压信号超出此范围量,如果是偶尔一次,ECU的诊断程序不认为是故障。但如果不正常信号持续一段时间,则诊断程序即判定冷却水温传感器或者其电路存在故障。ECU将此情况以代码(此代码为设计时已经约定好的代表水温传感器信号异常故障的数字码)的形式存入随机存储器中。同时,通过检查发动机警告灯“CHECK ENGINE”,通知驾驶员和维修人员,发动机电控系统中出现故障。当ECU发现水温传感器不正常后,便采用一个事先设定的常数来作为水温信号的代用值,使系统工作于运行状态。6

2.1.2

微机系统的故障自诊断与后备回路

微机系统如果发生故障,控制程序就不可能正常运行,微机处于异常工作状态。这样便会使汽车因发动机控制系统故障而无法行驶。为了保证汽车在微机出现故障时仍能继续运行,在控制系统工程中,设计有后备回路(备用集成电路系统)。当ECU中微机发生故障时,ECU自动调用后备回路完成控制任务,进入简易控制运行状态,用固定的控制信号,使车辆继续行驶。由于该系统只具备维持发动机运转的简单功能而不能代替微机的全部工作,所以此后备回路的工作又被称为“跛行”模式。采用备用系统工作时,故障指示灯亮。微机工作是否正常是由被称为监视回路的电路进行监视的。监视电路中安装有独立于微机系统之外的计数器。微机正常运行时,由微机的运行程序对计数器定时进行清零处理。这样,监视电路中计数器的数值是永远不会出现溢出现象的。当微机系统出现不正常运行现象时,微机不能对这个计数器进行定时清零,致使此监视计数器发生溢出现象。监视计数器溢出时输出的电平由低电平变为高电平(此输出一般为计数器的进位标志。当计数器达到其最大值时,再增加一个记数脉冲,计数器便出现溢出。此时,计数器的溢出端的电平将由低电平变为高电平;同时,将计数器请零)。计数器输出电平的这一变化,将直接触发备用回路。备用回路只按照起动信号和怠速触点闭合状态,以恒定的喷油持续时间和点火提前角对喷油器和点火器进行控制。

2.1.3

执行器的故障诊断和故障保险

汽车电子控制系统中,执行器是决定发动机运行和汽车行驶安全的主要器件,当执行器发生故障时,往往会对汽车的行驶造成一定的影响。因此,对于执行器故障的处理方法通常是:当确定为执行器故障时,由ECU根据故障的严重程度采取相应的安全措施的实施,在控制系统中,又专门设计了故障保险系统。

由于ECU对执行器进行的是控制操作,控制信号是输出信号。因此,要想对各执行器的工作情况进行诊断,一般要增设故障诊断电路,即ECU向执行器发出一个控制信号,执行器要有一条专用回路来想ECU反馈其执行情况。发动机电子控制系统中,对执行器进行故障诊断的典型部件是点火器。正常情况下,当ECU对点火器进行控制时,点火器每进行一次点火,便由点火器内的点火确认电路将点火执行情况以电信号的形式反馈给ECU。当点火线路或点火器出现故障时,ECU发出点火控制命令后,得不到反馈信号,

此时ECU便认为点火器已经不能正常工作。由于发动机工作时,如果点火系统发生故障,便会使未燃烧的混合气进入排气装置和排气管道。排气净化装置中的催化剂温度就会大大超过允许值。同时,未燃烧的混合气在排气管内集聚过多,还会引起排气系统的爆炸。为此,采用故障保险系统,当ECU接收不到点火确认信号后,立即切断燃油喷射系统电源,停止燃油的喷射。

2.2 电控自诊断系统故障代码的读取

汽车电控系统的故障内容多以代码形式存储于自诊断系统电控单元的RAM存储器中。读取代码可以利用随车自诊断系统或者外部诊断设备。

利用随车自诊断系统读取代码的方法因汽车制造厂不同而有所不同,大致有四种: ? 利用仪表板上故障指示灯的闪烁规律读取 ? 利用万用表指针的摆动规律读取

? 利用电控单元上红、绿发光二极管的闪烁规律读取 ? 利用车上的检测器读取

读取出来的故障代码通过查阅故障手册来获得相关的详细解释,以确定具体的故障内容进而指导维修人员来进行维修。

利用随车自诊断系统读取代码的方法通常是目测闪烁的方式,所以被称之为闪光码。闪光码是早期诊断汽车电控系统的主要方式,但随着诊断技术的不断发展,闪光码诊断方式已经不能满足现代汽车电控技术信息量的需求,外部诊断设备逐步成为汽车诊断技术的主流。

利用外部诊断设备读取故障码和电控单元存储信息

现代电控汽车故障自诊断系统都备有诊断座(DLC),外部诊断设备通过和诊断座连接就可以读出汽车控制电脑内部的故障码,这种方法直观,一目了然。早期的汽车自诊断系统可能有各自的诊断座,这样必须连接相应的诊断座才能读出该系统内存储的故障码。1996年后由美国SAE规定了统一的标准OBDII随车诊断系统,该系统规定了统一的诊断座位置,接脚定义和故障码定义,而且各系统控制电脑间通过数据总线连接,因此只要通过一个诊断座就可以读出所有系统的故障码。OBDII随车诊断系统还提供了读取各传感器动态数据流,开关和执行器的工作状态,并且外部设备还可以发出指令让执行器作相应的动作。

进行故障诊断时,在读出故障代码后,还可以对相关的传感器进行读取数据流操作及对执行器进行动作测试,这对故障做出全面的正确的分析与判断很有帮助。 3. OBD II随车诊断系统相关知识

OBD II(On Boarding Diagnostic)是由美国汽车工程师协会(SAE)提出的汽车自诊断系统的标准规范。下面从诊断座、故障码类型定义及监测功能等几个方面来介绍OBDII的相关知识。

3.1 诊断座位置形状及接脚定义

装备OBD II系统的汽车有统一的16pin诊断座,一般位于仪表板下方或者方向盘附近,形状如下图所示,而且各pin脚已经被SAE作了规定。

接脚定义 Pin 1 2 3 4 5 6 7 8

3.2 故障码类型定义

OBD II系统的故障码也做了统一的规定,由5个字节组成,第1个为英文字母,第2个到第5个为数字码,定义如下表: P0 P1 P2 P3 C0 C1 C2 C3 B0 B1 B2 B3 U0 U1 U2 U3

定义 供制造厂使用 SAE-J1850资料传输 供制造厂使用 车身接地 信号回路搭铁 供制造厂使用 ISO-9141资料传输 供制造厂使用 Pin 9 10 11 12 13 14 15 16 定义 供制造厂使用 SAE-J1850资料传输 供制造厂使用 供制造厂使用 供制造厂使用 供制造厂使用 ISO-9141资料传输 接蓄电池正极 引擎变速箱电脑控制系统由SAE统一制定的故障码 引擎变速箱电脑控制系统由厂家各自制定的故障码 引擎变速箱电脑控制系统预留故障码 引擎变速箱电脑控制系统预留故障码 底盘电脑控制系统由SAE统一制定的故障码 底盘电脑控制系统由厂家各自制定的故障码 底盘电脑控制系统预留故障码 底盘电脑控制系统预留故障码 车身电脑控制系统由SAE统一制定的故障码 车身电脑控制系统由厂家各自制定的故障码 车身电脑控制系统预留故障码 车身电脑控制系统预留故障码 网路连接相关故障码 网路连接相关故障码 网路连接相关故障码 网路连接相关故障码

P01XX P02XX P03XX P04XX P05XX P06XX P07XX P08XX P09XX P00XX P01XX P11XX P12XX P13XX P14XX P15XX P16XX P17XX P18XX P19XX P10XX

燃油和空气侦测系统 燃油和空气侦测系统 点火系统 废气控制系统 车速怠速控制系统 电脑控制系统 变速箱控制系统 变速箱控制系统 SAE预留故障码 SAE预留故障码 以后有厂家自行制定的一部分 燃油和空气侦测系统 燃油和空气侦测系统 点火系统 废气控制系统 车速怠速控制系统 电脑控制系统 变速箱控制系统 变速箱控制系统 SAE预留故障码 SAE预留故障码 3.3 OBD II系统的监测功能

装备OBD II计算机系统具有发现部件和系统故障的能力,而OBD II的计算机系统具有探测部件和系统的能力、,以维持很低的排放水平。

具有OBD II能力的计算机系统与以前的计算机系统大体相似,只不过PCM模块中增加了范围广泛的监测系统和策略。

OBD II系统主要有以下监测器: ? ? ? ? ? ? ? ?

催化剂效率监测器 发动机缺火监测器 燃油系统监测器

加热型氧传感器监测器 综合部件监测器

燃油蒸发排放系统监测器 二次空气喷射监测器 排气再循环监测器

第二章 常用协议介绍

随着汽车电控技术的发展,使用外部诊断设备来读取汽车电控单元中存储的故障码以及通过和电控单元直接对话来获得数据流信息或者执行元件测试变得越来越普遍,成为最流行的诊断技术方式。这些与汽车电控单元的直接对话,就需要通信协议的支持。在本章中,将对常用的协议进行介绍。 1. KWP 2000协议

KWP 2000协议是最常用的通信协议之一,是属于OBD II标准协议的一种。KWP系统又称为关键字协议,因为这种协议在系统进入时,会涉及到关键字的校验而得名。下面从物理层特性、系统进入、帧结构、命令交互、交互时间参数、常用命令字等几个方面来介绍这种协议。

? 物理层特性:通常采用10416BPS的波特率;空闲电平通常为12V;数据位格式为

1+8+1,没有校验位。

? 系统进入初始化:有两种初始化方式。第一种由设备先发送25ms的拉低电平,然后

是25ms的高电平(空闲电平),然后再发送系统进入数据,系统进入数据通常为5个字节,ECU响应7个字节,完成系统初始化交互。请参见下图: 设备 ————>

25ms 25ms |<—————数据区————>| <—————ECU |<———————数据区————————>|

图 2-1-1

第二种初始化方式为设备发送5BPS或者200BPS的地址码,ECU响应55H,KW1,KW2,设备对KW2取反发回给ECU,ECU对地址码取反发回给设备,完成系统初始化交互。其中55H这个字节用来规定后面的通信波特率。参见下图

Tool——> <— <— <— —> <— ECU

ADD 55H Kw1 Kw2 /Kw2 /ADD 图 2-1-2

? 帧结构:命令头(1个或多个字节)+命令体(1个或多个字节)+校验(通常为和校

验)。

在命令头中,包括以下几个部分的内容:格式+目标地址+源地址+长度字节。长度信息有时候在格式字节中体现,则不需要另外的长度字节,长度信息用以表示命令体的内容;目标地址和源地址有时候也会没有。

命令体的内容中:命令字+命令内容。命令内容可以没有。 举例如下:

81H 11H F1H 81H 04H

第一个字节81H为格式+长度信息(80+1) 第二个字节11H为目标地址 第三个字节F1H为源地址

第四个字节81H为命令字,表示系统进入 最后一个字节04H为前面4个字节的校验和 同样,也可能表现如下:(命令字) 80H 11H F1H 01H 3EH C1H 这种情况下,长度字节放在源地址之后 还可能表现为:

02H 1AH 9AH B6H

这种情况下,格式字节和目标地址源地址都已经没有了

还有一种特殊的情况,在上一种情况的基础上,在帧数据之前,加一个00,例如: 00H 02H 1AH 9AH B6H 但这种帧结构的情况极少。

? 命令交互:命令交互通常情况下为1对1,但也存在1对多或者多对1的情况。下面

是一组命令交互举例:

Tools: 81H 31H F1H 81H 24H

ECU: 83H F1H 31H C1H E9H 8FH DEH 在交互中,因为发送命令的对象不一样,所以目标地址和源地址是进行了互换;同时,ECU响应设备的命令字在设备命令字的基础上+0x40。 ? 交互时间参数:包括4个时间参数,如下:

设备发送命令字节间的时间间隔P1,通常为5ms ECU返回命令字节间的时间间隔P2,通常为0ms

设备发送完一帧命令后等待ECU响应的时间P3,通常为75ms~90ms

设备接收到ECU响应后到发送下一帧命令的时间P4,通常为20ms~26ms ? 常用命令字:

系统进入:81H 系统退出:82H 链路保持:3EH 读故障码:18H 清除故障码:14H 读版本信息:1AH 读数据流:21H

2. ISO-9141-2协议

ISO-9141-2协议是最常用的通信协议之一,也是属于OBD II标准协议的一种。下面从物理层特性、系统进入、帧结构、命令交互、交互时间参数、常用命令字等几个方面来介绍这种协议。

? 物理层特性:空闲电平通常为12V;数据位格式为1+8+1,没有校验位;使用的波特

率通常为10416BPS和9600BPS两种。

? 系统进入初始化:ISO协议采用地址码进入方式,先使用5BPS发送地址码,ECU响

应55H,KW1,KW2,设备对KW2取反发回给ECU,ECU对地址码取反发回给设备,完成系统初始化交互。其中55H这个字节用来规定后面的通信波特率。参见下图:

Tool————> <— <— <— —> <— ECU

ADD 55H Kw1 Kw2 /Kw2 /ADD T1 |<->| T2 |<->|T3|<->|T4|<->| T5 |<->| T6 |<->| T7 图 2-2-1 其中: T1 ≥ 300 ms

60 ms ≤ T2≤ 300 ms 5 ms ≤ T3 ≤20 ms 0 ms ≤ T4 ≤ 20 ms 25 ms ≤ T5 ≤ 50 ms 25 ms ≤ T6 ≤ 50 ms 55 ms ≤ T7 ≤ 5000 ms

? 帧结构:帧头(3个字节)+数据(最大为7个字节)+校验(通常为校验和)。数据

帧有两种:命令帧和响应帧。命令帧由Tools发出,响应帧是ECU对命令帧的响应。帧头结构如下图:

帧头字节1 帧头字节2 帧头字节3 源地址 F1H 28H Priority/Type 目标地址 6AH 6BH Request(Tools->ECU) 68H Response(ECU->Tools) 48H

图 2-2-2

数据区包含传送的数据。对于命令帧,DATA区是命令字节及命令参数;对于响应帧,DATA区是命令响应及响应的数据。

校验是校验字节,为前面字节的累加和,包括帧头和数据区。

? 命令交互:命令交互通常情况下为1对1,但也存在1对多或者多对1的情况。下面

是一组命令交互举例:(注意:不是简单地交换目标地址和源地址) Tools: 68H 6AH F1H BEH 81H

ECU: 48H 6BH 28H FEH 31H 32H 33H 40H 42H 43H 34H 蓝色版本信息 在命令中,目标地址是固定的;ECU响应设备的命令字在设备命令字的基础上+0x40。 ? 交互时间参数:包括4个时间参数,如下:

设备发送命令字节间的时间间隔P1,通常为5ms-20ms,取6ms; ECU返回命令字节间的时间间隔P2,通常为0ms

设备发送完一帧命令后等待ECU响应的时间P3,为25ms-50ms,一般取30ms;

设备接收到ECU响应后到发送下一帧命令的时间P4,通常为55ms-5000ms,一般取60ms。

? 常用命令字:

系统退出:20H 读故障码:03H 清除故障码:14H 读版本信息:BEH 读数据流:B1H 3. PWM协议

SAEJ1850 PWM协议也是OBD II标准中的一种,通常应用在FORD车系汽车中,已知的还有JAGUAR,MAZDA。PWM英文全称是Pulse Width Modulation,即脉宽调制。下面从物理层特性、帧结构、命令交互、交互时间参数、常用命令字等几个方面来介绍这种协议。

? 物理层特性:波特率为41.7kbps;线路物理特性:双线,双向,半双工(差分信号)。

通信电平通常为12V。数据位描述,位1见图2-3-1,位0见图2-3-2:

图2-3-1

图2-3-2

时间参数定义如下: TP1:常规为8us,取值范围,在发送命令中7<=TP1<=9,在接收命令时,6<=TP1<=11 TP2:常规为16us,取值范围,在发送命令中15<=TP1<=17,在接收命令时,14<=TP1<=19

TP3(一个位的时间长度):常规为24us,取值范围,在发送命令中23<=TP1<=25.5,在接收命令时,22<=TP1<=27

图2-3-3是MAZDA原厂设备IDS系统进入命令的一部分波形

图2-3-3

? 帧结构:命令头(3个字节)+ 数据区(命令) + CRC校验。一帧命令最长为12个字

节。

在命令头中,包括以下几个部分的内容:格式字节(C4H)+目标地址+源地址。 请参见图2-3-4和图2-3-5

图2-3-4

图2-3-5

TP4:SOF(帧起始标志)时间,常规为48us,取值范围,发送时47<=TP4<=51,接收时46<=TP4<=63

TP5:EOF(帧结束标志)时间,常规为72us,取值范围,发送时70<=TP5<=76.5,接收时TP5》=70

命令体的内容中:命令字+命令内容。命令内容可以没有。 举例如下:

C4H 10H F5H 13H C7H 第一个字节C4H为格式

第二个字节10H为ECU目标地址 第三个字节F5H为Tools源地址

第四个字节(PID,功能号)13H为命令字,表示系统读码 最后一个字节04H为前面4个字节的校验和

? 命令交互:命令交互通常情况下为1对1,但也存在1对多的情况。下面是一组命令

交互举例: Tools: C4H 10H F5H 22H 11H 00H 3BH

Ecu: C4H F5H 10H 62H 11H 00H 09H FFH 00H 00H 6AH 在交互中,因为发送命令的对象不一样,所以目标地址和源地址是进行了互换;同时,ECU响应设备的命令字在设备命令字的基础上+0x40 注:无链路保持。 ? 常用命令字:

读故障码:13H 清除故障码:14H 读数据流:22H 读版本信息:1AH 4. VPW协议

SAE J1850 VPW协议也是OBD II标准中的一种,通常应用于GM车系中。VPW英文全称是Variable Pulse Width Modulated,即可变脉宽调制。下面从物理层特性、电平接口、帧结构、命令交互、交互时间参数、常用命令字等几个方面来介绍这种协议。 ? 物理层特性:

采用10.4KB/S的波特率;通讯电平通常为7.5V;每个字节采用8位二进制数形式,没有起始位、停止位和校验位;通讯引脚为J1850 BUS+,既为OBD-2PIN。 ? 电平接口:

协议通讯采用10.4Kbps VPW方式,初始电平为0V,在第1帧数据前有一个163至239

微秒(us)的高电平表示SOF(帧头即数据开始标志),接下来以不同长短的高低电平表示二进制数据0或1,其中:

高电平宽度介于34-96us表示“1”,高电平宽度介于96-163us表示“0”, 低电平宽度介于34-96us表示“0”,低电平宽度介于96-163us表示“1”,

传输时按字节顺序,且每个字节都是高位在前,低位在后的顺序,高低电平相间用于表示传输的数据,字节与字节之间没有间隔,传送完一帧数据之后有一个宽度大于239us的低电平表示EOF(帧尾即帧结束标志)。 ? 帧结构:

GM车型中的帧结构:(通用车型)

Tools: 0x6C + ECU地址 + 设备地址 + Fun_ID + (command information) + CRC ECU: 0x6C + 设备地址 + ECU地址 + Fun_ID + (command information) + CRC OBDII中的帧结构: Tools: 0x68 + 0x6A + ECU地址 + Fun_ID + (command information) + CRC ECU: 0x48 + 0x6B + 设备地址 + Fun_ID + (command information) + CRC

ECU地址为每个系统的标示号,设备地址一般为0xF1或0xF0;而Fun_ID为不同功能的标示号,ECU响应的Fun_ID在tools命令的基础上+0x40;CRC(循环冗余校验)为校验字节。

? 命令交互:命令交互通常情况下为1对1,但也存在1对多或者多对1的情况。下面

是两组命令交互举例:(ECU地址10H,设备地址F1H) GM:

Tools: 6CH 10H F1H 20H 64H 红色为命令字 ECU: 6CH F1H 10H 60H 72H OBDII:

Tools: 68H 6AH F1H 01H 00H 17H

ECU: 48H 6BH 10H 41H 00H BEH 3FH B8H 10H C9H (10H与28H的区别) 在交互中,因为发送命令的对象不一样,所以目标地址和源地址是进行了互换;同时,ECU响应设备的命令字在设备命令字的基础上+0x40 ? 交互时间参数:

设备发出命令后到ECU应答命令的时间间隔为320微秒(us)到100毫秒(ms)。 ECU应答命令后到设备发下一条命令的时间间隔为320微秒(us)到100ms。 如果设备或ECU同时发送多帧命令时,每帧之间的时间间隔为3到5ms。 同一帧命令中的字节与字节之间无时间间隔。 ? 常用命令字:

GM车型中的常用命令字:

系统进入:20H 数据流设置:2CH 数据流读取:2AH 读故障码:19HH 清除故障码:14H 读版本信息:3CH OBD II中常用命令字:

读数据流:01H 读故障码:03H

清除故障码:04H 读版本信息:09H

5. BOSCH协议

BOSCH协议是BOSCH公司开发的一种通信协议,符合ISO9141标准。下面从物理层特性、系统进入、帧结构、命令交互、交互时间参数、常用命令字等几个方面来介绍这种协议。

? 物理层特性:空闲电平通常为12V;数据位格式为1+8+1,没有校验位。本协议的波

特率在进入系统后确定。确定方法如下: 进入系统时,Ecu接到Tools以5bps的波特率发送的地址码后,向Tools发送 0X55H,Tools通过计算0X55H的波特率,并把此波特率做为Tools的通讯波特率,并且在整个通讯过程中,波特率固定不变。 ? 系统进入初始化:

本协议使用K、L的方式通讯,因此,需要用K线和L 线进行触发,唤醒ECU,进入系统,具体步骤如下:

? Tools在K、L线上同时以5bps的波特率发送地址码,以进入地址码所对应的系

统。

? 关闭L线;

? Tools等待接收Ecu回送0X55H,接到后计算出0X55H的波特率并设置通讯波率; ? Tools继续接收Ecu发送的Keyword 1和Keyword 2,在接收到Keyword2后,延

时20ms将Keyword2取反发回给ECU。

? 在整个系统进入过程中Tools接收一个byte最长等待时间为2s。若系统进入有

错误必须保证通讯线上有3s的时间无任何数据传输,确保Ecu已经是睡眠状态,再按以上步骤重新触发,进入系统。

? Ecu接收到求反的 Keyword2后,将发送第一帧系统信息,并在收到链路保持命

令继续(03h,xxh,09h,03h)时按顺序发送其它系统信息。 ? 系统信息的解释与读取系统版本信息同。 ? 系统初始化请见下图:

Tool K线———> <— <— <— —> ECU

ADD 55H Kw1 Kw2 /Kw2 Tool L线———>

ADD 关闭

图2-5-1

? 帧结构:

长度 记数字节 命令字 数据区 结束标志03H 长度:1个字节,表示本命令中长度字节后跟随的字节数。

记数字节:命令计数器,1个字节,每一条命令都会在上一条命令的命令记数字节基础上加1,作为本次通信数据的命令记数值,以保证接收发送的连续性校验。 命令字:1个字节,表明所要做的操作。 数据区:附加信息,若干字节不定。

结束标志:固定以03H为Request命令的结束符。 举例如下:

04H 01H 29H 01H 03H 第一个字节04H为长度信息 第二个字节01H为命令计数器

第三个字节29H为命令字,表示读取数据流

第四个字节01H为附加信息,表示读取通道01的数据 (可省略) 最后一个字节03H为结束标志

? 命令交互:在命令交互过程中,接收方每接到一个byte,就立即取反发回,直到接

收到结束标志为止(注:结束标志0x03不取反发回)。一旦接到结束标志,接收方则可以开始下一帧命令的发送。基本交互模型下图:

Tools: 03H 01H 09H 03H /03H /02H /09H Ecu: /03H /01H /09H 03H 02H 09H 03H

图 2-5-2

实际命令如下:

Tools:03H 01H 09H 03H ECU: 03H 02H 09H 03H

? 交互时间参数:包括4个时间参数,如下:

ECU返回keywod2与设备发送/keyword2的时间间隔:40ms

设备接收到ECU命令字到发送命令字取反的时间间隔:2ms 设备发送命令字到ECU发送命令字取反的时间间隔:2ms

设备发送完一帧命令后等待ECU响应的时间,通常为75ms~90ms 设备接收到ECU响应后到发送下一帧命令的时间,通常为20ms~26ms ? 常用命令字:

链路保持:09H 读故障码:07H 清除故障码:05H 读版本信息:00H 读数据流:29H

系统退出:06H

6. CAN BUS协议

CAN BUS(Controller Area Network)即控制器局域网,是国际上应用最广泛的现场总线之一。起先,CAN BUS被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。

CAN BUS是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN BUS仍可提供高达5Kbps的数据传输速率。由于CAN串行通讯总线具有这些特性,它很自然地在汽车电子行业中受到广泛应用。

下面从与我们工作相关的物理层特性、帧格式、命令交互等三个方面来介绍CAN BUS协议。

? 物理层特性:可分为单线CAN协议和双线CAN协议。单线CAN协议目前主要出现

在GM车系里面,1号脚通讯,波特率为33.3K。双线CAN协议常见的波特率有500K(6/14)、250K(6/14)和125K(3/11),括号内为通讯脚位。单、双线CAN协议的命令交互格式基本一致。 ? 帧格式:

CAN2.0A(重点掌握)标准帧为11个字节,包括信息和数据两部分,前3个字节为信息部分。 字节1 字节2 字节3 字节4 字节5 字节6 字节7 字节8 字节9 字节10 字节11 7 FF 6 RTR ID.2-ID.0 5 x 4 x x x 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据8 3 2 1 0 DLC 数据长度 x x x 报文识别码 ID.10-ID.3

字节1 为帧信息 第7位FF 表示帧格式(在标准帧中FF=0,在扩展帧中FF=1)

第6位RTR 表示帧的类型(RTR=0表示为数据帧 RTR=1表示为远程帧) DLC 表示在数据帧时实际的数据长度 字节2-3 为报文识别码11位有效

字节4-11为数据帧的实际数据,远程帧时无效 命令帧示例:

Tools: 08H FCH 00H 03H 19H 02H FFH 00H 00H 00H 00H (标准数据帧、长度为8) ECU : 08H FDH 00H 10H 0FH 59H 02H FFH 01H 80H 00H

我们在工作中使用模拟工装采集的以及模拟通讯时看到的命令是上面的格式,但其中

报文识别码FC 00(我们常说的系统过滤ID)是不准确的,应该右移5位,即0x7E0才是真正的报文识别码。通常情况下,标准CAN协议的响应帧报文识别码就是请求帧的报文识别码加上8,即0x7E8,左移5位后就是我们所看到的FD 00。

CAN2.0B扩展帧信息为13个字节,包括信息和数据两部分,前5个字节为信息部分。 字节1 字节2 字节3 字节4 字节5 字节6 字节7 字节8 字节9 字节10 字节11 字节12 字节13

ID.4-ID.0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据8 7 FF 6 RTR 5 x 4 x ID.20-ID.13 ID.12-ID.5 x x x 3 2 1 0 DLC 数据长度 报文识别码 ID.28-ID.21 字节1 为帧信息 第7位FF 表示帧格式(在标准帧中FF=0,在扩展帧中FF=1) 第6位RTR 表示帧的类型(RTR=0表示为数据帧 RTR=1表示为远程帧)

DLC 表示在数据帧时实际的数据长度 字节2-5 为报文识别码其高29位有效

字节6-13 为数据帧的实际数据,远程帧时无效 命令帧示例:

Tools: 88H C6H D0H 87H 88H 03H 19H 02H FFH 00H 00H 00H 00H(扩展数据帧8) ECU : 88H C6H D7H 88H 80H 10H 0FH 59H 02H 01H FFH 01H 00H

我们在工作中使用模拟工装采集的以及模拟通讯时看到的命令是上面的格式,但其中报文识别码C6 D0 87 88(我们常说的系统过滤ID)是不准确的,应该右移3位,即18H DAH 10H F1H才是真正的报文识别码,移位后可以清楚地看到后面两个字节就是目标地址(ECU地址)和源地址(设备地址),通常情况下,响应帧的报文识别码只需要

把目标地址和源地址交换位置即可,如18H DAH F1H 10H。

? 命令交互:

CAN协议的主要命令交互形式有发1帧回1帧、发1帧回多帧、发多帧回1帧及发多帧回多帧,下面分别举例说明。 发1帧回1帧:

Tools: 08H FCH 00H 03H 19H 02H FFH 00H 00H 00H 00H CAN2.0A ECU : 08H FDH 00H 04H 59H 02H FFH 01H 80H 01H 00H

第一个字节的低4位表示除报文识别码的两个字节外其他字节的长度,第四个字节03表示后面有效数据的长度。

发1帧回多帧:

Tools: 08H FCH 00H 03H 19H 02H FFH 00H 00H 00H 00H CAN2.0A ECU : 08H FDH 00H 10H 0FH 59H 02H FFH 01H 80H 00H

Tools: 08H FCH 00H 30H 00H 00H 00H 00H 00H 00H 00H 流控制帧

ECU : 08H FDH 00H 21H FFH 01H 79H F1H E3H 01H 62H 蓝色为有效数据 ECU : 08H FDH 00H 22H F1H FFH 00H 00H 00H 00H 00H

发出第一条请求帧后,如果响应帧的第四个字节高四位大于0,则表示回多帧。响应帧的有效数据长度为0x100F&0x0FFF=0x0F,表示有15个有效数据的回复帧。设备紧跟着发送流控制帧Tools: 08H FCH 00H 30H 00H 00H 00H 00H 00H 00H 00H来接收下面的有效回复数据,这个流控制帧在不同的车上可能会不一样。 发多帧回1帧:

Tools: 08H FCH 00H 10H 09H 01H 02H 03H 04H 05H 06H CAN2.0A ECU : 08H FDH 00H 30H 00H 00H 00H 00H 00H 00H 00H 流控制帧

Tools: 08H FCH 00H 21H 07H 08H 09H 00H 00H 00H 00H ECU : 08H FDH 00H 04H 59H 02H FFH 01H 80H 01H 00H

发第一条请求帧的时候,如果请求帧第4个字节高四位大于0,则表示发多帧,发送的命令数据长度有第4,第5个字节一起决定,在这里数据长度为9,这时候ECU响应0x30的流控制帧,Tools继续发送请求帧,蓝色为有效数据,发送完后,ECU响应正确的命令回复。 发多帧回多帧:

Tools: 08H FCH 00H 10H 09H 01H 02H 03H 04H 05H 06H

ECU : 08H FDH 00H 30H 00H 00H 00H 00H 00H 00H 00H 流控制帧 Tools: 08H FCH 00H 21H 07H 08H 09H 00H 00H 00H 00H

ECU : 08H FDH 00H 10H 0FH 59H 02H FFH 01H 80H 00H

Tools: 08H FCH 00H 30H 00H 00H 00H 00H 00H 00H 00H 流控制帧 ECU : 08H FDH 00H 21H FFH 01H 79H F1H E3H 01H 62H ECU : 08H FDH 00H 22H F1H FFH 00H 00H 00H 00H 00H 在这种情况下的交互,将发1帧回多帧和发多帧回1帧结合就可以了。需要注意的是,对于不同的ECU,由于细微协议的区别,在对于通过流控制帧来发送或接收剩余数据是不一样的,有的时候会通过一条流控制帧将所有数据一次收完,有时候则是采用1对1的方式。

本文来源:https://www.bwwdw.com/article/lan.html

Top