刘东伟
衡水市冀州区综合检验检测中心 河北衡水 053200
电能表的类型在社会经济发展的过程中也在不断增加,各大厂商所生产的电能表也大不相同,这一因素就会导致各个型号的电能表之间的质量也存在较大差异,而电能表检定工作的主要作用就是确保电能表在正常使用中能够可靠计量,但在开展电能表检定工作的过程中会出现一些较难解决的问题。
目前,常用的智能电能表存储芯片有3种,即FRAM,EEPROM和NORFlash。其中,FRAM的空间最小,主要用于存储数据变化最频繁的电能量数据;EEPROM的空间适中,用于存储需量、参数、关联列表等变化频率一般的数据;NORFlash的空间最大,用于存储事件、冻结等数据量较大且写入后不会频繁改变的数据。FRAM和EEPROM[6]无需擦除,可直接对任意地址进行“写”操作,且使用寿命较长,基本不需要对存储数据进行特殊管理,但是其存储容量较小且价格昂贵。NORFlash[7]支持任意地址的访问,在“写”操作前必须进行擦除,一次性擦除范围随芯片特性而定,一般不小于4kB,使用不够便捷,需要对存储数据进行有效管理,但是存储容量较大且价格便宜。基于这3种存储芯片特性,在此仅讨论对NORFlash存储数据(主要是事件、冻结数据)的管理方法。以三相智能电能表为例,共有72类事件、13类冻结,共计85类数据需要存储在NORFlash。
将NORFlash的最小擦除单元记为Sector,则传统方法管理流程可描述如下:
步骤1根据每类数据的数据大小,以Sector为单位,分别划分固定的存储区域。
步骤2为每类数据分别设置In,Out和Sum三个变量。其中,In始终指向“写”操作地址;Out始终指向最早的1条记录;Sum为当前实际存储的数据记录总次数。
步骤3尽可能多地为分钟冻结分配Sector,以降低擦除频率。写数据时按照In指向的地址写入。读数据时根据Out和要读取的数据顺序编号来计算偏移地址,再读取数据。擦除管理即当分配的存储区无空闲时,擦除Out指向的Sector,同时更新In,Out和Sum的值。
(1)RAM占用。每类数据都要分配3个指针,85个文件共计占用约1kB,对资源紧张的电表而言,RAM占用较大。
(2)擦除频率与磨损均衡性。产生频繁的某类数据存储区会擦除频繁,不经常产生的某些类数据存储区则长时间处于空闲状态。另外,若某种故障工况下导致某些事件频繁产生,或者某类数据的数据量较大时,也会提高擦除频率。整体而言,擦除频率可控性较差,整片Flash的磨损均衡性也较差。
(3)灵活性。每类数据的存储区域是预先固定的,当数据类型变化或Flash规格变化时,都需重新分配存储区域,灵活性较差。
(4)对分钟冻结的处理。没有特别的针对性措施,只能通过多分配Sector来降低分钟冻结存储区域的擦除频率。
所提新型智能电能表数据管理方法结合智能电能表数据的特性,采用链表和重映射的概念思想,提高了访问NORFlash的科学性和灵活性,且资源占用低,数据存取便捷高效,适用于智能电能表。
以Sector为单位,将NORFlash划分为链表区和数据区两部分。链表区存放各类数据在数据区的对应存储地址;数据区存放各类数据的具体内容。数据存取时,先在链表区查找该类数据在数据区的对应存储地址,再到数据区对该类数据的具体内容进行存取操作。
(1)链表区结构设计。链表区由多个链表组成。为便于管理,每个链表大小可设置为与Sector相等,每类数据对应各自的链表。因此,对于三相智能电能表,链表区大小为85个Sector。链表由链表单元Link组成。Link由1B状态标志和3B数据地址组成。其中,状态标志表示4种状态,空闲、有效、可擦除、已擦除;数据地址表示该Link对应的数据记录在数据区的存放地址。
(2)数据区结构设计。除去链表区占用的空间,NORFlash中的剩余空间为数据区。数据区由数据单元Data组成,为提高读写速率,一般Data大小等于Flash的页大小。Data由1B状态标志、3B串联地址、1B数据编号和数据具体内容组成。其中,状态标志与Link中的状态标志保持一致;数据编号表示不同类型的数据;串联地址一般为0,但若1个Data不足以存储该类数据,则串联地址存放下1个Data的地址。
在数据区设置Base,Dirty,Reserve和In四个指针。其中,Base为重映射指针,始终指向数据区逻辑地址0对应的Sector(即数据存入最早的Sector);Dirty指向待擦除的Sector;Reserve指向擦除备用的Sector;In指向待写入的空闲Data。写数据时,在In指向的Data中写入数据,若数据大小超过Data,则查找下一个空闲Data继续写入数据,直至文件数据写完。同时Data中的状态标志和串联地址。完成后,在链表中查找空闲Link,更新Link中的状态标志和数据地址。
与传统方法相比,在RAM占用、磨损均衡性和擦除频率以及灵活性等方面都有很大的提高,希望对智能电能表的数据管理提供一些参考。