CAN总线在商用车上数据采集的实现
控制器局域网(CAN,Controller Area Network)是一种支持分布式实时控制的串行通讯网络系统,具有很高的安全性,主要应用于嵌入式控制器的通讯系统和智能装置的开放式通讯系统,据统计,应用CAN总线后,整车线束连线可缩短200~1000 m,质量可减轻9-17kg,布线明显简化,可靠性和实时性显著提高。
1 商用车控制系统及其拓扑结构
商用车控制系统的控制对象包括:底盘系统、车身系统、发动机。如图1所示。
图1 商用车控制系统拓扑结构
2 商用车CAN总线数据的采集硬件设计
2.1 车身节点的数据采集
商用车车身系统需要采集的信号有左右门集控锁,电控车窗、雨刮器、前后车灯以及车内空调等。这些信号要求的实时性不是很高,可以采用B级网络。
选取89C52单片机作为此节点的CPU,SJA1000作为CAN控制器,82C250作为CAN驱动器(或收发器)。如图2所示。
商用车车身需要采集的信号较多,如果每个信号都设置一个CAN控制器和接口电路,造成成本和空间很大的浪费,可设置几个四选一电路选取信号,如图3所示,最终通过几个四选一电路,选取一个信号,送给单片机进行信号采集,经过CAN控制器和接口电路,传输到CAN总线上。
图2 车身节点硬件原理图
图3 四选一电路
2.2 发动机节点数据采集
发动机节点需要采集的数据有发动机的转速、车速、发动机的油量以及冷却水的温度,需要一个四选一电路。其中,温度和油量信号需要差动放大和V/F转换,转化成频率信号,如图4所示,便于单片机进行采集,其采集电路和车身采集电路一样。发动机转速和车速信号需要经过整形,然后才能输入单片机进行采集。其整形电路如图5所示。
图4 油量采集电路
图5 整形电路
2.3 底盘节点的数据采集
本系统中商用车底盘节点主要是针对悬架系统来说的,为了改善车辆的行使平顺性和操纵稳定性,所采集的信号主要是电控空气悬架系统的高度变化信号和空气弹簧的压力信号。空气悬架的高度变化由高度传感器来测量,压力信号由压力传感器来测量。
压力传感器和高度传感器都是电磁式的传感器,将压力的变化和高度的变化转换成电势信号输出。为了系统统一,将此信号经过差动放大和V/f转换,转换成频率信号,分时送给单片机进行采集。其采集电路和车身信号采集电路一样,不再赘述。这样,整个系统的信号采集电路做到统一。
3 系统的软件设计
本系统软件由数据采集发送单元软件和数据接收显示单元软件两大部分组成。数据采集发送单元软件负责对商用车信号进行采集、处理并发送;数据接收.显示单元负责对以上数据进行接受,并显示输出系统的主程序框图、数据接收显示单元软件框图和数据采集发送单元软件框图如图6-8所示。
图6 系统主程序框图
图7 接收单元框图
商用车信号采集电路程序编写可分为:
1) CAN总线通讯节点的初始化程序;
2) CAN总线数据采集发送单元程序;
3) CAN总线数据接收显示单元程序。
CAN总线的初始化十分重要,这里给出CAN初始化程序。下面就以Keil C51为平台,系统介绍如何用C51语言对SJA1000 CAN总线控制器进行初始化。
以上就是SJA1000初始化的全部程序,其中AT89C52.H是为89C52主控制器专门编写的库函数,它在Keil软件中是现成的,只要用#inelude语句包括进来即可;int rins.h是为今后调用空函数-nop-()作准备,它里面包括了一个类似于汇编语言的NOP语句;其中还须注意的就是在主函数中一般都有一个while(1)语句,表示不断地做循环,否则在程序编译时会提示出错。
图8 数据采集发送单元软件框图
4 结语
本文对商用车数据进行了采集,实现了CAN总线在整车上的应用,使整车更加智能化,网络一体化,对以后商用车实现整车网络与互联网的连接打下基础。
总线控制CAN总线信号采集商用车SJA100 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)