电能表通讯数据存储方法、装置及电能表与流程

文档序号:15257154发布日期:2018-08-24 20:48阅读:302来源:国知局

本发明涉及电能表技术领域,尤其是涉及一种电能表通讯数据存储方法、装置及电能表。



背景技术:

电能表在通讯过程中,一般需要先将通讯数据存储至ram(randomaccessmemory,随机存取存储器)缓存或非易失性存储器中。

如果将通讯数据存储到ram中,那么对ram的需求量非常大。以电能表采用dl/t698.45通信协议为例,其通讯信息数据量较大,每个通道大概需要2k字节,而三相电能表一般有4个通讯通道,导致通讯缓存开销较大,增加了电能表的成本。

如果将通讯数据存储到非易失性存储器中,由于非易失性存储器烧写次数较小,为了保证足够的寿命则需要开辟更多存储空间,也会提高电能表的成本。此外,非易失性存储器读写速度较ram慢很多,影响整体通讯速度。

针对现有技术中,上述存储通讯数据方式存在的问题,目前尚未提出有效的解决方案。



技术实现要素:

有鉴于此,本发明的目的在于提供一种电能表通讯数据存储方法、装置及电能表,可以进行动态ram空间分配,使用尽量少的ram资源即可满足正常通讯要求。

第一方面,本发明实施例提供了一种电能表通讯数据存储方法,包括:在初始化配置过程中,为通讯数据分配共用的动态存储和备用存储;动态存储为随机存储器ram,备用存储为非易失性存储器;当收发通讯数据时,使用动态存储来存储通讯数据;在动态存储存满后,使用备用存储来存储通讯数据。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,还包括:在通讯数据读取结束后,释放动态存储和/或备用存储。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,在初始化配置过程中,为通讯数据分配共用的动态存储和备用存储的步骤,包括:根据电能表支持的通讯协议确定单个通讯通道的最大可处理apdu;根据最大可处理apdu确定动态存储和备用存储的大小,并分配共用的动态存储和备用存储。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,当收发通讯数据时,使用动态存储来存储通讯数据的步骤,包括:当接收通讯数据时,申请预设阈值大小的动态存储并存储通讯数据;如果预设阈值大小的动态存储未完全存储通讯数据,再次申请预设阈值大小的动态存储进行存储,直至完全存储通讯数据。

结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在申请预设阈值大小的动态存储并存储通讯数据的步骤之前,还包括:判断当前是否存在已申请且未使用的动态存储;如果是,将通讯数据存储至已申请且未使用的动态存储。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,当收发通讯数据时,使用动态存储来存储通讯数据的步骤,包括:当发送通讯数据时,根据通讯数据的大小确定需要申请的动态存储的空间大小;根据空间大小申请动态存储,并存储通讯数据。

结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,在使用动态存储来存储通讯数据的步骤之后,还包括:记录动态存储中的存储数据总长度以及动态存储对应的位置信息。

第二方面,本发明实施例还提供了一种电能表通讯数据存储装置,包括:分配模块,用于在初始化配置过程中,为通讯数据分配共用的动态存储和备用存储;动态存储为随机存储器ram,备用存储为非易失性存储器;动态存储模块,用于当收发通讯数据时,使用动态存储来存储通讯数据;备用存储模块,用于在动态存储存满后,使用备用存储来存储通讯数据。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,还包括:存储释放模块,用于在通讯数据读取结束后,释放动态存储和/或备用存储。

第三方面,本发明实施例还提供了一种电能表,包括存储器、处理器,存储器中存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面及其各可能的实施方式之一提供的方法。

本发明实施例带来了以下有益效果:

本发明实施例提供的电能表通讯数据存储方法、装置及电能表,针对数据量大的电能表,为通讯数据分配共用的动态存储和备用存储,其中动态存储为随机存储器ram,备用存储为非易失性存储器;电能表收发通讯数据时,先使用动态存储来存储通讯数据,在动态存储存满后,使用备用存储来存储通讯数据,可以进行动态ram空间分配,使用尽量少的ram资源即可满足正常通讯要求,从而有效降低电能表的成本。

本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种电能表通讯数据存储方法的流程示意图;

图2为本发明实施例提供的另一种电能表通讯数据存储方法的流程示意图;

图3为本发明实施例提供的电能表申请存储空间的方法的流程示意图;

图4为本发明实施例提供的一种电能表通讯数据存储装置的结构示意图;

图5为本发明实施例提供的另一种电能表通讯数据存储装置的结构示意图;

图6为本发明实施例提供的另一种电能表通讯数据存储装置的结构示意图;

图7为本发明实施例提供的另一种电能表通讯数据存储装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

现有的单相电能表,或者三相电能表,虽然都设计有多个通信通道,但现场应用时,一般只有一个通信通道在使用。例如模块表,基本是采用模块进行数据传输,而485表只采用485口进行数据传输。当然也不排除现场表型混用,如模块表用于485口通讯的情况。由于通信模块即使没有采集终端对其通讯,其本身也会经常从电能表获取数据,这时对电能表来说,就有可能涉及到2个通讯通道同时通讯。因此,对于电能表来说常用的通讯通道其最多也就2个。

目前,电能表698通讯最大发送或接收帧为512字节,且最大可处理apdu(applicationprotocoldataunit,应用协议数据单元)为2kbyte,因此,一个通道需要的缓存大小为2kbyte。如果采用每个通道都分配一块ram的方法,三相电能表有4个通道,则需要8kbyte,单相表有3个通道,则需要6kbyte。这种ram需求相对于电能表一般具有的32kbyte的ram资源或者8kbyte的ram资源来说,占用的比例是极大的。

另外,在电能表通讯时每次操作(读取、设置等)时,apdu数据并不会达到最大可处理apdu的数据量,因此可以考虑,分配一块并不是很大的ram缓存作为动态分配的形式,供各个通道使用,先到先得,用完立即释放。

在使用动态ram来维持正常情况下的通讯缓存开销时,偶尔会出现动态ram已被占用完,但其它通道又有通讯产生(如现场红外抄读数据)的情况。为了保证这种情况下通讯正常,就需要启动备用缓存方案,而备用缓存可以采用非易失性存储器(如eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、flash(闪存)等)。由于备用缓存应用频率较低,只要预留少部分资源就可以满足寿命需求。

基于上述理由,本发明实施例提供的一种电能表通讯数据存储方法、装置及电能表,可以进行动态ram空间分配,使用尽量少的ram资源即可满足正常通讯要求。

以下对本发明的实施例进行详细说明。

本发明实施例提供了一种电能表通讯数据存储方法,参见图1所示的电能表通讯数据存储方法的流程示意图,该方法包括如下步骤:

步骤s102,在初始化配置过程中,为通讯数据分配共用的动态存储和备用存储。

其中,动态存储为随机存储器ram,备用存储为非易失性存储器。由于ram可以随时读写,而且速度很快,可以用作存储通讯数据的常用存储;非易失性存储器具有抹写循环的次数限制,可以用作存储通讯数据的备用存储,其使用频率较低,不需要设置过多存储空间即可满足寿命要求。

不同于为电能表的每个通讯通道设置一块单独的ram进行通讯数据存储的方式,本实施例提供的方法为所有通道收发的通讯数据设置一个共用的动态存储ram,采用先到先得的方式,在某个通道有通讯数据收发时,将通讯数据存储至该动态存储ram,当动态存储ram的空间存储满后,则使用备用的非易失性存储器。

考虑到电能表有限的存储空间,需要合理确定动态存储和备用存储的空间大小,既要满足正常使用,又要降低缓存开销。例如,可以按照如下方式进行:

(1)根据电能表支持的通讯协议确定单个通讯通道的最大可处理apdu。该最大可处理apdu即单个通讯通道需要的最大存储空间。

(2)根据最大可处理apdu确定动态存储和备用存储的大小,并分配共用的动态存储和备用存储。

以电能表常用一个通讯通道或两个通讯通道收发数据为例,可以将动态存储的大小设置为apdu的大小或者两倍apdu的大小,也可以设置为两者之间的任意值,此处需要注意的是不能小于一个通讯通道的需求量。例如支持链路层dl/t698.45通讯协议的电能表,最大发送或接收帧为512字节,最大可处理apdu为2kbyte,因此,一个通讯通道需要缓存大小为2kbyte。如果该电能表常用一个通讯通道,较少用两个通讯通道,极少使用两个以上通讯通道(例如最多四个通讯通道),则可以将动态存储设置为2kbyte或4kbyte,将备用存储设置为6kbyte或4kbyte。其中备用存储的最小空间的计算方式为:总通道数*apdu-动态存储大小,接举上例,则为4*2kbyte-2kbyte得到备用存储为6kbyte,或者4*2kbyte-4kbyte得到备用存储为4kbyte。

步骤s104,当收发通讯数据时,使用动态存储来存储通讯数据。

在电能表收发通讯数据时,先使用动态存储来存储通讯数据,可以提高通讯速度。待动态存储存满后,则使用备用存储来存储通讯数据。在此需要说明的是,在使用动态存储进行通讯数据的存储后,需要及时将动态存储使用,以满足各个通讯通道共用动态存储的目的。

步骤s106,在动态存储存满后,使用备用存储来存储通讯数据。

本发明实施例提供的电能表通讯数据存储方法,针对数据量大的电能表,为通讯数据分配共用的动态存储和备用存储,其中动态存储为随机存储器ram,备用存储为非易失性存储器;电能表收发通讯数据时,先使用动态存储来存储通讯数据,在动态存储存满后,使用备用存储来存储通讯数据,可以进行动态ram空间分配,使用尽量少的ram资源即可满足正常通讯要求,从而有效降低电能表的成本。

在通讯数据存储至上述共用的动态存储或备用存储后,还包括释放存储的过程从而完成存储的共用,上述方法还包括以下步骤:在通讯数据读取结束后,释放动态存储和/或备用存储。在上述动态存储或者备用存储中存储的通讯数据,在读出结束后则进行存储的释放,供其他通讯数据使用。

对接收通讯数据的过程,考虑到有效使用动态存储的空间,可以分多次申请使用动态存储,每次申请预设阈值大小的动态存储,上述使用动态存储来存储通讯数据的步骤,包括:

(1)当接收通讯数据时,申请预设阈值大小的动态存储并存储该通讯数据。该预设阈值可以根据通讯数据本身的特点确定。例如通讯数据使用的是链路层分帧,则根据分帧的大小确定该预设阈值,将预设阈值设置为等于该分帧的大小,即首次申请时可以申请等于该分帧的动态存储,并逐次申请等于该分帧的动态存储,从而可以有效利用动态存储,尽量少产生无效的共用存储占用。

(2)如果预设阈值大小的动态存储未完全存储通讯数据,再次申请预设阈值大小的动态存储进行存储,直至完全存储通讯数据。

接收数据时,存储内存需要按块申请,直至完全存储为止。

由于在上述按块申请动态存储的情况下,存在最后申请的存储空间未占满的情况,因此在上述申请动态存储的步骤之前,还需要判断当前是否存在未利用的存储空间,上述方法还包括以下步骤:

(1)判断当前是否存在已申请且未使用的动态存储。

(2)如果是,将通讯数据存储至已申请且未使用的动态存储。如果否,则重新申请预设阈值大小的动态存储。

对发送通讯数据的过程,由于已知需要发送的数据的大小,则可以根据该大小一次性申请动态存储的空间,上述使用动态存储来存储通讯数据的步骤,包括:当发送通讯数据时,根据该通讯数据的大小确定需要申请的动态存储的空间大小;根据该空间大小申请动态存储,并存储通讯数据。

考虑到共用动态存储,通讯数据存储至动态存储时并不是连续的,在进行存储时需要记录其存储的位置,因此上述方法在使用动态存储来存储通讯数据的步骤之后,还可以包括以下步骤:记录动态存储中的存储数据总长度以及动态存储对应的位置信息。

其中,位置信息可以通过存储信息队列的方式进行记录。在读取时,需要根据该存储信息队列,找到待读数据的存储位置,然后再从找到的位置开始逐块读取,直到读到需要的数据量为止。

本发明实施例提供的电能表通讯数据存储方法,采用动态ram做数据常用缓存,用非易失性存储器做备用缓存,在接收数据时可以分多次申请使用动态存储,每次申请预设阈值大小的动态存储,在发送数据时可以根据发送数据的大小一次性申请动态存储,从而可以用尽少量的ram资源,满足正常通讯要求,对电能表降低成本很有可能起到很大作用。

本发明实施例提供了一种电能表通讯数据存储方法,应用于电能表的链路层分帧数据的存储。dl/t698.45通讯协议上用到的链路层分帧有两种情况:接收链路层分帧和发送链路层分帧。接收时动态存储内存需要一块一块申请,发送时可以根据需要发送数据的长度一次性申请。

参见图2所示的电能表通讯数据存储方法的流程示意图,通讯数据按通道单独处理,以接收通讯数据为例,该方法包括如下步骤:

步骤s202,判断是否有已分配且未用的动态ram空间。如果是,执行步骤s204;如果否,执行步骤s206。

当需要保存接收分帧的apdu片段时,先判断是否有上次存储过程中未完全使用的动态ram空间,如果有则先使用该未用的存储空间进行存储。

步骤s204,判断是否足够使用。如果是,执行步骤s208;如果否,执行步骤s210。

在够用的情况下,则将接收的通讯数据存储至该空间;在不够用的情况下,则需要申请新的ram存储空间,申请过程可以参见上述实施例,在此不再赘述。需要注意的是,接收申请存储空间过程中,在申请动态ram时,由于不知道后面具体有多少数据,且接收一帧最大长度为512byte,为了减少浪费ram的使用,每次申请都只申请512byte的内存。

步骤s206,申请ram存储空间。

在无已分配且未用的动态ram空间时,则重新申请ram存储空间。

步骤s208,保存数据且更改存储信息中的总长度。

如果已分配且未用的动态ram空间足够存储接收的通讯数据,则直接进行保存,并更改存储信息中的总长度,该总长度表示该动态ram内存储数据的多少。

步骤s210,保存一部分数据至该未用的动态ram空间,至该空间填满。

如果已分配且未用的动态ram空间不足够存储接收的通讯数据,则优先使用该未用的动态ram空间至该空间填满,再申请新的ram存储空间进行保存。

步骤s212,申请ram存储空间。

步骤s214,保存剩余部分数据且更改存储信息。

由于上述存储方式,这些存储数据并不是连续的,而是分块的,甚至是不同设备中存储的,因此需要记录其存储的位置。在每次保存数据后,都需要更改管理信息,申请空间需要增加一个存储信息队列数据并更改存储数据总长度,不申请空间只需要更改存储数据总长度。

在读取数据时,也不能简单地根据起始地址和数据长度得到,需要根据上述存储信息队列,找到待读数据的存储位置,然后再从找到的位置开始逐块读取,直到读到需要的数据量为止。

步骤s216,保存数据且更改存储信息。

相对于上述方法中接收分帧,发送分帧只要根据需要待发送数据的长度申请存储空间,进行数据保存且更改存储信息即可。

本发明实施例提供的电能表通讯数据存储方法,采用动态ram做数据常用缓存,用非易失性存储器做备用缓存,在接收数据时先使用已分配且未用的动态ram空间,再分多次申请使用动态存储,可以用尽少量的ram资源,满足正常通讯要求,对电能表降低成本很有可能起到很大作用。

在上述方法中,不管是接收保存还是发送保存,其中都会涉及到申请存储空间的操作。由于动态存储ram空间有限,申请存储空间时不一定能申请到动态ram,这时申请到的存储空间就会是非易失性存储器的存储空间。参见图3所示的电能表申请存储空间的方法的流程示意图,该方法包括如下步骤:

步骤s302,申请动态ram空间,并判断是否申请成功。如果是,执行步骤s304;如果否,执行步骤s306。

由于动态ram为共用的动态存储,在多通道同时由数据传输时,则会导致动态ram已被完全占用,在申请动态ram空间时,申请到的即为非易失性存储的存储空间。

步骤s304,返回ram标识名。

步骤s306,返回非易失性存储标识名。

步骤s308,根据上述标识名更改存储信息。

在存储至不同存储空间的情况下,需要分别记录对应的存储位置信息,以供读取时使用。

本发明实施例提供了一种电能表通讯数据存储装置,参见图4所示的电能表通讯数据存储装置的结构示意图,包括:

分配模块41,用于在初始化配置过程中,为通讯数据分配共用的动态存储和备用存储;动态存储为随机存储器ram,备用存储为非易失性存储器;

动态存储模块42,用于当收发通讯数据时,使用动态存储来存储通讯数据;

备用存储模块43,用于当动态存储存满时,使用备用存储来存储通讯数据。

参见图5所示的电能表通讯数据存储装置的结构示意图,还包括:存储释放模块51,用于在通讯数据读取结束后,释放动态存储和/或备用存储。

上述分配模块41还用于:根据电能表支持的通讯协议确定单个通讯通道的最大可处理apdu;根据最大可处理apdu确定动态存储和备用存储的大小,并分配共用的动态存储和备用存储。

上述动态存储模块42还用于:当接收通讯数据时,申请预设阈值大小的动态存储并存储通讯数据;如果预设阈值大小的动态存储未完全存储通讯数据,再次申请预设阈值大小的动态存储进行存储,直至完全存储通讯数据。

上述动态存储模块42还用于:当发送通讯数据时,根据通讯数据的大小确定需要申请的动态存储的空间大小;根据空间大小申请动态存储,并存储通讯数据。

参见图6所示的电能表通讯数据存储装置的结构示意图,还包括判断模块61,用于:判断当前是否存在已申请且未使用的动态存储;如果是,将通讯数据存储至已申请且未使用的动态存储。

参见图7所示的电能表通讯数据存储装置的结构示意图,还包括记录模块71,用于:记录动态存储中的存储数据总长度以及动态存储对应的位置信息。

本发明实施例提供的电能表通讯数据存储装置,与上述实施例提供的电能表通讯数据存储方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本发明实施例还提供了一种电能表,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述实施例提供的方法。

本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述实施例的方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施方式中的对应过程,在此不再赘述。

上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施方式上述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施方式,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施方式对本公开进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施方式所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施方式技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

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