CAN在汽车电子中的应用
2013-12-05胡伟宁
胡伟宁
【摘 要】CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。本文以CAN为内容,介绍CAN 总线在汽车电子中的应用。
【关键词】汽车仪表;发展及趋势;设计方案
1.CAN 是什么
CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO*1 国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。
现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。
2.汽车仪表的发展及趋势
按汽车仪表在工作原理上取得的重大技术创新来分,可以划分为4个阶段,或称为经过4代。第1代汽车仪表是基于机械作用力而工作的机械式仪表,人们习惯称这类仪表为机械机心表;第2代汽车仪表的工作原理基于电测原理,即通过各类传感器将被测的非电量变换成电信号加以测量,通常称这类仪表为电气式仪表;第3代为模拟电路电子式;第4代为步进电动机式全数字汽车仪表。
随着计算机技术、电子技术、网络技术以及液晶现实技术的发展,汽车仪表的发展趋势将更加体现这些高新技术的结合。如仪表的功能由软件和硬件共同来完成仪表的功能由软件和硬件共同实现,而且主要是通过软件实现。这对于量大且对成本极为敏感的汽车仪表有特殊意义,因为软件的开发费用分摊到每个仪表上是非常少的。与仅由电子线路硬件组成的汽车仪表相比,带有ECU的汽车仪表,其功能的实现手段更加灵活多样。产品的“柔性”更好,即在推出新款产品时,能最大限度地利用以前产品的硬、软件设计成果仅做少量修改便可,这在产品更新换代很快的今天和未来特别重要。
3.基于CAN总线的汽车仪表设计方案
3.1设计思想
本文利用车辆网络的优势,从CAN总线上采集汽车仪表面板所需要的数据,如车速、水温、燃油、里程等,经处理器处理后进行各种实时控制和显示。不是像传统的仪表面板那样,本设计用液晶显示屏动态显示所采集并用软件处理的数据。这样可以随时根据需要,由软件实现仪表面板的扩充。整体网络具有自诊断功能,降低系统的故障率,同时使用CAN总线方式使得整体系统工作更加及时、准确,提高了安全性、可靠性,更具有智能化和人性化。
由于本设计只是实验性研究以及各汽车总线数据编码的多样性,本设计自行开发了简单的ECU,用于采集车速、燃油、水温、里程等数据。然后由CAN总线通过CAN-PC接口卡接入PC机,再由软件编程来完成从CAN总线采集到的数据动态显示。这里用Visual Basic编程。系统共享娱乐系统、导航系统所用的计算机。作为实验性研究,可由笔记本电脑代替PC机。然后进行各项实验验证,如抗干扰、准确度、工作稳定性、振动的影响、温度的影响等。
3.2系统硬件结构及所用器件
该测试系统由液晶显示器、PC-CAN接口卡、单片机、CAN控制器(SJA1000)、CAN总线发送/接收驱动器(PCA82C250)、和各数据采集系统组成。
专用液晶显示屏用来显示转速、机油压力、水温、燃油消耗等;PC机用来处理CAN总线上的数据并通过软件显示于显示屏上;PC-CAN接口卡完成PC机与CAN之间的通信;自行设计的ECU完成从各传感器采集数据,通过CAN收发器连于CAN总线上。其中的PC-CAN接口卡通过RS232接口或UAB与PC机相连,PC-CAN接口卡再通过总线与自行设计的ECU相连。在实际中PC-CAN接口卡与车辆CAN总线相连,可采集大量数据信息,从而随时可通过软件编程把这些信息在显示屏上动态显示出来。
3.3系统的硬件设计
PC-CAN接口卡选用CAN232智能CAN接口卡,它适合CAN-bus的小流量数据传输应用,最高可达500帧/秒的数据传输速率,提供广泛和强大的软件支持。支持在VC++、C++Builder、Delphi和VB等开发环境下进行设计。该接口卡为用户提供了编程需要的三个文件:CAN232dll.DLL,CAN232dll.LIB,ExportHead.H。
CAN协议控制器选用SJA1000,它是Philips公司生产的适合汽车环境的独立CAN控制器,支持CAN2.0B协议。CAN发送/接收驱动器选用Philip公司的PCA82C250,它是CAN控制器和物理传输线路之间的接口,它可以用高达1Mbits/s的位速率在两条有差动电压的总线电缆上传输数据。
3.4系统软件设计
CAN2.0的分层结构是按ISO/OSI模型对CAN结构的描述。数据链路层又分为逻辑链路层(LLC,Logical Link Control)和媒体访问控制(MAC,Medium Access Control)两个层。LLC层完成下列功能:为数据发送以及以及远层数据请求传送服务;判断是否接受接收到的数据;提供恢复管理和超载处理。
MAC层主要定义了传输协议,包括信息帧格式、仲裁方式、应答信号、错误检测、错误信令和故障限制等。
物理层实现节点间的物理信号的传送,主要定义网络的电气特性。CAN网络中可以采用多种不同的物理层协议。
本研究用VC编程语言实现汽车仪表数据的显示。PC—CAN接口卡自带三个文件CAN232dll.DLL,CAN232dll.LIB,ExportHead.H,其中ExportHead.H描述了动态链接库CAN232dll.DLL所定义的外部函数。如下所示,
void OpenSerialPort(int nPort,unsigned int Baud);
void CAN232Send(unsigned char*sdata,size_t Len);
void CAN232Setting(unsigned char*sdata,size_t Len);
char CAN232Receive(unsigned char*CANReceive);
将接口卡所带的三个文件拷贝在VC目录下,在VC菜单的PROJECT->SETTING中的LINK项下,填入CAN232dll.LIB。然后在程序的头文件中加入“#include ExportHead.H”。
4.结论
本研究只有一个CAN节点,所以显示器所显示的数据只有转速、机油压力、水温、燃油消耗,但是在实际的汽车网络中,通过编程我们可以动态获得CAN总线上的所有信息,并能够以友好的人机界面显示,使车辆信息对驾驶员或乘客透明化。所以基于CAN总线的汽车仪表软件实现是汽车仪表设计的一个新的尝试。