一种基于CAN总线的车辆虚拟仪表数据采集系统设计
1 引言 现在总线技术有很多种。从成本上讲,RS-232/485的成本都比CAN低;速度上讲,工业以太网等也都不错。为什么唯独CAN在汽车电子中得到亲睐? 从成本上来说,CAN比UART、RS-232/485高,但比以太网低;从实时性来说:CAN的实时性比UART和以太网高,为了保证安全,车用通信协议都是按周期性主动发送,不论是CAN还是LIN,对实时性要求高的消息其发送周期都小于10ms(每辆车都有好几条这样的消息),发动机、 ABS和变速器都有几条这样的消息;从可靠性来说,CAN有一系列事故安全措施,这是UART和以太网都不具备的,多点冗余也是UART(点对点传输)和工业以太网(数据传输距离短)难于实现的,所以CAN出现后,由于价格的原因,最初应用得最多的地方并不是汽车,而是对成本不敏感的工业控制和医疗设备,如:工业上的DEVICENET、SDS、CANOPEN,医疗上MRI等。至于工业以太网的产生,其背景与个人PC的普及是分不开的,现在工业控制中的 PCBASED就是一个例子,但汽车控制是不能用一台PC的,要达到汽车控制的要求,成本上也不容许。而LIN的传输过程只有20Kbps,显然不能作为独立的汽车总线控制要求,一般它只配合CAN在汽车上做辅助之用。 车辆是一个特殊的应用环境,车辆自动化程度的不断提高给车辆仪表提出了更高的要求,传统的动磁式仪表已经越来越不适应现代智能交通工具发展的需要,而虚拟仪表因其具有交互、智能和便于扩展等特点而受到广泛重视。本课题要求为某车设计一套虚拟仪表,上位机采用基于RTOS开发环境的PC104嵌入式微机。车辆环境数据采集系统作为虚拟仪表的一个最重要的子系统,要求完成数据的采集和通信功能,而且具有较高的适时性和可靠性。本文根据作者体会介绍了用 Philips公司的高性能单片机P80C592设计车辆数据采集系统的方法,重点介绍了系统设计和CAN通信编程。 2 系统简介 根据设计要求,本系统主要完成传感信号的处理以及车辆的工况数据采集并将数据通过CAN总线送上位机,要求处理16路模拟信号、4路频率信号和 32路扩展 IO信号,采集参数主要有:发动机机油压力、水温、油温、转速、车速、变速箱油压、油箱油量以及电网电压、车门状态、转向灯指示、车体超宽指示以及车内环境示警等,信号的形式有电压、频率、以及开关量信号,信号频率范围为0~ 6KHZ. 2.1 系统硬件结构设计 图1给出了系统硬件结构图。系统采用的核心器件为Philips公司的8位高性能微控制器P80C592,它与标准80C51完全兼容,其主要特性有:内建能与内部RAM进行DMA数据传送的CAN控制器;4个捕获端口和2个标准的16位定时/计数器;8路模拟量输入的10位ADC变换器;2×256字节在片RAM和一个Watch Dog.P80C592的在片CAN控制器可以完全实现CAN协议,减少了系统连线,增强了诊断功能和监控能力。数模转换器件选用12位的 AD1674A,分辨率为0.02%,转换时间为25uS.为了提高系统抗干扰能力,在模-数电路之间和系统到CAN总线之间采用了光电隔离,并且将模拟电路和数字电路分别设计成两块独立的PCB板,两板通过栈接组成一个完整的系统。 硬件工作过程:温度、压力以及电压信号,经相关处理电路送至16路模拟开关MAX306EP,经电压跟随电路输入AD1674A进行A/D转换,为了提高可靠性和稳定性,系统没有采用微控制器的在片ADC变换器。在程序控制下对16路信号顺序选通,采集得到的数据在CAN控制器内完成CAN协议包的封装,由发送端口经光电隔离和发送器传送到CAN总线上。油量信号经光电隔离、整形和分频后送P80C592的捕获端口进行频率测量,转速车速信号经整形后被分为两路,一路经分频电路去单片机捕获端口,另一路经F/V转换后送ADC采样。对ADC和I/O扩展端口的访问通过GAL译码器的编程逻辑输出来控制。 2.2 频率信号测量 频率信号测量是本系统的一个设计难点,在本课题中,对于不同的车型所选用的传感器不同,因此对转速和车速频率信号的处理可以有两种方法:一是当选用输出频率范围为0-100HZ的接触式传感器时,采用CS289频压转换芯片,将频率信号转换成2.2~7.2V的电压信号然后送ADC采集;二是当选用输出信号频率范围为0~3000HZ的非接触式传感器时,通过单片机捕获端口用脉冲计数的方法进行频率测量。为提高系统的通用性,可以同时采用了这两种方法,具体采用哪一种方法得到的数据通过上微机软件设定。 CS289是美国Cherry公司生产的单片高精度专用转速测量芯片,在-400至 850温度范围内都能有很好的线性输出。它不仅可以用于 F/V、V /F转换,还可以用作函数发生器以及动磁式仪表驱动。由其构成的F/V转换电路外围元件少,调试容易,工作稳定可靠。图2所示,整形后的转速脉冲信号经滤波网络和限幅输入CS289第10脚,电压信号由第8脚输出,经滤波消除可能的工频干扰后送采样电路。本电路中,输出电压和输入频率的关系由下式决定:上位机据此线性关系解算出频率值。为保证F/V变换具有足够高的线性度,应合理选取的值。 3 系统软件设计 系统软件主要完成三项任务:1、传感器信号的采样与解算;2、上位机请求数据时将采集的数据传送给上位机;3、接收到上位机自检命令时,上传数据完成传感器信号到标准信号的切换。程序流程如图3所示。 主程序采用模块化编程。具有故障自诊断功能是虚拟仪表的重要特征之一,为此数据采集系统中设计了3组标准信号,分别是频率信号、电压信号和电阻信号,自检模块的主要功能是:当接收到上位机发出的自检命令后,微控制器断开传感器输入,标准信号被接入数据采集系统,将得到的数据上传到上位机与标准值进行比较,以确定故障点是传感器系统还是数据采集系统,若自检通过则表示数据采集系统工作正常。数据发送模块主要实现对上位机的数据通信,本系统设计为每隔20毫秒将数据分组发送到上位机。数据转存模块完成各种数据写入在片主RAM的操作,为了区分数据类型,需要在数据块中添加相应的类型标识码,该码由用户层协议自行定义。A/D采样模块控制系统采样过程,并将每一路12位采样数据分两次读入指定的RAM单元中。 频率信号处理模块完成对捕获端口频率的测量,其基本思想是:在被测信号的一个周期时间内,2次脉冲下降沿分别启动和停止定时器T2计数,两次计数值之差的倒数即为频率值,本模块只需计算差值,频率值由上位机解算。 |