一种基于VBA的电池容检结果筛选配组方法与流程

文档序号:24246513发布日期:2021-03-12 13:23阅读:80来源:国知局
一种基于VBA的电池容检结果筛选配组方法与流程
本发明涉及蓄电池生产领域,具体涉及一种基于vba的电池容检结果筛选配组方法。
背景技术
:铅酸蓄电池生产过程中,在电池加充阶段一般设有在线容检以判断电池是否满足工艺要求,是否有隐藏的不良。实际生产过程中,面对大量的容检数据,一般采用放电固定时间,判断终止电压的方式进行快速判定;容检结果的收集与分析一般由生产员工完成。然而由于蓄电池在放电末期电压下降极快,终止电压判断电池容量的方法并不稳定,可靠性也不高。另一个问题是:即使电池容检容量满足了工艺要求电池也不一定是正常的。经验显示,如果一个电池的容量合格但在这个批次里其偏离整理水平一定程度,那这个电池也是极大概率存在问题的,而按照传统方式并不能发现这样的不良。在铅酸蓄电池生产过程中,电池的配组一般由生产人员完成,生产人员需要收集容检结果并按照工艺进行配组,对生产人员的电脑操作水平及数据分析水平有着较高的要求。由于人工的不确定性,配组的成功率及组内电池的一致性得不到保障。为此,如何解决上述现有技术存在的不足,是本发明研究的课题。技术实现要素:为解决上述问题,本发明公开了一种基于vba的电池容检结果筛选配组方法。为了达到以上目的,本发明提供如下技术方案:一种基于vba的电池容检结果筛选配组方法,该方法包括如下步骤:步骤1:分批次对蓄电池进行在线容检,通过充电机采集数据,并形成文本数据进行存储;步骤2:利用excel的vba代码建立vba数据处理模块,所述vba数据处理模块包括数据导入模块、数据处理模块及输出模块;所述数据导入模块导入的数据包括蓄电池批号数据、蓄电池单体序号数据及放电时间数据;所述数据处理模块处理数据的步骤包括:a.预先存储工艺标准数据,比较所有导入的蓄电池的放电时间数据,将超出工艺范围下限的放电时间数据剔除,在此基础上再去掉放电时间数据中的一个最大值和一个最小值,再计算剩余放电时间数据的平均值μ0和标准差σ0;b.之后将容检结果数据按回路分组,每组数据再按上述方式计算每回路的均值μ和标准差σ;分组时按照同回路优先级最高、相邻回路优先级次之的配组原则将电池按照其容检结果进行配组;c.最后按照容检结果不低于工艺下限且不超出μ0±xσ0且不超出对应回路的μ±x1σ的标准将异常容检结果通过输出模块输出;所述输出模块输出的数据包括正常电池分组排序数据以及异常电池数据;步骤2中利用excel的vba代码建立vba数据处理模块进一步包括:打开excel的vba窗口编写vba程序:数据导入模块(负责原始数据导入)[1]userform1.show显示参数设置窗体,程序运行前强制用户检查参数设置[2]datafilename=dir(databastworkbook.path&"\"&"*.xls")读取数据库中的数据文件列表[3]setdatafileworkbook=workbooks.open(databastworkbook.path&"\"&"*.xls")打开数据文件[4]d1=datafileworkbook.rows(1).find("阶段",lookat:=xlwhole).column查找并读取特征数据“阶段”的列号[5]d2=datafileworkbook.rows(1).find("阶段时间",lookat:=xlwhole).column查找并读取特征数据“阶段时间”的列号[6]d3=datafileworkbook.rows(1).find("控制方式",lookat:=xlwhole).column查找并读取特征数据“控制方式”的列号[7]dimarray(1to255)保存根据特征数据和工艺参数定位、计算出的容检结果的数组[8]thisworkbook.sheets(1).cells(thisworkbook.sheets(1).range("e65536").end(xlup).row+1,5)=array(n)输出容检结果至数据导入区域,其它数据导入方式相同[9]datafileworkbook.closefalse关闭数据文件[10]msgbox"数据导入完成",vbinformation,"提示"弹出提示,提示用户数据导入完成;工艺参数设置模块(负责用户交互)[1]publiccasdouble,xasdouble,x1asdouble,uasdouble定义c为工艺标准,x、x1为均一性标准,u为终止电压,它们在程序运行时被赋值,可通过参数设定窗体被更改[2]userform1参数设置窗体[3]userform1.combobox1.list=array("c10","c3","c4","")在窗体中为容检方式提供c10、c3、c4提供3个选项,之后程序根据容检方式自动确定工艺标准”c”。[4]userform1.combobox2.list=array("10.8","10.5","9.6","")在窗体中为终止电压“u”提供10.8v、10.5v、9.6v提供3个选项[5]c=mid(combobox1.text,2,8)/24根据用户输入为工艺标准c赋值[6]x=me.textbox1.text,x1=me.textbox2.text,u=combobox2.text根据用户输入为均一性标准x、x1和终止电压u赋值初始化模块privatesubworkbook_open()程序运行时对各控制参数进行初始化数据处理模块及输出模块(负责数据分析和输出)[1]dimgroup(1to255)根据电池所在的回路对数据进行分组,一个回路为一组,分组结果记录在数组group中。[2]dimarray0(1to4096)forn=1torange("e65536").end(xlup).row-4ifcells(n+4,5)>=candcells(n+4,5)<>application.max(range("e5:e"&range("e65536").end(xlup).row))andcells(n+4,5)<>application.min(range("e5:e"&range("e65536").end(xlup).row))thenarray0(n)=cells(n+4,5)endifnextn对所有的数据进行筛选,将不符合工艺的数据去除,再去掉一个最大值和一个最小值,剩余数据存入数组array0中。[3]σ0=application.stdevp(array0)'标准差σμ0=application.average(array0)'平均值μ计算出数组array0的标准差标准差σ0和平均值μ0作为电池筛选标准。[4]dimarray2(1to255)forn1=group(n)+1togroup(n+1)ifcells(n1,5)>=cthenarray2(n1-arr(n))=cells(n1,5)elsecells(range("p65536").end(xlup).row+1,16)=cells(n1,5)endifnextn1对每组数据进行筛选,将不符合工艺的数据去除,这里将不符合工艺的容检结果输出,再去掉一个最大值和一个最小值,剩余数据存入一个数组中。[5]σ=application.stdevp(array2)μ=application.average(array2)计算出每组数据的标准差标准差σ和平均值μ作为电池筛选标准,此处计算完成后将两个最值重新加入数组。[6]forx=1toubound(array2)-1fory=x+1toubound(array2)ifarray2(x,1)>array2(y,1)thentemp=array2(x,1)array2(x,1)=array2(y,1)array2(y,1)=tempendifnextynextx对每组容检结果进行排序,按容量由高到低排序,便于进行同回路配组[7]if-array2(n)+μ<=σ*x1andx>=cand-array2(n)+μ0<=σ0*x1thencells(range("g65536").end(xlup).row,11)=array2(n)对每个符合工艺标准容检结果进行判断,判断是否符合不超出μ0±xσ0且不超出对应回路的μ±x1σ的规则并将符合结果输出。这里通过控制输出顺序实现配组,数据筛选按组进行,相邻回路对应的数据组进行筛选的顺序是也相邻的,从而输出结果将符合同回路、相邻回路优先配组的原则。[8]elsecells(range("p65536").end(xlup).row+1,16)=xendif将不符合均一性标准的结果输出。[9]privatesubcommandbutton3_click()userform1.showendsub手动设置工艺参数按钮,可在不运行程序时进入参数设置窗体[10]privatesubcommandbutton5_click()thisworkbook.sheets(1).range("a5:b65536").clearcontentsendsub清空输入数据按钮[11]privatesubcommandbutton6_click()thisworkbook.sheets(1).range("g5:z65536").clearcontentsendsub清空输出数据按钮。步骤3:调用建立的vba数据处理模块处理步骤(1)所得的文本数据,根据结果挑出异常蓄电池,并配组正常蓄电池。进一步的,所述vba数据处理模块还包括参数设置模块,该参数设置模块输入的参数包括容检方式参数、终止电压参数及容检阶段号,所述vba数据处理模块根据所述参数设置模块所输入的参数检索所述步骤(1)中得到的文本数据。进一步的,所述步骤(1)中将同一日期采集的数据置于同一文件夹,文件夹按日期命名后,再将该文件夹按照批次置于一个文件夹中作为下级目录。进一步的,所述步骤(1)中形成的每一批次的蓄电池在线容检,相互独立,互不干涉。进一步的,所述步骤(1)中充电机采集的数据采集的方法为:巡检线连接每个蓄电池的正负极,充电机实时监测采集电池电压、电流和阶段容量数据。进一步的,所述所述vba数据处理模块的输出模块还包括原始电池数据。本发明的蓄电池分组以及数据处理的技术原理如下:1、分组原理,同回路的蓄电池由于在一个环境下化成充电,并且电流完全相同,理论上容量应当十分接近,所以按回路分组分析,能够很好的分析和区分出不良的电池。2、数据处理原理:对比设计容量与实际容量,可以区分明显不良的蓄电池,然后利用统计学原理,统计大量的容检数据后,找到蓄电池容量偏离总体水平的量与电池不良的关系,再据此区分不良电池。通过该方法,提高了在线容检过程中的不良蓄电池检出率,vba的融入简化了操作步骤并提高了数据处理分析得准确性和速度。相对与现有技术,本发明具有如下优点:1、方法操作门槛低、操作简便、自动化程度和可靠性高。2、通过简单的调整和优化能够应用到各种在线容检和实验测试中,对各种容检方法具有适应性。3、采用多种判断方法联合判断筛选异常电池,能够发现传统方法不能发现的异常电池。4、减少了人工的同时,增加了配组的一致性与可靠性。附图说明图1为本发明实施例的流程示意图;图2为本发明实施例的导入模块与参数设置模块的流程示意图;图3为本发明实施例的数据处理模块的处理流程示意图;图4为本发明实施例的操作界面示意图。图5为本发明实施例的参数设置模块的界面示意图;图6为本发明实施例的vba数据处理模块执行结果示意图。具体实施方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者间接在该另一个元件上。当一个元件被称为是“连接于”另一个元件,它可以是直接连接到另一个元件或间接连接至该另一个元件上。需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。实施例:参见图1-6,一种基于vba的电池容检结果筛选配组方法,该方法包括如下步骤:步骤1:分批次对蓄电池进行在线容检,通过充电机采集数据,并形成文本数据进行存储;例如两个批次的蓄电池分别为12v100和12v150各500只,则是12v100的500只一起在线容检和数据处理,12v150的500只一起在线容检和数据处理,相互独立,互不干涉;充电机可采用金帆的母线式电池化成充放电电源,型号为uc-3000gh,规格为350v/60a/8回路;数据采集方式为巡检线连接每个电池正负极,充电机程序实时监测采集电池电压、电流和阶段容量数据;操作过程中将充电机采集的数据保存为excel数据表格(尾缀:.xls),具体的,可将同一日期采集的数据置于同一文件夹,文件夹按日期命名后,再将该文件夹按照批次置于一个文件夹中作为下级目录;步骤2:利用excel的vba代码建立vba数据处理模块,vba数据处理模块包括数据导入模块、参数设置模块、数据处理模块及输出模块;数据导入模块导入的数据包括蓄电池批号数据、蓄电池单体序号数据及放电时间数据;数据处理模块处理数据的步骤包括:a.根据预先存储工艺标准数据,比较所有导入的蓄电池的放电时间数据,将超出工艺范围下限的放电时间数据剔除,在此基础上再去掉放电时间数据中的一个最大值和一个最小值,再计算剩余放电时间数据的平均值μ0和标准差σ0;b.之后将容检结果数据按回路分组,每组数据再按上述方式计算每回路的均值μ和标准差σ;假如一批次电池只用了一台充电机,充电机的规格为350v/60a/8回路,充电机号为11,对应每个回路号则为11-1、11-2……11-8,每个回路可接15只电池,每个电池号就为11-1-1,11-1-2……11-8-15.分组方式为11-1-1~11-1-15为一组,11-2-1~11-2-15为一组,依次类推,共8组;其中,分组时按照同回路优先级最高、相邻回路优先级次之的配组原则将电池按照其容检结果进行配组;(一般数据计算过程数据量很大,在此作简化说明;假设一个批次的蓄电池只有10只,容检使用了2个回路,蓄电池编号为1-1~1-5和2-1~2-5.工艺标准为放电时间≥10:00:00(工艺标准数据),容检结果(采集的数据)为:电池序号放电时间电池序号放电时间1-110:10:002-110:15:001-211:00:002-211:30:001-39:00:002-38:00:001-411:20:002-410:20:001-510:30:002-510:50:00数据处理模块按如下步骤进行处理:a、vba数据处理模块首先对于整个批次所有的数据进行处理,将超出工艺范围下限的放电时间数据剔除(1-3和2-3),在此基础上再去掉放电时间数据中的一个最大值和一个最小值(2-2和1-1),剩余数据为:电池序号放电时间电池序号放电时间1-211:00:002-110:15:001-411:20:002-410:20:001-510:30:002-510:50:00然后计算出平均值μ0=10:42:30标准差σ0=00:23:03b、电池1-1~1-5分为一组,2-1~2-5分为一组。vba数据处理模块将分别按步骤a的处理方式进行数据处理。剔除后的数据为:电池序号放电时间电池序号放电时间1-211:00:002-410:20:001-510:30:002-510:50:00之后对于第1组计算出平均值μ1=10:45:00标准差σ1=00:15:00再对于第2组计算出平均值μ2=10:35:00标准差σ2=00:15:00c、最后按照容检结果不低于工艺下限且不超出μ0±xσ0且不超出对应回路的μ±x1σ的标准将异常容检结果输出,这里的x和x1是根据理论计算和实际统计了大量容检数据进行校正所得出的经验值。假设x=x1=2,以电池1-1为例,首先需要满足容检时间≥10:00:00,其次需要满足“μ0±xσ0”的标准,即在“10:42:30±00:46:06”范围内,其属于第1回路,故还需满足“μ1±xσ1”的标准,即在“10:45:00±00:30:00”范围内;电池1-1的容检时间为10:10:00,满足前2条要求但不满足第2条要求,故判断不合格,将作为异常电池被vba程序挑出。注:上述说明中的数据均为随机生成,不代表实际数据,并且可能会存在与实际不符的情况。假使上述说明中的全部数据都通过了筛选,现在按2个一组进行配组,那么1-2和1-4由于容量接近且处于同一回路将配为一组,同理1-1和1-5、2-2和2-5、2-1和2-4将配为一组。同回路配组完成后,每回路还剩1只电池,由于1回路与2回路为相邻回路,故剩下的1-3与2-3配为一组。当然,实际情况下电池间的差距会更小,并且数量足够多,配为一组的电池不会相差这么大。)上述vba数据处理模块还包括参数设置模块,该参数设置模块输入的参数包括容检方式参数、终止电压参数及容检阶段号,vba数据处理模块根据参数设置模块所输入的参数检索步骤1中得到的文本数据;上述分组原理:同回路的电池由于在一个环境下化成充电,并且电流完全相同,理论上容量应当十分接近,所以按回路分组分析,能够很好的分析和区分出不良的电池。上述数据处理原理:对比设计容量与实际容量,可以区分明显不良的电池,然后利用统计学原理,统计大量的容检数据后,找到电池容量偏离总体水平的量与电池不良的关系,再据此区分不良电池。通过该方法,提高了在线容检过程中的不良电池检出率,vba的融入简化了操作步骤并提高了数据处理分析得准确性和速度。c.最后按照容检结果不低于工艺下限且不超出μ0±xσ0且不超出对应回路的μ±x1σ的标准将异常容检结果通过输出模块输出;输出模块输出的数据包括正常电池分组排序数据以及异常电池数据;步骤3:调用建立的vba数据处理模块处理步骤1所得的文本数据,根据结果挑出异常蓄电池,并配组正常蓄电池。vba数据处理模块的输出模块输出的数据还包括原始电池数据,便于进行对比校验。本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1