嵌入式系统下电网录波数据的压缩解压算法

2020-02-07 13:03张浩孙成富张志鹏郇小城
物联网技术 2020年1期

张浩 孙成富 张志鹏 郇小城

摘 要:随着电网录波数据的应用越来越广泛,电网录波数据的数据量日益增加,这对基于嵌入式平台的电网录波数据保存和传输提出了更高的要求。为了缓解硬件的资源压力,节省新设备投资成本,需要对COMTRADE文件格式的电网录波数据进行无损压缩。针对COMTRADE文件格式的特点,提出了用游程编码压缩数字量通道,以及基于BWT变换预处理的miniLZO压缩算法压缩模拟量通道。试验表明,此算法通道压缩效果良好,能获得理想的压缩率。

关键词:COMTRADE;无损压缩;游程编码;BWT变换;miniLZO压缩算法;录波数据

中图分类号:TP393文献标识码:A文章编号:2095-1302(2020)01-00-03

0 引 言

電网录波数据可以提供丰富的电力信息,现代电力系统的稳定离不开对暂态数据的监控、记录和分析。但是在某些领域,如油田、大型石化企业等,由于现场环境的限制,直接使用PC对电力数据进行快速的采集并且对大量数据进行传输是不容易实现的,所以大多采用嵌入式系统来满足需求,然而嵌入式系统资源相对较小,如何提升保存、传输电网录波数据的能力,这就对录波数据的压缩提出了要求[1]。

1 COMTRADE文件格式

COMTRADE是IEEE于1991年提出,并在1999年进行修订完善的一种标准电力系统暂态数据交换通用格式。该标准为电力系统或电力系统模型采集到的暂态波形和故障数据的文件定义了一种格式[2]。

IEEE COMTRADE规定和记录信息有关的文件有4个:头标文件(.HDR)、配置文件(.CFG)、数据文件(.DAT)以及可选的信息文件(.INF)。其中对于故障数据分析和处理而言最重要的是配置文件和数据文件,其他文件是非必需的[3]。对于COMTRADE文件压缩和解压来说,除了数据文件外,其他文件都可视为纯文本文件来进行处理,所以在下面的压缩解压算法中,主要针对数据文件[4]。

1.1 配置文件

配置文件是用于说明数据文件(.DAT)的一种文本文件,它有着固定的具体格式,通过读取配置文件中的相关参数,就可以正确打开数据文件。配置文件按行顺序主要有如下信息:场站名、记录装置的特征、使用标准的年份;模拟量通道总数、数字量通道总数;模拟量通道的索引号、名称、单位、通道倍率、偏移地址、转换因子等信息;数字量通道的索引号,名称等信息;采样线路的线路频率;采样速率数;采样的速率以及该采样速率下的采样数;第一个数值的日期和时间;触发点的日期和时间;规定文件类型(是文本文件还是二进制文件);时间差域的倍率因子。

1.2 数据文件

数据文件包含记录中每个采样所有输入通道的值[5]。数据文件中数据主要由四部分组成:第一组列数据为采样的序号;第二组列为采样数据的时间标记;第三组列数据为模拟量通道的采样信息值;第四组列数据为数字量通道的采样信息值。具体格式例子见表1所列。

2 数据文件压缩解压

由表1可知,数据文件分为四部分:采样序号、时间标记、模拟量通道数据、数字量通道数据。采样序号在压缩时是可以忽略的。由于本文考虑的是在嵌入式系统前提下对电网录波数据进行压缩,所以压缩方法必须要有占用资源少,速度快且易于处理的特点,下面就在此基础上分别讨论其他三个部分的压缩。

2.1 采样数据时间标记

采样时间是固定间隔的,这个时间的间隔是由采样的频率决定的,而在配置文件中采样的速率已经给出,因此要压缩这个数据的话,只要保留第一个数据就可以了。在解压时,因为第一个时间标记数据是已知的,另外采样率个数、实际采样频率、时间标记乘数这三种信息都是可以从配置文件中得到,所以在解压时可以进行无损恢复。

式中:ts为间隔时间;f为实际采样频率;ta为时间标记乘数;tn为第n个采样数的相对记录时间;t1为第一个采样时间。

2.2 数字量通道数据压缩

通过表1可以看到,数字量通道变化只有1或者0,数字量通道只有两种变化且数字量通道数据记录的开关等信息很少发生变化,但是数字量通道数量在故障录波数据中依然占据很大。面对数字量通道数据的这种特性,采用游程编码RLE(Run Length Encoding)就可以达到很好的压缩效果[6]。例如对表1中数字量通道的值000111,用正数表示1,用负数表示表示0,游程长度表示连续的相同字符,那么000111既可以压缩为(-3,+3),当数字量通道占比非常大时,能很好地提高压缩率,且可以保证压缩解压缩速度,并且占用资源很少,非常适合嵌入式系统使用。

2.3 模拟量通道数据压缩

2.3.1 LZO压缩算法原理

LZO是Lempel-Ziv-Oberhumer的缩写,该算法是无损压缩算法,它的轻量化版本miniLZO具有压缩解压速度快,占用内存小的特点[7],它压缩只需要64 Kb的内存,另外还有一个只需要8 Kb内存的压缩级别,解压不需要内存。miniLZO算法速度快,占用RAM小的这些特点非常适合在嵌入式系统中使用。经实际测试,在LPC1788单片机中miniLZO依然可以顺利运行。

miniLZO是一种字典压缩算法,它的算法基本思想来源于LZ77算法(由Lempel和Ziv于1977年提出的一种字典压缩算法)。miniLZO的核心思想是在压缩的进程中将已处理过的字符作为字典,不断将还未处理的数据与字典进行比对,看是否在字典中出现过,若出现过,就记重复的长度还有偏移的距离,并用这两组数据来代替重复的数据;如果没有出现过,则作为全新的字符输出[8]。例如123456123456789这样一串数字,在miniLZO算法处理时,当逐个处理,处理完123456没有发现重复的部分,在继续处理到123456789中的123456部分时,发现这是重复出现的,就可以将这里的123456压缩为重复长度6,偏移距离6,用(6,6)代替123456,而下面的789没有重复,则作为全新的字符输出,整串数字123456123456789压缩为123456(6,6)789。

miniLZO优于LZ77的地方是它使用了哈希表来记录字典数据,即通过哈希表来判断字符是否重复和待处理的字符与索引的关系。采用哈希表的方法,只需要扫描一遍数据就能完成整个压缩过程,这极大地减少了搜索重复字符的时间,由此极大地提高了压缩速度[9]。miniLZO压缩流程如图1所示。

但是miniLZO算法有其局限性,当要压缩的数据关联性不大时,它的压缩率会降低。在模拟量通道中的数据,有时数据之间的联系性会较低,这就需要对miniLZO算法进行进一步的改进。

2.3.2 BWT變换预处理

BWT变换本身不会对数据进行压缩,它主要的工作是将原数据转换为相同字符位置连续或者相邻的一种变换方法,在经过BWT变换后,再采用一些数据压缩算法就可以取得更好的压缩率[10]。

(1)BWT编码

现有一个长度N=7的字符串“HJHHJM$”(其中$作为标识符,不在字符串中,并且定义$小于字符串中的任意字符),先将其不断平移N次,得到一个初始矩阵A,将矩阵A按照字典排序,由小到大排列得到一个新的变换矩阵B。记录变换矩阵B的最后一列,作为L列,第一列作为F列。因为F列可由L列推得,所以只需要保存L列即可。表2为字符串的转换过程和A,B矩阵关系。

(2)BWT解码

因为变换矩阵B每一行第一个字符都是最后一个字符的下一个字符,所以同一行中F列中的字符都是L列的下一个字符,L列是F列的前一个字符。因此在已知L列的情况下,就可以推出F列。假设F,L列的转换关系是LF,i为字符在L中的位置,j是字符在F中的位置,满足转换关系LF(j)=i。转换关系见表3所列。

已知L列和LF={6,4,0,1,2,3,5}这一转换关系,就可以还原出初始的字符串。

BWT变换虽然不能压缩模拟量通道中的数据,但是可以让相同字符集中到一起,增加了聚合度,miniLZO算法对于有较强关联性的数据有着更好的压缩效果,能获得更好的压缩率。

改进的算法如图2所示。

3 实验仿真

功能测试在Windows 10环境下,开发软件为VS 2010,CPU为Intel core i5-8500 3.00 GHz,内存大小8 GB,嵌入式环境采用LPC17887处理器,主频120 MHz,96 KB的片上SRAM。嵌入式环境平台如图3所示。

选择8个电厂、电站电网录波数据文件进行压缩测试,各文件压缩结果见表4所列。

4 结 语

文件1到文件5中的电网录波数据文件都包含了较多的数字量通道,文件的聚合度非常好,能达到23%左右的压缩效果。文件6到文件9中的电网录波数据文件不包含数字量通道数据,在嵌入式系统要求占用内存小的条件下也有46%左右的压缩率。测试结果表明,该算法在电网录波数据文件的压缩中具有一定的实际工程价值。

参 考 文 献

[1]徐欣锋.一种适应大数据量遥感图像的星上实时压缩方法[D].长春:中国科学院研究生院 (长春光学精密机械与物理研究所),2006.

[2]陈永艳,束洪春,董俊,等.基于Lustre文件系统的海量暂存COMTRADE 数据分布存储模式[J].电力系统自动化,2015(18):75-80.

[3]丁建光.智能电网海量信息处理关键问题的研究[D].上海:上海交通大学,2014.

[4]谢红福.基于实时监测与分析平台的故障信息系统的研究[D].合肥:安徽大学,2006.

[5]王玲.计算机仿真技术在继电保护开发中的应用研究[D].济南:山东大学,2009.

[6]籍俊伟,林小竹.图像编码中的RLE方法研究[J].石油化工高等学校学报,2004(1):83-87.

[7]李玉爽,刘东明,朱爱玲.基于LZO算法的嵌入式高速无线数据采集系统[J].电子测量技术,2011,34(7):67-70.

[8]何丹,李志蜀.一种基于LZSS的文本文件压缩算法[J].计算机应用,2008(9):2335-2337.

[9]王松.面向快速解压应用的无损压缩算法研究与实现[D].成都:电子科技大学,2017.

[10]倪桂强,李彬,罗健欣,等.BWT与经典压缩算法研究[J].计算机与数字工程,2010,38(11):26-29.