一种电厂数据的无损压缩、传输方法和系统

文档序号:1892965 发布日期:2021-11-26 浏览:15次 >En<

阅读说明:本技术 一种电厂数据的无损压缩、传输方法和系统 (Lossless compression and transmission method and system for power plant data ) 是由 薛松 陈湘 赵峰 于信波 邓仕斌 冷述文 李�杰 张敬 曹啸己 邵帅 于 2021-09-01 设计创作,主要内容包括:本发明涉及一种电厂数据的无损压缩、传输方法和系统。其中,电厂数据的无损压缩方法包括:获取电厂数据;采用哈夫曼编码对所述电厂数据进行压缩。本发明通过采用哈夫曼编码对电厂数据进行压缩,然后将压缩后的数据进行传输,能够显著提高电厂数据传输的效率。并且,提供的电厂数据的无损压缩方法,在不丢失信息的前提下,可以缩减数据量以减少存储空间,提高传输、存储和处理效率,对数据进行重新组织,减少数据的冗余和存储的空间,减小数据量,提升电厂传输数据至集团整合这一过程的效率。减小了服务器压力,节约硬件升级成本。(The invention relates to a lossless compression and transmission method and system for power plant data. The lossless compression method for the power plant data comprises the following steps: acquiring power plant data; and compressing the power plant data by adopting Huffman coding. According to the invention, the power plant data are compressed by adopting the Huffman coding, and then the compressed data are transmitted, so that the efficiency of power plant data transmission can be obviously improved. Moreover, the provided lossless compression method for the power plant data can reduce the data volume to reduce the storage space on the premise of not losing information, improve the transmission, storage and processing efficiency, reorganize the data, reduce the redundancy and storage space of the data, reduce the data volume and improve the efficiency of the process of integrating the power plant data transmitted to a group. The server pressure is reduced, and the hardware upgrading cost is saved.)

一种电厂数据的无损压缩、传输方法和系统

技术领域

本发明涉及数据压缩技术领域,特别是涉及一种电厂数据的无损压缩、传输方法和系统。

背景技术

目前现场采集的数据在传输过程中是没有经过任何处理的,实现电厂内部小规模传输已经日趋成熟稳定,但随着智慧电厂升级的趋势逐渐成为主流,集团内部各电厂之间的数据交互、电厂到集团之间的数据整合成为了数据传输过程中必不可少的步骤。但是,电厂数据量巨大、数据冗余部分过多,使得电厂数据传输实时性较差。

发明内容

为了解决现有技术中存在的上述问题,本发明提供了一种电厂数据的无损压缩、传输方法和系统。

为实现上述目的,本发明提供了如下方案:

一种电厂数据的无损压缩方法,包括:

获取电厂数据;

采用哈夫曼编码对所述电厂数据进行压缩。

优选地,所述采用哈夫曼编码对所述电厂数据进行压缩,具体包括:

获取所述电厂数据中各字符的出现频度;

利用所述出现频度构造哈夫曼树;

基于所述哈夫曼树获取所述电厂数据中每一字符编码后对应的编码位;

采用ASCII码初始化所述哈夫曼树中的哈夫曼节点;

采用遍历法确定每一所述ASCII码出现的频率;所述ASCII码存储在输入缓冲区中;

根据所述频率采用qsort函数对所述ASCII码进行升序排序,获取每一所述ASCII码对应的位序列;

存储初始化后的所述哈夫曼节点和所述位序列,得到压缩后的电厂数据。

对应于上述提供的电厂数据的无损压缩方法,本发明还提供了如下实施系统:

一种电厂数据的无损压缩系统,包括:

数据获取模块,用于获取电厂数据;

数据压缩模块,用于采用哈夫曼编码对所述电厂数据进行压缩。

优选地,所述数据压缩模块包括:

频度获取单元,用于获取所述电厂数据中各字符的出现频度;

哈夫曼树构造单元,利用所述出现频度构造哈夫曼树;

编码位获取单元,用于基于所述哈夫曼树获取所述电厂数据中每一字符编码后对应的编码位;

哈夫曼节点初始化单元,用于采用ASCII码初始化所述哈夫曼树中的哈夫曼节点;

频率确定单元,用于采用遍历法确定每一所述ASCII码出现的频率;所述ASCII码存储在输入缓冲区中;

位序列获取单元,用于根据所述频率采用qsort函数对所述ASCII码进行升序排序,获取每一所述ASCII码对应的位序列;

压缩单元,用于存储初始化后的所述哈夫曼节点和所述位序列,得到压缩后的电厂数据。

此外,本发明还提供了一种电厂数据的传输方法,该电厂数据的传输方法包括:

将压缩后的电厂数据传输至数据库;压缩后的电厂数据由上述提供的电厂数据的无损压缩方法压缩得到;

对数据库中压缩后的电厂数据进行解压缩;

对解压缩后的电厂数据进行汇总。

优选地,所述对数据库中压缩后的电厂数据进行解压缩,具体包括:

采用位流在所述输入缓冲区中搜索与压缩后的电厂数据相对应的哈夫曼树,当发现所述哈夫曼树中的哈夫曼节点时,将与该哈夫曼节点对应的ASCII码添加到所述输出缓冲区中,完成对压缩后的电厂数据的解压缩。

优选地,所述数据库采用MongoDB+My sql进行存储。

对应于上述提供的电厂数据的传输方法,本发明还提供了如下实施系统:

其中,一种电厂数据的传输系统,包括:

传输模块,用于将压缩后的电厂数据传输至数据库;压缩后的电厂数据由上述提供的电厂数据的无损压缩方法压缩得到;所述数据库包括输入缓冲区和输出缓冲区;

解压缩模块,用于对数据库中压缩后的电厂数据进行解压缩;

汇总模块,用于对解压缩后的电厂数据进行汇总。

优选地,所述解压缩模块包括:

解压缩单元,用于采用位流在所述输入缓冲区中搜索与压缩后的电厂数据相对应的哈夫曼树,当发现所述哈夫曼树中的哈夫曼节点时,将与该哈夫曼节点对应的ASCII码添加到所述输出缓冲区中,完成对压缩后的电厂数据的解压缩。

另一种电厂数据的传输系统,包括:数据层和应用层;

所述数据层和所述应用层通过web server服务进行数据传输;

所述数据层用于实施上述提供的电厂数据的无损压缩方法;所述应用层用于实施上述提供的电厂数据的传输方法。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明提供的电厂数据的无损压缩、传输方法和系统,通过采用哈夫曼编码对电厂数据进行压缩,然后将压缩后的数据进行传输,能够显著提高电厂数据传输的效率。

附图说明

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

图1为本发明提供的电厂数据的无损压缩方法的流程图;

图2为本发明实施例提供的将节点f和节点e合并后的树结构图;

图3为本发明实施例提供的将节点b和节点c合并后的树结构图;

图4为本发明实施例提供的将节点d和节点f、e合并后的树结构图;

图5为本发明实施例提供的将节点f、e、d和节点b、c合并后的树结构图;

图6为本发明实施例提供的将节点a和节点bcfed合并后的树结构图;

图7为本发明实施例构建得到的哈夫曼树结构图;

图8为本发明实施例提供的编码后的哈夫曼树结构图;

图9为本发明提供的电厂数据的无损压缩系统的结构示意图;

图10为本发明提供的电厂数据的传输方法的流程图;

图11为本发明提供的电厂数据的传输系统的结构示意图。

具体实施方式

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

本发明的目的是提供一种电厂数据的无损压缩、传输方法和系统,能够提升电厂数据传输效率。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,本发明提供的电厂数据的无损压缩方法,包括:

步骤100:获取电厂数据。例如,可通过现场采集设备(传感器)对电厂数据进行采集后,将现场设备振动信号转换成电信号之后把采集的电厂数据发送至电厂内的数据服务器中。

步骤101:采用哈夫曼编码对电厂数据进行压缩。哈夫曼编码是无损压缩当中最好的方法,它使用预先二进制描述来替换每个符号,长度由特殊符号出现的频率决定。常见的符号需要很少的位来表示,而不常见的符号需要很多位来表示。哈夫曼算法在改变任何符号二进制编码引起少量密集表现方面是最佳的。

利用数据出现的次数构造哈夫曼树,并且出现次数较多的数据在树的上层,出现次数较少的数据在树的下层,基于这一构造原理,本发明从根节点到每个数据的路径来进行编码并实现压缩,例如,在电厂内采用服务器对数据进行压缩后传输至集团服务器。其中,对电厂数据进行压缩的具体实施过程可以为:

步骤1010:获取电厂数据中各字符的出现频度。

步骤1011:利用出现频度构造哈夫曼树。

步骤1012:基于哈夫曼树获取电厂数据中每一字符编码后对应的编码位。

步骤1013:采用ASCII码初始化哈夫曼树中的哈夫曼节点。

步骤1014:采用遍历法确定每一ASCII码出现的频率。ASCII码存储在输入缓冲区中。

步骤1015:根据频率采用qsort函数对ASCII码进行升序排序,获取每一ASCII码对应的位序列。

步骤1016:存储初始化后的哈夫曼节点和位序列,得到压缩后的电厂数据。

在本发明中,为了提高使用的便捷性,压缩过程使用简单的C语言编写这个编码。首先在程序中利用字符出现的频度构造哈夫曼树,将所有的节点放到一个队列中,用一个节点替换两个频率最低的节点,新节点的频率就是这两个节点的频率之和。这样,新节点就是两个被替换节点的父节点了。如此循环,直到队列中只剩一个节点(树根)。

下面以一个包含100000个字符的数据文件要压缩存储为例,对本发明上述提供的编码压缩过程进行说明。

包含100000个字符的数据文件中各字符出现的频度如下表1所示:

表1

字符种类 出现频度(千字)
a 45
b 13
c 12
d 16
e 9
f 5

在此给出常规编码的方法和哈夫曼编码两种方法,便于比较。

常规编码方法:

为每个字符赋予一个三位的编码,于是得到如表2所示的结果。

表2

字符种类 编码位
a 000
b 001
c 010
d 011
e 100
f 101

此时,100000个字符进行编码需要100000*3=300000位。

哈夫曼编码:

利用字符出现的频度构造哈夫曼树,构造哈夫曼树的过程也就是编码的过程,得到的结果如表3所示。

表3

字符种类 编码位
a 0
d 111
b 101
c 100
e 1101
f 1100

这种情况下,对100000个字符编码需要:{45*1+(16+13+12+9)*3+(9+5)*4}*1000=224000位。

下面用上面的例子详细说明一下哈夫曼编码的过程。

首先,需要统计出各个字符出现的次数,如表1所示。

接下来,根据各个字符出现的次数对它们进行排序,如表4所示:

表4

字符种类 出现频度(千字)
a 45
d 16
b 13
c 12
e 9
f 5

上文中提到,哈夫曼编码的过程其实就是构造一颗哈夫曼树的过程,那么就可以将各个字符看成树中将要构造的各个节点,将字符出现的频度看成权值。

构造哈夫曼编码哈夫曼树规则:

从小到大,从底向上,依次排开,逐步构造。

首先,根据构造规则,本发明将各个字符看成构造树的节点,即有节点a、b、c、d、e、f。那么,先将节点f和节点e合并得到的树结构如图2所示。

于是得到如表5所示的结果。

表5

a d b c fe
45 16 13 12 14

经过排序处理得到的结果如表6所示:

表6

a d fe b c
45 16 14 13 12

接下来,将节点b和节点c也合并,得到如图3所示的树结构。

于是得到如表7所示的结果:

表7

a d fe cb
45 16 14 25

经过排序处理得到如表8所示的结果:

表8

a cb d fe
45 25 16 14

将节点d和节点fe合并,得到如图4所示的树结构

于是得到的结果如表9所示:

表9

a fed bc
45 26 25

继续将节点f、e、d和节点b、c合并,得如图5所示的树结构。

于是得到如表10所示的结果:

表10

a bcfed
45 51

最后,将节点a和节点bcfed合并,得到的树结构如图6所示。

以上步骤就是哈夫曼树的构造过程,得到的完整哈夫曼树结构如图7所示。哈夫曼树构建完成,编码的规则为左0右1,于是根据编码规则得到最终结果如图8所示。

从图8中得到各个字符编码后的编码位如表3所示。

用ASCII(美国信息交换标准代码)值初始化511个哈夫曼节点。使用遍历算法(依次对之前建立的哈夫曼树中的每个节点均做一次访问)计算在输入缓冲区数据中每个ASCII码出现的频率。

然后根据频率的大小使用qsort函数(qsort函数是C语言编译器函数库自带的排序函数)对其进行升序排序。

在哈夫曼树中获取每个ASCII码对应的位序列。

在压缩过程中,保存哈夫曼树的节点以及位序列,方便之后在解压缩时重新构造哈夫曼树(只需保存ASCII值和排序后对应的位序列)保证数据无损压缩。

以上过程简而言之就是用ASCII编码替换数据节点后只要保存ASCII码和每个码出现的频率和位序列(重复的数据都简化为一个ASCII码,只需保存位序列)就可以完整的保存数据信息,并不需要一一检索所有字符串,大大减少了计算量,这一过程就是对数据的压缩。

对应于上述提供的电厂数据的无损压缩方法,本发明还提供了一种电厂数据的无损压缩系统,如图9所示,该无损压缩系统包括:数据获取模块200和数据压缩模块201。

数据获取模块200用于获取电厂数据。

数据压缩模块201用于采用哈夫曼编码对电厂数据进行压缩。

其中,数据压缩模块201包括:频度获取单元、哈夫曼树构造单元、编码位获取单元、哈夫曼节点初始化单元、频率确定单元、位序列获取单元和压缩单元。

频度获取单元用于获取电厂数据中各字符的出现频度。

哈夫曼树构造单元利用出现频度构造哈夫曼树。

编码位获取单元用于基于哈夫曼树获取电厂数据中每一字符编码后对应的编码位。

哈夫曼节点初始化单元用于采用ASCII码初始化哈夫曼树中的哈夫曼节点。

频率确定单元用于采用遍历法确定每一ASCII码出现的频率。ASCII码存储在输入缓冲区中。

位序列获取单元用于根据频率采用qsort函数对ASCII码进行升序排序,获取每一ASCII码对应的位序列。

压缩单元用于存储初始化后的哈夫曼节点和位序列,得到压缩后的电厂数据。

采用上述无损压缩方法压缩得到电厂数据后,需要将压缩后的电厂数据从电厂传输给集团,此时,后台技术采用.NET MVC架构,数据库采用MongoDB+My sql进行存储,缓存用Output Caching(输出缓存),Data Caching(输入缓存),通过web server服务对数据层与应用层之间的传输。最终,将数据传输至集团服务器进行汇总。

进一步,为了实现对上述压缩后的电厂数据进行实时传输,本发明还提供了一种电厂数据的传输方法,如图10所示,该电厂数据的传输方法包括:

步骤300:将压缩后的电厂数据传输至数据库。压缩后的电厂数据由上述提供的电厂数据的无损压缩方法压缩得到。数据库优选采用MongoDB+My sql进行存储。

步骤301:对数据库中压缩后的电厂数据进行解压缩。

步骤302:对解压缩后的电厂数据进行汇总。

解压缩只要将输入缓冲区中的每个编码用对应的ASCII码逐个替换就可以了。这里的输入缓冲区是一个包含每个ASCII值的编码的位流。因此,为了用ASCII值替换编码,必须用位流搜索哈夫曼树,直到发现一个叶节点(叶节点是指出度为0的节点,又称为终端结点),然后将它的ASCII值添加到输出缓冲区中(简而言之就是上述压缩过程的反推)。基于这一解压缩原理,本发明上述提供的步骤301的具体实施过程为:

采用位流在输入缓冲区中搜索与压缩后的电厂数据相对应的哈夫曼树,当发现哈夫曼树中的哈夫曼节点时,将与该哈夫曼节点对应的ASCII码添加到输出缓冲区中,完成对压缩后的电厂数据的解压缩。

以上解压缩的过程可以由集团服务器接受从厂内服务器传输过来的压缩后的数据进行解压缩。

对应于上述提供的电厂数据的传输方法,本发明还提供了如下实施系统:

如图11所示,其中一种电厂数据的传输系统,包括:传输模块400、解压缩模块401和汇总模块402。

传输模块400用于将压缩后的电厂数据传输至数据库。压缩后的电厂数据由上述提供的电厂数据的无损压缩方法压缩得到。数据库包括输入缓冲区和输出缓冲区。

解压缩模块401用于对数据库中压缩后的电厂数据进行解压缩。

汇总模块402用于对解压缩后的电厂数据进行汇总。

其中解压缩模块401包括:解压缩单元。

解压缩单元用于采用位流在输入缓冲区中搜索与压缩后的电厂数据相对应的哈夫曼树,当发现哈夫曼树中的哈夫曼节点时,将与该哈夫曼节点对应的ASCII码添加到输出缓冲区中,完成对压缩后的电厂数据的解压缩。

另一种电厂数据的传输系统,包括:数据层和应用层。

数据层和应用层通过web server服务进行数据传输。

数据层用于实施上述提供的电厂数据的无损压缩方法。应用层用于实施上述提供的电厂数据的传输方法。

综上,本发明提供的技术方案相较于现有技术具有以下优点:

本发明采用数据无损压缩处理的方法,在不丢失信息的前提下,缩减数据量以减少存储空间,提高传输、存储和处理效率,对数据进行重新组织,减少数据的冗余和存储的空间,减小数据量,提升电厂传输数据至集团整合这一过程的效率。减小了服务器压力,节约硬件升级成本。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种生成TWACS波形的装置及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类