电动车车身网络CAN总线通讯实现
扫描二维码
随时随地手机看文章
1、引言
CAN总线是一种有效支持分布式控制或实时控制的串行通信网络,其应用范围遍及从高速网络到低成本的多线路网络。CAN总线具有如下特点:
(1)CAN是到目前为止唯一有国际标准现场总线。
(2)CAN为多主方式工作,网络上任一个节点均可在任意时刻主动向网络上其它节点发送信息,而不分主从。
(3)在报文标志符上, CAN上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据最多可在 134 us内得到传输。
(4)CAN采用非破坏性总线仲裁技术。
(5)CAN节点只需通过报文的标识符滤波即可实现点对点,一点对多点及全局广播等几种方式传送数据,无需专门的“调度”。
(6)CAN的直接通信距离最远可达 10 K米;通信速率最高可达 1 Mbps。
(7)CAN上的节点数主要取决与总线驱动电路,目前可达110多个。
(8)报文采用短帧结构,传输时间短,受干扰概率低,使数据的出错率降低。
(9)CAN的每帧信息都有 CRC校验及其他检错措施,具有极好的检错效果。
(10)CAN通信介质可为双绞线、同轴电缆或光纤。
(11)CAN节点在严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。
(12)CAN总线具有较高的性能价格比。
2、车身网络的拓扑结构
对于电动车车身网络[5]来说,电子设备多,位置分布杂乱。为了便于对整个网络进行管理,可以把整个车身网络按找拓扑结构的不同划分为不同的节点。网络节点的划分按照分块划分的原则。节点中的电子设备可以相互间进行网络通讯,不同区域的电子设备通过不同的网路节点进行通讯。在分析电动车车身的设备的基础上,把车身网络分成仪表台节点、左前节点、右前节点、左后节点和右后节点等。
对于车身网络来说,电子设备对于通讯速度都没有很高的要求,所以,按照美国工程师协会 SAE车身网络定义,选择 B类总线,传输速率为 10-125 kbps,网络的拓扑结构如图 1所示:
500)this.style.width=500;" border="0" />
3、通讯协议报文设计
采用了 CAN总线通用的报文形式[6] 每帧最大的数据长度是 8 bytes。
通讯协议的报文主要任务是发送报文和接收报文,报文以数据帧的格式接收和发送 [7]。数据帧的数据域能发送或接收 8个字节的报文内容。每个字节有 8个位,每次只能发送或接收1个位。通讯协议报文格式如表 1所示。
500)this.style.width=500;" border="0" />
4、基于 LABVIEW的协议实现
硬件采用 MC9S12DP51216单片机[7]。MC9S12DP51216单片机总线采用双绞线和台式上位机。
4.1定义数据结构
在 LABVIEW中,Virtual CAN Interface(VCI) 函数库是专门为 ZLGCAN设备在 PC上使用而提供的应用程序接口,可以从 LABVIEW中直接使用这些库函数。首先创建 VCI函数库德数据结构,定义数据类型为簇,并同时调用库函数[8]。
本系统的程序实现了数据的发送与接受,并通过 CAN总线将收发的数据在前面板上的列表中显示出来。该程序中含有3个主要的 While循环:主循环、发送数据循环和接受数据循环。这三个循环是并行运行的,互相独立。主循环处理处理与用户交互的界面,它使用了事件驱动机制来处理用户在前面板的操作,并通过用户事件与发送数据循环和接受数据循环通信。它包含以下功能:打开/关闭设备、超时、启动 CAN、复位 CAN、读取设备信息、读取 CAN状态、读取错误信息和清空缓冲区。
4.2数据发送和接收函数的实现 接受和发送数据通过控制面板的按钮,调用 VCI函数,并同时把数据实时显示出来。程序框图如图 2和图 3所示。
500)this.style.width=500;" border="0" />
4.3 驱动模块设计
驱动模块包括超时模块、停止模块、OpenDevice模块的设计、StartCAN模块的设计、 ResetCAN模块的设计、Clear Buffer模块的设计、 GetBoradInfo模块的设计、 GetErrorInfo模块的设计、GetStatus模块的设计和 TREvent模块的设计等。各个模块都是通过在控制面板中设计控制键,并调用子函数,实现需要的功能。
其中 TREvent模块的程序框图如图 4所示。该模块主要用于显示发送和接收的数据。
500)this.style.width=500;" border="0" />
5、系统测试
5.1建立控制面板和显示面板
车身网络系统要正确地反映通讯状态,首先要采集汽车在工作状态下车身 CAN总线上的众多信号。这些信号可以分成二大类:开光信号和模拟信号。
开关信号也称为数字信号,主要有近光灯开关、远光灯开关、制动灯开关、雾灯开关、转向灯开关、空调开关、雨刮开关。还有一些指示信号亮,需要通过 CAN网络进行传输,在仪表中进行显示的量。这些量包括 CAN故障指示、安全带指示、远光指示、倒车指示、左转向指示、右转向指示、后雾灯指示、制动故障报警指示、驻车指示等。
车身网络中也有一些模拟信号,主要包括电机转速、车速、电池电量、电瓶电压、电池温度等。
通过 LABVIEW软件建立开关量模块的控制面板和显示面板。通过控制面板的按钮,可以发送相应的数据,并在显示面板显示相应的信号。
500)this.style.width=500;" border="0" />
5.2数据接收和发送检测
检测数据的发送和接收,在LABVIEW中设定数据的收发类行为自发自收[9]。启动CAN,指示灯亮,点发送按钮,数据以自发自收的形式发送出去[10],如图 5所示。 6、结论
本文针对电动汽车的特点,建立电动车车身网络。在分析 CAN总线的基础上,建立应用层的通讯协议。应用 LABVIEW软件,编写 CAN网络通讯的上机位软件。为了验证通讯的数据传输和接收,在 LABVIEW软件中进行仿真,经过检测,该系统可以很好的实现电动车车身网络的通讯要求。
本文作者创新点:
应用 CAN总线技术建立了纯电动车车身网络,通过 LABVIEW软件实现了网络连接。并通过系统的通讯测试,验证了网络的可行性。
参考文献
[1] 胡骅,宋慧.电动汽车. 人民交通出版社.北京. 2006.
[2] 舒华,姚国平.汽车电子控制技术.人民交通出版社.2008.
[3] 邬明宽.CAN总线原理与应用系统设计. 北京航天航空大学出版社.1996.
[4] 周凯,郭栋.虚拟仪器工程设计与开发.国防工业出版社.2004年8月.
[5] 崔胜民,熊杰,王大方.汽车车身CAN网络系统设计.2009,1:32-34.
[6] 徐伟,一种适用于分布式测量系统的CAN总线协议.微计算机信息.2007,11-2:32-34.
[7] 刘剑锋,桂卫华,黄志武,童海涛,谌介人.一种CAN总线调度算法在机车制动机上的应用研究.2009,1-1:183-187.
[8] 王丰 , 栾学德,单片机原理与应用技术,北京航空航天大学出版社,2007.
[9] 蔡国英,张宏群.基于 LabVIEW的信号产生与分析系统.国外电子测量技术. 2007,7:12-14.
[10] 马迎建,曹洁,宋彭.基于LabVIEW的3458A数据采集系统设计.电子测量技术.2009,1:131-143.