一种数据存储方法与流程

文档序号:11133780阅读:715来源:国知局
一种数据存储方法与制造工艺

本发明涉及一种电数字数据处理领域,特别是一种数据存储方法。



背景技术:

在工业生产中,经常需要对各种参数进行连续记录存储,产生连续的历史数据,为技术和管理人员提供分析研究的一手资料。但是,很多工况环境不佳,存储器在存储过程中不可避免的出现意外掉电的情况,导致数据存储过程被中断,特别是对于采用flash存储器作为存储介质的,意外掉电可能导致已存储的历史数据错误。flash存储器是一种常用的存储介质,具有可掉电存储、存储空间大、成本低的特点。对flash存储器的重复写入操作的步骤一般为:首先获取目的地址所在扇区的数据,然后把整个扇区中目的地址的数据用待写的数据替换,这样就整合了老数据和待写的数据,最后把整合的数据再写入到flash存储器中。由于flash存储器的读写速度较慢,而且是进行先擦后写的操作,因此如果在写的过程中发生意外掉电等异常情况,可能破坏原来的数据。另外,flash存储器的擦除寿命有限,随着擦除次数的增加,会有一些存储块逐渐变得不稳定或存储失败,当数据需要实时存储时,flash存储器受到使用寿命的限制。为实现数据的实时存储,一般采用写入速度快、擦写次数不限制的铁电存储器进行数据存储,但该存储器的成本较高,当需要存储大量数据时,成本将大大增加。

工业应用中,很多时候不需要记录并保留全部实时数据,会以一定的采样周期对参数进行采样记录。有的参数虽然实时采样但存储的数据却是将一定周期内的采样数据进行处理后再行存储。比如光伏并网逆变器,相比实时发电量的变化情况,更多时候关心的是日发电量,因此需要实时采样、统计发电量,并在每日结束时对统计的日发电量进行存储。光伏并网逆变器基本需要保证20~25年的数据量,其数据量也不小。本发明提出一种适用于需要实时更新、定期存储且数据量大的数据存储装置和数据存储方法。



技术实现要素:

本发明的目的在于提供一种数据存储方法,以克服现有技术中存在的缺陷。

为实现上述目的,本发明的技术方案是:一种数据存储方法,提供一包括多个存储块的主存储区、一用于备份所述主存储区数据的备份存储区、一包括至少一个索引单元的索引区、一用于暂存待存储数据的数据暂存区;按照如下步骤实现:

步骤S12:获取待存储数据,并将其写入所述数据暂存区;

步骤S13:计算当前的时间信息对应的存储偏移量;

步骤S14:按照如下方式计算所述待存储数据在所述主存储区存储的写入地址,并将所述待存储数据按照该写入地址写入所述主存储区中:

写入地址=主存储区的起始地址+当前索引单元存储的起始偏移量+存储偏移量;

步骤S15:按照如下方式计算所述写入地址映射在所述备份存储区的备份地址,并将所述待存储数据按照该备份地址写入所述备份存储区:

备份地址=备份存储区的起始地址+当前索引单元存储的起始偏移量+存储偏移量;

其中,所述索引单元用于存储所述存储块的起始偏移量,所述当前的时间信息包括用于标记存储周期的存储标记以及用于标记所述待存储数据对应的采样时间序列号的时间标记。

进一步的,初次上电进行数据存储前,按照如下步骤S110至S113进行初始化:

步骤S110:擦除所述主存储区以及所述备份存储区;

步骤S111:读取所述主存储区一未写入数据的存储块的起始地址,将当前时间信息的存储标记写入该起始地址;

步骤S112:计算所述主存储区当前的存储块的起始地址相对于所述主存储区起始地址的起始偏移量,将该起始偏移量写入当前索引单元;

步骤S113:按照如下方式计算所述主存储区当前的存储块的起始地址映射在所述备份存储区的备份地址,并将该存储标记写入该备份地址:

备份地址=备份存储区的起始地址+当前索引单元存储的起始偏移量。

进一步的,还提供一用于存储时间信息的时间暂存区,所述步骤S110还包括:

获取当前的时间信息,并将其写入时间暂存区;

所述步骤S15之后,还包括如下步骤:

步骤S16:获取所述当前的时间信息,并将其写入时间暂存区。

进一步的,所述步骤S12具体包括如下步骤S121至S122:

步骤S121:判断当前的时间信息的存储标记与所述时间暂存区中存储的时间信息的存储标记是否一致,若一致,则执行步骤S122,否则跳转执行所述步骤S13至步骤S16,步骤S16之后执行所述步骤S111至步骤S113;

步骤S122:判断当前的时间信息的时间标记与所述时间暂存区中存储的时间信息的时间标记是否一致,若一致,则获取待存储数据,并将其写入所述数据暂存区,并重复执行所述步骤S122;否则跳转执行所述步骤S13至步骤S16。

进一步的,还提供一用于存储主存储区校验码的主校验区以及一用于存储备份存储区校验码的备份校验区;

在所述步骤S14中,将所述待存储数据写入所述写入地址,或在所述步骤S111中,将当前的存储标记写入所述起始地址,还包括计算所述主存储区的校验码;若检验正确,则将所述校验码写入所述主校验区,否则擦除所述主存储区与所述主校验区,将所述备份存储区存储的数据写入所述主存储区的相应地址,并将所述备份校验区的校验码写入主校验区;

在所述步骤S15中,将所述待存储数据写入备份地址,或在所述步骤S113中,将当前的存储标记写入备份地址,还包括计算所述备份存储区的校验码;若检验正确,则将所述校验码写入备份校验区,否则擦除备份存储区和备份校验区,将主存储区存储的数据写入备份存储区的相应地址,将主校验区的校验码写入备份校验区。

进一步的,所述索引单元采用环形循环方式指向下一索引单元。

进一步的,在所述步骤S13中,当前的时间信息对应的存储偏移量的计算方法如下:存储偏移量=n1+n2*(时间标记-1)+1,其中,n1为存储标记的字节长度,n2为待存储数据的字节长度,且n1、n2均为正整数。

进一步的,所述时间信息包括年份、月份以及日期,所述存储标记为年份,所述时间标记=月份*31+日期。

进一步的,所述主存储区和所述备份存储区采用nor flash存储器,所述索引区、所述数据暂存区、所述时间暂存区采用铁电存储器;所述主校验区和所述备份校验区均采用铁电存储器。

进一步的,当存储过程中意外中断后,重新上电后的数据存储方法按照以下步骤S21至S24实现:

步骤S21:读取所述主存储区存储的数据,并重新计算主存储区的校验码;

步骤S22:判断重新计算的校验码与所述主校验区存储的校验码是否一致,若一致,则擦除所述备份存储区和所述备份校验区,将所述主存储区存储的数据写入所述备份存储区的相应地址,将所述主校验区的校验码写入备份校验区,并跳转执行所述步骤S12,继续存储数据;若不一致,则执行步骤S23;

步骤S23:读取所述备份存储区存储的数据,并重新计算备份存储区的校验码;

步骤S24:判断重新计算的校验码与所述备份校验区存储的校验码是否一致,若一致,则擦除所述主存储区和所述主校验区,将所述备份存储区存储的数据写入所述主存储区的相应地址,将是备份校验区的校验码写入所述主校验区,跳转执行所述步骤S12,继续存储数据;若不一致,无法恢复数据,依照初次上电存储时的步骤进行初始化。

相较于现有技术,本发明具有以下有益效果:

(1)数据在主存储区或备份存储区的存储地址与该数据的采样时间密切相关,可根据存储偏移量的计算规则,反推可获取任一存储单元存储的数据对应的采样时间,写入的数据未包含具体的采样时间,节约存储空间,同时不影响数据的读取与还原。以包括年份、月份、日期的时间信息为例,以年份为存储标记将一年内的全部数据存储于同一存储块中,并将年份信息写入该存储块中;根据当前的时间的月份和日期将隔天的数据转存至主存储区或备份存储区相应的存储地址,某一天在主存储区/备份存储区对应的存储地址是固定的,在读取该年份数据时,在主存储区中读取该年份对应的存储块,根据某一数据的存储地址可还原该数据对应的月份和日期,不需要写入具体的月份和日期,节约存储空间且不影响后期的数据还原。

(2)本发明采用主存储区和备份存储区两个相同但独立的扇区对数据进行分时存储,先在主存储区中存储,再写入备份存储区,主存储区和备份存储区形成相同、互为备份的存储数据,在扇区进行擦写过程中任何时候掉电,保证至少主存储区或备份存储区存储的数据是有效的,可利用其一存储区对另一存储区进行数据恢复,重新建立主存储区和备份存储区互为备份的数据结构。

(3)本发明同时采用铁电存储器和Nor Flash存储器,利用铁电存储器擦写不限次数且可掉电存储的特性进行实时存储,弥补Nor Flash存储器擦写次数受限的不足,利用Nor Flash存储器存储空间大、成本低的特性进行大数据量存储,弥补Nor Flash存储器成本高的不足,二者互补,可同时满足实时存储和大数据量存储的需求。

(4)对主存储区和备份存储区分别配置一校验区,每一写入主存储区或备份存储区时都进行校验,保证每一写入数据都正确,同时可利用校验区存储的校验码判断主存储区或备份存储区存储的数据是否出错。

附图说明

图1为本发明中数据存储装置的原理图。

图2为本发明中数据存数方法的流程图。

具体实施方式

下面结合附图,对本发明的技术方案进行具体说明。

在本实施例中,以存储光伏系统的日发电量为例,对本发明所提出的数据存储装置和存储方法进行详细说明,以便本领域技术人员更加清楚、明白的理解本发明的发明构思。

本发明提供一种数据存储方法,还提供一种数据存储装置,如图1所示,包括主存储区、备份存储区、索引区、数据暂存区、时间暂存区、主校验区和备份校验区。其中,主存储区和备份存储区采用nor flash存储器,用于存储传感器或其他方式采集到的需要长期存储的数据。本实施例中,即为光伏系统的日发电量;索引区、数据暂存区、时间暂存区、主校验区和备份校验区采用铁电存储器,用于存储在整个数据采集周期内,需要不断更新、重复擦写的数据。

进一步的,在本实施例中,主存储区包括多个地址长度相同的存储块,备份存储区与主存储区形成完成相同的存储块结构,存储块用于存储一个存储周期内的待存储数据。本实施例中,每一存储块用于存储以年为时间周期的采样数据,每一存储块的地址长度大于一年内待存储数据需要的最大的地址长度,使得数据块不被覆盖,能完整的再现该年份的全部数据。

进一步的,在本实施例中,索引区则包括至少一个索引单元,索引单元用于存储主存储区的其一存储块起始地址相对于主存储区起始地址的起始偏移量,索引单元采用环形循环方式指向下一索引单元;本实施例中,设置有20个索引单元,分别用于写入主存储区的其中20个存储块的起始地址,并且可覆盖写入不同存储块的起始地址。

进一步的,在本实施例中,数据暂存区用于暂存待存储数据。本实施例中,待存储数据即为当前时间累计的日发电量。

进一步的,在本实施例中,时间暂存区用于存储待存储数据对应的采样时间的时间信息。应说明的是,采样时间可以根据实际需要包含年份、月份、日期、时、分、秒等信息,甚至更小的时间单位,该时间暂存区存储的时间信息包括用于标记一个存储周期的存储标记和用于标记当前的待存储数据的采样时间序列号的时间标记。本实施例中,存储周期为一年,存储标记即为对应的年份,采样周期为1天,时间标记即为月份和日期,更具体的可以是当前的日期对应在该年份中的天数。该采样时间序列号表示当前的待存储数据对应的采样周期在储存周期中的序号,也即表示该当前的待存储数据为第几次采样的数据。

进一步的,在本实施例中,主校验区、备份校验区,分别用于存储主存储区的校验码、备份存储区的校验码。

进一步的,在本实施例中,索引区、数据暂存区、时间暂存区、主校验区和备份校验区等需要重复擦写的存储单元采用铁电存储器,主存储区和备份存储区用于存储大量数据存储单元采用Nor Flash存储器,利用铁电存储器擦写不限次数且可掉电存储的特性进行实时存储,弥补Nor Flash存储器擦写次数受限的不足,利用Nor Flash存储器存储空间大、成本低的特性进行大数据量存储,弥补Nor Flash存储器成本高的不足,结合二者的优点,互补不足,同时满足实时存储和大数据量存储的前提下,控制成本。

进一步的,在本实施例中,本发明所提出的一种数据存储方法,如图2所示,具体包括以下步骤:

需要说明的是,以下时间信息包括存储标记和时间标记,本实施例中,以光伏系统的日发电量为存储对象,时间信息包括年份、月份、日期,其中年份即为存储标记,时间标记则包括月份和日期,如当前日期为2016年9月20日,其中存储标记为2016,时间标记为月份*31+日期,具体为9*31+20=299。应说明的是,默认月份按每个月31日计算,以简化计算并且保证每一个采样时间均有对应的存储单元,保证数据完整。

初次上电进行数据存储前,按照如下步骤S110至S113进行初始化:

步骤S110:擦除主存储区以及备份存储区;获取当前的时间信息,并将其写入时间暂存区;

步骤S111:读取主存储区一未写入数据的存储块的起始地址,将当前的存储标记即当前的年份写入该起始地址;假定该存储块即为主存储区的第一个数据块,该存储块的起始地址为Ox0000,也即为主存储区的起始地址,则将当前的年份写入地址为Ox0000的存储单元中;

步骤S112:计算主存储区当前的存储块的起始地址相对于主存储区起始地址的起始偏移量,将该起始偏移量写入当前索引单元;基于步骤S111,计算的起始偏移量为0;

步骤S113: 主存储区当前的存储块的起始地址映射在备份存储区的备份地址,备份地址=备份存储区的起始地址+当前索引单元存储的起始偏移量,将该存储标记写入该备份地址;假定该备份存储区的起始地址为Ox8000,则该备份地址则为Ox8000;

以上完成了初次上电的初始化过程。

步骤S12:获取待存储数据,并将其写入数据暂存区;

步骤S12具体包括如下步骤S121至S122:

步骤S121:判断当前的时间信息的存储标记与时间暂存区中存储的时间信息的存储标记是否一致,若一致,执行步骤S122,即重新获取待存储数据写入数据暂存区并获取对应的时间信息;否则跳转执行步骤S13至步骤S16,完成待存储数据的存储,步骤S16之后跳转执行步骤S111至步骤S113,即重新读取主存储区其一未写入数据的存储块,并完成存储标记在主存储区和备份存储区的存储,以及下一索引单元中写入起始偏移量,准备向新的存储块写入待存储数据。

步骤S122:判断当前的时间信息的时间标记与时间暂存区中存储的时间信息的时间标记是否一致,若一致,则说明还未到下一采样时间,本实施例中即为一天还未结束,则获取待存储数据,并将其写入数据暂存区,并重复执行步骤S122;否则跳转执行步骤S13。

如上步骤S111至S113中,实现了将存储标记写入主存储区/备份存储区的其一存储块的起始地址,而S121至S122中确保将具有同一存储标记的数据存储在同一存储块中,便于数据的读取与还原。

步骤S13:计算当前的时间信息对应的存储偏移量;优选的,存储偏移量=n1+n2*(月份*31+日期-1)+1,其中,n1为存储标记的字节长度,n2为待存储数据的字节长度,n1、n2均为正整数。

数据在主存储区或备份存储区的存储地址与该数据的采样时间有关,可根据存储偏移量的计算规则,反推可获取任一存储单元存储的数据对应的采样时间,写入的数据未包含具体的采样时间,节约存储空间,同时不影响数据的读取与还原。以包括年份、月份、日期的时间信息为例,年份即为存储标记,月份和日期作为时间标记,将同一年内的全部数据存储于同一存储块中,且该存储块仅存储一年的数据,并将年份信息写入该存储块中;以月份和日期作为时间标记,将隔天的数据转存至主存储区或备份存储区,每一数据在主存储区的写入地址与其对应的月份和日期有关,一年中某一天在主存储区/备份存储区对应的存储地址是固定的,在读取该年份数据时,在主存储区中读取该年份对应的存储块,根据某一数据的存储地址可还原该数据对应的月份和日期,不需要写入具体的月份和日期,节约存储空间且不影响后期的数据还原。

步骤S14:计算当前的待存储数据在主存储区存储的写入地址,写入地址=主存储区的起始地址+当前索引单元存储的起始偏移量+存储偏移量,并将待存储数据写入该写入地址;

步骤S15:计算当前的待存储数据在备份存储区存储的备份地址,备份地址=备份存储区的起始地址+当前索引单元存储的起始偏移量+存储偏移量,并将待存储数据写入该备份地址;

步骤S16:获取当前的时间信息,将当前的时间信息写入时间暂存区,并擦除数据暂存区,跳转执行步骤S12,开始存储下一个待存储数据。

如上S11至S16,实现了将数据写入主存储区进行存储,同时将该数据写入其在备份存储区的备份地址进行数据备份存储。数据存储之前,主存储区和备份存储区是存储块结构完全相同的、内容均为空的两个存储区,数据存储之后,主存储区和备份存储区会形成存储数据内容也相同的两个存储区。

如上S14中将待存储数据写入该写入地址或S111中将当前的存储标记写入该起始地址,还包括计算主存储区的校验码,若检验正确,则将校验码写入主校验区,否则擦除主存储区与主校验区,将备份存储区存储的数据内容写入主存储区相应地址,使得主存储区形成与备份存储区完全一致的数据内容,将备份校验区存储的校验码写入主校验区。如上备份存储区存储的数据内容在主存储区相应地址的具体对应关系如下:主存储区相应地址=备份存储区的备份地址-(备份存储区的起始地址-主存储区的起始地址)。

如上S15中将待存储数据写入该备份地址或S113中将当前的存储标记写入该备份地址,还包括计算备份存储区的校验码,若检验正确,则将校验码写入备份校验区,否则擦除备份存储区和备份校验区,将主存储区存储的数据内容写入备份存储区相应地址,使得备份存储区形成与主存储区完全一致的数据结构,将主校验区存储的校验码写入备份校验区。如上主存储区存储的数据内容在备份存储区相应地址的具体对应关系如下:备份存储区相应地址=主存储区的备份地址+(备份存储区的起始地址-主存储区的起始地址)。

在主存储区/备份存储区写入数据时,每次均对写入的数据进行校验,保证每一写入数据都正确。本实施例中,采用计算主存储区或备份存储区的数据的和校验码的方式进行校验。以待存储数据写入主存储区的写入地址为例,校验方式如下:待存储数据写入之前,先将校验区中的校验码取出,与待存储数据计算出一个原始校验码备用将待存储数据写入之后,将主存储区中数据读出计算出新校验码;若两个校验码一致,则校验正确将校验码写入校验区,否则校验有误,即数据写入过程出错。在备份存储区写入数据时的校验方式同如上校验方式。

当存储过程中意外中断后,重新上电后的数据存储方法按照以下步骤S21至S24实现:

步骤S21:读取主存储区存储的数据,并重新计算主存储区的校验码;计算校验码的方法与写入数据时校验码的计算方法一致

步骤S22:判断重新计算的校验码与主校验区存储的校验码是否一致,若一致,则说明主存储区存储的数据有效无误,擦除备份存储区和备份校验区,将主存储区存储的数据写入备份存储区的相应地址,将主校验区的校验码写入备份校验区,并跳转执行步骤S12,继续存储数据;若不一致,则说明主存储区的数据有误不可取,则执行步骤S23;

步骤S23:读取备份存储区存储的数据,并重新计算备份存储区的校验码;

步骤S24:判断重新计算的校验码与备份校验区存储的校验码是否一致,若一致,则说明主存储区存储的数据有效无误,擦除主存储区和主校验区,将备份存储区存储的数据写入主存储区相应地址,将是备份校验区的校验码写入主校验区,跳转执行步骤S12,继续存储数据;若不一致,则说明主存储区和备份存储区的数据均被破坏,采用软件方式以无法恢复数据,但这种情况出现概率极低;若出现该情况,则可依照初次上电存储时的步骤进行初始化。

在本实施例中,重新上电后,首先采用与数据写入主存储区或备份存储区时相同的校验方式重新计算校验码,并将其与主校验区或备份校验区内存储的校验码进行比较,验证存储中断是否造成数据破坏,并根据另一存储区的数据进行该存储区的数据恢复,重新建立两个数据完成相同的存储区。确保主存储区和备份存储区的数据一致后再行存储新数据。

以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,例如将上述隔天存储数据修改为1小时或2天或其他时间周期存储一次,或将上述一个存储块用于存储一年的数据,修改为其他时间周期,或将本发明的数据存储装置或数据存储方法用于其他领域存储其他参数,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1