基于MC9S12HZ256的总线式汽车数字仪表设计

2010-07-13 06:01赵云波
电子设计工程 2010年2期
关键词:车速仪表总线

董 浩,王 建,赵云波

(北京航空航天大学 交通科学与工程学院,北京 100191)

汽车仪表经历机械式、电气式、模拟电路电子式和全数字式的发展过程,目前正处在从模拟电路电子式转向全数字式的时期。带CAN总线接口的汽车仪表采集并处理传感器的车速、油量、油压等信号,并根据SAE J1939协议读取发动机转速、水温等信息。该型汽车仪表具有指示精度高、反应灵敏、结构简单、可靠性高等优点,代表汽车仪表的发展方向。

1 CAN总线与SAE J1939协议

1.1 CAN总线与SAE J1939协议简介

控制器局域网CAN(Controller Area Network)是用于众多控制单元、测试仪器之间实时数据交换而开发的一种串行通信协议,CAN2.0包括2.0A和2.0B两部分。CAN拓扑结构为总线式,所以也称CAN总线。SAE J1939协议是以CAN2.0B作为网络核心协议,用于客车、货车、农业及建筑车辆的网络串行通信和控制协议。该协议通过对CAN扩展帧的29位标识符编码,用CAN数据帧封装其数据信息,从而形成独特的编码系统。作为车辆通讯标准,该协议明确规定汽车内部ECU的地址配置、命名、通讯方式以及报文发送优先级等,详细说明汽车内部具体ECU通讯内容。SAE J1939协议标准更大限度地发挥CAN优异的性能,减少线束数量,实现车辆电子设备间高速数据传输。

1.2 SAE J1939协议下CAN通讯报文帧格式

CAN支持4种类型的报文帧传送信息:数据帧(Data Frame)、远程帧(Remote Frame)、出错帧(Error Frame)和超载帧(Overload Frame)。CAN有2类消息帧:标准帧和扩展帧,其本质的差别在于标识符 (ID)的长度,标准帧的ID有11位,扩展帧则有18位[1]。表1为CAN扩展格式数据帧结构。

CAN数据帧分为以下位场:起始场(SOF)、仲裁场、控制场、数据场、循环冗余校验场(CRC)、应答场(ACK)和帧结束(EOF)。控制场由6位组成,包括数据长度码(DLC)和2个保留位r1、r0,在数据帧里这2位必须为显性位。DLC为4位,指出数据场里的字节数目,编码为0~8。循环冗余校验CRC场由15位CRC序列及CRC边界符组成。CRC范围包括帧起始、仲裁场、控制场和数据场。应答场(ACK)长度为2位,包含应答间隙和应答界定符。在应答场中,发送器发送这2位为隐性位。当接收器正确接收到有效报文时,会在应答间隙期间向发送器发送一显性位以示应答。每一数据帧均由7位隐性电平组成帧结束。

J1939协议支持CAN 2.0协议标准,使用扩展帧格式以报文为单位传送信息。协议数据单元(PDU)是J1939协议定义的一个框架,用以组织CAN数据帧中与J1939协议相关的关键信息。 PDU 由优先权域(P)、保留域(R)、数据页域(DP)、PDU格式域(PF)、组成标识符的PDU特定域(PS)和源地址域(SA),以及数据域(Data Field)共 7 个位域组成[2]。这些位域分别对应CAN扩展帧的29位标识符和数据域。其中PS是一个8位段,其定义取决于PF值。若PF值小于240,PS是目标地址 (DA);若PF值在240~255之间,则PS为组扩展(GE)。CAN扩展帧格式和SAE J1939信息帧格式标识符比较如表2所示[3]。PDU的定义并未将CAN帧中的SOF(帧起始)、SRR(替代远程请求)、IDE(识别符扩展)、RTR(远程请求),部分控制域、CRC(校验域)、ACK(应答域)及 EOF(帧结束)等控制域归入,因为这些域已由CAN2.0规范明确定义,并且当OSI模型高于数据链路层时它们是不可见的。

表1 CAN扩展帧格式数据帧结构

表2 CAN扩展帧格式和J1939信息帧格式标识符比较

1.3 SAE J1939协议应用层

应用层定义J1939协议的数据长度、数据类型、分辨率、范围及参考标签等参数,并为每个参数分配1个编号(SPN)。由于J1939协议是以协议数据单元(PDU)的形式传输数据,而1个PDU可传输8个字节数据。所以,需要对参数进行组合传输。J1939应用层协议中定义参数组,并为每个参数组分配一个编号(PGN)作为该参数组的唯一标签。参数组内容包括该组参数的更新率、有效数据长度、数据页、PDU格式、PDU待定、默认优先级以及数据域的具体内容。以电子发动机控制器1(EEC1)为例说明SAE J1939协议标准下的CAN数据帧[4]。J1939对电子发动机控制器 1(EEC1)定义如下:

PGN 61444 电子发动机控制器1

发动机相关参数:

传输循环速度:依发动机转速决定;数据长度:8个字节;数据页:0;PDU 格式(PF):240;PDU 待定(PS):3;默认优先级:3;参数组编号(PGN):61444 (0xF004)

根据SAE J1939协议的定义,参数EEC1的PDU编码应为“0C F0 04 00 XX XX XX XX XX XX XX XX (XX 表示任意数据)”,其中前4个字节为29位标识符,后8个字节为数据域,其中数据域中第4、5字节表示发动机转速。若收到来自发动机控制单元的数据为0C F0 04 00 XX XX XX 5D C0 XX XX XX,根据这2个字节的数值及SPN190中的定义可算得发动机转速[5]:

发动机转速=原始数×分辨率+偏移量=24 000(0x5DC0)×0.125+0=3 000 r/m。

同样,根据J1939的定义还可以计算出汽车仪表所需的其他数据。然后交由仪表ECU处理并驱动显示部件准确显示当前的车辆状态。

2 数字仪表系统设计

该汽车数字仪表系统由信号采集和处理显示等模块组成,图1为应用MC9S12HZ256微控制器的总线式汽车数字仪表组成框图。

图1 汽车数字仪表组成框图

信号采集包含CAN总线数据采集和传感器数据采集。通过模拟量信号分压,脉冲信号滤波整形,开关信号光电隔离,微处理器采集传感器信号,同时通过收发器读取CAN总线信号,然后进行信号处理,再通过控制器驱动步进电机,LCD液晶屏及其他器件。在实际车载环境中,该系统设计遵循SAE J1939协议在CAN总线上获取发动机转速、水温和故障代码信息,车速、油量、机油压力、制动气压等信息则以模拟量和脉冲量形式从相应传感器读取。

2.1 MC9S12HZ256微控制器

MC9S12HZ256是飞思卡尔公司生产的MC9S12系列面向汽车仪表应用的增强型16位单片机微控制器(MCU)。其集成度高,片内资源丰富,功能强大,接口模块包括SPI、SCI、I2C、A/D、PWM等[6]。采用增强型 16位 S12CPU,加入锁相环电路,可产生高于外部晶振频率的时钟信号,片内总线时钟频率最高达25 MHz;具有12 KB RAM、2 KB的EEPROM;2个异步串行通信接口(SCI),1 个同步串行设备接口(SPI),1 个I2C 总线接口(I2C);1个 8通道 16位定时器(TIM),1个 16通道 10位模数转换器 (ATD),1个6通道脉冲宽度调制器(PWM),2个CAN控制器模块(兼容 CAN 2.0 A/B)。 此外,这款MCU还集成1个32×4的液晶驱动模块(LCD)。再有该单片机的背景调试模式(BDM)和CodeWarrior开发环境,使应用该款单片机的总线式汽车数字仪表的外围硬件电路相对简化,开发过程简单、方便。

2.2 步进电机及其驱动

步进电机是将电脉冲信号转换成相应的角位移或线位移的转换器,且其转速或线速度与脉冲频率成正比。步进电机可以用脉冲信号直接进行开环定位控制,无需位置或速度传感器。VID29系列步进电机内置减速比180/1的齿轮系,可工作于5~10 V的脉冲下。在微步模式下,1个脉冲可使转子转动 15°,相应输出轴转动(1/12)°,最大角速度 600(°)/s。 每片VID66-06仪表步进电机驱动芯片可同时驱动4路步进电机以微步模式工作,工作原理如图2所示。每个步进电机只需2路控制信号。在输入信号F(SCX)的上升沿驱动电机输出轴转动 1 个微步,即(1/12)°,输入信号“CW/CCW”(顺时针/逆时针)控制步进电机输出轴转向。

图2 VIDD66-06工作原理

2.3 CAN节点设计

主控器件MC9S12H256集成有支持CAN2.0A/B的CAN控制器,并集成CAN协议的物理层和数据链路层功能,可完成对数据通信的成帧处理,包括位填充、数据块编码、CRC校验和优先级判别等。选用CAN收发器PCA82C250,该收发器适用于汽车中高速(高达1 Mb/s)CAN总线数据传输。设置终端电阻(一般为120 Ω)与CAN控制器与物理总线间的接口,以提升总线的差动发送和接收功能。图3为CAN接口电路。

图3 CAN接口电路

2.4 脉冲信号处理

霍尔式车速传感器的输出信号为矩形波,磁电式车速传感器的输出信号为正弦波,信号频率与车速均成正比。速度信号经处理电路转换为单片机能够处理的矩形波信号,测量车速即测量矩形波频率。

周期法是利用标准时钟信号序列填充被测信号的一个或多个周期,通过计数标准时钟脉冲个数来计算被测信号周期的测量方法[7]。被测信号周期为T,参考时基信号周期为τ,标准脉冲个数为n,被填充的被测信号周期个数为N,则有:

测量误差主要来自2部分:一部分是标准时基的相对误差dτ/τ,由于标准时基是由单片机内部的石英晶振产生的,这部分误差通常在10-6以下,可忽略;另一部分是计数误差dn/n,该误差产生的原理如图4所示。

图4 周期法测量车速信号原理

时基信号序列的最后一个正跳变未处在被填充的被测信号范围内,可产生的最大计数误差为-1。这部分误差在低速时很小,在高速时稍大。以车辆特征系数(车辆行驶每公里里程时速度传感器的转数)为1 320,8脉冲车速传感器为例,标准时基信号周期为50 μs,车速为100 km/h时,最大相对误差为1.47%,车速为180 km/h时,最大相对误差为2.64%。完全符合汽车摩托车仪表标准QC/T727-2004中对车速表误差的基本要求。适当降低时基信号周期τ和高速时增加N值可减小误差。周期法计算车速V:

式中,Z为轮速传感器旋转一周输出脉冲个数;Ω为车辆特征系数,即汽车每行驶1 km轮速传感器的转数。

3 软件设计

主程序流程和读取CAN信息流程如图5所示。该汽车数字仪表主要完成数据采集、数据处理、数值显示以及与上位机通信等功能。本仪表的功能是不断接收信息并进行信息传送、处理、输出显示和报警的循环过程。开机后系统首先初始化主控制器、CAN节点、LCD液晶屏、步进电机,读取EEPROM中数值并使能CAN中断,设置CAN屏蔽码和验收码。接着进入主程序,各步进电机快速回位,指针归零。然后采集外部信号,计算车速、油压等信息并读取CAN总线上的消息队列,根据J1939协议计算判断发动机转速、水温和故障代码信息,处理这些信息并控制步进电机和液晶屏显示。

4 结论

图5 软件设计流程

研究CAN总线通讯协议及SAE J1939协议,实现了基于CAN总线的汽车数字仪表系统设计。软件设计实现了汽车仪表的各项功能。该软件设计充分利MC9S12HZ256微控制器中集成的功能模块,减少外围电路器件用量。该仪表响应快速、定位精确、工作可靠。随着总线技术的日益发展以及相关法规对汽车电子控制要求的提高,基于CAN总线的汽车数字仪表将得到更广泛的应用。

[1]Bosch.CAN specification[S].Version 2.0,Robert Bosch Gmb-H,1991:42-48.

[2]SAE.J1939-21,Data link layer[S].USA:Society of Automotive Engineers,1994-07:3-16.

[3]SAE.J1939,(R)Recommended practice for a serial control and communication vehicle network[S].USA:Society of Automotive Engineers,2005-1:11.

[4]SAE.J1939-71.Vehicle application layer(through December 2004)[S].USA:Society of Automotive Engineers,2006-6:41,493.

[5]王 建,戴方全.SAE J1939协议在汽车仪表中的应用[J].轻型汽车技术,2006(12):7-9.

[6]朱维杰,于湘珍.基于MCS12HZ的智能汽车组合仪表[J].仪器仪表用户,2009(2):46-48.

[7]李 飞.汽车数字仪表总成的研究开发[D].武汉:武汉科技大学,2008.

猜你喜欢
车速仪表总线
◆ 仪表
仪表
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
轮速信号在定速巡航控制中的应用
2012款奔驰R300车修改最高车速限制
跑跑卡丁车
奔驰E260车行驶过程中仪表灯熄灭
北京现代途胜车车速表不工作
多通道ARINC429总线检查仪