首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于CAN总线技术的汽车仪表软件实现方案

基于CAN总线技术的汽车仪表软件实现方案

关键字:CAN总线 汽车仪表 软件
引言
  随着汽车上的电子装置越来越多,汽车网络应运而生,控制器局域网(CAN,Controller Area Network)开始大量应用与汽车之上。如何利用汽车网络中的信息,以便于司机与乘客了解车辆信息,是一项需要展开的研究。本研究从CAN总线获取汽车仪表板所需的数据,并在液晶显示屏上动态显示,这一系列任务在硬件支持的情况下全部由高级语言编程实现。
1、CAN总线技术
  目前存在多种汽车网络协议,CAN总线技术属于现场总线范畴,CAN是控制局域网络(Control Area Network)的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信,其纵向规范现已被ISO国际标准组织制订为国际标准,由于得到了Philip、Siemence、Motorola、Intel、Fusitu等公司的支持,它已成为国际上应用最广泛的现场总线。它有效支持分布式控制及实时控制,并采用了带优先级的CSMA/CD协议对总线进行仲裁。因此,CAN总线允许多站点同时发送,这样,既保证了信息处理的实时性,又使得CAN总线网络可以构成多主结构的系统,保证了系统的可靠性。另外,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总线的汽车仪表软件实现是汽车仪表设计的一个新的尝试。
返回列表