电动汽车BMS测试系统的数据通信

2014-12-12 03:50杨刘倩詹昌辉
计算机与现代化 2014年2期
关键词:通信协议报文总线

杨刘倩,詹昌辉

(合肥国轩高科动力能源股份公司工程研究院,安徽 合肥 230011)

0 引言

电动汽车行业的发展,对各电动汽车组成部分性能要求不断提升[1]。因此,开发了BMS(Battery Management System,电池管理系统)测试系统,对BMS信息的采集精度、数据传输速率、准确性进行测试分析。

在BMS系统开发过程中,BMS测试系统对BMS的流程控制及其故障响应进行验证;BMS生产过程中,BMS测试系统对BMS进行进一步测试[2],保障系统功能完善;BMS售后阶段,BMS测试系统可对BMS进行故障诊断和排查。

目前,电动汽车领域多采用CAN总线实现各控制单元之间的通信[3]。BMS测试系统亦通过 CAN通信实现与BMS的信息交互,即可实现对BMS系统的测试、状态监控及数据分析等功能。

1 CAN通信原理及通信协议

1.1 CAN通信介绍

CAN(Controller Area Network,控制局域网络)属于现场总线的范畴,现场总线被誉为自动化领域的计算机局域网[4]。CAN为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持,应用于工业自动化设备、船舶、医疗设备等领域。

CAN总线是德国Bosch公司从20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1 Mbps。当信号传输距离达10 km时,CAN仍可提供高达50 kbps的数据传输速率[5]。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理。

在CAN总线中有4种不同的帧类型[6]:

(1)数据帧(Data Frame):数据帧带有应用数据。

(2)远程帧(Remote Frame):通过发送远程帧可以向网络请求数据,启动其他资源节点传送它们各自的数据。远程帧包含6个不同的位域:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。仲裁域中的RTR位的隐极性表示为远程帧。

(3)错误帧(Error Frame):能够报告每个节点的出错,由2个不同的域组成。第一个域是不同站提供的错误标志的叠加,第二个域是错误界定符。

(4)过载帧(Overload Frame):如果节点的接收尚未准备好就会传送过载帧,由2个不同的域组成。第一个域是过载标志,第二个域是过载界定符。

1.2 电池管理系统的CAN通信协议

CAN协议是建立在OSI的7层开放互连参考模型基础之上的。但CAN协议只定义了模型的最下面2层:数据链路层和物理层,仅保证了节点间无差错的数据传输。CAN的应用层协议必须由CAN用户自行定义,或采用一些国际组织制订的标准协议。

BMS所采用的CAN通信协议中数据链路层的规定主要参考 CAN2.0B和 SAE J1939的相关规定。CAN扩展帧有29位标识符,可自行规定其含义,定义29位ID,如图1所示。

图1 扩展帧ID定义

(1)优先级Priority为3位,可以有8个优先级;保留位(Reserved)值一般固定为0;数据页(Data Page)值现固定为0;8位的PDU Format为报文的代码;8位的PDU Specific为目标地址或组扩展;8位的Source Address为发送此报文的源地址。

(2)接入网络的每一个节点都有名称和地址,名称用于识别节点的功能和进行地址仲裁,地址用于节点的数据通信;每个节点至少有一种功能,可能会有多个节点具有相同的功能,也可能一个节点具有多个功能。

2 BMS测试系统的CAN通信结构及原理

2.1 测试系统与BMS的连接结构

BMS测试系统上位机与BMS的CAN通信硬件连接示意图如图2所示:BMS测试系统上位机应用软件以PC机为载体,在Windows XP操作系统下开发的应用软件生成的EXE文件运行在PC上[7],形成一个上位机结构,该上位机可进行CAN通信,上位机通过USB接口与CAN通信传输模块连接,CAN通信传输模块通过CAN_H、CAN_L连接电池管理系统的CAN通信接口。

图2 BMS测试系统与BMS的CAN通信连接示意图

2.2 测试系统与BMS的CAN通信实现原理

测试系统应用程序在电脑上运行,电脑USB接口连接CAN通信数据传输模块,调用CAN通信的接口函数实现与下位机BMS的CAN通信连接,连接通信成功后,该应用程序可实现CAN报文的发送及接收功能。CAN通信通过电平变化体现传输内容,CAN通信传输模块将模拟信号转化成数字信号传递给BMS测试系统应用软件,软件接收信息后根据CAN通信协议解读、处理,用曲线图、图像、数字的形式将数据信息体现出来。

3 BMS测试系统的软件流程及CAN通信实现

采用Borland公司开发的Delphi7作为BMS测试系统应用软件开发工具,完成软件界面设计与底层驱动的设计[8],添加兼容CAN通信传输模块的CAN接口函数库,设计并开发具有CAN通信报文收发功能、解读CAN通信协议并对通信数据进行处理分析功能的应用软件[9]。一方面,该应用软件将CAN报文信息转化成直观信息数据或图表在软件界面上显示,为单片机系统调试、测试工作提供便捷的途径。另一方面,BMS测试系统的上位机应用软件可发送请求帧报文,BMS接收到请求报文后回复所请求的数据或状态信息,实现信息交互。

3.1 通信流程的实现

首先设置好通信参数,根据下位机控制器CAN总线实际通信需要,将CAN总线通信速率设定为250 kbps。将通信连接请求通过CAN数据传输模块传输至BMS,通信连接成功后,向BMS发送相关测试信息请求报文或者直接接收来自BMS的广播信息报文,然后BMS测试系统应用程序对CAN报文接收缓存中的报文进行分析处理,将数据或状态信息显示或存储;对BMS系统信息进行实时监测时,CAN通信是个循环过程,将循环发送请求或接收广播报文,当监测结束条件达到,退出该循环。最后完成BMS系统测试操作后关闭CAN通信连接[10]。详细流程如图3所示。

图3 CAN通信实现流程

3.2 CAN通信主要流程及示例程序

3.2.1 设定CAN通信传输参数,建立CAN通信连接

CAN通信硬件连接如图2所示,采用CAN通信数据传输模块连接BMS测试系统和BMS,CAN通信协议采用SAE J1939,建立BMS测试系统工程,首先设计图4所示窗体及底层驱动[11-12],用来输入参数,建立通信连接。定义CAN通信时所需用到的结构体及函数体,在Delphi7建立的应用软件工程中调用该相关函数来实现串口通信。

图4 BMS测试系统中CAN通信连接窗体

CAN通信数据模块通信连接结构体定义如下:

本文的CAN通信连接实现调用了CAN数据传输模块的接口函数库中函数FD_StartCAN,如:

function FD_StartCAN(DevType:dword;DevIndex:dword;CANindex:dword):dword;stdcall;

3.2.2 发送远程帧请求信息报文

(1)在Delphi工程中定义一个帧结构体,用来传输CAN信息帧,如:

(2)定义一个过程arrary,用来初始化即将要发送的帧结构体,它的形参只有报文的ID,其他信息都赋给默认值。这样,在需要通过读取某一个报文信息时,只需传递相应的ID,发送一个远程帧,请求相应的报文信息,如:

(3)调用函数FD_Transmit:

Function FD_Transmit(DevType:dword;DevIndex:dword;CANindex:dword;psend:pVCI_CAN_OBJ;len:integer):integer;stdcall;

DevType是设备类型,DevIndex是设备索引号,CANindex表示第几路CAN,psend是要发送数据帧数组的首指针,len是要发送的数据帧数组的长度。

3.2.3 接收数据帧报文

调用函数FD_Receive接收单片机控制器发过来的信息报文:

function FD_Receive(DevType:dword;DevIndex:dword;CANindex:dword;preceive:pVCI_CAN_OBJ;len:integer;wait-time:integer):integer;stdcall;

DevType是设备类型,DevIndex是设备索引号,CANindex表示第几路CAN,preceive是要接收的数据帧数组的首指针,len是要发送的数据帧数组的长度,waittime是等待时间。

另外,需定义一个动态数组list,将接收到的数据放到动态数组里。

3.2.4 对接收到报文信息分析处理

在实际工程中,上位机应用软件通过CAN数据模块对接收的报文信息分析处理后显示在界面上,或将信息存档。

(1)接收的一条数据帧报文信息存入数组list中,每个数据帧可传输8字节数据,list[0]用来存放报文的 ID,list[1]至 list[8]存放数据内容。通过判断list[0]的内容,对应通信协议分辨出该报文用来传输的数据代表信息内容。

(2)对数组中数据进行转换,得到具体参数值或系统状态。

(3)通过显示控件在软件界面上显示出BMS的信息参数或状态。

3.3 CAN通信数据实时数据处理

(1)通信数据存储和读出。

利用控件OpenDialog和SaveDialog实现文件打开、保存功能,对应用软件底层驱动代码编写实现BMS测试系统读取的通信信息的存储和读出[13]。保存信息操作代码如下:

(2)实时绘制参数动态曲线图[14]。

在窗体中加入控件chart及Timer,通过Timer控件设定定时间隔触发,每间隔500 ms更新数据绘制到chart。以时间为横轴,参数值为纵坐标。其中,坐标点绘制采用函数Addxy(X,Y)。

通过CAN通信,上位机与下位机单片机控制系统进行信息交互,得到下位机中系统参数后,立即对实时数据进行直观显示,并体现出数据变化趋势,因此选用chart控件绘图。

4 实验结果与分析

BMS测试系统可监控BMS各种数据信息,观测BMS是否正常运行,如监控电池组总电压及电池组总电流数据信息。BMS测试系统以读取的总电压或总电流数值为纵坐标,间隔500 ms绘制一个坐标点。随着监控时间、电压值及电流值的变化,曲线动态地变化,如图5所示。

图5 CAN通信实时数据曲线图

监控信息用来分析BMS运行状态,为系统反馈提供依据。图5(b)中电池组电流值为负,相应图5(a)中电池组电压值处于增大趋势,表示BMS处于充电控制状态,BMS测试系统给出电池组充电状态的指示。

5 结束语

本文描述用Delphi7开发设计BMS测试系统上位机应用软件,实现与电动汽车的BMS系统的CAN通信的功能,通过CAN通信完成对BMS的测试、监控,并对参数及状态做出分析、信息存储等。这一功能的实现,为工控生产、售后服务提供一个跳过通信协议分析过程的智能测试、监控的工具。另外,本BMS测试系统上位机应用软件界面友好,易操作,可移植,具有很好的实用性。

[1] 袁方伟,陈思忠.电动汽车电池管理系统的研究[J].汽车研究与开发,2003(3):41-44.

[2] 张美云,潘玲.国内外电动汽车的发展概况和趋势[J].广西机械,1997(3):19-22,13.

[3] 曾光群.基于无线通信技术的锂电池监测系统的设计与仿真研究[D].重庆:重庆大学,2007.

[4] 吴慧英.基于CAN总线的工业测控系统的应用研究[D].北京:北京航空航天大学,1996.

[5] 罗峰,孙泽昌.汽车CAN总线系统原理、设计与应用[M].北京:电子工业出版社,2010:31-35.

[6] 邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996:20-23.

[7] 黄芳.Delphi7存取配置文件实现与SQL Sever数据库连接[J].电脑编程技巧与维护,2012(10):44-45,77.

[8] 赵晨,吴锤红.Delphi高级通信调试助手软件的设计[J].福建农机,2007(3):33-39.

[9] 孔令彬,叶敦范,付闯.微机控制蓄电池监测系统[J].微电子技术,2001,29(6):35-38.

[10]张敬华.Delphi5开发与应用[M].北京:北京航空航天大学出版社,2000.

[11]徐谡,张雷,徐立,等.Delphi应用与开发案例教程[M].北京:清华大学出版社,2005:57-67.

[12]明日科技,梁水,李方超,等.Delphi开发技术大全[M].北京:人民邮电出版社,2007:539-545.

[13][美]Marco Cantu,等.Delphi7从入门到精通[M].罗征,等译.北京:电子工业出版社,2003:39-63.

[14]高德欣,尚继良,王景景,等.Delphi编程中的串口通讯技术[J].青岛科技大学学报:自然科学版,2003,24(z1):125-127.

猜你喜欢
通信协议报文总线
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
基于Z-Stack通信协议栈的红外地温采集电路设计
ATS与列车通信报文分析
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
多通道ARINC429总线检查仪