APP下载

基于通信协议的汽车发动机测速系统

2013-12-01罗洪波

自动化仪表 2013年5期
关键词:通信协议电平字节

罗洪波

(柳州职业技术学院机电工程系,广西 柳州 545006)

0 引言

汽车发动机一般集成了电子控制系统[1](engine electronic control system,EECS),EECS内置了转速测量传感器(如曲轴转角与转速霍尔传感器)。电控系统通过内置传感器测量得到的发动机转速信号来控制发动机的燃油喷射,使发动机工作在最佳工况。电控系统的核心是电控单元(electronic control unit,ECU),其作用是完成各种传感器输入信号的采集和调理,并根据发动机管理控制算法进行运算,输出控制信号给执行部件。ECU中的动力总成控制模块(powertrain control module,PCM)在汽车正常运转时会将转速信号通过传感器记录下来,并将其存储到特定的存储单元中,这样汽车车载网络的其他电子控制单元就可以方便地通过特定的通信协议获取该速度信号。同理,外部诊断设备或扫描工具也可以通过特定接口与ECU进行通信获得该转速信号。

1 通信协议分析

由于汽车内部有多种不同类型的设备电子控制系统,为了实现各系统之间以及内部系统和外部设备之间的通信,相应的汽车网络通信协议相继被制定。按照通信速度,协议大致可以分为三类[2],即A类、B类、C类。A类协议主要面向低速设备(10 kbit/s以下),B类协议主要面向中速设备(100 kbit/s以下),C类协议主要面向高速设备(10 Mbit/s以下)。

1.1 通信协议选取

汽车发动机故障诊断采用的通信协议属于B类协议[3],常用的协议有 ISO 9141、ISO 14230、SAE J1850 PWM、SAE J1850 VPM和CAN。其中,ISO 14230可以看作是ISO 9141的改进,主要被欧州和大多数亚洲汽车生产厂商所采纳。SAE J1850 PWM主要被美国福特公司所采用[4];而SAE J1850 VPM主要被美国通用公司所采用。CAN是一种新的高速通信协议[5],通信实现较为简便,有较大的发展前景,但是其目前在国内汽车发动机中覆盖率还不高。

ISO 14230协议是ISO为开发有效的道路用车诊断系统而制定的,通称为KWP2000[5]。目前,该协议己广泛用于电控发动机的故障诊断工具开发。KWP2000主要用于电控系统的在线故障诊断,它因传输快捷可靠、便于实现、对软硬件的要求不高的优点而被各发动机制造商广泛地应用于电控发动机的故障诊断、实时监控和匹配标定系统的开发。

1.2 KWP2000 通信协议

KWP2000串行通信协议在启动通信后,会返回2 B信息来指示系统所支持的报文格式,这2 B信息被称为关键词。它依据开放性系统互连(open system interaction,OSI)基本参考模型[6],但只定义 OSI参考模型的物理层、数据链路层和应用层这3个子层。

1.2.1 物理层

KWP2000物理层遵循ISO 9141-2中物理层的规定[6],可以提供12 V或24 V电压。它规定车辆可采用汽车诊断连接头中的单通信数据线(仅有K线)或双通信数据线(K线和L线)方式连接至外围诊断工具。K线为双向数据线,用于通信和初始化,采用一根信号线完成半双工异步通信;L线为单向数据线,仅用于初始化,在除初始化以外的其他时间里总是处于逻辑“1”的空闲状态。KWP物理层的信号电平和容差范围如图1所示。

图1 信号电平和容差范围示意图Fig.1 Signal level and the tolerance range

ISO 9141-2规范使用标准的不归零编码(nonreturn-to-zero,NRZ)作为传输格式,当总线处于逻辑“1”状态时,图1中的信号电平保持为高电平,不会出现回零负跳变。当总线处于逻辑“1”状态时必须满足输出电平不低于电源电压UB的80%,输入电平不低于UB的70%;逻辑“0”状态时必须满足输出电平不高于UB的20%,输入电平不低于UB的30%。

当ECU处于逻辑“1”状态时,其K线和地之间存在一个相对地的电阻,其阻值约为50 kΩ;当ECU处于逻辑“0”状态时,其K线和地之间也存在一个相对地的电阻,其阻值不超过110 Ω。外部设备若与ECU通信,总线需设置阻值为510 Ω的上拉电阻,安放在外围诊断设备或测量设备内部。

1.2.2 数据链路层

①传输字节格式

数据传送时每字节低位在前,每个字节由起始位、8位数据位、停止位组成,没有奇偶校验位,通信波特率为 10.4 kbit/s。

②数据帧格式

KWP2000协议的消息由消息头、数据字节和校验和这3部分组成,其结构如图2所示。

图2中,Fmt代表帧头,Tgt代表ECU的物理地址或功能地址,Src代表诊断测量设备的物理地址,Len代表数据字节长度,Datai代表传输的数据,Sid代表服务标志符,CS代表累加求和校验值[6],上标1表示该字节是由返回关键字决定的可选字节,上标2表示该部分字节长度是可由帧头Fmt或数据字节长度Len设定。

③定时间参数的约定

数据报和数据字节之间有着严格的定时参数约定[6],数据流的一般定时参数约定如图3所示。

图3 一般定时参数约定示意图Fig.3 General timing parameters

图3中,P1代表响应帧字节间的定时参数,P2代表请求帧与响应帧间的定时参数,P3代表响应帧与请求帧间的定时参数,P4代表请求帧字节间的定时参数。

④ECU的激活方式

ECU有快速激活和5 Baud激活两种激活方式。由于5 Baud激活需要延时2 s以上,速度较慢,因此,一般采用快速激活方式,具体如图4所示。

图4 快速激活方式定时示意图Fig.4 Timing of fast activation method

1.2.3 应用层

应用层主要是规定扫描工具以何种数据报格式请求通信服务[7],同时 ECU以何种报文格式响应。KWP2000协议中,不同通信服务功能通过数据帧中第一字节的服务标志符Sid来表示。通信服务主要分为两大模块:通信模块和诊断模块。通信模块包括通信管理、数据传送、上传/下载这3个功能。通信管理在数据链路层已作说明,数据传送服务功能单元主要用来读取数据记录,访问存储器。常用的通信服务请求及响应消息定义如表1所示。

表1 常用通信服务标志符Tab.1 Common identifier of communication services

2 测速系统设计

2.1 系统方案设计

发动机测速系统根据功能需求,主要分为电源模块、显示模块、通信接口模块、指示模块、按键模块、单片机最小系统模块和ISP编程模块,其具体实现框图如图5所示。

图5 发动机测速系统框图Fig.5 Block diagram of engine speed measuring system

简易汽车发动机测速系统需要具备的特点是体积小、成本低、测速方便、易于扩展。因此,选用低成本51单片机作为测速系统的控制核心。MCS-51系列在我国使用广泛且能够兼容的外围芯片较多,其典型产品 AT89S52单片机具有较高的性能价格比[8]。AT89S52采用CMOS工艺制作,是80C51的增强型并且指令完全兼容。由于发动机ECU总线接口采用的电平形式为特定的K线电平,而单片机支持的电平形式为TTL电平,为了与ECU电平兼容,需要设计相应的通信接口模块进行电平转换和通信方式转换。发动机转速测量值采用高亮度数码管来显示,并以相应的指示灯进行电源上电指示和通信状态辅助指示。由于测速系统功耗很低,因此可以通过总线接口中的电源线从汽车蓄电池窃电,汽车蓄电池电压一般为12 V,而单片机的工作电压为5 V,可以通过12 V/5 V的直流电源适配模块实现电压变换。为了实现在应用中不拔插单片机就能实现程序的下载,系统编程接口采用在系统中编程(in system programming,ISP)方式来实现。

2.2 通信接口设计

K线有与单片机通信的专用接口芯片[8],如MC33290、L9637、MC33190。由于专用芯片购买比较困难,价格也比较高,因此需自行设计通信接口模块来实现电平变换。通信接口模块的主要功能是通过4个NPN型三极管实现K线电平和单片机TTL电平的转换[9],具体实现电路如图6所示。

图6 通信接口模块电路图Fig.6 Circuit of the communication interface module

由于K线在数据链路层上的通信数据格式(1位起始位、8位数据位、1位停止位)和51单片机串行通信接口的数据格式完全兼容,因此单片机串行通信接口可采用AT89S52的UART串行通信接口实现。

3 软件实现

通信模块是测速系统中最关键的一个模块。通信模块需要完成通信初始化、ECU唤醒、开始通信帧发送、数据传输通信帧发送、停止通信帧发送、响应帧接收和转速计算以及相应的错误处理和通信指示功能。

通信初始化主要是对串口进行一些通信设置工作和一些现场保护工作。通信初始化首先需进行串口波特率的设置,根据通信链路数据格式的需求,串口工作方式选择为方式1(10位异步收发),波特率采用由定时器1 控制方式[10],波特率为10.4 kbit/s,单片机晶振fosc为6 MHz。同时,将电源控制寄存器PCON最高位SMOD置1,使得波特率增倍。串口波特率产生方式设置为工作模式2(自动重装入8位计数值),定时器1计数值X可以通过下式计算得到:

式中:M为SMOD;fosc为晶振频率;B为串口所设置的波特率。

串行通信接口必须能工作在普通I/O口模式和串行通信接口模式两种接口模式。激活模式要求串口通信接口中的TXD必须设置为I/O模式,通过直接对I/O的操作,输出激活时序(快速激活方式或5 Baud激活方式),然后将串行口配置为异步通信模式,等待接收。快速激活方式采用先延时300 ms并从TXD输出高电平,然后输出25 ms低电平,再输出25 ms高电平,延时采用软件精确延时的方式。5 Baud激活采用延时的方式,以每隔200 ms发送一个位的方式发送功能数据33H,具体做法是按 200 ms延时,依次发送0110011001H。

终止通信数据帧的服务标志符Sid=82H,则终止通信数据帧为C133 F18267。如果能正确终止通信,则发出正响应帧,其格式为81 F1 ECUid C2 CS;否则,返回负响应帧,其格式为83 F1 ECUid 7F ERRcode 82 CS。整个通信中断程序流程图如图7所示。

图7 通信服务程序框图Fig.7 Block diagram of the communication service routine

开始通信数据帧的服务标志符Sid=81H,采用3 B的头数据帧,地址方式为功能地址,开始通信数据帧(采用十六进制)为C133 F18166。若ECU已经成功激活且开始通信命令正确,ECU则会发出正响应帧,其格式为81 F1 ECUid C1 KeyWord(2 B)CS,其中ECUid为ECU物理地址,KeyWod为通信参数关键字,CS为累加校验和。如果开始通信命令错误或ECU正忙,则发出负响应帧,其格式为 83 F1 ECUid 7F ERRcode 81 CS,其中ERRCode为错误类型代码。

在怠速状态下,数据通信采用输入输出方式测量发动机转速,服务标志符Sid=30H,则通信数据帧为C333 F13032014A。如果通信正常,ECU发出正响应帧,其格式为84 F1 ECUid 703201 SpeedCode CS,其中SpeedCode代表发动机转速字节码;若发送命令错误或ECU正忙,则发出负响应帧,其格式为83 F1 ECUid 7F 30 ERRcode CS。转速n的计算公式为:

式中:S为将SpeedCode转换为十进制对应的数值。

4 系统调试与验证

测速系统的调试与验证通过对汽车发动机怠速状态下最优怠速转速进行测量和调整实现。亚欧系汽车提供的汽车故障诊断测试接口OBD-II,一般都通过K线和KWP2000通信协议进行汽车发动机及其他部件的故障检测。将发动机测速系统通过K线连接发动机ECU,并通过ODB-Ⅱ中的蓄电池电源给测速系统供电。测速系统插上诊断测试接口后,测速系统发出激活时序和开始通信命令,发动机ECU发出正响应,返回通信关键字;测速系统根据关键字完成通信系统参数设定,同时点亮绿色通信指示灯,表明系统已经连接上发动机ECU。发动机ECU和测速系统建立通信之后,则启动汽车发动机,并将其调整到怠速状态,此时数码管立即显示怠速状态下的转速,并通过手动调整风门开度的大小和怠速供油量等方式来调整怠速转速高低,直到调整到发动机不抖动时的最低转速。此时的转速为最佳怠速转速。如果通信传输故障或ECU发出负响应,则通信故障指示红灯亮;如果通信过程中没有数据响应,则数码管全显示0,绿灯和红灯都不亮。

5 结束语

系统可以通过特定的接口与汽车ECU进行通信,可以方便地进行汽车故障诊断,实时地监测汽车的工作状况如测量发动机的转速,并可以通过特定的命令帧来控制汽车发动机的运转如调整怠速状态下发动机转速等。

由于时间限制,本系统只能测量转速,且只支持KWP2000协议,测速方式也只支持怠速状态。后续工作还可以通过程序发送其他类型的请求帧,进而支持多种方式测取转速;同时可以对系统加以改进,使其不仅能测速,还能进行转速控制。为了提高系统的通用性,还可以设计多通信接口方式,使其支持OBDII所有的诊断通信协议。显示装置若采用LCD液晶屏显示方式来实现,还可以完成故障码的显示,从而为汽车故障诊断提供强有力的依据。

[1]胡思德.汽车车载网络技术详解[M].北京:机械工业出版社,2006:21-63.

[2]过锡隽.KWP2000诊断通信模块的开发[J].江南大学学报:自然科学版,2007(6):543-586.

[3]林元新,杨明付,董加凤.KWP2000通信协议与读码器工作原理[J].汽车电器,2008(1):321-326.

[4]苏荣艳.基于SAE J1850通信协议的汽车发动机故障诊断与测试[D].上海:上海交通大学,2005.

[5]余刚.基于CAN总线的车身网络实验平台设计研究[D].广州:广东工业大学,2010.

[6]International Organization for Standardization.ISO 142301999 Road vehicles diagnostic systems keyword protocol 2000[S].Switzerland:ISO Copyright Office,2000.

[7]International Organization for Standardization.ISO 150312004 Road Vehicles Communication between vehicle and external equipment for emissionsrelated diagnostics[S].Switzerland:ISO Copyright Office,2004.

[8]俞卫芳.汽车电控系统通信模块的研制[D].南京:江苏大学,2005.

[9]秦曾煌.电工学下册(电子技术)[M].北京:高等教育出版社,1999:103-108.

[10]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2005:37-62.

猜你喜欢

通信协议电平字节
No.8 字节跳动将推出独立出口电商APP
三电平PWM整流器下的地铁牵引供电系统探讨
基于Wireshark的列控中心以太网通信协议解析器的研究与实现
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击
三相三电平PFC(VIENNA)控制策略研究
车载网络通信协议标准化问题研究
三电平H桥逆变器差模干扰源研究
电动汽车充电接口及通信协议新国标发布
人类进入“泽它时代”