APP下载

基于OBD-II的嵌入式汽车故障诊断仪设计

2013-02-26

电子与封装 2013年6期
关键词:字节报文故障诊断

赵 静

(上海交通大学,上海 200240)

1 引言

汽车作为一种高科技产品,近年来智能化程度越来越高,相应地,当汽车出现故障时维修也越来越复杂。现代汽车诊断技术,主要是利用先进的汽车诊断仪器和设备,采集汽车的各种动态信息,并对这些信息进行在线或离线分析和处理,以便发现和确认其异常表现,预测其发展趋势,查明其发生原因、发生部位和严重程度,并针对性地提出维修措施和处理方法的技术。

OBD是车载诊断系统(On Broad Diagnostic System)的缩写,作用是在车辆尾气排放超标或出现故障时,点亮故障指示灯(MIL)向驾驶员报警,同时记录一个故障码(DTC)。借助故障诊断仪,维修人员可以读出OBD系统保存的故障代码及其他车辆信息,为诊断故障节约大量人力物力。

2 OBD-II的背景

OBD如上文所述,即车载自诊断系统,已发展到了第三代,OBD-I、OBD-II和OBD-III分别是与之对应的各代系统。OBD-I系统是世界各个汽车制造厂商根据车型自行设计的诊断插座和自定义故障码的系统,缺乏统一标准,各系统之间无法通用,检测能力差。OBD-I已被更新的OBD-II所取代。

OBD-II是一套扩展的标准和惯例,它由SAE(Society of Automotive Engineers,美国汽车工程师协会)开发,EPA(Environmental Protection Agency,美国环境保护局)认证通过并于1989年正式公布。根据《美国联邦大气清洁法》,要求美国49个州的车辆自1996年起一律采用OBD-II,并于1999年严格执行。根据欧洲排放法规,自欧洲III号排放法规开始,所有的车辆必须装备OBD-II。国内目前在用的是相当于欧洲III号法规的国III标准,新的国V标准正在研究、制定,OBD-II在未来国内的排放法规中,也将成为必须遵守的标准[7]。

OBD-II具有严格的排放针对性。当车辆的HC、CO、NOx或燃油蒸发污染量超过美国联邦试验过程(FTP)所规定废气排放值的1.5倍时,发动机故障灯(MIL)点亮,提醒驾驶员排放超标,车辆需要修理。

OBD-II在线诊断系统一个最大的特点就是统一了数据传输协议和诊断模式。但OBD-II标准中并不止规定了一种通信协议,而是统一了应用最广泛的几种协议,分别是:ISO15765(CAN BUS)、ISO9141、ISO14230(KWP2000)、SAE J1850(VPW/PWM)。SAE J1979标准属于应用层协议,与具体的数据链路层无关。该协议可以在ISO 9141、SAE J1850、CAN BUS及KWP2000的数据链路层上运行。SAE J2190协议是SAE J1979协议的扩展,该协议定义了扩展协议的框架部分,并没有定义具体的内容,这个扩展的框架协议主要用于汽车厂商自定义的诊断开发。OBD-II采用遵循SAE J1962标准的16针通信接口,通信的速率在5~16 kbps之间[1]。

本文设计的汽车故障诊断仪基于SAE J1850协议,应用层协议遵循SAE J1979。以下针对SAE J1850做具体介绍。

3 SAE J1850协议[5]

在J1850数据传输网中有两种编码方式,脉宽调制编码方式(Pulse Modulation, PWM)和可变脉宽调制编码方式(Variable Pulse Modulation, VPW),它们所采用的编码方式不同,因此有着不同的物理层,但应用层和数据链路层相同。

3.1 SAE J1850应用层

(1)常规操作报文

在非诊断模式下传输的报文叫做常规操作报文。常规操作报文是用来建立发送者到接收者之间通信的。具体在SAE J2178中有详细规定,也有一部分是汽车制造厂商自行定义。

(2)诊断报文

由于J1850数据传输网络具有故障诊断功能,因此存在诊断报文。在SAE J1979中规定了诊断设备从汽车ECU获得诊断数据的诊断模式及报文格式。同时在SAE J2012中规定了大量满足不同车型的汽车故障代码,另外有一部分故障代码由各个汽车制造厂商自行规定。

(3)报文过滤

报文过滤的目的是为了减轻节点和总线的负荷。由于在J1850数据网络中使用了多种地址策略,在报文过滤的时候就必须进行多字节核对以确定报文的目标地址。

3.2 SAE J1850数据链路层

在J1850数据网络中应用了两种地址策略,分别服务于不同的任务。

(1)物理地址

网络中的节点在进行报文交换时,是基于节点的物理地址的,每一个节点都必须有一个网络中唯一的物理地址。当总线上引入了新的节点时就需要采用物理地址策略。车外诊断设备的接入便是这种情况。

(2)功能地址

功能地址允许基于功能的报文在网络中多个节点直接传输,总线上的各个节点都被分配了一系列功能,如报文的发送和接收。当通信需求对节点的物理位置并不关心且节点可以在不同模式间切换的时候,就可以采用功能地址。

J1850的报文结构由帧头、数据和CRC校验位组成。协议规定了两种帧头,单字节帧头和三字节帧头,如图1所示为单字节帧头,图2所示为三字节帧头。

图1 J1850报文中的单字节帧头

图2 J1850报文中的三字节帧头

数据通常按照以下格式传输:Idle,SOF,DATA_0,…,DATA_N,CRC,EOD,NB,IFR_1,…,IFR_N,EOF,IFS,Idle。

其中各元素定义如下:

Idle:总线空闲,任何节点都可以占用总线发送数据;

SOF:帧起始标志,不计入CRC码;

DATA_N:报文数据;

EOD:数据结束标志,数据帧发送方用EOD表示数据发送结束;

NB:标准位,仅在VPW中有效;

EOF:帧结束标志;

IFR:帧内快速应答;

IFS:帧内分割标志;

CRC:CRC错误校验位。

3.3 SAE J1850物理层

J1850数据传输网的传输介质可以有单线和双线两种。使用PWM编码方式时,采用双线制传输,通信速率为41.6 kbps。采用VPW编码方式时,采用单线制传输,通信速率为10.4 kbps。双线可以使等距并行线或者是双绞线。对于布线没有特殊的约束,但是每一个节点都必须有合适的电源和接地。J1850协议规定网络的最大节点数为32个,包括车内ECU和车外诊断设备。车内最大网络长度40 m,车外最大5 m。具体有关SAE J1850物理层数据位和数据符号的编码方式,请参阅SAE J1850协议[5]。

4 基于OBD-II的故障诊断仪设计

4.1 系统硬件设计

本文所述故障诊断仪,基于嵌入式系统设计。MCU采用Atmel公司的MEGA16单片机,结合外围液晶显示、键盘输入等外设,可以实现与汽车ECU之间基于SAE J1850的通信,读取和清除汽车故障码,可检测车型主要为通用和福特。系统硬件框图见图3。

图3 系统硬件框图

为了实现与汽车ECU之间的PWM/VPW通信,需要经过接口电平调理电路。图4所示为PWM/VPW接口电路。

图4中,在使用J1850 PWM协议时采用双线制,从J1850bus+和J1850bus-上接收到的信号经过比较器LM339的处理,可变为单片机可识别的脉冲信号。该脉冲信号由PWM in端输入单片机外部事件捕获脚上。PWM信号的发送由单片机输出引脚J1850+和J1850-完成。在没有信号输出的情况下,总线上保持隐性位,此时这两个引脚都应保持高电平,J1850bus+和J1850bus-上的差模电压为-5 V。当J1850+和J1850-都输出低电平时,J1850bus+便输出显性位(高电平),J1850bus-上也为显性位(低电平),此时两者之间的差模电压为+5 V,这样总线上便完成了一个由隐性位到显性位的跳变。

在使用J1850 VPW时采用一线制,发送时与PWM方式相同。在接收时,J1850bus+上的电压输入到比较器LM339的同向输入端,经过比较后,脉冲信号由输出端VPWin送入单片机另一个外部事件捕获源。

4.2 软件设计

在SAE J1979中,规定了九种诊断模式用以获取不同类型的诊断数据。本文介绍的故障诊断仪的软件设计主要运用了其中的模式三和模式四,分别为获取与排放相关的诊断故障码,以及清除或置位与排放相关的诊断信息。本设计的软件结构图如图5所示。

(1)启动程序设计

当故障诊断接通车辆诊断接口后, 将车辆点火钥匙置于ON 位置,车辆对诊断仪进行供电。诊断仪上电后在单片机MEGA16控制下开始设置诊断仪的各项初始参数。故障诊断仪初始化结束后开始向车辆诊断接口发送SAE J1850协议确认数据。如果在某确认中接收到正确的应答,则确认通信使用该协议。如果发送后确认命令没有应答或应答为无,则重复发送确认命令。如果连续5次循环发送的确认命令依然没有得到正确应答,故障诊断仪发出错误警告。

图4 PWM/VPW接口电路图

图5 软件设计流程图

(2)单片机监控程序设计

单片机监控程序用于监视键盘输入,并根据相应的输入完成单片机与车辆ECU之间的通信。该监控程序主要由两个模块构成,即读取DTC模块和清除DTC模块。SAE J1979提供9种诊断服务,即Service$01-$09[2]。单片机监控程序主要使用其中的读取DTC服务Service$03和清除DTC服务Service$04。读取DTC的过程为:根据键盘输入,建立单片机与ECU的通信,并根据Service$03定义的诊断数据格式,单片机向ECU发出读取DTC的请求,ECU响应并回传DTC数据后,单片机将接收到的DTC数据显示在LCD液晶显示屏上。ECU回传的诊断故障码DTC由2个字节构成,DTC在LCD上显示时,第1个字节的前2位表示DTC的类型——“00”表示P(Power train)类故障;其余分别表示C(Chassis)类、B(Body)类和U(Network)类故障。第1个字节的3、4位构成0~3的数字。第1个字节的后4位、第2个字节的前4位和后4位分别转换为16进制。当车辆故障排除后,应清除DTC。DTC的清除过程为:根据键盘输入,建立单片机与汽车ECU的通信,并根据Service$04定义的诊断数据格式,单片机向ECU发出清除DTC的请求,含有DTC的ECU响应请求并清除DTC。

(3)诊断服务

本设计中,除了通过液晶显示发送的诊断命令及接收到的故障码外,利用单片机MEGA16扩展了一个串口,用于从PC机的串口工具发送诊断命令以及把接收到的故障码传回PC机进一步处理。这样做的好处是可以把以MEGA16为核心的接口板作为下位机,只需要完成数据传输及接口电平转换功能,把故障码的解析及显示功能交给PC机来处理,利用PC机强大的软件功能开发更为直观的操作界面。

4.3 系统验证

本系统可以完成对于被测车辆的故障码、数据流甚至是实时波形的获取。相比市场上别的故障诊断仪,具有操作简单、诊断效率高的特点。以读取冻结帧为例,如图6中所示,选取“读取冻结帧数据”选项,可以看到如图7所示的汽车ECU中存储的冻结帧数据。

图6 诊断仪功能选择界面

5 小结

本文通过对SAE J1850通信协议的物理层、数据链路层、应用层的分析,结合了硬件设计、串行通信、软件编程等技术,开发了基于SAE J1850通信协议的汽车故障诊断系统。本系统遵循OBD-II的9种诊断模式,基于SAE J1850实现了与汽车ECU之间的通信,可以获取及清除汽车ECU中的故障代码,验证了基于嵌入式系统汽车故障诊断仪的低成本设计方案。此外,在本文的设计基础上可以进一步加入其他几种OBD-II的通信协议,使之可以兼容大部分车型。随着我国OBD的有关法规要求的逐步实施,该诊断仪软硬件设计具有广泛应用前景。

图7 ECU中的冻结帧数据

[1] SAE J1962. (R) Diagnostic Connector [S]. 2002.

[2] SAE J1979. (R) E/E Diagnostic Test Modes [S]. 2002.

[3] SAE J1978. OBD II Scan Tool [S]. 2002.

[4] [美] Roy S. Cox .汽车第二代车载诊断系统OBD-II的解析[M]. 北京: 机械工业出版社,2007.

[5] SAE J1850. B级数据通讯网络界面[S]. 2001.5.

[6] SAE J2012. Recommended Practice for Diagnostic Trouble Code Definitions [S]. 2002.

[7] GB18352.3-2005. 轻型车辆污染物排放限值及测量方法(中国III、IV阶段) [S] . 北京: 国家环境保护总局和国家质量监督检验检疫总局. 2005.

猜你喜欢

字节报文故障诊断
基于J1939 协议多包报文的时序研究及应用
基于包络解调原理的低转速滚动轴承故障诊断
No.8 字节跳动将推出独立出口电商APP
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
No.10 “字节跳动手机”要来了?
数控机床电气系统的故障诊断与维修
简谈MC7字节码
ATS与列车通信报文分析
因果图定性分析法及其在故障诊断中的应用