孙似海,胡攀攀,唐晓新
(合肥国轩高科动力能源有限公司,安徽 合肥 230012)
摘要:为了提高电池的实时监控能力,并确保其安全运行,电动汽车远程监控系统逐渐成为各个厂家积极研究的重要课题。着重介绍了一种标准化电动汽车远程监控系统的设计思路、关键技术分析以及具体实现手段。通过将车载终端连接到电池管理系统的内部CAN网络中,设计出一套标准化的内部CAN通信协议,标准化的电池管理系统主机软件、远程监控车载终端软件及其上位机配置软件,解决了整车厂通信协议差异导致的各种问题,并在多种车辆上实际验证了系统的正确性,达到了预期效果。
关键词:远程监控;内部CAN;车载监控终端;标准化
0引言
电动汽车具有节能、环保的优点,是未来汽车行业发展的一大趋势。关注电动汽车最多的一点就是其安全性,非常有必要对电动汽车的位置信息、行驶状态信息和动力电池组信息进行监测和分析,实现车辆的远程调度和提前预警[1]。远程监控终端是指通过GPS设备对被监控车辆实现卫星定位,将被监控车辆的经纬度、速度、卫星时间、动力电池组状态等数据进行处理后,通过GSM/GPRS模块实时上传至中心监控服务器,再由服务器对数据进行处理,便可得到被监控车辆所在的精确位置信息及其电池组信息[23]。
基于内网的远程监控车载终端标准化的目的在于:(1)提高产品通用性,减少因客户不同带来二次开发;(2)提高产品稳定性,避免临时设计带来不确定性;(3)提高快速响应能力,降低远程监控终端出差调测频率。本文实现了内网批量数据的接收、分析及处理,远端批量数据实时上传,系统重要参数存储等功能,使得标准化远程监控终端模块灵活捕捉电池管理系统INCAN报文信息,不再受限于客户CAN线协议,并且上位机软件设计灵活配置终端模块重要关联参数。
1远程监控系统设计
图1远程监控系统结构系统组织架构如图1所示,可以看出,整个远程监控系统架构可分为前端、后端两个部分,前端部分安装在整车上,包括电池管理系统(BMS)的主、从机模块和车载远程监控终端;后端部分是在远程监控中心,运行在PC上,包括服务器和客户端平台。下面具体介绍各模块的设计。
1.1BMU(电池管理系统从机)
BMU采用英飞凌XC886系列8位单片机,实时采集电池各个单体电压及温度信息并通过内部CAN发送给BMS主机,一般每个BMS主机模块上都对应连接数个BMU从机模块,这主要由电动汽车拥有的动力电池组数量和安装方式决定。
1.2CCU(电池管理系统主机)
CCU采用英飞凌XC2267M系列16位单片机,实时采集电池组的总电流,并通过内部CAN接收各个BMU发送的电压、温度信息;同时经过程序运算处理,获取当前电池组的总电压、荷电状态(State of Charge,SoC),以及电池组的单体最高电压、最低电压、最高温度、最低温度、绝缘阻值等,然后根据不同车辆的控制策略,判断当前电池组运行状况是否正常。CCU通过CAN总线将以上所有信息传输给车载远程监控终端。
1.3远程车载终端
远程车载终端采用ARM CortexM3作为处理器,主要用来接收CCU上传的电池组数据信息以及故障信息然后把接收的相关信息经过处理,按照一定的协议格式,通过GPRS网络传输给监控中心服务器。
1.4上位机终端配置
根据不同车辆信息,统一配置车载远程终端设备的具体参数,如电池组的从机个数、各个电池组的单体个数等。
1.5远程监控中心
远程监控中心主要包括PC端的远程监控服务器和客户端,服务器用于接收和存储车载远程监控终端上传的实时电池信息,客户端用于实时显示各个监控终端上报的设备信息以及故障状态、报警信息、地理位置等。目前应用服务器的标配时可以同时接收几千个GPRS模块上报的数据信息。
考虑到车载远程监控系统的标准化目的,主要研究的是前端部分的设计与实现,即电池管理系统主机模块CCU、从机模块BMU、车载远程终端模块之间的通信方式以及相关协议。至于后端部分,即从车载远程终端到服务器以及服务器到客户端之间的通信方式和实现方式,主要是网络协议和数据库操作相关内容,处理方式相对比较固定,并且在PC上运行处理,不在此文的研究之中。
2关键技术研究
本项目中,为了兼容各个电动汽车厂家的通信协议,基于内部CAN网络,研究设计一种新型的标准化远程监控系统,形成一种内网协议标准化、内网各模块软件功能标准化以及车载远程监控终端模块上位机配置标准化的标准化远程监控系统,如图2所示。
2.1远程监控系统内网协议标准化
CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点[4]。CAN总线上任意节点可在任意时刻主动地向网络上其他节点发送信息而不分主次,因此可在各节点之间实现自由通信[5]。
本项目中,参考CAN2.0B和SAE J1939的相关规定,内网传输应用CAN总线通信的方式,并开发设计内网协议。车载远程监控终端一方面循环接收电池管理系统各从机模块发送的各个电池单体电压、温度信息,另一方面接收电池管理系统主机发送的经过运算处理后的电池信息。为了完成上述功能,需要重新开发设计基于内部CAN总线的通信协议,实现内网协议标准化、统一化。设计后的协议主要内容如下。
(1) 电池组总信息报文BMU_INFO_ TOTAL。此报文ID为0x18014201,用于BMS主机传输从机个数、电池组总电压、总电流、SOC等值给远程监控终端。
(2) 电池组极值电压报文BMU_INFO _VOLTAGE。此报文ID为0x18014202,用于BMS主机将电池组的极值电压值及其地址传输给远程监控终端。
(3) 电池组极值温度报文BMU_INFO _TEMP。此报文ID为0x18014203,用于BMS主机将电池组的极值温度值及其地址值传输给远程监控终端。
(4) 每个从机监控的电池单体个数配置报文BMU_INFO_CELL_COUNT。此报文ID为0x18014204和0x18014105,每条报文可以表示8个从机模块各自监控的电池单体个数,总计可以监控16个从机模块各自监控的电池单体个数。
2.2远程监控内网各模块软件标准化
考虑到电池管理系统从机模块软件比较稳定,且从机模块往往安装在电池箱内部,所以尽量不去修改它,重点是重新开发CCU和车载终端部分的软件。CCU和车载终端的程序代码均是用C语言编写,在Keil uVision4环境中编译生成烧写文件。
(1)BMS主机程序按照协议规定,以CAN报文的方式将相关电池信息发送到内网中。下面以发送电池组极值电压信息为例说明。
首先在头文件中定义:
#define CAN_BMUCRGP_VOLTAG E_TXID0x18014202// 获取极值电压信息
#define CAN_BMUCRGP_VOLTAG E_TXMOB102
#define CAN_BMUCRGP_VOLTAG E_TXMOB_MOAR (CAN_MOB_PRICAN_MOB_IDE | CAN_BMUCRGP_ VOLTAGE_ TXID)
然后在源文件中进行CAN报文的组包并调用发送函数。
FrameObj.ubMOCfg=0x78;//IDE,(DIR=TX)DATA Frame,8Data Length code
FrameObj.ulID=CAN_BMUCRGP_VOLTAGE_TXID;
FrameObj.ulMask=CAN_BMURX_MASK ;
FrameObj.ubData[0]=(INT8U)(MaxCellVolt );// 最高电压低字节
FrameObj.ubData[1]=(INT8U)(MaxCellVolt >> 8);// 最高电压高字节
FrameObj.ubData[2]=(INT8U)(MinCellVolt );// 最低电压低字节
FrameObj.ubData[3]=(INT8U)(MinCellVolt>>8);// 最低电压高字节
FrameObj.ubData[4]=(INT8U)(((MaxCellVolt No & 0xF00) >> 8 ));// 最高电压箱号
CAN_vConfigMsgObj(CAN_BMUCRGP_VOLTAGE_TXMOB,&FrameObj);
CAN_vTransmit(CAN_BMUCRGP_VOLTAGE_TXMOB);
(2) 编写车载远程监控终端程序代码,从内网中接收各个从机模块传输的各个单体电压信息和温度信息,同时接收BMS主机传输的电池总体信息和极值信息,然后将以上所有信息通过GPRS模块上传到远程服务器。下面分别以接收BMU从机模块单体电压信息和接收BMS主机模块的极值电压信息为例说明。
①车载远程监控终端循环接收各BMU从机模块的单体电压信息,代码如下。
if((MessageCAN0.CANID&0xFFF0FF00) == 0x18004100)// 过滤从机报文ID
{
SA=(unsignedshort)(MessageCAN0.CANID & 0x000000FF)-1;// 从机编号
volIndex=(unsignedchar)(((Message CAN0.CANID&0x000F0000) >>16)) - 1;//电池序号
for (mesID = 0; mesID < 8; mesID++)
{if(MessageCAN0.DATA[mesID+1] > 0)
{g_sCellInfo.CellVtg[bmu_cell_num_start[SA]+volIndex*8+mesID]=MessageCAN0.DATA[mesID+1];// 获取电池单体电压
}
}
}
FrameObj.ubData[6]=(INT8U)(((MinCellVoltNo & 0xF00) >> 8));//最低电压箱号
FrameObj.ubData[7]=(INT8U)MinCellVoltNo;// 最低电压节号
FrameObj.ubData[5]=(INT8U)MaxCellVoltNo;// 最高电压节号
while((!(CAN_ubRequestMsgObj(CAN_BMUCRGP_VOLTAGE_TXMOB))) && (uitemp ++ < 1000)){;}
②车载远程监控终端接收BMS主机模块的极值电压代码如下。
if(MessageCAN0.CANID==0x18014202)// 获取极值电压信息值
{
index=(MessageCAN0.DATA[3]* 256+MessageCAN0.DATA[2]);// 单体最高电压
g_sExtremInfo.MinVtgCell[2]=(unsigned char)(index >> 8);
g_sExtremInfo.MinVtgCell[3]=(unsigned char)index;
index=(MessageCAN0.DATA[1] * 256 + MessageCAN0.DATA[0]);// 单体最低电压
g_sExtremInfo.MaxVtgCell[2]=(unsigned char)(index >> 8);
g_sExtremInfo.MaxVtgCell[3]=(unsigned char)index;
g_sExtremInfo.MaxVtgCell[0]=MessageCAN0.DATA[4];// 最高电压箱号
g_sExtremInfo.MaxVtgCell[1]=
MessageCAN0.DATA[5];// 最高电压节号
g_sExtremInfo.MinVtgCell[0]=MessageCAN0.DATA[6];// 最低电压箱号
g_sExtremInfo.MinVtgCell[1]=MessageCAN0.DATA[7];// 最低电压节号
}
(3)车载远程监控终端模块上位机配置标准化
标准化的车载远程终端模块,除了修改底层通信模块程序以外,还需要根据实际电池组信息,配置车载远程终端模块的运行参数,达到兼容各种不同电动汽车、不同电池组的目的。为此开发了一款运行在PC上的上位机软件,用于配置具体参数。
此款上位机软件基于Qt平台开发而成。Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架[6],开发起来简单易学,并提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能[7]。
终端配置上位机界面如图3所示,可以看出,界面左半部分为串口信息和相关操作,右半部分是具体的参数值,如当前车载远程监控终端需要配置的参数为:车辆ID20151202,电池总串数168,BMS从机个数4,每个从机监控的电池单体串数是42,当这些值设置好之后,点击“参数配置”按钮,车载远程监控终端会通过RS232串口接收这些配置参数,并保存到Flash中。另外,可以将设置好的参数以文件的形式存储到PC的硬盘里,使用时,直接读取参数即可。
(4)各模块软件开发调试完成后,通过CAN截取的内网报文如图4所示。
3应用状况
此项目自开发结束后,已应用在多个公司项目多辆车上,包括电动大巴车和商务车等,功能良好。通过车载远程监控终端,在PC上的客户端中可以实时观察车辆运行状况,并且服务器每天都会将数据存储到数据库中,方便后续追踪了解电池的健康状态,最终达到提升电池生产工艺和品质的目的。图5是应用标准化车载远程监控系统的车辆监控数据界面。
4结论
基于内网的标准化车载远程监控系统,解决了不同整车厂商差异导致的通信协议不兼容的问题。只要动力电池系统内网协议一致,该系统基本上可以应用在所有电动汽车上,实时监控动力电池组和整车的运行状况。从目前我公司的应用情况来看,实际效果也确实如此,既减少售后人员的现场出差频率,又能快速响应新产品的应用,提高开发效率,无论是实用效益还是经济效益都能很好地满足。
参考文献
[1] 陈清泉,孙逢春,祝嘉光.现代电动汽车技术[M]. 北京:北京理工大学出版社, 2002.
[2] 徐海霞.燃运车辆GPS监控系统的分析与设计[J].微型机与应用,2014,33(11):1215.
[3] 方仁桂. 基于GPRS的远程监控系统的研究与设计[D]. 厦门:厦门大学,2009.
[4] 王任重.基于CAN总线的车载网络控制系统研究与设计[D]. 上海:上海工程技术大学 2015.
[5] 郭海涛.集成CAN/GPS/GSM的嵌入式电动车车载终端的研究与设计[D]. 北京:北京交通大学, 2007.
[6] 王浩,陈邦琼,浦录敏,等. 嵌入式Qt开发项目教程[M]. 北京:中国水利水电出版社,2014.
[7] 陆文周. Qt开发及实例[M].北京:电子工业出版社,2014.