CN110535846B - 一种基于dl/t698.45协议的数据帧压缩方法和系统 - Google Patents
一种基于dl/t698.45协议的数据帧压缩方法和系统 Download PDFInfo
- Publication number
- CN110535846B CN110535846B CN201910779650.3A CN201910779650A CN110535846B CN 110535846 B CN110535846 B CN 110535846B CN 201910779650 A CN201910779650 A CN 201910779650A CN 110535846 B CN110535846 B CN 110535846B
- Authority
- CN
- China
- Prior art keywords
- data
- array
- compressed
- compression
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Abstract
本发明提供一种基于DL/T698.45协议的数据帧压缩方法和系统。所述方法和系统将采集的数据帧进行解析并分层,对每一层中的数据按照类型采用不同的压缩算法进行压缩,其中,基础数据采用第一压缩算法,针对不同的数据类型压缩字节,对于数组元素无法压缩的第一数组数据,采用第二压缩算法,将数组元素的数据类型进行提取作为数组元素类型,对于数组元素相同可进行压缩的第二数组数据,通过定义压缩数组类型,只保留一组数组元素。所述基于DL/T698.45协议的数据帧压缩方法和系统的压缩算法简单,执行效率高,不仅具备通过通用压缩算法再次压缩的特性,还保留了数据帧易解析特点,是一种高效无损压缩算法。
Description
技术领域
本发明涉及数据压缩领域,并且更具体地,涉及一种基于DL/T698.45协议的数据帧压缩方法和系统。
背景技术
DL/T698.45协议全称为《DL/T 698.45—2017电能信息采集与管理系统第4-5部分:通信协议—面向对象的数据交换协议》,以下简称“DL/T698.45协议”,是电力行业电能信息采集与管理系统目前采用通信协议,已经广泛应用,可以用于主站与采集终端之间,也可以用于采集终端与电能表之间。一般采集终端与电能表之间采用载波通信,由于信道问题,通信报文大小极大影响了通信效率和通信成功率,因此减小DL/T698.45协议数据帧大小将能够有效提高通信效率和通信成功率。
DL/T698.45协议采用了自解析特征的数据编码方式,易于人工或计算机自动解析,增强了报文的可读性,但是由于数据帧中带了数据类型等自解析标志增加了报文大小,对于一些报文大小影响通信质量和效率的通信信道影响比较大,例如载波通信,因此减小传输报文数据帧大小至关重要。
发明内容
为了解决现有技术中采用DL/T698.45协议的报文数据中无效数据、重复数据多,降低了受报文大小影响的通信信道的通信质量和效率的技术问题,本发明提供一种基于DL/T698.45协议的数据帧压缩方法,所述方法包括:
步骤1、采集DL/T698.45协议的数据帧,并对所述数据帧进行解析,所述解析后的数据有N层,其中,所述解析后的数据包括基础数据和数组数据,所述数组数据包括第一数组数据和第二数组数据,所述第一数组数据是每个数据元素中的数据类型相同,但数据值不同的数据,所述第二数组数据是每个数据元素中的数据类型和数据值都相同,N≥1;
步骤2、将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据,其中,所述第一压缩算法是指将DL/T698.45协议中数据类型进行重新编码,并将所述数据类型对应的字节进行压缩,其中,n的初始值是1;
步骤3、将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率;
步骤4、将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率,其中,所述第二压缩算法是将第一数组数据中的数组元素的数据类型提出作为数组元素类型,其压缩后的格式为压缩数组类型,数据元素类型和所有数组元素的组合;
步骤5、比较第一压缩率和第二压缩率,当第一压缩率大于第二压缩率,且第一数组压缩数据中存在第二数组数据时,将第一数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据;当第一压缩率大于第二压缩率,且第一数组压缩数据中不存在第二数组数据时,将第一数组压缩数据作为第二压缩数据,令n=n+1,其中,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合;
步骤6、比较第一压缩率和第二压缩率,当第一压缩率不大于第二压缩率,且第二数组压缩数据中存在第二数组数据时,将第二数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据,当第一压缩率不大于第二压缩率,且第二数组压缩数据中不存在第二数组数据时,将第二数组压缩数据作为第二压缩数据,令n=n+1;
步骤7、当n>N时,将所述第一压缩数据和第二压缩数据按照在数据帧中的顺序输出,所述输出结果即为采集的数据帧的压缩结果;当n≤N时,返回步骤2。
进一步地,所述将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据包括:
将第n层数据中的基础数据对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第n层数据中的基础数据中数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一压缩数据。
进一步地,所述将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率包括:
将第n层数据中的第一数组数据里的每个数组元素对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第一数组数据里的每个数组元素的数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述第一数组数据里的未压缩数据、压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一数组压缩数据;
所述第一数组压缩数据的字节总数和压缩前的第一数组数据字节总数的比值即为第一压缩率。
进一步地,所述将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率包括:
将第n层数据中的第一数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
提取第一数组数据中每个数组元素对应的数据类型编码作为压缩后的数组数据的数组元素类型编码;
将数组数据中每个数组元素的数据类型去除,只保留每个数组元素的字节数据;
所述第一数组数据的未压缩数据、数组类型编码、数据元素类型编码、元素个数和每个数组元素对应的字节数据的组合即为第二数组压缩数据;
所述第二数组压缩数据的字节总数和压缩前的第二数组数据字节总数的比值即为第二压缩率。
进一步地,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合包括:
将第二数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
将第二数组数据中的元素个数保留;
将第二数组数据中数据类型和数据值相同的数组元素只保留一个;
所述第二数组数据的未压缩数据、数组类型编码、数组元素个数和数组元素值的组合即为压缩后的数据。
根据本发明的另一方面,本发明提供一种基于DL/T698.45协议的数据帧压缩系统,所述系统包括:
数据采集单元,其用于采集DL/T698.45协议的数据帧,并传输至数据解析单元;
数据解析单元,其用于接收DL/T698.45协议的数据帧,并对所述数据帧进行解析,所述解析后的数据有N层,其中,所述解析后的数据包括基础数据和数组数据,所述数组数据包括第一数组数据和第二数组数据,所述第一数组数据是每个数据元素中的数据类型相同,但数据值不同的数据,所述第二数组数据是每个数据元素中的数据类型和数据值都相同,N≥1;
第一数据压缩单元,其用于将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据,其中,所述第一压缩算法是指将DL/T698.45协议中数据类型进行重新编码,并将所述数据类型对应的字节进行压缩,其中,n的初始值是1;
第二数据压缩单元,其用于将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率;
第三数据压缩单元,其用于将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率,其中,所述第二压缩算法是将第一数组数据中的数组元素的数据类型提出作为数组元素类型,其压缩后的格式为压缩数组类型,数据元素类型和所有数组元素的组合;
第四数据压缩单元,其用于比较第一压缩率和第二压缩率,当第一压缩率大于第二压缩率,且第一数组压缩数据中存在第二数组数据时,将第一数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据;当第一压缩率大于第二压缩率,且第一数组压缩数据中不存在第二数组数据时,将第一数组压缩数据作为第二压缩数据;当第一压缩率不大于第二压缩率,且第二数组压缩数据中存在第二数组数据时,将第二数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据,当第一压缩率不大于第二压缩率,且第二数组压缩数据中不存在第二数组数据时,将第二数组压缩数据作为第二压缩数据,令n=n+1,其中,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合;;
结果输出单元,其用于当n>N时,将所述第一压缩数据和第二压缩数据按照在数据帧中的顺序输出,所述输出结果即为采集的数据帧的压缩结果;当n≤N时,返回第一数据压缩单元。
进一步地,所述第一数据压缩单元将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据包括:
将第n层数据中的基础数据对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第n层数据中的基础数据中数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一压缩数据。
进一步地,所述第二数据压缩单元将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率包括:
将第n层数据中的第一数组数据里的每个数组元素对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第一数组数据里的每个数组元素的数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述第一数组数据里的未压缩数据、压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一数组压缩数据;
所述第一数组压缩数据的字节总数和压缩前的第一数组数据字节总数的比值即为第一压缩率。
进一步地,所述第三数据压缩单元将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率包括:
将第n层数据中的第一数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
提取第一数组数据中每个数组元素对应的数据类型编码作为压缩后的数组数据的数组元素类型编码;
将数组数据中每个数组元素的数据类型去除,只保留每个数组元素的字节数据;
所述第一数组数据的未压缩数据、数组类型编码、数据元素类型编码、元素个数和每个数组元素对应的字节数据的组合即为第二数组压缩数据;
所述第二数组压缩数据的字节总数和压缩前的第二数组数据字节总数的比值即为第二压缩率。
进一步地,所述第四数据压缩单元中的第三压缩算法将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合包括:
将第二数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
将第二数组数据中的元素个数保留;
将第二数组数据中数据类型和数据值相同的数组元素只保留一个;
所述第二数组数据的未压缩数据、数组类型编码、数组元素个数和数组元素值的组合即为压缩后的数据。
本发明技术方案提供的基于DL/T698.45协议的数据帧压缩方法和系统将采集的数据帧进行解析并分层,对每一层中的数据按照类型的不同采用不同的压缩算法进行压缩,其中,基础数据采用第一压缩算法,针对不同的数据类型压缩字节,对于数组元素无法压缩的第一数组数据,采用第二压缩算法,将数组元素的数据类型进行提取作为数组元素类型,对于数组元素相同可进行压缩的第二数组数据,通过定义压缩数组类型,只保留一组数组元素。所述基于DL/T698.45协议的数据帧压缩方法和系统的压缩算法简单,执行效率高,传输报文越长压缩效率越高,还具备通过通用压缩算法再次压缩的特性,有效解决了由于DL/T698.45协议自解析特点,导致数据帧编码过长,传输效率较低、传输易失败的问题,还保留了数据帧易解析特点,是一种高效无损压缩算法。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为根据本发明优选实施方式的基于DL/T698.45协议的数据帧压缩方法的流程图;
图2为根据本发明优选实施方式的基于DL/T698.45协议的数据帧压缩系统的结构示意图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为根据本发明优选实施方式的基于DL/T698.45协议的数据帧压缩方法的流程图。如图1所示,本优选实施方式所述的基于DL/T698.45协议的数据帧压缩方法100从步骤101开始。
在步骤101,采集DL/T698.45协议的数据帧,并对所述数据帧进行解析,所述解析后的数据有N层,其中,所述解析后的数据包括基础数据和数组数据,所述数组数据包括第一数组数据和第二数组数据,所述第一数组数据是每个数据元素中的数据类型相同,但数据值不同的数据,所述第二数组数据是每个数据元素中的数据类型和数据值都相同,N≥1;
在步骤102,将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据,其中,所述第一压缩算法是指将DL/T698.45协议中数据类型进行重新编码,并将所述数据类型对应的字节进行压缩,其中,n的初始值是1;
在步骤103,将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率;
在步骤104,将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率,其中,所述第二压缩算法是将第一数组数据中的数组元素的数据类型提出作为数组元素类型,其压缩后的格式为压缩数组类型,数据元素类型和所有数组元素的组合;
在步骤105,比较第一压缩率和第二压缩率,当第一压缩率大于第二压缩率,且第一数组压缩数据中存在第二数组数据时,将第一数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据;当第一压缩率大于第二压缩率,且第一数组压缩数据中不存在第二数组数据时,将第一数组压缩数据作为第二压缩数据,令n=n+1,其中,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合;
在步骤106,比较第一压缩率和第二压缩率,当第一压缩率不大于第二压缩率,且第二数组压缩数据中存在第二数组数据时,将第二数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据,当第一压缩率不大于第二压缩率,且第二数组压缩数据中不存在第二数组数据时,将第二数组压缩数据作为第二压缩数据,令n=n+1;
在步骤107,当n>N时,将所述第一压缩数据和第二压缩数据按照在数据帧中的顺序输出,所述输出结果即为采集的数据帧的压缩结果;当n≤N时,返回步骤102。
优选地,所述将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据包括:
将第n层数据中的基础数据对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第n层数据中的基础数据中数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一压缩数据。
优选地,所述将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率包括:
将第n层数据中的第一数组数据里的每个数组元素对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第一数组数据里的每个数组元素的数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述第一数组数据里的未压缩数据、压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一数组压缩数据;
所述第一数组压缩数据的字节总数和压缩前的第一数组数据字节总数的比值即为第一压缩率。
在本优选实施方式中,对于基础数据和第一数组数据中的大数据类型,可通过编码将其转换为小数据类型,例如传输数据类型为double-long-unsigned的4字节数据06 0000 00 01,实际值为1,则数据有效字节仅为01其中00 00 00为占位数据,那么可以将传输数据变为unsigned的1字节类型,需要定义一个新的数据类型unsgigned,表示压缩后的数据类型,其书写方式为A3 01;再例如:时间类型压缩,date_time_s,对于时间值范围在1970-1-1 00:00:00至2108-1-1 00:00:00之间的时间,可以定义一个新的数据类型timestamp,将其转为从1970-1-1 00:00:00到当前时间的总秒数,将7个字节压缩为4个字节。基本数据类型与压缩数据类型对应关系表1所示。
表1数据压缩编码规则表
优选地,所述将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率包括:
将第n层数据中的第一数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
提取第一数组数据中每个数组元素对应的数据类型编码作为压缩后的数组数据的数组元素类型编码;
将数组数据中每个数组元素的数据类型去除,只保留每个数组元素的字节数据;
所述第一数组数据的未压缩数据、数组类型编码、数据元素类型编码、元素个数和每个数组元素对应的字节数据的组合即为第二数组压缩数据;
所述第二数组压缩数据的字节总数和压缩前的第二数组数据字节总数的比值即为第二压缩率。
在本优选实施方式中,根据第一数组数据的数组元素数据类型相同,但数据值不同的特点,将数组元素中的数据类型提到数组定义中,因为所有数组元素数据类型均相同,具体的压缩方式如表2所示。
表2第一数组数据压缩示例表
优选地,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合包括:
将第二数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
将第二数组数据中的元素个数保留;
将第二数组数据中数据类型和数据值相同的数组元素只保留一个;
所述第二数组数据的未压缩数据、数组类型编码、数组元素个数和数组元素值的组合即为压缩后的数据。
在本优选实施方式中,根据第二数组数据的数组元素数据类型相同,数据值也相同的特点,将相同的数组元素进行压缩,使用一个数组元素替代重复值,具体的压缩方式如表3所示。
表3第二数组数据压缩示例表
本发明所述基于DL/T698.45协议的数据帧压缩方法的完整示例如下:压缩前:
压缩后:
上述压缩的过程如下:对采集的数据记录先进行解析数据,对基础数据中可压缩的数据类型date_time_s按照第一压缩算法进行压缩转换为4字节数据,对数组数据正向有功总及费率和反向有功总及费率,分别进行第一压缩算法和第二压缩算法的压缩,得到第一压缩率和第二压缩率,比较第一压缩率和第二压缩率,第一压缩率大于第二压缩率,因此选用第一数组压缩数据作为压缩结果,由于压缩后的第一数组压缩数据中存在第二数组数据,再对第二数组数据经过第三压缩算法压缩,由于所述实施例中解析后的数据只有一层,已无可压缩数据,故经过第三压缩算法得到的第二压缩数据即为最终得出的压缩数据。
在上述压缩中,压缩前数据帧长度为481字节,压缩后数据帧长度为204字节,压缩率为42%。
图2为根据本发明优选实施方式的基于DL/T698.45协议的数据帧压缩系统的结构示意图。如图2所示,本优选实施方式所述的基于DL/T698.45协议的数据帧压缩系统200包括:
数据采集单元201,其用于采集DL/T698.45协议的数据帧,并传输至数据解析单元;
数据解析单元202,其用于接收DL/T698.45协议的数据帧,并对所述数据帧进行解析,所述解析后的数据有N层,其中,所述解析后的数据包括基础数据和数组数据,所述数组数据包括第一数组数据和第二数组数据,所述第一数组数据是每个数据元素中的数据类型相同,但数据值不同的数据,所述第二数组数据是每个数据元素中的数据类型和数据值都相同,N≥1;
第一数据压缩单元203,其用于将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据,其中,所述第一压缩算法是指将DL/T698.45协议中数据类型进行重新编码,并将所述数据类型对应的字节进行压缩,其中,n的初始值是1;
第二数据压缩单元204,其用于将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率;
第三数据压缩单元205,其用于将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率,其中,所述第二压缩算法是将第一数组数据中的数组元素的数据类型提出作为数组元素类型,其压缩后的格式为压缩数组类型,数据元素类型和所有数组元素的组合;
第四数据压缩单元206,其用于比较第一压缩率和第二压缩率,当第一压缩率大于第二压缩率,且第一数组压缩数据中存在第二数组数据时,将第一数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据;当第一压缩率大于第二压缩率,且第一数组压缩数据中不存在第二数组数据时,将第一数组压缩数据作为第二压缩数据;当第一压缩率不大于第二压缩率,且第二数组压缩数据中存在第二数组数据时,将第二数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据,当第一压缩率不大于第二压缩率,且第二数组压缩数据中不存在第二数组数据时,将第二数组压缩数据作为第二压缩数据,令n=n+1,其中,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合;
结果输出单元207,其用于当n>N时,将所述第一压缩数据和第二压缩数据按照在数据帧中的顺序输出,所述输出结果即为采集的数据帧的压缩结果;当n≤N时,返回第一数据压缩单元。
优选地,所述第一数据压缩单元203将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据包括:
将第n层数据中的基础数据对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第n层数据中的基础数据中数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一压缩数据。
优选地,所述第二数据压缩单元204将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率包括:
将第n层数据中的第一数组数据里的每个数组元素对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第一数组数据里的每个数组元素的数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述第一数组数据里的未压缩数据、压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一数组压缩数据;
所述第一数组压缩数据的字节总数和压缩前的第一数组数据字节总数的比值即为第一压缩率。
优选地,所述第三数据压缩单元205将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率包括:
将第n层数据中的第一数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
提取第一数组数据中每个数组元素对应的数据类型编码作为压缩后的数组数据的数组元素类型编码;
将数组数据中每个数组元素的数据类型去除,只保留每个数组元素的字节数据;
所述第一数组数据的未压缩数据、数组类型编码、数据元素类型编码、元素个数和每个数组元素对应的字节数据的组合即为第二数组压缩数据;
所述第二数组压缩数据的字节总数和压缩前的第二数组数据字节总数的比值即为第二压缩率。
优选地,所述第四数据压缩单元206中的第三压缩算法将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合包括:
将第二数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
将第二数组数据中的元素个数保留;
将第二数组数据中数据类型和数据值相同的数组元素只保留一个;
所述第二数组数据的未压缩数据、数组类型编码、数组元素个数和数组元素值的组合即为压缩后的数据。
本发明所述基于DL/T698.45协议的数据帧压缩系统对基于DL/T698.45协议的数据帧进行压缩的方法与本发明所述基于DL/T698.45协议的数据帧压缩方法的步骤相同,并且达到的技术效果也相同,此处不再赘述。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于DL/T698.45协议的数据帧压缩方法,其特征在于,所述方法包括:
步骤1、采集DL/T698.45协议的数据帧,并对所述数据帧进行解析,所述解析后的数据有N层,其中,所述解析后的数据包括基础数据和数组数据,所述数组数据包括第一数组数据和第二数组数据,所述第一数组数据是每个数组元素中的数据类型相同,但数据值不同的数据,所述第二数组数据是每个数组元素中的数据类型和数据值都相同,N≥1;
步骤2、将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据,其中,所述第一压缩算法是指将DL/T698.45协议中数据类型进行重新编码,并将所述数据类型对应的字节进行压缩,其中,n的初始值是1;
步骤3、将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率;
步骤4、将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率,其中,所述第二压缩算法是将第一数组数据中的数组元素的数据类型提出作为数组元素类型,其压缩后的格式为压缩数组类型,数组元素类型和所有数组元素的组合;
步骤5、比较第一压缩率和第二压缩率,当第一压缩率大于第二压缩率,且第一数组压缩数据中存在第二数组数据时,将第一数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据;当第一压缩率大于第二压缩率,且第一数组压缩数据中不存在第二数组数据时,将第一数组压缩数据作为第二压缩数据,令n=n +1,其中,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合;
步骤6、比较第一压缩率和第二压缩率,当第一压缩率不大于第二压缩率,且第二数组压缩数据中存在第二数组数据时,将第二数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据;当第一压缩率不大于第二压缩率,且第二数组压缩数据中不存在第二数组数据时,将第二数组压缩数据作为第二压缩数据,令n=n+1;
步骤7、当n>N时,将所述第一压缩数据和第二压缩数据按照在数据帧中的顺序输出,所述输出结果即为采集的数据帧的压缩结果;当n≤N时,返回步骤2。
2.根据权利要求1所述的方法,其特征在于,所述将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据包括:
将第n层数据中的基础数据对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第n层数据中的基础数据中数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一压缩数据。
3.根据权利要求1所述的方法,其特征在于,所述将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率包括:
将第n层数据中的第一数组数据里的每个数组元素对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第一数组数据里的每个数组元素的数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述第一数组数据里的未压缩数据、压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一数组压缩数据;
所述第一数组压缩数据的字节总数和压缩前的第一数组数据字节总数的比值即为第一压缩率。
4.根据权利要求1所述的方法,其特征在于,所述将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率包括:
将第n层数据中的第一数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
提取第一数组数据中每个数组元素对应的数据类型编码作为压缩后的数组数据的数组元素类型编码;
将数组数据中每个数组元素的数据类型去除,只保留每个数组元素的字节数据;
所述第一数组数据的未压缩数据、数组类型编码、数据元素类型编码、元素个数和每个数组元素对应的字节数据的组合即为第二数组压缩数据;
所述第二数组压缩数据的字节总数和压缩前的第二数组数据字节总数的比值即为第二压缩率。
5.根据权利要求1所述的方法,其特征在于,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合包括:
将第二数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
将第二数组数据中的元素个数保留;
将第二数组数据中数据类型和数据值相同的数组元素只保留一个;
所述第二数组数据的未压缩数据、数组类型编码、数组元素个数和数组元素值的组合即为压缩后的数据。
6.一种基于DL/T698.45协议的数据帧压缩系统,其特征在于,所述系统包括:
数据采集单元,其用于采集DL/T698.45协议的数据帧,并传输至数据解析单元;
数据解析单元,其用于接收DL/T698.45协议的数据帧,并对所述数据帧进行解析,所述解析后的数据有N层,其中,所述解析后的数据包括基础数据和数组数据,所述数组数据包括第一数组数据和第二数组数据,所述第一数组数据是每个数组元素中的数据类型相同,但数据值不同的数据,所述第二数组数据是每个数组元素中的数据类型和数据值都相同,N≥1;
第一数据压缩单元,其用于将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据,其中,所述第一压缩算法是指将DL/T698.45协议中数据类型进行重新编码,并将所述数据类型对应的字节进行压缩,其中,n的初始值是1;
第二数据压缩单元,其用于将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率;
第三数据压缩单元,其用于将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率,其中,所述第二压缩算法是将第一数组数据中的数组元素的数据类型提出作为数组元素类型,其压缩后的格式为压缩数组类型,数组元素类型和所有数组元素的组合;
第四数据压缩单元,其用于比较第一压缩率和第二压缩率,当第一压缩率大于第二压缩率,且第一数组压缩数据中存在第二数组数据时,将第一数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据;当第一压缩率大于第二压缩率,且第一数组压缩数据中不存在第二数组数据时,将第一数组压缩数据作为第二压缩数据;当第一压缩率不大于第二压缩率,且第二数组压缩数据中存在第二数组数据时,将第二数组压缩数据按照第三压缩算法进行压缩,并将按照第三压缩算法生成的压缩数据作为第二压缩数据,当第一压缩率不大于第二压缩率,且第二数组压缩数据中不存在第二数组数据时,将第二数组压缩数据作为第二压缩数据,令n=n+1,其中,所述第三压缩算法是将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合;
结果输出单元,其用于当n>N时,将所述第一压缩数据和第二压缩数据按照在数据帧中的顺序输出,所述输出结果即为采集的数据帧的压缩结果;当n≤N时,返回第一数据压缩单元。
7.根据权利要求6所述的系统,其特征在于,所述第一数据压缩单元将第n层数据中的基础数据按照第一压缩算法进行压缩,生成第一压缩数据包括:
将第n层数据中的基础数据对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第n层数据中的基础数据中数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一压缩数据。
8.根据权利要求6所述的系统,其特征在于,所述第二数据压缩单元将第n层数据中的第一数组数据按照第一压缩算法进行压缩生成第一数组压缩数据,并确定第一压缩率包括:
将第n层数据中的第一数组数据里的每个数组元素对应的数据类型编码按照预先设置的数据类型压缩编码规则转换为压缩数据类型编码;
将第一数组数据里的每个数组元素的数据类型对应的字节数据按照预先设置的数据类型压缩关系压缩为压缩数据类型对应的字节数据;
所述第一数组数据里的未压缩数据、压缩数据类型编码和压缩数据类型对应的字节数据的组合即为第一数组压缩数据;
所述第一数组压缩数据的字节总数和压缩前的第一数组数据字节总数的比值即为第一压缩率。
9.根据权利要求6所述的系统,其特征在于,所述第三数据压缩单元将第n层数据中的第一数组数据按照第二压缩算法进行压缩,生成第二数组压缩数据,并确定第二压缩率包括:
将第n层数据中的第一数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
提取第一数组数据中每个数组元素对应的数据类型编码作为压缩后的数组数据的数组元素类型编码;
将数组数据中每个数组元素的数据类型去除,只保留每个数组元素的字节数据;
所述第一数组数据的未压缩数据、数组类型编码、数据元素类型编码、元素个数和每个数组元素对应的字节数据的组合即为第二数组压缩数据;
所述第二数组压缩数据的字节总数和压缩前的第二数组数据字节总数的比值即为第二压缩率。
10.根据权利要求6所述的系统,其特征在于,所述第四数据压缩单元中的第三压缩算法将第二数组数据中数据类型和数据值相同的数组元素压缩为一个,其压缩后的格式为压缩数据类型,元素个数和数组元素值的组合包括:
将第二数组数据对应的类型按照预先设置的数组类型压缩编码规则转换为数组类型编码;
将第二数组数据中的元素个数保留;
将第二数组数据中数据类型和数据值相同的数组元素只保留一个;
所述第二数组数据的未压缩数据、数组类型编码、数组元素个数和数组元素值的组合即为压缩后的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910779650.3A CN110535846B (zh) | 2019-08-22 | 2019-08-22 | 一种基于dl/t698.45协议的数据帧压缩方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910779650.3A CN110535846B (zh) | 2019-08-22 | 2019-08-22 | 一种基于dl/t698.45协议的数据帧压缩方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110535846A CN110535846A (zh) | 2019-12-03 |
CN110535846B true CN110535846B (zh) | 2022-03-04 |
Family
ID=68664028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910779650.3A Active CN110535846B (zh) | 2019-08-22 | 2019-08-22 | 一种基于dl/t698.45协议的数据帧压缩方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110535846B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143239B (zh) * | 2019-12-27 | 2021-08-13 | 南方电网电力科技股份有限公司 | 一种智能电表的冻结电量数据压缩存储方法和解压方法 |
CN113034884A (zh) * | 2020-12-28 | 2021-06-25 | 国家电网有限公司 | 基于hplc的电力数据采集方法 |
CN114024952B (zh) * | 2021-10-18 | 2023-10-03 | 国网黑龙江省电力有限公司供电服务中心 | 一种基于dl/t 698.45-2007协议的文件压缩传输方法 |
CN114885033A (zh) * | 2022-04-26 | 2022-08-09 | 青岛鼎信通讯股份有限公司 | 一种基于电力线通信协议的数据帧压缩方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101662466A (zh) * | 2009-09-18 | 2010-03-03 | 北京天碁科技有限公司 | 通信系统中协议数据的传输方法、通信设备及通信系统 |
CN104868922A (zh) * | 2014-02-24 | 2015-08-26 | 华为技术有限公司 | 数据压缩方法及装置 |
WO2017214765A1 (zh) * | 2016-06-12 | 2017-12-21 | 深圳大学 | 针对fastq数据的多线程快速存储无损压缩方法及其系统 |
CN107565971A (zh) * | 2017-09-07 | 2018-01-09 | 华为技术有限公司 | 一种数据压缩方法及装置 |
CN107888197A (zh) * | 2017-10-31 | 2018-04-06 | 华为技术有限公司 | 一种数据压缩方法和装置 |
CN109088851A (zh) * | 2018-06-22 | 2018-12-25 | 杭州海兴电力科技股份有限公司 | 用电信息采集的数据压缩方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6624761B2 (en) * | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
-
2019
- 2019-08-22 CN CN201910779650.3A patent/CN110535846B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101662466A (zh) * | 2009-09-18 | 2010-03-03 | 北京天碁科技有限公司 | 通信系统中协议数据的传输方法、通信设备及通信系统 |
CN104868922A (zh) * | 2014-02-24 | 2015-08-26 | 华为技术有限公司 | 数据压缩方法及装置 |
WO2017214765A1 (zh) * | 2016-06-12 | 2017-12-21 | 深圳大学 | 针对fastq数据的多线程快速存储无损压缩方法及其系统 |
CN107565971A (zh) * | 2017-09-07 | 2018-01-09 | 华为技术有限公司 | 一种数据压缩方法及装置 |
CN107888197A (zh) * | 2017-10-31 | 2018-04-06 | 华为技术有限公司 | 一种数据压缩方法和装置 |
CN109088851A (zh) * | 2018-06-22 | 2018-12-25 | 杭州海兴电力科技股份有限公司 | 用电信息采集的数据压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110535846A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535846B (zh) | 一种基于dl/t698.45协议的数据帧压缩方法和系统 | |
US6460044B1 (en) | Intelligent method for computer file compression | |
US7231587B2 (en) | Embedded picture PSNR/CRC data in compressed video bitstream | |
CN104868922A (zh) | 数据压缩方法及装置 | |
CN103457609A (zh) | 故障录波数据无损压缩、解压缩方法 | |
CN106911939A (zh) | 一种视频转码方法、装置及系统 | |
CN110995273B (zh) | 电力数据库的数据压缩方法、装置、设备及介质 | |
KR20150074703A (ko) | 부동소수점 방식을 이용한 데이터 압축/복원 방법 및 장치 | |
CN103106901B (zh) | 一种基于索引值的压缩域音频数字隐写及提取方法 | |
CN100536587C (zh) | 重传语音编码数据的方法 | |
CN1584875B (zh) | 批量计算机文件的遍历性压缩和解压缩方法 | |
JP2003524983A (ja) | 複数コーダを用いる最適化ロスレス圧縮のための方法及び装置 | |
CN111405294A (zh) | 一种图像栅格数据的存储及传输方法 | |
WO2020258942A1 (zh) | 一种数据压缩方法及装置 | |
US10211851B2 (en) | Method and system for compressing data from smart meter | |
US20230368800A1 (en) | Audio encoding method and apparatus, and audio decoding method and apparatus | |
CN107038208B (zh) | 解析和还原tns协议314版本中sql命令和参数的方法 | |
CN112153388A (zh) | 一种图像压缩方法、装置及相关设备 | |
CN114885033A (zh) | 一种基于电力线通信协议的数据帧压缩方法 | |
CN114024952A (zh) | 一种基于dl/t 698.45-2007协议的文件压缩传输方法 | |
CN113986820A (zh) | 一种lz4格式文件转换为gzip格式文件的方法 | |
CN109981548B (zh) | 一种计费消息的解析方法及装置 | |
CN108989813A (zh) | 一种高效率压缩/解压缩方法、计算机装置和存储介质 | |
CN110880992A (zh) | 网络遥测telemetry协议数据的采集方法及装置 | |
CN100547934C (zh) | 编码压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |