在FLASH存储器上实现电表电量小数的按位存储的方法技术

技术编号:17596397 阅读:37 留言:0更新日期:2018-03-31 09:46
本发明专利技术公开了一种在FLASH存储器上实现电表电量小数的按位存储的方法,包括如下步骤:将电量小数的所有存储空间分为M页,每一页有I块,共有N块,其中,N=M×I;每一块为99个位,将电量的小数0.01到0.99分别分配给上述99个位;从第一块开始存储,每增加0.01度按从高位到低位的顺序写入1,写满99位即写完第一块;当第一块写完后换到第二块,第二块写完后换到第三块,直到写到第N块后换到第一块继续写。本发明专利技术具有如下有益效果:节省了存储空间,保证了累计精度;采用分页分块的方式擦除和写入,克服了FLASH需擦除后才能写的缺点,同时能够进行数据备份,提高了可靠性。

The way to store the small number of electric meter in the FLASH memory

The invention discloses a method for realizing electric power decimal on FLASH memory according to the method of storage, which includes the following steps: all storage space power decimal divided into M pages, each page has a total of I block, N block, wherein, N = M * I; each block is 99 bits the small number of electricity, 0.01 to 0.99 were assigned to the 99; from the first block to store, every increase of 0.01 degrees from high to low according to the order of writing 1, filled with 99 is the first piece of writing; when the first piece of writing for second block, second block after block change to third until, wrote the N block to the first block to write after the change. The invention has the following beneficial effects: saving the storage space and ensuring the accumulative accuracy; using the way of paging and blocking to erase and write, overcome the shortcomings that FLASH can erase after being erased, at the same time, it can carry out data backup and improve reliability.

【技术实现步骤摘要】
在FLASH存储器上实现电表电量小数的按位存储的方法
本专利技术涉及电能表电能小数存储
,尤其是涉及一种保证了电量小数0.01度的累计精度,节省了存储空间,同时具有数据备份作用的在FLASH存储器上实现电表电量小数的按位存储的方法。
技术介绍
目前大多厂家都是把小数按字节存储在EEPROM中,但由于电表使用寿命10年以及0.01度的存储精度的原因,往往需要分配非常大的存储空间,这样就需要采用大容量的EEPROM,从而增加产品成本。也有个别厂家是把电量小数按字节存储在FLASH中,因FLASH存储器寿命较低以及整页擦写的原因,也无法得到减少存储空间的目的。
技术实现思路
本专利技术为了克服现有技术中保证电量小数0.01度累计精度存储需要的存储空间大的不足,提出了一种保证了电量小数0.01度的累计精度,节省了存储空间,同时具有数据备份作用的在FLASH存储器上实现电表电量小数的按位存储的方法。为了实现上述目的,本专利技术采用了以下技术方案:一种在FLASH存储器上实现电表电量小数的按位存储的方法,包括如下步骤:(1-1)将电量小数的所有存储空间分为M页,每一页有I块,共有N块,其中,N=M×I;(1-2)每一块为99个位,将电量的小数0.01到0.99分别分配给上述99个位;(1-3)从第一块开始存储,每增加0.01度按从高位到低位的顺序写入1,写满99位即写完第一块;(1-4)当第一块写完后换到第二块,第二块写完后换到第三块,直到写到第N块后转入(1-3)。本专利技术通过为每0.01度分配一个位来存储电量小数,并通过分页分块的方式来进行写入和擦除,节省了空间,保证了0.01度的累计精度。作为优选,还包括如下步骤:(2-1)当写到第一页的第I块时,擦除第二页数据,当写到第二页的第I块时,擦除第三页数据,当写到第M页的第I块时,擦除第一页数据,当第M页的第I块写完后转入(1-3)。作为优选,还包括如下步骤:(3-1)当电量小数出现异常时,进行数据校验和恢复。作为优选,数据校验和恢复的具体步骤如下:(4-1)进行正向搜索,从第1位开始搜索,直到搜索到某位为0为止,得到值为1的位的个数为N1;(4-2)进行反向搜索,从第99位开始搜索,直到搜索到某位为1为止,得到值为0的位的个数为N2;(4-3)如果N1+N2=99时,认为数据有效,恢复数据记录;如果N1+N2≠99,则认为数据无效,将电量小数置为0。作为优选,当进行电量数据写入时,根据当前小数X计算字节偏移量Y、位偏移量Z和当前写入的字节数据L,计算公式如下:Y=(X×100-1)÷8,Y向上取整;Z=(X×100)%8;如果Z=0,将十六进制数0x80右移7位作为当前写入的字节数据L;如果Z≠0,将十六进制数0x80右移(Z-1)位作为当前写入的字节数据L。因此,本专利技术具有如下有益效果:(1)为每0.01度分配一个位来存储电量小数,节省了存储空间,保证了累计精度;(2)采用分页分块的方式擦除和写入,克服了FLASH需擦除后才能写的缺点,同时能够进行数据备份;(3)通过正向搜索和反向搜索相结合校验数据正确性,提高了可靠性。附图说明图1是本专利技术的所有电量小数的存储空间;图2是本专利技术的一块电量小数的存储空间;图3是本专利技术的实施例的一种流程图。具体实施方式下面结合附图与具体实施方式对本专利技术做进一步描述:如图1、图2和图3所示的实施例是一种在FLASH存储器上实现电表电量小数的按位存储的方法,包括如下步骤:步骤100,对电量小数的所有存储空间进行分页分块如图1所示,将电量小数的所有存储空间分为8页,每一页有16块,共有128块,其中,N=M×I=8×16=128;步骤200,分配一块电量小数的存储空间如图2所示,每一块为99个位,将电量的小数0.01到0.99分别分配给上述99个位;步骤300,电量小数的存储与擦除步骤301,从第一块开始存储,每增加0.01度按从高位到低位的顺序写入1,写满99位即写完第一块;步骤302,当第一页的第一块写完后换到第一页的第二块,第一页的第二块写完后换到第一页的第三块,当写到第一页的第16块时,擦除第二页数据,当第一页的第16块写完后换到第二页的第一块,直到写到第8页的第16块时,擦除第一页数据,当第8页的第16块写完后转入步骤301。如果电量小数为0.34时出现异常,进行数据校验,具体步骤如下:进行正向搜索,从第1位开始搜索,直到搜索到某位为0为止,得到值为1的位的个数为34;进行反向搜索,从第99位开始搜索,直到搜索到某位为1为止,得到值为0的位的个数为65;N1+N2=34+65=99,数据有效,恢复数据记录。当进行电量数据写入时,根据当前小数0.34计算字节偏移量Y、位偏移量Z和当前写入的字节数据L,计算公式如下:如果Z=0,将十六进制数0x80右移7位作为当前写入的字节数据L;如果Z≠0,将十六进制数0x80右移(Z-1)位作为当前写入的字节数据L。Y=(X×100-1)÷8=(0.34×100-1)÷8=5,Y向上取整,字节偏移量为5;Z=(X×100)%8=(0.34×100)%8=2,Z≠0,将十六进制数0x80右移(Z-1)=2-1=1位作为当前写入的字节数据L,当前写入的字节数据L为01000000。应理解,本实施例仅用于说明本专利技术而不用于限制本专利技术的范围。此外应理解,在阅读了本专利技术讲授的内容之后,本领域技术人员可以对本专利技术作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。本文档来自技高网...
在FLASH存储器上实现电表电量小数的按位存储的方法

【技术保护点】
一种在FLASH存储器上实现电表电量小数的按位存储的方法,其特征在于,包括如下步骤:(1‑1)将电量小数的所有存储空间分为M页,每一页有I块,共有N块,其中,N=M×I;(1‑2)每一块为99个位,将电量的小数0.01到0.99分别分配给上述99个位;(1‑3)从第一块开始存储,每增加0.01度按从高位到低位的顺序写入1,写满99位即写完第一块;(1‑4)当第一块写完后换到第二块,第二块写完后换到第三块,直到写到第N块后转入(1‑3)。

【技术特征摘要】
1.一种在FLASH存储器上实现电表电量小数的按位存储的方法,其特征在于,包括如下步骤:(1-1)将电量小数的所有存储空间分为M页,每一页有I块,共有N块,其中,N=M×I;(1-2)每一块为99个位,将电量的小数0.01到0.99分别分配给上述99个位;(1-3)从第一块开始存储,每增加0.01度按从高位到低位的顺序写入1,写满99位即写完第一块;(1-4)当第一块写完后换到第二块,第二块写完后换到第三块,直到写到第N块后转入(1-3)。2.根据权利要求1所述的在FLASH存储器上实现电表电量小数的按位存储的方法,其特征在于,还包括如下步骤:(2-1)当写到第一页的第I块时,擦除第二页数据,当写到第二页的第I块时,擦除第三页数据,当写到第M页的第I块时,擦除第一页数据,当第M页的第I块写完后转入(1-3)。3.根据权利要求1所述的在FLASH存储器上实现电表电量小数的按位存储的方法,其特征在于,还包括如下步骤:(3-1)当电量小数出现异...

【专利技术属性】
技术研发人员:朱宏斌郜波景程顾小峰
申请(专利权)人:华立科技股份有限公司中国电力科学研究院国家电网公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1