一种电能表掉电保护数据存贮方法与流程

文档序号:11154730阅读:984来源:国知局
一种电能表掉电保护数据存贮方法与制造工艺

本发明涉及一种电能表掉电保护数据存贮方法。



背景技术:

在电能表的数据存贮中,关键数据掉电保存与上电恢复是产品可靠性的非常关键的一个指标,在现场运行过程中出现的非器件故障导致的数据错误,绝大部分与掉电数据保存与上电恢复有关。产生的原因包括很多方面,主要包括掉电检测与响应不及时、掉电/上电过程太频繁导致工作电源不稳、电池钝化、整流电解电容的储能性能下降等。

为了解决掉电/上电时的存贮问题,大多数电能表软件都会采用多备份的方式来提高可靠性,一般的做法是选择奇数个数据存贮区,掉电时将数据依次写入每个存贮区,上电时再读出进行比较,按少数服从多数的原则选取存贮区。但是,这种方式本身存在问题,就是掉电时存贮次数太多,本来掉电时就是靠整流电解电容的剩余电荷为写入存贮器的主要电源,之后由电池供电完成停电待机工作,而当要写入的存贮区数据太多时,电解电容的剩余电荷无法完成工作,需要电池来接续完成,而电能表使用的电池是锂电池,长时间不用会产生钝化,无法在短时间提供满足写入存贮器的工作电流,导致写入不正确,从而无法保证写入的可靠性。



技术实现要素:

为了克服现有电能表掉电存贮的可靠性不足的缺陷,本发明提供一种写入可靠性高的电能表掉电保护数据存贮方法。

本发明解决其技术问题的技术方案是:一种电能表掉电保护数据存贮方法,在电能表的MCU的RAM中设置掉电保护数据块、指针PA、指针PB,将需要掉电保护的数据集中在一起并加上CRC校验,存入掉电保护数据块中;

在电能表的非易失性存贮器中设置循环备份存贮区A和循环备份存贮区B,在循环备份存贮区A和循环备份存贮区B中均设置若干个用于存贮掉电保护数据块中数据的备份数据区块;

在电能表的MCU中设置定时器,当定时时间到,且在这个定时间隔中有电量数据变化,就启动一次数据备份的写操作,写操作的过程如下:

先将要保存的掉电保护数据块中的数据写入循环备份存贮区A 中指针PA所指向的备份数据区块,然后读出进行比对,若写入不正确,再重复写入,若写入成功,则指针PA 指向后续一块备份数据区块;若重复三次都写入不成功,则放弃本次对循环备份存贮区A的写入;

按上述方法将要保存的掉电保护数据块中的数据写入循环备份存贮区B中;

当电能表MCU检测到掉电时,若在上次定时写入后有电量数据变化,也启动一次上述的数据备份的写操作,写完后,进入休眠模式;

当重新上电后,电能表MCU从休眠模式唤醒,先从非易失性存贮器中恢复数据到掉电保护数据块,恢复过程如下:

(1).读出循环备份存贮区A的各备份数据区块,若不存在CRC校验错的备份数据区块,则将总电量值最小的那个备份数据区块的位置作为下一次数据存贮指针PA;

若存在CRC校验错的备份数据区块,则舍弃CRC校验错的备份数据区块,并将该备份数据区块的位置作为下一次数据存贮指针PA;

在CRC校验正确的备份数据区块中找到总电量值最大的备份数据区块,作为循环备份存贮区A的当前块;

(2).用上述同样的方法再找到循环备份存贮区B的当前块和指针PB;

(3).将找到的循环备份存贮区A的当前块、循环备份存贮区B的当前块进行比较,总电量值大的当前块中的数据恢复至RAM中的掉电保护数据块内。

本发明的有益效果在于:1.在掉电时只写入了2个数据块,对整流电解电容的储能要求较低,容易满足要求;2.循环备份区的数据除了一个是在掉电时写入的外,其它区域是在正常工作时写入的,数据的可靠性有保证,因此,在极限情况下,即使掉电时写入的数据全部错误,也能用最近一次定时存贮的数据来恢复,电量偏差小于一个定时存贮间隔的用户用电量;3.当有CRC校验错的备份数据块时,使用该块作为下一次写入位置,因此,不论发生什么状况,每个循环备份区只会有一个写入不正确的备份数据块。

附图说明

图1是本发明的原理图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细说明。

参照图1,一种电能表掉电保护数据存贮方法,在电能表MCU的RAM中设置掉电保护数据块101、指针PA 104、指针PB 105,将需要掉电保护的数据集中在一起并加上CRC校验,存入掉电保护数据块101中。

在电能表的非易失性存贮器中设置循环备份存贮区A 102和循环备份存贮区B 103,在循环备份存贮区A 102和循环备份存贮区B 103中分别有n和m个用于存贮掉电保护数据块101中数据的备份数据区块,n和m可以相同也可以不同。

电能表在生产或计量检定期间进行初始化或电量总清时,掉电保护数据块101、循环备份存贮区A 102、循环备份存贮区B 103的数据全部清零,指针PA 104和指针PB 105 也赋予初始值,指向两个循环备份存贮区的首部。

在电能表的MCU中设置定时器,当定时时间到,且在这个定时间隔中有电量数据变化,就启动一次数据备份的写操作,写操作的过程如下:

先将要保存的掉电保护数据块101中的数据写入循环备份存贮区A 102 中指针PA 104所指向的备份数据区块,然后读出进行比对,若写入不正确,再重复写入,若写入成功,则指针PA 104指向后续一块备份数据区块,若原PA 104指向循环备份存贮区A 102的尾部的备份An块,则指向首部的备份A1块;若3次写入不成功,放弃本次对循环备份存贮区A 102的写入操作;

按上述方法将要保存的掉电保护数据块101中的数据写入循环备份存贮区B 103中;

当电能表MCU检测到掉电时,若在上次定时写入后有电量数据变化,也启动一次上述的数据备份的写操作,写完后,进入休眠模式。

当重新上电后,电能表MCU从休眠模式唤醒,先从非易失性存贮器中恢复数据到掉电保护数据块101,恢复过程如下:

(1).读出循环备份存贮区A 102的各备份数据区块,若不存在CRC校验错的备份数据区块,则将总电量值最小的那个备份数据区块的位置作为下一次数据存贮指针PA;

若存在CRC校验错的备份数据区块,则舍弃CRC校验错的备份数据区块,并将该备份数据区块的位置作为下一次数据存贮指针PA;

在CRC校验正确的备份数据区块中找到总电量值最大的备份数据区块,作为循环备份存贮区A102的当前块;

(2).用上述同样的方法再找到循环备份存贮区B 103的当前块和指针PB 105;

(3).将找到的循环备份存贮区A 102的当前块、循环备份存贮区B 103的当前块进行比较,总电量值大的当前块中的数据恢复至RAM中的掉电保护数据块101内。

掉电保护数据恢复到RAM后,MCU就能进入正常的工作状态了。

在掉电保护数据恢复中,利用了总电量值作为判别依据,因为总电量总是不断递增的,因此,总电量最小的是最早保存的备份数据,总电量最大的就是最新的备份数据,因此,将指针指向总电量最小的数据块,就能做到先进先出,而用总电量最大值的数据块,就能确认用的是最后一次保存的有效值。

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