一种用于延长电能表寿命的EEPROM损耗均衡方法
技术领域
本发明涉及一种EEPROM的损耗均衡方法,具体讲涉及一种用于延长电能表寿命的EEPROM损耗均衡方法。
背景技术
随着电能表技术的发展,用户对电能表的需求日益增多,电能表的数据存储量也不断增大。EEPROM作为一种电可擦除可编程只读存储器,使用方便,价格适中,已经在电能表上大量应用。作为重要数据的非易失性存储器,EEPROM的寿命及可靠性关系到整表的正常运行。但其寿命有限,一般EEPROM的寿命由写操作的次数定义,目前电表上主流EEPROM的寿命为100万次的擦写寿命。虽然现在损耗均衡方法已经很多,但是基本上都用于上位机的flash或者用在比较大的系统中,这些方法用在一个相对简单的,对可靠性、实时性、成本要求很高的电能表中并不合适。
根据电能表的需要,EEPROM中的数据大部分需要定时刷新,但是不同的数据的刷新频率有很大区别。有的数据一个星期需要刷新一次,有的一个月需要刷新一次,但是电量却需要频繁的刷新。电量数据作为电能表最重要的数据实时的存储到非易失性存储器中是非常有必要的,最理想的存储频率是电能表显示的最小分辨率。目前电能表的寿命要求为10年,以当前应用最为广泛的国网单相电能表为例,假设一个EEPROM的寿命为100万次,电能表显示电能量小数点后两位,所以EEPROM中的电量数据需要每0.01度电刷新一次,那么一只表只能用1万度电,这显然是不能满足电能表寿命要求的。目前的电能表中为了规避这一问题采用的方法是不实时存储电量数据,只在系统掉电的时候才进行存储,这一方法带来的问题是:1、系统的可靠性得不到保证,一旦掉电检测电路出现问题,在掉电后,电量作为电能表最重要的数据得不到保存;2、增加了成本,为了在掉电后保证电量数据可靠的写入EEPROM,电能表的电源处需加入较大的储能元件,作为掉电后能够继续操作EEPROM的电源。如果能实时的保存电量那么在掉电瞬间就不用考虑电量数据的存储,可以适当的降低对储能元件的要求,从而降低整表的成本。
为了延长EEPROM的寿命,使EEPROM可以实时存储电量,必须采用存储器损耗均衡。如果能把电量的刷新动作平均到存储器的其他单元那么电能表的寿命就会成倍的延长。这种方式最理想的就是让每个存储单元的刷新次数相同,但是这势必会造成额外的存储器的读写操作或者需要额外的存储空间。从电能表的发展趋势看低成本是其一个重要的发展方向,所以大量的增加存储量是不现实的。电能表的系统简单,实时性要求高,也不能增加大量的额外的存储器读写操作,只要能在电能表1万度电的基础上延长几倍的寿命就基本上可以满足整表寿命的要求,找一个平衡点,即能满足电能表的寿命要求也不给系统增加太大的压力。
发明内容
本发明提供的一种用于延长电能表寿命的EEPROM损耗均衡方法开销小,占用空间小,在一定的范围内使存储器损耗得到最大程度的均衡,最大程度的延长电能表的寿命,能满足设计标准要求,能够解决数据块切换时电量的读取和上电初始化的问题。
为实现本发明的目的,本发明采用下述技术方案予以实现:
一种用于延长电能表寿命的EEPROM损耗均衡方法,其改进之处在于,所述方法包括下述步骤:
A、初始化阈值M及N值;
B、判断当前数据块是否操作次数满;
C、如操作次数满,为所述当前数据块置写次数满标志;
D、判断下一个数据块的状态,找当前读写操作数据块;
E、进行读写数据块操作。
本发明提供的一种优选的技术方案是:所述方法陈述为下述内容:
a、设定写频度阈值M;
b、假设EEPROM初始上电为全F,设当数据块的写频度数为0xFFFF时,则数据块为空闲块,所述阈值M不能设为0xFFFF;
c、当写频度数大于所述阈值M,但不等于0xFFFF时,表示数据块写次数满,且数据过期;
d、当写频度数为0-M时,表示数据块为当前读写操作数据块,可以写入、读出;
e、当数据块的写频度数均大于所述阈值M但不等于0xFFFF时,把数据块的写频度数置为0xFFFF后重复所述b-e。
本发明提供的第二种优选的技术方案是:所述步骤D中,直到找到当前读写操作数据块后进行读写操作。
本发明提供的第三种优选的技术方案是:所述数据块分为空闲块、当前操作块和满操作次数块;所述的数据块存储一条记录;并且在所述记录前加X个字节的写频度数;所述数据块的地址在EEPROM中连续存放;所述数据块中的数据刷新频率相同。
本发明提供的第四种优选的技术方案是:所述方法把所述EEPROM预留一部分用于电能量数据存储均衡的空间分为N个数据块,在一个数据块达到擦写次数阈值M,准备写下一数据块时,改写所述一个数据块的写频度数为阈值M加1。
与现有技术相比,本发明达到的有益效果是:
本发明提供的一种用于延长电能表寿命的EEPROM损耗均衡方法的系统开销小,占用空间小,在一定的范围内使存储器损耗得到最大程度的均衡,最大程度的延长电能表的寿命,使其能满足设计标准要求,具有很高的实用价值,解决了EEPROM在电能表应用中不能实时存储电量的问题,极大的提高了电能表的可靠性及实时性,本发明提供的用于延长电能表寿命的EEPROM损耗均衡方法,特别适用于存储器中只有小部分的数据需要频繁刷新的情况。
附图说明
图1是用于延长电能表寿命的EEPROM损耗均衡方法步骤示意图;
图2是写数据过程流程图;
图3是读数据过程流程图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的详细说明。
本发明提供的一种用于延长电能表寿命的EEPROM损耗均衡方法,EEPROM表示电可擦除可编程只读存储器,需要预留一部分的存储空间用于电能量的存储的均衡。电量数据的存储空间不需要很大,只需要几个到几十个字节。根据需求,为电量数据分配N倍于所需空间的存储量。把预留一部分的用于电量数据的存储均衡的空间分为N个数据块,每个数据块可以存储一条记录,并且在每条记录前加X个字节的写频度数(在本方法中X个字节假定为两个字节,X的具体值依据阈值M而设定),每次刷新记录,相应的写频度数加1,预设一个阈值M,此空间的写频度数小于阈值M(M≠0xFFFF),则此数据块可以写入,否则判断下一个数据块是否可以写入;如果写频度全部大于阈值M,则每个数据块的写频度数全部置为0xFFFF,数据从第一个数据块开始写入。数据块根据状态的不同分为空闲块、当前操作块和满操作次数块,数据块的结构如下:
根据电能表的原理,每个数据块长度是固定的,在分配地址时,使各数据块地址连续。首先定义地址指针变量P,第一个数据块的起始地址为常量A1,每条记录的长度为常量j(单位为字节),数据块长度为常量L(单位为字节),L>=2+j,则第N个数据块的起始地址为A1+(N-1)*L,N为常量,N表示的是把EEPROM预留一部分的存储空间用于电能量的存储的均衡分为N个数据块,是预先设定的,并且设置写频度阈值常量为M。
图1是本发明提供的用于延长电能表寿命的EEPROM损耗均衡方法步骤示意图,该方法包括下述步骤:
A、初始化阈值M及N值;
B、判断当前数据块是否操作次数满;
C、如操作次数满,为此数据块置写次数满标志;
D、判断下一个数据块的状态,找当前读写操作数据块;
E、进行读写数据块操作。
所述方法陈述为下述内容:
a、设定写频度阈值M;
b、假设EEPROM初始上电为全F,设当数据块的写频度数为0xFFFF时,此数据块为空闲块,阈值M不能设为0xFFFF;
c、当写频度数大于阈值M,但不等于0xFFFF时,表示此数据块写次数满,且数据过期;
d、当写频度数为0-M时,表示此数据块为当前读写操作数据块,可以写入、读出;
e、当所有数据块的写频度数均大于阈值M但不等于0xFFFF时,把所有数据块的写频度数置为0xFFFF后重复b-e。
所述步骤D中,直到找到当前读写操作数据块后进行读写操作。
本发明提供的用于延长电能表寿命的EEPROM损耗均衡方法设计的写读数据流程如图2、图3所示,图2是写数据过程流程图,图3是读数据过程流程图。从图中可以看出,每个数据块中的数据刷新频率基本相同,数据块内本身能够达到一个损耗的平衡,程序控制各数据块轮流使用,使数据块间也达到了一个损耗均衡,本发明提供的方法能很大程度使EEPROM达到损耗均衡。
本发明提供的方法在一个数据块达到擦写次数阈值M,准备写下一数据块时应改写此数据块的写频度数为阈值M加1,这样可指示此数据块擦写次数满,也可以指示此数据块数据过期;数据读出时,只要判断要读出的数据块是否大于阈值M,凡是大于阈值M(0xFFFF除外)的数据均不可用。这样减少读出操作时的判断条件。这样的代价是增加了频度数的写次数,使数据块内频度数的写次数大于数据刷新的次数,阈值M及N值依据下面的策略进行选择:
根据损耗均衡原理可以看出,存储器的寿命与预留的空间的大小即N值直接相关,与阈值M的选择无必然关系,但是阈值M越大系统开销越小,阈值M越小EEPROM损耗越均衡。需要多方面考虑选择一个合适的阈值M。
假设,在使用存储均衡方法后,前一数据块写满转入下一数据块写入的时间开销为t1,直接在当前数据块写入的时间开销为t2,设一共刷新数据106次,所有数据块刷新满一遍的次数为c,由于数据块的切换而额外的产生的时间开销T为:
其中:c=N×M;
所以:
把这个时间平均到每次数据的刷新,可以看出这个时间与阈值M的大小成反比,阈值M越大,额外时间开销越小,但是,阈值M过大,每个数据块的频度数会过多的占用存储器空间,而且阈值M越大,数据块间的损耗越不均衡,但是阈值M越小数据块内频度数存储区与数据存储区的损耗越不均衡,因为每次数据块的切换都引起频度数存储区刷新次数与数据区刷新次数的差加1。在应用中需要根据存储器的空间、单个存储单元的寿命、寿命设计目标选择一个合适的阈值M和N值。
本发明提供的一种用于延长电能表寿命的EEPROM损耗均衡方法,针对电能表特殊的应用方式提出了数据读写的方法,该方法预留一部分的存储空间用于数据存储的均衡,解决了EEPROM在电能表应用中不能实时存储电量的问题,极大的提高了电能表的可靠性及实时性,延长了EEPROM的寿命,降低了电能表的成本。
最后应该说明的是:结合上述实施例仅说明本发明的技术方案而非对其限制。所属领域的普通技术人员应当理解到:本领域技术人员可以对本发明的具体实施方式进行修改或者等同替换,但这些修改或变更均在申请待批的权利要求保护范围之中。