基于VBA的锂电池评价系统的实现
2016-07-24王卫华赵庆云谢红明
王卫华,赵庆云,谢红明
(1.天津金牛电源材料有限责任公司,天津300400;2.中海油天津化工研究设计院,天津300131)
基于VBA的锂电池评价系统的实现
王卫华1,赵庆云2,谢红明1
(1.天津金牛电源材料有限责任公司,天津300400;2.中海油天津化工研究设计院,天津300131)
锂电池性能测试需要进行几百次充放电,根据大量的测试数据评价电池的循环性能。锂电池测试设备将数据导出到EXCEL表里,需要用户对各通道数据进行二次处理才能直观看出电池性能的好坏。循环数据整理非常繁琐,针对实际工作中的难点,在EXCEL里开发了“锂电池评价系统”,大大提高了工作效率,确保评价数据的准确性,提升了锂电池数据处理的自动化水平,具有实用意义。
VBA;EXCEL;锂电池
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。EXCEL表格处理数据功能强大,应用广泛。在EXCEL里应用VBA建立宏,还可以处理复杂的数理统计及逻辑运算。利用VBA可以在EXCEL里进行二次开发,可实现复杂的数据统计[1]。
1 系统背景
随着公司对研发投入的不断加大,锂电池测试设备数量迅速增加。研发需要将不同品种的电解液注进电池进行实际测试,从而筛选出最优的配方。锂电池循环24 h不停机,在线电池数量基本维持在200块左右,即每天需要将200个通道的数据导出来进行衰减计算,最后形成测试报告。数据处理工作枯燥、繁琐,导数据时反复的拷贝粘贴很容易出错。锂电池数据处理占用研发人员大量宝贵的时间,为了解决这个日益严重问题,急需要量身制作一个锂电池数据处理系统,使研发人员将时间和精力用在电解液研发上面。
2 系统分析
锂电池测试设备厂家较多,公司选用的是武汉兰电测试设备,锂电池是公司实验用的软包装锂电池。兰电电池测试软件界面简洁实用,右键功能强,尤其在数据导出方面表现出色,对于大批量数据,导出速度快而不会死机,可将在线通道的数据全部导出到一个EXCEL文件,不同的通道占用不同的表单。EXCEL文件名字默认为“Table_EachSheet”,即每次导出数据的EXCEL文件都是这个名字。锂电池在导出数据时选择导出的数据条目,这里选择“序号”、“放电容量”、“平台时间”,导出的“Table_EachSheet”表如图1所示。
图1 Table_EachSheet
图中页面“_002_1”的数据即为2#机柜通道1的数据,页面“_002_2”即为2#机柜通道2的数据。手动操作时,需要将每个通道的数据拷贝到建立的电池数据工作表中,电池数据工作表是按日期记录不同批次的电池数据,每一批会有多个对比电液,每种电液装若干块电池,每一块电池的循环数据都记录在表中进行保存、查询。
为了便于编程,将电池数据表进行区域格式化,即固定的区域存储固定的数据内容,主要有单次循环数据区域,数据比较区域,注液量、内阻等数据区域。单次循环数据区域是80行以下区域,如图2所示。
图2 电池数据表
如图2所示32批电池数据,对比两种电液性能,每种电液装6块电池,共12块电池进行循环测试。循环数据存储在80行以下的表格中,根据考察指标的多少,确定每块电池数据占的列数,这里占5列,即1~5列是第一块电池数据,6~10列是第二块电池数据,以此类推。将每个通道的数据从“Table_EachSheet”里边拷贝到数据表的指定位置,然后计算“容量衰减”。但这种格式不便于横向比较各个电池的循环情况,因而将各个电池的每10次数据筛选出来再进行排列,系统将容量数据和平台数据分开进行比较,为了进行编程,将数据区域也进行固定,这里不再详细介绍。
3 系统设计
3.1 功能设计
系统主要实现数据连续导出、连续衰减计算两大功能。衰减计算又分为容量衰减计算、平台时间衰减计算,这两个子程序设计思路大同小异。
系统的操作页面简单实用,主要设置两个按钮,对应两个程序:一个是将“Table_EachSheet”表里边每一页的数据自动拷贝到对应的数据表里边;一个是连续计算运行程序,即一批接着一批数据执行容量衰减计算、平台衰减计算、横向排列汇总等子程序。系统界面如图3所示。
图3 系统界面
3.2 程序设计
3.2.1 连续拷贝程序设计
连续拷贝程序需要建立一个路径表,路径表的格式如图3所示,1~4列是“连续拷贝”程序路径表,第1列是电池序号,第2列是批号,第3列是数据拷贝的起点,第4列是“Table_EachSheet”的页面,那么第一行的路径解释为,将“Table_EachSheet”里“_008_1”的电池数据拷贝到EXCEL文件“2013电池数据”的“第32批2013年7月26日-2”的表单中,拷贝的起始位置是“A85”单元,这是第13块电池。执行完第一行路径后,执行下一行路径。路径表需要日常维护,根据电池通道的变化,循环的接续等情况,必须作出相应的更改。连续拷贝按钮的程序运用了While Not(IsEmpty())语句,主要程序如下:
在程序里边用While Not(IsEmpty(Cells(n,2)))判断数据表里边第2列,第5行起的单元格内容是否为空,如果不为空则一直循环执行拷贝程序。定义变量a,b,c分别为“电池数据表的名称”、“循环数据拷贝起点的位置”、“Table_EachSheet.xls页面名称”,程序先跳转到Table_EachSheet.xls的“C”表单,执行子程序“兰电复制”,即复制要拷贝的数据,然后跳转到2013年电池数据.xls的“a”表单,选择“b”单元格执行粘贴功能,将参数n的值加1,重新返回While Not(IsEmpty(Cells(n,2)))语句进行判断继而执行相应操作。程序流程图如图4所示。
3.2.2 连续运算程序设计
“连续运算”程序也需要设计路径表,图3中第6列第5行起是路径表,程序根据路径表的内容跳转到相应的页面内,执行容量衰减计算、横向排列汇总等子程序,执行完后跳转到下一路径,直到路径表为空。各个批次之间的跳转和“连续拷贝”程序类似,“容量衰减”与“平台衰减”子程序设计相同,因而只以“容量衰减”子程序为例进行说明,程序主要用嵌套循环实现了某一批次各个电池每次循环的容量衰减计算,部分程序如下:
图4 连续拷贝程序流程图
程序首先判断Cells(z,2)是否为空,即判断电池序号是否为空,不为空则执行内循环程序。例如这一批次有12块电池,则执行外循环程序12次。参数m初始值为85,在内循环里递增,步进值为1,参数q初始值为2,在外循环里递增,步进值为5,因为每个电池数据在电池数据表里占5列。内循环计算各个电池每次循环放电容量的衰减值,首先判断Cells(m,q)单元格是否为空,不为空值则进行衰减计算。程序流程图如图5所示。
图5 连续运算程序流程图
4 结论
本系统运行稳定,使用效果良好,极大地缩短了电池数据处理时间。锂离子电池作为一种新型能源电池,将会是继镉镍、氢镍电池之后,市场前景最好、发展最快的一种二次电池。对锂电池循环数据处理工作进行优化,使工作变得高效无误,具有实用价值,非常值得大家去深入研究。
[1]张彦成.基于Excel宏语言的数据自动汇总研究[J].网友世界,2014(7):8-9.
Realization of lithium battery evaluation system based on VBA
WANG Wei-hua1,ZHAO Qing-yun2,XIE Hong-ming1
(1.Tianjin Jinniu Power Sources Material Co.,Ltd.,Tianjin 300400,China;2.CNOOC Tianjin Chemical Research&Design Institute,Tianjin 300131,China)
Lithium battery performance test needs several hundred of charging and discharging.The cycling performance of the battery was evaluated according to a large number of test data.Data was exported to EXCEL table by lithium battery test equipment.It requires the user to do data processing,which takes up a lot of valuable time.The realization of lithium battery evaluation system greatly improves work efficiency,ensures the accuracy of evaluation data,improves the automation level of data processing of lithium battery and has actual meaning.
VBA;EXCEL;lithium battery
TM 912
A
1002-087 X(2016)08-1590-02
2016-01-19
王卫华(1978—),河南省人,硕士,工程师,主要研究方向为工业自动化。导师:赵庆云(1963—),山东省人,教授级高工,主要研究方向为化工工艺。
王卫华