基于CAN总线技术的车辆虚拟仪表数据采集系统研究
以及动磁式仪表驱动。由其构成的F/V转换电路外围元件少,调试容易,工作稳定可靠。图2所示,整形后的转速脉冲信号经滤波网络和限幅输入CS289第10脚,电压信号由第8脚输出,经滤波消除可能的工频干扰后送采样电路。本电路中,输出电压和输入频率的关系由下式决定:上位机据此线性关系解算出频率值。为保证F/V变换具有足够高的线性度,应合理选取的值。
3 系统软件设计
系统软件主要完成三项任务:1、传感器信号的采样与解算;2、上位机请求数据时将采集的数据传送给上位机;3、接收到上位机自检命令时,上传数据完成传感器信号到标准信号的切换。程序流程如图3所示。
图3 程序流程如图
主程序采用模块化编程。具有故障自诊断功能是虚拟仪表的重要特征之一,为此数据采集系统中设计了3组标准信号,分别是频率信号、电压信号和电阻信号,自检模块的主要功能是:当接收到上位机发出的自检命令后,微控制器断开传感器输入,标准信号被接入数据采集系统,将得到的数据上传到上位机与标准值进行比较,以确定故障点是传感器系统还是数据采集系统,若自检通过则表示数据采集系统工作正常。数据发送模块主要实现对上位机的数据通信,本系统设计为每隔20毫秒将数据分组发送到上位机。数据转存模块完成各种数据写入在片主RAM的操作,为了区分数据类型,需要在数据块中添加相应的类型标识码,该码由用户层协议自行定义。A/D采样模块控制系统采样过程,并将每一路12位采样数据分两次读入指定的RAM单元中。
频率信号处理模块完成对捕获端口频率的测量,其基本思想是:在被测信号的一个周期时间内,2次脉冲下降沿分别启动和停止定时器T2计数,两次计数值之差的倒数即为频率值,本模块只需计算差值,频率值由上位机解算。
3.1 CAN控制器编程
本系统软件设计的一个难点在于关于CAN的编程。本系统处理的CAN程序模块有:CAN初始化子程序、CAN中断程序和CAN数据收发子程序。
CAN 是Controller Area Network 的缩写,是国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应"减少线束的数量"、"通过多个LAN,进行大量数据的高速通信"的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。
CAN总线的基本特点:
*CAN协议废除了传统的站地址编码,采用数据通信数据块进行编程,可以多主方式工作。
*CAN采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,有效避免了总线冲突。
*CAN采用短帧结构,每一帧的 有效字节为8个(CAN技术规范2.0A),数据传输时间短,受干扰的概率低,重新发送的时间短。
*CAN的每帧数据都有CRC效验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境中使用。
*适用于现场设备与仪表之间或者与其上位设备间的通信网络,可以统一组态,相互操作,控制功能分散到最底层。
*CAN节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其它操作不受影响。
*CAN可以点对点、一点对多点(成组)及全局广播集中方式传送和接受数据
*CAN总线直接通讯距离最远可达10km/5Kbps,通讯速率最高可达1Mbps/40m.
*采用不归零码(NRZ-Non-Return-to-Zero)编码/解码方式,并采用位填充(插入)技术。
CAN控制器是以CPU存储器映像外围设备出现的。P80C592的CPU与CAN控制器之间的数据传输通过4个特殊功能寄存器来实现,即: CANADR、CANCON、CANSTA和CANDAT,通过这四个特殊功能寄存器,CPU可以访问CAN控制器内部的任一寄存器(地址为0~29)和 DMA逻辑。表1给出了这四个SFR的功能简述,其中CANCON和CANSTA的读写操作含义不同。
表1 SFR功能简述
CAN控制器初始化(图4)是CAN通信中一个非常重要的子程序,程序是否合理将直接影响整个通信过程。CAN控制器的初始化首先必须通过置位CAN控制寄存器的"复位请求"位,置位"复位请求"并不影响正在进行的一个收发作业,特别需要注意的是,只有当复位请求被置位时,CAN内部地址为4-8的寄存器方可被访问,在复位操作结束后必须将该位置0以保持所进行的设置并使CAN返回工作状态。
图4 CAN通信中一个重要的子程序
P80C592和其在片CAN控制器都具有
- 对TTCAN的分析(05-26)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- μC/OS-II的多任务信息流与CAN总线驱动(07-11)
- 采用CAN总线实现DSP芯片程序的受控加载(11-08)
- 基于DSP的电动汽车CAN总线通讯技术设计(10-08)
- 基于DSP的CANopen通讯协议的实现(01-18)