本发明涉及电池管理系统,特别涉及一种bms数据连续存储系统及方法。
背景技术:
1、电池是电化学储能电站最重要的部件,必须保证其安全稳定运行。保存电池的数据不仅可以通过分析数据改进电池管理算法,提高电池使用寿命和利用效率;还可以在出现故障时给故障分析提供数据支持,提高电池管理系统的安全管理能力。电池管理系统(bms)是一种用于电池进行监控管理的系统,其数据是自然时间顺序数据,具有等间隔存储,每个采样时间点数据大小一样,且没有在数据中间插入和删除的需求的特点。
2、在当前的系统中,bms数据存在本地或者上传到上位机存储。通常利用操作系统的文件系统存储在文件里,或者利用数据库软件存储在数据库中。其中,操作系统文件存储数据存在以下缺陷:1)不能精确控制各区域读写次数,对于有擦写次数限制的存储器,频繁读写区域会易于损坏;2)存储器写满时需要删除操作,运行效率低;3)因一个文件占用空间包含操作系统分配的空间,文件分配通常留一些冗余,且容易产生空间碎片,存储器利用率低;4)当系统时间发生变化,前后时间重复时,要么后数据会覆盖前数据,要么时间顺序混乱无法区分。同样的以数据库方式存储也有操作系统文件存储一样的问题,且数据库辅助数据更多,空间利用率更低;而数据库高级功能对bms数据来说无用。
技术实现思路
1、针对现有技术的缺陷,本发明给出了一种bms数据存储系统,以整个存储器为操作对象,进行空间分配,提高了空间利用率;同时提出一种线性循环存储方法,数据从存储器的头写到尾,写满后再从头到尾进行覆盖,保证每个区域均匀写,延长存储器寿命;采用循环覆盖方式,没有删除操作,提高了效率。
2、为了达到上述目的,本发明提供了一种bms数据存储系统,应用于存储bms数据的存储器,所述存储器被划分为m个空间,包括1个存储器头空间和m-1个簇空间;每个所述簇空间包括空间头和n个数据块,对应1个电池簇的数据存储;每个所述数据块包括多个包数据和块索引;每个所述包数据由包头、采样点数据和crc32校验码组成。
3、进一步的,所述存储器头空间包括存储器标识、簇空间个数、簇空间大小、建立时间以及crc32校验码,用于初始化验证;
4、所述存储器标识为给定的特殊字符,标识所述存储器是否已经完成初始化;
5、所述簇空间个数为所述存储器中被划分的簇的个数,再次启动时用于校验所述存储器是否与配置一致;
6、所述建立时间为所述存储器第一次初始化的时间,用于校验所述存储器的有效性;
7、所述簇空间大小为所述存储器的大小除以所述簇空间个数计算出来的大小,用于有效性校验和数据访问。
8、进一步的,所述簇空间的空间头包括簇配置crc32校验码、簇空间大小、数据块总数、簇建立时间、簇存储位置和crc32校验码;
9、所述簇配置crc32校验码为所述簇空间配置文件中的crc32校验码,当配置发生变化时,用来判定当前存储的数据无效;
10、所述簇空间大小为所述簇空间被分配到的空间大小;
11、所述数据块总数为所述簇空间包含的数据块的个数;
12、所述簇建立时间为建立所述簇空间的时间;
13、所述簇存储位置为所述簇空间相对于所述存储器开始位置的偏移。
14、进一步的,所述块索引包括块存储序号、块存储位置、块长度、块开始时间、块结束时间、块数据长度以及crc32校验码;
15、所述块存储位置是此数据块相对于所述存储器开始位置的偏移;所述块存储序号是一个32位无符号整数;首次存储数据时所述簇空间的第一个所述数据块的块存储序号为0,后续每个所述数据块被写满后,其对应的块存储序号相较上一个所述数据块依次递增1,所述簇空间的最后一个数据块写满后重回其第一个所述数据块进行存储;所述块存储序号溢出后归0;若当前所述数据块的块存储序号出现不连续时,则该数据块为所述簇空间的数据最新存储位置;
16、所述块长度为预先分配的所述数据块的存储长度;
17、所述块开始时间为所述数据块中最早数据的时间,
18、所述块结束时间为所述数据块中最晚数据时间;
19、所述块数据长度为所述数据块中已存数据的总长度。
20、进一步的,所述包头包括包存储序号、采样点数、包数据长度、包开始时间以及包结束时间;
21、所述包存储序号为32位无符号整数,首次存储数据时所述数据块的第一个所述包数据的包存储序号为0,后续每个所述包数据的包存储序号相较上一个所述包数据依次递增1,所述簇空间的最后一个数据块写满后重回其第一个所述数据块的第一个包数据进行存储;所述包存储序号溢出后归0;若当前所述包数据的包存储序号出现不连续时,则该包数据为所述数据块的数据最新存储位置;
22、所述采样点数为该数据包包含的采样点数据个数;
23、所述包数据长度为所述采样点个数于每个采样点数据长度的积;所述包开始时间为最早采样点数据时间;
24、所述包结束时间为最后采样点数据时间。
25、本发明还提供了一种bms数据连续存储方法,基于如上所述的bms数据连续存储系统包括如下步骤:
26、(1)初始化所述存储器,读取存储器的存储器头空间,获取各所述簇空间数据最新存储位置;
27、(2)接收待存储的bms数据,并得到其对应的所述簇空间;
28、(3)从所述待存储的bms数据对应的簇空间的最新存储位置开始存储数据,当一个所述数据块存满后,在所述数据块尾部更新该数据块的块索引,然后跳到下一所述数据块继续存储,存满整个所述簇空间后,跳到所述簇空间的第一个数据块继续存储,无需删除原数据,直接覆盖,实现循环存储。
29、进一步的,所述步骤(1)具体为:
30、读取所述存储器的存储器头空间,判断所述存储器头空间信息是否有效;
31、如无效则根据所述存储器设定值写所述存储器头空间,各簇空间数据最新存储位置为其第一个数据块;
32、如有效则依次读取各簇空间中每个数据块的块索引,建立各簇数据索引,同时根据所述块索引获取各簇空间数据最新存储位置,即所述块索引中块存储序号出现不连续时对应的数据块为该簇空间的数据最新存储位置。
33、进一步的,所述步骤(3)具体为:
34、(3.1)依次读取所述待存储的bms数据对应的簇空间的最新存储位置对应的数据块中各包数据的包头,包存储序号出现不连续时对应的所述包数据即为该数据块的最新存储位置,若该数据块所有包数据的包存储序号均连续,则该数据块的第一个包数据为该数据块的最新存储位置;
35、(3.2)缓存待存储的bms数据,当缓存的数据达到所述包数据的采样点数,或缓存超过设定时间,或前后采样点时间发生跳变,把当前缓存区的数据打包;
36、(3.3)将打包好的数据从该数据块的最新存储位置开始存储,并更新该包数据的包头,然后跳到下一所述包数据继续存储,存满整个所述数据块后,在所述数据块尾部更新该数据块的块索引,然后跳到下一所述数据块继续存储,存满整个所述簇空间后,跳到所述簇空间的第一个数据块继续存储,无需删除原数据,直接覆盖,实现循环存储;
37、(3.4)重复步骤(3.2)-(3.3),直至完成所有数据的存储。
38、本发明的有益效果:
39、本发明提出的bms数据连续存储系统直接操作存储器,分配空间,提高了空间利用率。采用数据块计数标识,保证时间跳变数据也可以正确存储和检索。基于此存储系统的提出的线性循环存储方法,以整个存储器为操作对象,数据从存储器的头写到尾,写满后再从头到尾进行覆盖,具有存储器均匀存储,延长整体寿命;写满后循环覆盖,无删除操作,提升运行效率;同时本发明采用自定义存储方式,也有利于数据保密。
1.一种bms数据连续存储系统,应用于存储bms数据的存储器,其特征在于:所述存储器被划分为m个空间,包括1个存储器头空间和m-1个簇空间;每个所述簇空间包括空间头和n个数据块,对应1个电池簇的数据存储;每个所述数据块包括多个包数据和块索引;每个所述包数据由包头、采样点数据和crc32校验码组成。
2.根据权利要求1所述的bms数据连续存储系统,其特征在于:所述存储器头空间包括存储器标识、簇空间个数、簇空间大小、建立时间以及crc32校验码,用于初始化验证;
3.根据权利要求1所述的bms数据连续存储系统,其特征在于:所述簇空间的空间头包括簇配置crc32校验码、簇空间大小、数据块总数、簇建立时间、簇存储位置和crc32校验码;
4.根据权利要求1所述的bms数据连续存储系统,其特征在于:所述块索引包括块存储序号、块存储位置、块长度、块开始时间、块结束时间、块数据长度以及crc32校验码;
5.根据权利要求1所述的bms数据连续存储系统,其特征在于:所述包头包括包存储序号、采样点数、包数据长度、包开始时间以及包结束时间;
6.一种bms数据连续存储方法,基于如权利要求1-5任一项所述的bms数据连续存储系统,其特征在于,包括如下步骤:
7.根据权利要求6所述的bms数据连续存储方法,其特征在于,所述步骤(1)具体为:
8.根据权利要求6所述的bms数据连续存储方法,其特征在于:所述步骤(3)具体为:
