1引言
动力电池集成作为电动汽车核心技术之一对电动汽车运行的性能有着决定性的作用,为保证动力电池安全且高效的应用,需要对其运行状态进行实时在线的监测并同时对其进行控制,电池管理系统在动力电池与整车控制之间起到了这样关键的桥梁作用。为保证电池管理系统为电动汽车提供准确可靠的动力电池信息并对电池进行可靠的管理,需要对电池管理系统自身运行的各项功能进行实时的监测,以及对电池运行数据进行采集分析,同时在动力电池系统出现故障时需要对其进行诊断,基于LabVIEW的电池管理系统监控平台即是为实现上述需求而开发设计。
LabVIEW(LaboratoryVirtualINStrumentatiONEngineeringWorkbench,实验室虚拟仪器工程平台)是由美国NationalInSTruments(简称NI)所开发的图形化软件开发环境。该开发环境把工业测量与控制和计算机完美结合在一起,其图形化的界面使得编程就像操作仪器面板或画电路板一样简易直观、易于理解。但为了开发可靠、高效、灵活的电池管理系统监控平台,需要对其程序设计进行深入的原理分析、细化的结构设计、及灵活的接口实现。监控平台就利用了LabVIEW的DLL(dynamiclinklibrary,动态链接库)、多线程,数据记录、运行控制等技术。
2平台结构
监控平台是基于电池管理系统设计,其主要由硬件部分和软件部分组成。硬件主要实现pC与电池管理系统之间的通信,因电池管理系统对外通信主要采用CAN(ControllerAreaNetwork,控制器局域网),而pC端接口多为USB(UniversalSerialBus,通用串行总线)。CAN总线由德国Bosch公司最先提出,是国际上应用最广泛的现场总线之一,其具有高位速率、高抗电磁干扰性,而且能够检测出总线的任何错误;USB是一种支持即插即用的新型串行接口,已广泛用于pC的对外接口。解决CAN与USB之间的转换就解决了电池管理系统与pC的通信,利用周立功USBCAN-II的智能CAN接口卡,可以很方便的实现这一功能,监控平台硬件正是以pC为主体,连接CAN接口卡,通过CAN总线连接电池管理系统组成。周立功智能CAN卡配备了pC端的驱动程序,同时为pC端应用程序提供了接口函数,采用LabVIEW开发环境中的动态链接库技术可很好的操作周立功智能CAN接口卡,实现与电池管理系统的通信。
由图1可见,系统硬件实现了监控平台与电池管理系统之间数据的透明传输,周立功智能CAN接口卡起到了很好的桥梁作用,其上自带的光电隔离模块使USBCANII接口卡避免由于地环流造成的损坏,增强系统在恶劣环境中使用的可靠性。所以监控平台有很好的硬件支持,设计的主要工作是监控平台的LabVIEW实现。
针对电池管理系统数据采集、参数标定、故障诊断及对电池数据分析的要求,监控平台软件的结构应该包含信息显示、系统标定、故障诊断、数据存储及平台配置等模块(见图2)。其中信息显示功能提供了直观的动力电池信息,包括单体电压、总电压、电流、温度、SOC及故障状态等;系统标定功能为电池管理系统的参数设定、状态修订提供了便捷的操作;故障诊断功能主要针对动力电池系统的维护;数据存储功能为进一步的对电池性能的分析及对电池管理系统的功能验证提供很好的数据支持;平台配置功能是实现监控平台接口灵活、界面友好、操作简便的关键。基于LabVIEW的软件设计主要针对这几个方面进行。
图1监控平台结构图
图2监控平台功能模块
3软件设计
采用NI公司的LabVIEW8.2作为监控平台软件的开发平台,既能很方便的实现监控平台需要的功能,又能使软件设计变得直观、快捷,同时软件兼具有灵活性、可扩展性、可维护性、代码重用性和可读性。
为实现上述监控平台的各个功能,同时保证平台高效的性能,软件设计应用了LabVIEW的多线程技术。所谓线程(thread)是指由进程进一步派生出来的一组代码(指令组)的运行过程。多线程技术可以使同一个程序有几个并行运行的路径,从而提高程序的运行速度,线程所占用的系统资源比进程要小。在一个程序中,线程并不是越多越好,也并不是越多程序执行得越快。针对计算机的CpU只有一个的情况,当一个线程在执行的时候,其它的线程就处于挂起或者阻塞状态,那么程序使用内存的效率就会很低。针对监控平台的功能,要求同时考虑平台的高效运行,软件设计了四个线程,即通过CAN总线的数据采集与显示;平台参数配置;数据存储;系统标定和故障诊断。
3.1数据采集及显示
平台采用了USBCAN-II智能CAN接口卡连接pC与电池管理系统,实时接收电池管理系统CAN总线的数据并进行显示。USBCAN-II智能CAN接口卡为应用程序提供了可调用的动态链接库,利用LabVIEW中的调用库函数节点(CallLibraryFunction,简称CLF)可实现对USBCAN-II智能CAN接口卡的灵活操作,应用CLF需要对其进行配置,配置主要根据接口函数设定调用规范为stdcall(WINApI),同时根据函数参数设定CLF的参数。最终设置好的CLF为编程提供了便捷的接口,也为平台参数配置功能提供了方便,通过设备类型号和设备索引号可灵活在USBCAN-II智能CAN卡的COM1和COM2之间进行选择。按类似的设置规则配置好USBCAN-II的其他接口函数的调用,可对USBCAN-II智能CAN进行灵活的操作。
根据USBCAN-II操作要求,数据采集流程如图3。为了操作方便,接收数据被封装成子VI。
LabVIEW中的子VI类似于C语言中的子函数,可以被其他VI调用。数据接收子VI也为平台参数配置提供了配置接口,接收到的数据被打包成LabVIEW中的簇变量,簇是LabVIEW中的一种数据类型,它可以包含多个不同数据类型的元素,类似C语言中的结构体。数据的打包方便了对接收到的数据进行显示与存储。数据接收采用循环接收模式,直至收到停止接收命令。
图3数据采集流程。
现有电池管理系统向CAN总线发送的数据有单体电压,总电压,电流,SOC,SOH,温度,最高和最低单体电压,最大和最小温度等,其中各从板负责单体电压和温度的测量,每个从板有电压60个,温度16个,及故障信息等,总共4个从板。需要对这些数据进行显示与存储,以方便对电池状态进行实时监控,对电池数据进行深入分析,同时根据故障信息对电池进行维护。利用LabVIEW设计友好的显示界面,将上述信息按从板号设置不同的选项卡进行显示,如图4所示。
图4显示界面。
3.2平台参数配置
利用LabVIEW多线程技术专为平台参数配置分配一个线程,对监控平台参数进行设置。监控平台参数可分为以下几类:USBCAN-II智能CAN卡配置,包括CAN通道选择、CAN通信波特率等;显示配置,含从板数,从板电压节数,从板温度个数等;数据存储配置,含存储的周期、位置、格式等;系统标定和故障诊断配置,含标定的参数类型、位置及故障诊断的故障类型等。
LabVIEW是一种数据流的程序开发平台,由数据流决定程序中节点的执行顺序。事件驱动扩展了或程序不同部分之间的交流影响程序的执行。平台参数配置采用了事件结构,很好的在异步情况下对不同线程之间的参数进行修改和设置,当没有事件产生时,程序回到等待事件状态,减小了对其他线程执行的影响。
3.3数据的存储
在LabVIEW中常用的记录数据的方法有利用数据库技术存储数据和利用文件系统存储数据。使用文件系统管理数据文件读写速度快、占用磁盘空间少、检索方便快捷。本监控平台将存储的文件格式默认设为csv格式,其占用磁盘空间小,同时这种格式可以在Excel中进行查看,也可以导入Matlab中进行分析,这特别有利于对电池性能进行研究。
为数据存储建立独立的线程,方便了编程的实现,但需要解决数据同步的问题,即数据采集与数据存储两个线程之间的流程控制。在LabVIEW中不同循环间传递数据可采用局部变量,但是在数据采集循环与数据存储循环之间传递数据的话,局部变量就不太够用了。因为数据保存到硬盘上是一项比较费时的工作,而数据采集对循环时间要求较高,两者的循环快慢不一样,此时,就不能简单的通过局部变量来进行数据传递。在数据采集循环与数据存储循环之间,采用LabVIEW中消息通知器进行数据同步传递。本监控平台在数据采集中将数据打包成簇类型,通过消息通知器传递数据并进行储存。
3.4系统标定和故障诊断
为保证动力电池系统的安全运行,需要对电池管理系统的各个参数进行标定,以保证电池管理系统所检测信息的可靠性,确保电池管理系统对电池的正确管理。当动力电池系统出现故障时,仅仅依靠监控电池参数来诊断故障是不够的,还需要对电池管理系统自身的运行参数进行诊断,这些参数包括电池管理系统配置参数、软硬件信息、软硬件工作状态等;电池管理系统有自检功能,通过可靠的CAN总线可以实现对这些功能的触发,最终通过CAN总线返回信息,尽可能定位故障点。监控平台的另一功能就是要实现对电池管理系统的标定及在电池系统有故障时进行故障诊断,为实现此功能需要通过CAN总线与电池管理系统进行交互,USB??
CAN-II中提供了向CAN总线发送信息接口函数,类似于接收函数,利用LabVIEW设计发送子VI,同时建立系统标定和故障诊断线程调用发送和接收子VI,实现与电池管理系统的交互。
4结束语
本监控平台充分借助LabVIEW的多线程及其灵活的接口技术,实现了对CAN总线的高速数据采集和多种格式文件的实时数据记录,并且监控平台设计灵活,能适应电池管理系统多种组合方案,同时监控平台的系统标定及故障诊断为电池管理系统的量产打下很好的技术基础。该监控平台已用于普天、恒通、吉利等多种电动汽车用铁锂电池管理系统。在一年多的时间内,运行可靠、稳定,既为用户及时提供了实时的采集数据,又为开发人员提供方便的诊断接口,为近一步研究电池管理和分析铁锂电池的性能提供了有力的保证。
数据流编程的功能,允许用户在前面板的直接干预。