首页> 中国专利> 用于电能表的冻结和事件记录数据存储方法

用于电能表的冻结和事件记录数据存储方法

摘要

本发明公开了一种用于电能表的冻结和事件记录数据存储方法,包括为电能表的冻结和事件记录配置关联对象;生成掩码序号,用于指示冻结和事件记录的关联对象,掩码序号决定了掩码所占用的字节长度;存储每个冻结和事件记录的关联对象及掩码序号,并生成相应的掩码;当发生冻结或事件记录时,电能表将冻结或事件记录的掩码及关联对象的数据进行存储。本发明通过设置静态/动态关联对象、静态/动态掩码序号和相应的掩码的方式,不仅使得电能表的冻结记录或事件记录的关联对象可任意配置,而且还通过掩码序号和掩码的方式大大降低了数据的存储空间,而且冻结或事件记录数据存储快速,而且不影响电能表的数据追溯功能。

著录项

  • 公开/公告号CN107328968A

    专利类型发明专利

  • 公开/公告日2017-11-07

    原文格式PDF

  • 申请/专利权人 威胜集团有限公司;

    申请/专利号CN201710502193.4

  • 发明设计人 全太平;吕新伟;刘新润;王建忠;

    申请日2017-06-27

  • 分类号G01R11/02(20060101);G06F3/06(20060101);

  • 代理机构43001 长沙永星专利商标事务所(普通合伙);

  • 代理人周咏;米中业

  • 地址 410205 湖南省长沙市岳麓区长沙高新技术开发区桐梓坡西路468号

  • 入库时间 2023-06-19 03:42:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-04-21

    授权

    授权

  • 2017-12-01

    实质审查的生效 IPC(主分类):G01R11/02 申请日:20170627

    实质审查的生效

  • 2017-11-07

    公开

    公开

说明书

技术领域

本发明具体涉及一种用于电能表的冻结和事件记录数据存储方法。

背景技术

随着国家经济技术的发展和人们生活水平的提高,电能已经成为了人们生产和生活中必不可少的二次能源,给人们的生产和生活带来了无尽的便利。

电能表作为电力系统中计量电能的唯一部件,其重要性和可靠性不言而喻。电能表在工作时,当有冻结事件或者记录事件发生时,电表要记录冻结数据和事件记录数据,而具体要记录什么数据,则取决于用户为该冻结或事件记录配置的关联对象为哪些关联对象:配置了哪些对象为关联对象,则在冻结或事件发生时就要存储这些关联对象在冻结或事件发生时的具体值。但是对于一个冻结或事件记录,其关联对象并不是永远保持不变的,这取决于用户需求:比如对于某个冻结或事件,用户有时为其配置的关联对象为电压、电流、有功功率;后面某天,用户把关联对象改为电压、电流、无功功率,如此一来,关联对象变成了电压、电流、无功功率。但是,由于电能表在存储关联对象的数据时,其都是以二进制数进行存储,因此电能表在存储冻结或事件记录数据时,必须同时存储关联对象描述符,从而防止当用户改变冻结或事件记录的关联对象时无法解析当时存储冻结或事件记录的数据的情况发生。

然而,如果用户在存储每条冻结或事件数据时存储对应的关联对象描述符,将大量增加存储的数据量,有些冻结或事件记录存储的数据量甚至翻倍,因为一个关联对象描述符一般都为4字节以上。以几个具体的协议为例:DL/T645-2007协议的关联对象描述符为4个字节,DL/T 698-45协议的关联对象描述符为4个字节,IEC62056协议的关联对象描述符长度为6字节;以关联对象描述符为4个字节为例,如果一类冻结或事件记录其关联对象个数有20个,单单每条记录中用于存储关联对象描述符表就要占用80字节空间,如果此类事件或冻结要存储10000条,则为了存储关联对象描述符,就要多使用存储器780KB(80B*10000=780KB)。但是,上述仅仅只是一类冻结或事件记录,然而一般而言,电能表中总共有120多类事件记录以及10多类冻结记录,因此会存在海量的数据需要记录。

目前常用电能表冻结事件或者记录事件数据存储方法主要有如下两种:

方案一:在存储每条冻结和事件记录数据的同时存储当前的关联对象描述符表,即依次存储关联对象描述符表和每个关联对象的具体值;这样,无论用户的关联对象如何改来改去,每次抄读这条记录数据时根据当时存储的关联对象描述符表就能知道存储的是什么数据项(也就是说记录中存储的关联对象描述符表反映了冻结或事件发生当时用户为此类冻结或事件配置的关联对象是什么),也知道了每个数据项的长度。

方案一的数据记录格式如下表1所示:

表1方案一的数据记录格式示意表

但是,此方案的缺陷是存储关联对象描述符表的存储数据量大,浪费存储空间。以一个关联对象个数为32的冻结为例,为了将关联对象描述符表存入每条冻结数据中,每条冻结记录要存储32个关联对象描述符以及这32个对象的数据数值本身。假设关联对象描述符的字节长度为4,对象数据长度也为4,为了实现关联对象用户可配置,冻结的存储空间就翻倍了;以一条含有32个关联对象的冻结记录数据为例,每个对象的关联对象描述符为4字节,存储一条冻结数据的关联对象描述符表要128字节;如果此类冻结用户要求存储10000次,则单单用于存储关联对象描述符的空间就达1.22MB(因为关联对象描述符表要存储在每条记录中,10000条乘以128字节,即为1.22MB),这还仅仅是一类冻结或事件记录,一般的电能表中总共有120多类事件记录以及10多类冻结记录,因此此技术方案的存储空间占用极其巨大。

方案二:对系统中所有的关联对象进行编码(编码从0开始),这样每个关联对象可以用一个bit来表示,所有可配置的关联对象的集合形成一个bit码序列。对于某个冻结或事件来说,用户配置的关联对象描述符表可以用一个bit码序列来表示;关联对象描述符表中,包含的关联对象的对应bit为1,不包含的关联对象的对应bit为0;在存储一条冻结或事件记录时同时将此关联对象描述符bit码序列存储下来,先存bit码,再存对应关联对象的数据,这样如果用户改变了关联对象,每次冻结时存储的bit码也不同,以后每次抄读某条具体记录时,根据记录中的关联对象描述符bit码就可以知道存储的具体是什么数据。

方案二的数据记录格式如下表2所示:

表2方案二的数据记录格式示意表

此方案貌似通过编码的方式,用一个bit来表示一个关联对象描述符,空间压缩到了原来的1/32(原来是4字节的关联对象描述符,4字节就是32个bit,现在是1个bit,所以压缩到了原来的1/32);但问题是,用户可能是任意配置关联对象,对于有几千个对象的系统,这个关联对象描述符bit码序列的编码长度就是几千个bit,也就是几百个字节,这个存储数据量增加也是不能承受的。举例说明如下,假设系统对象个数为1024个,为了编码这1024个对象,需要1024个bit,1024个bit就是128字节,如果用户配置了第1024个对象为关联对象,那他不得不在每次存储冻结数据时,将这128字节bit码序列也存储下去;因此,本方案的缺陷是不能将系统内任意一个对象配置为冻结或事件记录的关联对象,对用户使用有很大局限,只适应于对象个数比较小的系统,比如,如果系统内对象个数只有64个或更小(64个也就是8个字节,尚可以接受),此方案可行。

发明内容

本发明的目的在于提供一种存储空间占用较少,用户可以任意配置关联对象,而且数据存储快速方便、不影响数据追溯功能的用于电能表的冻结和事件记录数据存储方法。

本发明提供的这种用于电能表的冻结和事件记录数据存储方法,包括如下步骤:

S1.为电能表的冻结记录和事件记录配置关联对象;

S2.根据为电能表的冻结记录和事件记录所配置的关联对象,生成一组掩码序号;所述掩码序号用于指示冻结记录和事件记录的关联对象,且掩码序号决定了掩码所占用的字节长度;

S3.系统将每个冻结记录和事件记录的关联对象及相应的掩码序号进行存储,同时根据掩码序号生成相应的掩码;

S4.当电能表发生冻结记录或事件记录时,电能表将冻结记录或事件记录的掩码及关联对象的数据进行存储,完成冻结和事件记录数据存储。

步骤S1所述的冻结记录和事件记录所配置的关联对象,包括静态关联对象和动态关联对象;静态关联对象为电能表出厂时已经为冻结记录和事件记录配置了的缺省关联对象;动态关联对象为用户在电能表使用过程中自行为冻结记录和事件记录所配置的关联对象。

所述的静态关联对象为用户可以删除或删除后可以恢复的关联对象;动态关联对象为可以任意配置的关联对象,所述的任意配置包括增加操作和删除操作。

步骤S2所述的掩码序号包括静态掩码序号和动态掩码序号;静态掩码序号与静态关联对象一一对应,且静态关联对象删除后该静态掩码序号依旧保留;动态掩码序号与动态关联对象对应。

所述电能表在生成掩码序号后,针对每一类冻结记录和事件记录,将静态关联对象和静态掩码序号生成一张静态掩码映射表并进行存储,同时将动态关联对象和动态掩码序号生成一张动态掩码映射表并进行存储。

所述的静态关联对象和静态掩码序号生成的映射表以及动态关联对象和动态掩码序号生成的映射表以及每类冻结记录和事件记录的掩码字节长度均存储在电能表内的非易失性存储器上。

所述的掩码序号为采用如下规则生成掩码序号:

R1.掩码序号的最大值可以依据产品需求自行设定,掩码序号的最大值决定了掩码字节长度L;掩码序号的最大值为M,则8*L≥M,且L和M均为正整数;

R2.掩码序号从0开始生成,且每增加一个关联对象,该关联对象的掩码序号为上一个已分配掩码序号加1;

R3.当当前已经分配的掩码序号值与设定的掩码序号的最大值相等,则遍历该类冻结记录或事件记录的所有记录数据,对所有记录中都不存在的关联对象回收其已经分配的动态掩码序号,从而保证在配置新的动态关联对象时存在可用的动态掩码序号;

R4.静态关联对象所对应的静态掩码序号在静态关联对象被删除后依然保留,且该静态掩码序号不被其他静态关联对象或动态关联对象占用;

R5.动态关联对象所对应的动态掩码序号在动态关联对象被删除后,已经分配给这个关联对象的掩码序号不回收;

R6.当清除一类冻结记录或事件记录的所有记录时,电能表清零时,或电能表恢复出厂参数时,回收该类冻结或事件的所有已分配的动态掩码序号;

R7.动态掩码序号和静态掩码序号的作用域范围为该类冻结记录或事件记录。

步骤S3所述的根据掩码序号生成相应的掩码,具体为采用如下步骤生成相应的掩码:

A.获取此类事件或冻结的掩码字节长度L:所述的掩码为二进制数,且初始值为全0;

B.遍历静态掩码映射表和动态掩码映射表,得到静态关联对象和动态关联对象的掩码序号;

C.根据步骤B得到的掩码序号,将掩码中相应的位置为1,从而生成了冻结记录或事件记录所对应的掩码。

本发明提供的这种用于电能表的冻结和事件记录数据存储方法,通过设置静态/动态关联对象、静态/动态掩码序号和生成相应的掩码的方式,不仅使得电能表的冻结记录或事件记录的关联对象可任意配置,而且还通过掩码序号和掩码的方式大大降低了数据的存储空间,而且冻结或事件记录数据存储快速,而且不影响电能表的数据追溯功能。

附图说明

图1为本发明的方法流程图。

具体实施方式

如图1所示为本发明的方法流程图:本发明提供的这种用于电能表的冻结和事件记录数据存储方法,包括如下步骤:

S1.为电能表的冻结记录和事件记录配置关联对象;所述关联对象包括静态关联对象和动态关联对象;静态关联对象为电能表出厂时已经为冻结记录和事件记录配置了的缺省关联对象,用户可以删除,删除后也可以在后面再次增加进来;动态关联对象为用户在电能表使用过程中自行为冻结记录和事件记录所配置的关联对象,用户能够对其进行增加和删除的操作;

S2.根据为电能表的冻结记录和事件记录所配置的关联对象,生成一组掩码序号;所述掩码序号用于指示冻结记录和事件记录的关联对象;掩码序号包括静态掩码序号和动态掩码序号;静态掩码序号与静态关联对象一一对应,且静态关联对象删除后该静态掩码序号依旧保留;动态掩码序号与动态关联对象对应;

掩码序号为采用如下规则生成掩码序号:

R1.掩码序号的最大值可以依据产品需求自行设定;掩码序号的最大值决定了掩码字节长度L;掩码序号的最大值为M,则8*L≥M,且L和M均为正整数;

R2.掩码序号从0开始生成,且每增加一个关联对象,该关联对象的掩码序号为上一个已分配掩码序号加1;

R3.当当前已经分配的掩码序号值与设定的掩码序号的最大值相等,则遍历该类冻结记录或事件记录的所有记录数据,对所有记录中都不存在的关联对象回收其已经分配的动态掩码序号,从而保证在配置新的动态关联对象时存在可用的动态掩码序号;

R4.静态关联对象所对应的静态掩码序号在静态关联对象被删除后依然保留,且该静态掩码序号不被其他静态关联对象或动态关联对象占用;

R5.动态关联对象所对应的动态掩码序号在动态关联对象被删除后,已经分配给这个关联对象的掩码序号不能回收;

R6.当清除一类冻结记录或事件记录的所有记录时,电能表清零时,或电能表恢复出厂参数时,回收该类冻结或事件的所有已分配的动态掩码序号;

R7.动态掩码序号和静态掩码序号的作用域范围为该类冻结记录或事件记录;

比如,某类冻结或事件掩码序号的最大值选定为32,电能表出厂时已经为A冻结事件配置了4个关联对象a,b,c和d,则该四个关联对象即为静态关联对象,静态关联对象a的掩码序号为0,静态关联对象b的掩码序号为1,静态关联对象c的掩码序号为2,静态关联对象d的掩码序号为3,且该4个静态关联对象在电能表具体使用时被删除后,其掩码序号0~3也不会被收回,而处于一直被占用的状态;而使用者在具体使用时,又为A冻结事件配置了4个动态关联对象,aa,bb,cc和dd,则该4个动态关联对象的掩码序号即为aa-4,bb-5,cc-6和dd-7;而在用户删除了其中的aa动态关联对象后,其对应的掩码序号也不会被收回,下一个动态关联对象的掩码序号将分配为8;

掩码序号的作用域范围只是一类冻结记录或事件记录;也就是两个不同的冻结记录或事件记录可以有相同的掩码序号,但是两者含义不同,对应的关联对象可以不同,所以每类冻结记录或事件记录都有各自的静态掩码序号和动态掩码序号;

此外,当用户关联对象达到了掩码序号的最大值后,动态掩码序号再统一回收;或者还可以采用定时回收的方式进行动态掩码的回收,即设定一个具体的时间,比如1个小时:每一个小时系统均会自动回收某一类冻结记录或事件记录中的所有记录中都不存在的动态关联对象的动态掩码序号;

在生成掩码序号后,针对每一类冻结记录和事件记录,将静态关联对象和静态掩码序号生成一张静态掩码映射表并进行存储(在具体实施时,推荐存储在电能表内的非易失性存储器上),同时将动态关联对象和动态掩码序号生成一张动态掩码映射表并进行存储;存储映射表的目的在于方便在数据存储后进行数据的解析;对于某一类特定的冻结记录或事件记录,其静态掩码映射表的结构如表3所示,而动态掩码映射表的结构如表4所示;

表3静态掩码映射表的结构示意

表4动态掩码映射表的结构示意

同时,根据产品需求为电能表的每类冻结记录和事件记录定义并存储其掩码字节长度(掩码字节长度实际由每类冻结记录和事件记录最大关联对象个数决定);该长度表记录了每一类冻结记录和事件记录的掩码的字节长度,方便后期对存储的数据进行解析;

S3.系统将每个冻结记录和事件记录的关联对象及相应的掩码序号进行存储,同时根据掩码序号生成相应的掩码;采用如下步骤生成相应的掩码:

A.获取此类事件或冻结的掩码的字节长度L:且所述的掩码为二进制数,初始值为全0;

B.遍历静态掩码映射表和动态掩码映射表,得到静态关联对象和动态关联对象的掩码序号;

C.根据步骤B得到的掩码序号,将掩码中相应的位置为1,从而生成了冻结记录或事件记录所对应的掩码;

比如掩码字节长度为4个字节,4个字节的掩码共有32个bit可以用于表示对应的掩码序号;在具体使用时,如果某一个掩码序号有对应的关联对象,则该掩码的相应的位即为1,否则该位为0

S4.当电能表发生冻结记录或事件记录时,电能表将冻结记录或事件记录的掩码及关联对象的数据进行存储,完成冻结和事件记录数据存储;

在具体实施时,可以采用如下表5所示的数据格式进行存储:

表5存储的数据格式示意表

其中记录长度为记录该整条存储的数据的长度,之所以要包含记录长度,是因为用户关联对象是可变的,所以每条记录的长度也是变化的,掩码即为该冻结记录或事件记录所对应的掩码;后续的即为该冻结记录或事件记录所对应的关联对象的具体数据。

在具体存储时,其存储过程如下(以“记录长度”部分为2字节为例)

a.当前数据存储偏移初始值以及记录总长度都初始化为掩码字节长度加2,掩码字节初始化为全0;

b.依次遍历关联对象表中的每一个关联对象,对每个关联对象执行下述操作:

b1.以关联对象描述符为索引,查找静态掩码序号映射表和动态掩码序号映射表,得到对应的掩码序号;

b2.根据掩码序号得到掩码序号对应的掩码的bit;将掩码对应的bit置1;

b3.根据关联对象描述符从系统获得关联对象的具体数值并存入数据buf的当前数据存储偏移处;

b4.根据关联对象描述符从系统获得当前关联对象的存储字节长度;

b5.当前数据存储偏移以及记录总长度都加上当前关联对象的存储字节长度;

b6.将上述遍历生成的掩码字节存入数据buf偏移2处;将记录总长度存入数据buf偏移0处;

c.由此完成了整条要存储的冻结或事件记录数据的生成,将生成的记录数据调用系统接口存储起来即可。

而在解析该条存储数据时,可根据数据存储的过程进行解析即可。对应于上述的实施例,数据解析的具体过程如下:

A.读取记录头2字节获得记录数据长度(当前数据存储偏移初始值初始化为掩码字节长度加2)

B.根据记录数据长度读取整条记录数据到数据buf中(由于是要解析整条记录,所以读取了完整的记录数据);

C.从上一步读取到的记录数据取得掩码,从掩码bit0开始遍历掩码字节;

D.如果当前掩码bit为1,则执行步骤E;否则执行步骤I;

E.根据掩码bit获得掩码序号;以掩码序号作为索引查找静态掩码序号映射表和动态掩码序号映射表,得到对应的关联对象描述符;

F.根据关联对象描述符从系统获得此对象存储字节长度;

G.从当前数据存储偏移开始,长度为上一步获取的对象存储字节长度的数据就是当前对象的数据,这样完成了一个对象的解析;

H.当前数据存储偏移加上当前对象存储字节长度(这个是为解析下一个对象做准备);

I.判断是否遍历完成所有bit,如果未遍历完成所有bit:则掩码bit加1(即掩码bit1变成bit2,bit2变成bit3,以此类推),从掩码字节获得对应的当前掩码bit值;跳转到步骤D继续执行;如果已经完成遍历所有掩码bit,则退出。

而当用户想从一条完整的冻结记录或事件记录中解析某一个关联对象的数据,则可以采用如下的步骤进行解析(继续依照以上述实施例):

1.读取记录头2字节获得记录数据长度(当前数据存储偏移初始值初始化为掩码字节长度加2);

2.从记录数据取得掩码字节,从掩码bit0开始遍历掩码字节;

3.如果当前掩码bit为1,则执行步骤4;否则执行步骤9;

4.根据掩码bit获得掩码序号;以掩码序号作为索引查找静态掩码序号映射表和动态掩码序号映射表,得到对应的关联对象描述符;

5.根据关联对象描述符从系统获得此对象存储字节长度;

6.判断得到的关联对象描述符与用户查找的关联对象描述符是否相同,如果相同则执行步骤7,否则执行步骤8;

7.从当前数据存储偏移开始,长度为上一步获取的对象存储字节长度的数据就是当前对象的数据,这样完成了一个对象的解析;退出并返回解析到的数据给用户;

8.当前数据存储偏移加上当前对象存储字节长度(这个是为解析下一个对象做准备);

9.判断是否遍历完成所有bit,如果未遍历完成所有bit:则掩码bit加1(即掩码bit1变成bit2,bit2变成bit3,以此类推),从掩码字节获得对应的当前掩码bit值,跳转到步骤3继续执行;如果已经完成遍历所有掩码bit,则退出。

以下,再通过一个简单的实施例来证明本发明方法能够有效的减少数据的存储量:

采用背景技术中的方案一、方案二和本发明的技术方案,针对一条冻结记录数据和一条事件记录数据进行比较;

冻结记录数据:关联对象为4个,每个关联对象描述符为4个字节,每个关联对象的数据为4个字节;

事件记录数据:关联对象为2个,每个关联对象描述符为4个字节,每个关联对象的数据为4个字节;

方案一:

冻结记录的总长度为:2+4*4+4*4=34字节

事件记录的总长度为:2+2*4+2*4=18字节

方案二:

由于方案二的数据记录大小不取决于用户为每类冻结或事件配置的关联对象个数,而取决于系统总对象个数,因此这里假设系统的总的关联对象个数为256个(实际电能表中的关联对象一般有几千个),每条记录为了编码这个冻结或事件的关联对象,需要32字节(一个字节可以表示8个对象)来编码关联对象信息(这32字节中,关联对象对应位为1,不是此类冻结或事件的关联对象的对应位为0);

冻结记录的总长度为:2+32+4*4=50字节

事件记录的总长度为:2+32+2*4=42字节

本发明:

掩码:1字节(1个字节的掩码可以表示8个对象了);

冻结记录的总长度为:2+1+4*4=19字节

时间记录的总长度为:2+1+2*4=11字节

因此,本发明的空间节省率如下表6所示:

表6数据存储空间对比示意表

从上表可以看出,本发明的技术方案,其在数据存储时空间节省率非常之高,能够大幅度的压缩存储数据占用的空间。

最后,本发明提供的这种用于电能表的冻结和事件记录数据存储及解析方法,不仅适用于电能表,也适用于其他需要进行特殊事件记录及相应的关联变量记录的设备,包括各类型的计量仪表(比如电能表、水表、燃气表、热量表等)、电能管理终端、配电终端、电能质量监控设备、电网自动化终端、采集终端、集中器、数据采集器、计量仪表、手抄器、故障指示器等。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号