电能表通讯数据压缩方法与系统
技术领域
本发明数据处理
技术领域
,更具体的,涉及电能表通讯数据压缩方法与系统。背景技术
电能表是用来测量电能的仪表,又称电度表、火表、千瓦小时表,指测量各种电学量的仪表。
随着我国经济的飞速发展,各行各业对电的需求越来越大,不同时间用电量不均衡的现象也日益严重,为缓解我国日趋尖锐的电力供需矛盾,调节负荷曲线,改善用电量不均衡的现象,全面实行峰、平、谷分时电价制度,“削峰填谷”,提高全国的用电效率,合理利用电力资源,国内部分省市的电力部门已开始逐步推出了多费率电能表,对用户的用电量分时计费,在电能表工作的过程中,电能表每天会产生大量的负荷数据,后台主站系统每天都需要把数据抄读回来,既需要耗费较多的流量也会耗费大量的时间,目前已有的通讯数据压缩有基于时间的压缩、基于LZ编码的压缩、源码与反码混合式压缩等方法。
但是现有技术的缺点也很明显,例如:其一仅压缩时间数据,压缩的数据长度有限,无法对时间以外的其他数据压缩;其二LZ编码需要预先建立编码字典,所采用压缩算法消耗智能电表大量的算力,并且每一条负荷数据的长度一般不会超过200字节,所以不能发挥出LZ编码的优势,其三在智能电表应用中,传统的压缩算法既要增加软件复杂度增加大量算力消耗,且无法有效的提高数据压缩率,因此,需要设计一种不影响算力消耗,不增加软件复杂度且同时可以高效通讯的方法来解决此类问题。
发明内容
鉴于上述问题,本发明的目的是提供电能表通讯数据压缩方法与系统,能够解决传统的压缩算法中既要增加软件复杂度又要增加大量算力消耗,且无法有效的提高数据压缩率的问题。
本发明第一方面提供了一种电能表通讯数据压缩方法,应用于主站,所述方法包括以下步骤:
依据预设时间阈值向所述电能表发送周期性抄表指令;
获取所述电能表依据预设规则对负荷数据压缩得到的返回数据;
基于所述预设规则周期性反向解析所述返回数据,得到所述负荷数据。
本方案中,所述依据预设时间阈值发送周期性抄表指令,具体为:
获取负荷周期;
基于所述负荷周期得到所述时间阈值范围;
依据所述时间阈值范围向所述电能表发送周期性抄表指令。
本方案中,所述基于所述预设规则周期性反向解析所述返回数据,得到所述负荷数据,具体为:
读取相邻缓存之间的寄存器数据信息,直至解析得到所述返回数据,其中,相邻缓存分别记为第一缓存与第二缓存;
若第二缓存中寄存器x为预设字段表示,则表明第二缓存中寄存器x与第一缓存中寄存器x相同;
若第二缓存中时间寄存器的时间值为所述预设字段表示,则表明第二缓存中时间寄存器的时间值等于第一缓存中时间寄存器的时间值加上所述负荷周期值。
本发明第二方面提供了一种电能表通讯数据压缩系统,应用于主站,所述系统包括:
发送模块,用于依据预设时间阈值向所述电能表发送周期性抄表指令;
获取模块,用于获取所述电能表依据预设规则对负荷数据压缩得到的返回数据;
解析模块,用于基于所述预设规则周期性反向解析所述返回数据,得到所述负荷数据。
本方案中,所述依据预设时间阈值发送周期性抄表指令,具体为:
获取负荷周期;
基于所述负荷周期得到所述时间阈值范围;
依据所述时间阈值范围向所述电能表发送周期性抄表指令。
本方案中,所述基于所述预设规则周期性反向解析所述返回数据,得到所述负荷数据,具体为:
读取相邻缓存之间的寄存器数据信息,直至解析得到所述返回数据,其中,相邻缓存分别记为第一缓存与第二缓存;
若第二缓存中寄存器x为预设字段表示,则表明第二缓存中寄存器x与第一缓存中寄存器x相同;
若第二缓存中时间寄存器的时间值为所述预设字段表示,则表明第二缓存中时间寄存器的时间值等于第一缓存中时间寄存器的时间值加上所述负荷周期值。
本发明第三方面提供了一种电能表通讯数据压缩方法,应用于电能表,所述方法包括以下步骤:
获取主站发送的周期性抄表指令;
基于所述抄表指令在时间周期内搜索负荷数据;
依据预设规则对所述负荷数据进行压缩得到返回数据,具体为:
读取第一条负荷数据并将其缓存至第一缓存中;
读取相邻的第二条负荷数据并将其缓存至第二缓存中,比较第一缓存与第二缓存中的寄存器数据信息,其中,所述预设规则为:
若第二缓存中时间寄存器的时间值等于第一缓存中时间寄存器的时间值加上所述负荷周期值,则第二缓存中时间寄存器的时间值用预设字段表示;
若第二缓存中寄存器x与第一缓存中寄存器x数值相同,则第二缓存中寄存器x用所述预设字段表示;
读取第三条负荷数据并将其缓存至第三缓存中,比较第二缓存与第三缓存中的寄存器数据信息,依次采用所述预设规则对所述负荷数据进行压缩直至得到所述返回数据;
将所述返回数据发送给所述主站。
本方案中,所述基于所述抄表指令在时间周期内搜索负荷数据,具体为:
通过所述抄表指令获得时间阈值范围;
在所述时间阈值范围内对所述负荷数据进行搜索。
本发明第四方面还提供一种电能表通讯数据压缩系统,应用于电能表,所述系统包括:
获取模块,用于获取主站发送的周期性抄表指令;
搜索模块,用于基于所述抄表指令在时间周期内搜索负荷数据;
压缩模块,用于依据预设规则对所述负荷数据进行压缩得到返回数据;
发送模块,用于将所述返回数据发送给所述主站。
本方案中,所述基于所述抄表指令在时间周期内搜索负荷数据,具体为:
通过所述抄表指令获得时间阈值范围;
在所述时间阈值范围内对所述负荷数据进行搜索。
本方案中,所述依据预设规则对所述负荷数据进行压缩得到返回数据,具体为:
读取第一条负荷数据并将其缓存至第一缓存中;
读取相邻的第二条负荷数据并将其缓存至第二缓存中,比较第一缓存与第二缓存中的寄存器数据信息,其中,所述预设规则为:
若第二缓存中时间寄存器的时间值等于第一缓存中时间寄存器的时间值加上所述负荷周期值,则第二缓存中时间寄存器的时间值用预设字段表示;
若第二缓存中寄存器x与第一缓存中寄存器x数值相同,则第二缓存中寄存器x用所述预设字段表示;
读取第三条负荷数据并将其缓存至第三缓存中,比较第二缓存与第三缓存中的寄存器数据信息,依次采用所述预设规则对所述负荷数据进行压缩直至得到所述返回数据。
本发明公开的一种电能表通讯数据压缩方法和系统,软件设计复杂度低、计算量小、压缩的负荷数据可以实现自恢复;本方法基于负荷数据自身具有稳定不易突变的特点,可以大大提高压缩率;能够解决传统的压缩算法中既要增加软件复杂度又要增加大量算力消耗,且无法有效的提高数据压缩率的问题。
附图说明
图1示出了本发明一种电能表通讯数据压缩方法于一实施例中方法流程图;
图2示出了本发明一种电能表通讯数据压缩系统于一实施例中的结构框图;
图3示出了本发明一种电能表通讯数据压缩方法于又一实施例中方法流程图;
图4示出了本发明一种电能表通讯数据压缩系统于又一实施例中的结构框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了本发明一种应用于电能表的电能表通讯数据压缩方法的流程图。
如图1所示,本申请公开了一种电能表通讯数据压缩方法,应用于电能表,所述方法包括以下步骤:
S102,获取主站发送的周期性抄表指令;
S104,基于所述抄表指令在时间周期内搜索负荷数据;
S106,依据预设规则对所述负荷数据进行压缩得到返回数据;
S108,将所述返回数据发送给所述主站。
需要说明的是,所述电能表内的所述负荷数据反应用户的用电特点和用电趋势,由于用户用电具有一定的规律性,所以所述负荷数据具有稳定不易突变的特点,基于这一特点可以减少通讯过程的数据量,提高通讯效率。
需要说明的是,所述电能表获取所述主站发来的周期性抄表指令后,基于所述抄表指令的内容在所述时间周期内对所述电能表内的所述负荷数据进行搜索,并依据所述预设规则对搜索到的所述负荷数据进行压缩,以减少通讯数据量,并将压缩后的数据作为返回数据发送给所述主站。
值得一提的是,所述主站根据同样的所述预设规则,反向操作进行解析即可获得原始的所述电能表内的所述负荷数据。
根据本发明实施例,所述基于所述抄表指令在时间周期内搜索负荷数据,具体为:
通过所述抄表指令获得时间阈值范围;
在所述时间阈值范围内对所述负荷数据进行搜索。
需要说明的是,所述抄表指令具备周期性特点,抄读时间范围为从上一次抄读时间到当前时间,所述主站向所述电能表发出的所述抄表指令指的是抄读某一时间范围内数据指令,需要先获得这一具体时间范围,即为所述时间阈值范围,基于所述时间阈值范围在所述时间阈值范围内对所述负荷数据进行搜索。
值得一提的是,所述负荷周期值根据当前网络的拥塞情况进行取值,具体为:
识别当前通讯网络的拥塞特征值;
比较所述拥塞特征值与预设特征值的大小,其中,
若所述拥塞特征值小于所述预设特征值,则判断当前网络为非拥塞状态,采用第一采集方式;
若所述拥塞特征值大于或等于所述预设特征值,则判断当前网络为拥塞状态,采用第二采集方式。
具体地,所述预设特征值包括分组丢失率、平均队列长度、超时重传的分组数目以及平均分组延迟及分组延迟变化的参数特征,若所述当前网络判断为所述非拥塞状态,则采用所述第一采集方式,即提高采集频率,通过频繁采集可在有限的时间范围内可以尽可能多的采集所述负荷数据;若所述当前网络判断为所述拥塞状态,则采用所述第二采集方式,即降低采集频率,避免网络拥塞导致数据丢失。
值得一提的是,所述电能表获取所述主站发来的周期性抄表指令,例如为所述主站抄读“2021-5-1 00:00:00”到“2021-5-1 00:59:00”时间范围内的负荷数据,共四条负荷数据,其中,所述当前网络为所述非拥塞状态,所述负荷周期值为“15”分钟。
根据本发明实施例,所述依据预设规则对所述负荷数据进行压缩得到返回数据,具体为:
读取第一条负荷数据并将其缓存至第一缓存中;
读取相邻的第二条负荷数据并将其缓存至第二缓存中,比较第一缓存与第二缓存中的寄存器数据信息,其中,所述预设规则为:
若第二缓存中时间寄存器的时间值等于第一缓存中时间寄存器的时间值加上所述负荷周期值,则第二缓存中时间寄存器的时间值用预设字段表示;
若第二缓存中寄存器x与第一缓存中寄存器x数值相同,则第二缓存中寄存器x用所述预设字段表示;
读取第三条负荷数据并将其缓存至第三缓存中,比较第二缓存与第三缓存中的寄存器数据信息,依次采用所述预设规则对所述负荷数据进行压缩直至得到所述返回数据。
需要说明的是,采用第n条所述负荷数据内容与第“n+1”条所述负荷数据内容比对,第“n+1”条所述负荷数据的时间等于第n条所述负荷数据的时间加上所述负荷周期值,则第“n+1”条所述负荷数据的时间数据用一个字节“0x00”代替,其中,所述预设字段即为“0x00”,第“n+1”条所述负荷数据的寄存器内容“register x”等于第n条所述负荷数据的寄存器内容“register x”,则第“n+1”条所述负荷数据的寄存器“register x”内容用一个字节“0x00”代替,从而实现缩短通讯数据长度的目的。
值得一提的是,原始的所述电能表内的所述负荷数据经过所述预设规则压缩后,其中,所述电能表读取其中第一条所述负荷数据并将其存储到所述第一缓存中;所述电能表读取其中第二条所述负荷数据并将其存储到所述第二缓存中,将所述第二缓存中各寄存器数据值与所述第一缓存中各寄存器数据中比对,如果所述第二缓存中时间寄存器的时间值等于所述第一缓存中时间寄存器的时间值加上所述负荷周期值,则所述第二缓存中时间寄存器的时间值用所述预设字段“0x00”代替,如果所述第二缓存中寄存器“register x”内容等于所述第一缓存中寄存器“register x”内容,则所述第二缓存中“register x”内容用“0x00”代替,同理,依据所述预设规则,对所述第三缓存以及第四缓存采取同样的操作,直到把所有所述负荷数据都读取完毕,组成最终的所述返回数据。
图2示出了本发明一种应用于电能表的电能表通讯数据压缩系统的框图。
如图2所示,本发明公开了一种电能表通讯数据压缩系统20,应用于电能表,所述系统包括:
获取模块21,用于获取主站发送的周期性抄表指令;
搜索模块22,用于基于所述抄表指令在时间周期内搜索负荷数据;
压缩模块23,用于依据预设规则对所述负荷数据进行压缩得到返回数据;
发送模块24,用于将所述返回数据发送给所述主站。
需要说明的是,所述电能表内的所述负荷数据反应用户的用电特点和用电趋势,由于用户用电具有一定的规律性,所以所述负荷数据具有稳定不易突变的特点,基于这一特点可以减少通讯过程的数据量,提高通讯效率。
需要说明的是,所述电能表获取所述主站发来的周期性抄表指令后,基于所述抄表指令的内容在所述时间周期内对所述电能表内的所述负荷数据进行搜索,并依据所述预设规则对搜索到的所述负荷数据进行压缩,以减少通讯数据量,并将压缩后的数据作为返回数据发送给所述主站。
值得一提的是,所述主站根据同样的所述预设规则,反向操作进行解析即可获得原始的所述电能表内的所述负荷数据。
根据本发明实施例,所述基于所述抄表指令在时间周期内搜索总负荷数据,具体为:
通过所述抄表指令获得时间阈值范围;
在所述时间阈值范围内对所述负荷数据进行搜索。
需要说明的是,所述抄表指令具备周期性特点,抄读时间范围为从上一次抄读时间到当前时间,所述主站向所述电能表发出的所述抄表指令指的是抄读某一时间范围内数据指令,需要先获得这一具体时间范围,即为所述时间阈值范围,进而在所述时间阈值范围内对所述负荷数据进行搜索。
图3示出了本申请一种应用于主站的电能表通讯数据压缩方法的流程图。
如图3所示,本申请公开了一种电能表通讯数据压缩方法,应用于主站,所述方法包括以下步骤:
S302,依据预设时间阈值向所述电能表发送周期性抄表指令;
S304,获取所述电能表依据预设规则对负荷数据压缩得到的返回数据;
S306,基于所述预设规则周期性反向解析所述返回数据,得到所述负荷数据。
需要说明的是,所述电能表内的所述负荷数据反应用户的用电特点和用电趋势,由于用户用电具有一定的规律性,所以所述负荷数据具有稳定不易突变的特点,基于这一特点可以减少通讯过程的数据量,提高通讯效率。
需要说明的是,在主站这一端,首先向所述电能表发送周期性抄表指令,所述主站向所述电能表发出抄读某一时间范围内数据指令,所述电能表会根据所述抄表指令进行作业,对所述负荷数据进行压缩,而后主站获取所述电能表依据预设规则对负荷数据压缩得到的返回数据,并根据所述预设规则反向解析获得所述电能表的负荷数据。
根据本发明实施例,所述依据预设时间阈值发送周期性抄表指令,具体为:
获取负荷周期;
基于所述负荷周期得到所述时间阈值范围;
依据所述时间阈值范围向所述电能表发送周期性抄表指令。
需要说明的是,抄读时间范围为从上一次抄读时间到当前时间,需要先获取所述时间阈值的时间范围,基于所述时间范围可以知道所述时间阈值的时间跨度的大小,进而得到所述负荷周期值,而后根据所述负荷周期值向所述电能表发送周期性抄表指令。
值得一提的是,于表1所示,所述负荷周期值为“15”分钟,所述主站抄读“2021-5-100:00:00”到“2021-5-1 00:59:00”时间范围内的所述负荷数据,共“4”条负荷数据。
表1. 目标周期为十五分钟的负荷数据表
根据本发明实施例,所述基于所述预设规则周期性反向解析所述返回数据,得到所述负荷数据,具体为:
读取相邻缓存之间的寄存器数据信息,直至解析得到所述返回数据,其中,相邻缓存分别记为第一缓存与第二缓存;
若第二缓存中寄存器x为预设字段表示,则表明第二缓存中寄存器x与第一缓存中寄存器x相同;
若第二缓存中时间寄存器的时间值为所述预设字段表示,则表明第二缓存中时间寄存器的时间值等于第一缓存中时间寄存器的时间值加上所述负荷周期值。
需要说明的是,在获取所述返回数据后,需要对压缩后的数据进行反向解析才能得到原始的所述负荷数据,基于所述预设规则进行反向解析所述返回数据。
值得一提的是,如表2所示,为所述主站获得的所述返回数据表,其中,所述预设字段为“0x00”, 其中,“x”为字母或者数字。
表2. 所述主站获得的所述返回数据表
进一步地,基于表2可知,其中寄存器以及时间值都被压缩了,需要利用上述预设规则反向解析获得原始的所述负荷数据,表3为所述返回数据解析后的原始所述负荷数据表。
表3. 所述返回数据解析后的原始所述负荷数据表
基于表3可知,基于所述预设规则反向解析后可得原始的所述负荷数据,通过单个字节的存储量来代替冗长的且相同的所述负荷数据值,可以大幅减少通讯过程的数据量,提高通讯效率。
图4示出了本发明一种应用于主站的电能表通讯数据压缩系统的框图。
如图4所示,本发明公开了一种电能表通讯数据压缩系统40,应用于主站,所述系统包括:
发送模块41,用于依据预设时间阈值向所述电能表发送周期性抄表指令;
获取模块42,用于获取所述电能表依据预设规则对负荷数据压缩得到的返回数据;
解析模块43,用于基于所述预设规则周期性反向解析所述返回数据,得到所述负荷数据。
需要说明的是,在主站这一端,首先向所述电能表发送周期性抄表指令,所述主站向所述电能表发出抄读某一时间范围内数据指令,所述电能表会根据所述抄表指令进行作业,对所述负荷数据进行压缩,而后主站获取所述电能表依据预设规则对负荷数据压缩得到的返回数据,并根据所述预设规则反向解析获得所述电能表的负荷数据。
根据本发明实施例,所述依据预设时间阈值发送周期性抄表指令,具体为:
获取负荷周期;
基于所述负荷周期得到所述时间阈值范围;
依据所述时间阈值范围向所述电能表发送周期性抄表指令。
需要说明的是,抄读时间范围为从上一次抄读时间到当前时间,需要先获取所述时间阈值的时间范围,而后根据所述时间阈值范围向所述电能表发送周期性抄表指令。
本发明公开的一种电能表通讯数据压缩方法与系统,软件设计复杂度低、计算量小、压缩的负荷数据可以实现自恢复;本方法基于负荷数据自身具有稳定不易突变的特点,可以大大提高压缩率;能够解决传统的压缩算法中既要增加软件复杂度又要增加大量算力消耗,且无法有效的提高数据压缩率的问题。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。