APP下载

核电站DCS系统历史数据压缩算法的研究

2013-04-29龙海军姚光霖

科技资讯 2013年8期
关键词:旋转门压缩算法历史数据

龙海军 姚光霖

摘 要:本文通过对有损压缩和无损压缩的分析,给出一种二次数据压缩方法,统一有损压缩和无损压缩的应用,对历史库的数据进行压缩。试验表明,此方法到达了数据压缩的目的,又完整地保留了逻辑压缩后的数据信息。

关键词:核电站DCS Historian数据压缩 模拟量数据压缩 改进旋转门数据压缩

中图分类号:TM862 文献标识码:A 文章编号:1672-3791(2013)03(b)-0029-02

1 研究背景

核电DCS控制系统中的历史数据库需要具备较高实时性、海量数据吞吐量的特点,因此在长时间系统运行的前提下,会产生巨大的历史数据量,如果将这些数据直接存储,不仅会浪费很多的存储空间,而且还会使得数据查询、传输变得复杂而困难。因此,将数据压缩技术引入到DCS系统的历史数据处理中,可以达到节省存储空间、增加库容量和提升系统运行效率等优势。

2 数据压缩技术简介

历史数据库的数据压缩是传统数据压缩技术在DCS工控领域的特殊应用,一般数据压缩算法可以分为无损压缩和有损压缩两种技术。

有损压缩技术是根据特定的应用领域而发展起来的,它的基本原理是在数据压缩过程中损失一定的信息以获得较高的压缩比,并且压缩过程不可逆,压缩后的数据不能完全地恢复到原始状态,因此需要保证损失的数据对于理解原始数据信息特点的影响不大。具体到工控行业使用较多的压缩算法包括:Hale和Sellars共同提出的矩形波串法(Box Car)和后向斜率发(Back ward Slope),以及在工控领域应用最为广泛的OSIsoft公司提出的“旋转门数据压缩算法(Swing Door)”[1,2]。

无损压缩技术是利用数据的统计冗余进行压缩,可完全回复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为2∶1~5∶1。这类方法广泛用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩。无论是无损压缩还是有损压缩,都在工控领域的历史数据处理中得到了应用,例如美国的Instep公司开发的实时历史数据库系统eDNA就实现了以Huffman为基本的无损数据压缩程序,它首先对数据集合进行统计分析,将数据添加到Huffman树中进行编码,最后保存生成编码,完成对数据群的压缩;而OSIsoft公司的PI实时历史数据库产品采用了“旋转门数据压缩算法”以及独到的二次过滤技术。

本论文所阐述的历史数据(Historian)压缩模块,我们综合了两种压缩算法的优劣,设计了一套“二次数据压缩”机制,统一无损压缩和有损压缩算法应用,对历史库模拟量数据的压缩。下面我们就具体来看些历史数据(Historian)压缩算法的设计。

3 历史数据(Historian)压缩模块的设计

历史数据(Historian)支持的数据类型包括开关量数据和模拟量数据。由于不同的数据类型所表现的数据特点的不同,需要设计针对性的压缩策略来满足各种数据的压缩要求。

3.1 开关量数据压缩

开关量数据采用“变化压缩算法”,算法基本的设计思路是:当测点的数值发生变化时才会保存,否则丢弃当前数据。这是因为开关量测点的状态一般由特定的0或1来表示,在DCS生产现场,有很多开关量测点的状态在特定甚至是很长的时间内是不会发生变化的,所以“变化压缩算法”非常适合对历史库开关量数据的压缩处理。

如图1所示,设置某开关量测点每1秒进行一个数据值采集,以时刻点t为基准的后8s里,其测点值分别为0、0、0、1、1、0、0、1。根据“变化压缩算法”的计算,剔除其在2 s、3 s、5 s和7 s的数据,只保存1 s、4 s、6 s和8 s的数据值。而当进行数据还原时,空缺时刻的数据值取前一保存时刻的数据,例如,2 s和3 s的数值均等于1 s数值0。这样即完整的保存了测点在时间轴上的数据特征,又起到了节省存储空间的目的。

3.2 模拟量数据压缩

在DCS系统中的模拟量测点数据一般都会遵循一定的渐变规律,例如有的时间段会呈现较为一致的线性变化,有的时间段的数据特征为一条抛物线等。这些数据特征就给定了我们做历史数据逻辑压缩的前提。

在历史数据(Historian)系统中,我们采用双重的历史数据压缩机制,即“二次数据压缩”,实现流行的“旋转门”压缩算法为第一层逻辑压缩,实现无损的Huffman压缩算法为第二层物理压缩。首先来讨论下传统的“旋转门”压缩算法的内容。

3.2.1 传统的“旋转门”压缩算法

如图2所示,基本的“旋转门压缩算法”是这样描述的:在进行数据压缩时,算法将新的实时数据点和前一个被保留的数据点之间做一个平行四边形的偏移覆盖区,如果这一平行四边形可以覆盖保留数据点之后出现的所有数据点时,那么将不会保存新的实时数据点。反之如果有任何一个数据点落在压缩偏移覆盖区外,则新数据点的前一个点将被保留,同时整个压缩偏移覆盖区将被重置,以新的被保留点作为新的起点,进入下一轮的旋转门判断[3]。

传统的“旋转门”压缩算法虽然可以较好的完成对实时历史数据的压缩,但是在算法的实现和执行过程中会出现一些问题,主要体现在以下两点。

(1)算法实现时需要一个临时缓冲区来存储待判定点集,但是在代码实现时,这一缓冲区的大小缺失无法事先确定的。

(2)如果待判定点过多,缓冲区里的数据点数过大,那么在进行覆盖区判定时会耗去系统过多的业务执行时间,造成系统运行的瓶颈。

因此,在以上算法的基础上,我们采用了改进的“旋转门”压缩算法,即“斜率比较旋转门”算法[4,5]。

3.2.2 改进的“斜率比较旋转门”压缩算法

如图3所示,当新点a到来时,系统会比较a与原点o(即上已存储的点)的时间差t_time,如果t_time不小于压缩间隔上限nic_compinterval或者a点质量戳与o点不同,则直接保存lastpoint点,进入下一轮旋转门算法运算;否则以点a和o以及设定好的nic_comprate构建平行四边形Ω,计算最大斜率点maxkpoint和最小斜率点minkpoint是否均在Ω内,计算结果有两种。

(1)都落在了Ω内部,则说明a点通过了旋转门,成为最新的lastpoint,最后再分别比较a点斜率与最大、最小斜率的关系,大于最大斜率值或者小于最小斜率值则替换掉相应的斜率点和斜率值,进入下一轮旋转门算法运算。

(2)如果有一个斜率点落在了Ω外部,则说明a点没有通过旋转门,那么就保存此时的lastpoint,并将lastpoint点设定为下一轮旋转门算法的o点,a点设定为最大和最小斜率点,进入下一轮旋转门算法运算。

改进的“旋转门”算法的具体流程图如图4所示。

以上介绍的“旋转门”压缩算法是系统第一次对历史数据的逻辑压缩,当经过逻辑压缩后的保留数据积累到一定的数量时,例如1k,再对其进行第二次的物理压缩。物理压缩采用的是Huffman无损压缩算法,它的基本原理是,构建一个用于字符编码的Huffman二叉树,根据待压缩数据二进制子串出现的频率对其进行排列,出现频率大的串使用较少的位表示,较小的串使用较多的编码来表示,这样既到达了数据压缩的目的,又完整地保留了逻辑压缩后的数据信息。

4 结语

通过对无损压缩算法和有损压缩算法的对比分析研究,我们充分利用了两种算法的优点,设计了“二层压缩”算法,同时将“二次压缩”算法应用于历史数据(Historian)压缩模块的设计和实现中,形成了一种较为先进的技术实现手段,在工程应用中取得了良好的效果。

参考文献

[1] 高宁波,金宏,王宏安.历史数据实时压缩方法研究[J].计算机功能与应用,2004,28:167-171.

[2] Bristol,E.H.Swing Door Trending: Adaptive Trend Recording,ISA National Conference Proceedings,1990:749-753.

[3] 蒋鹏,黄清波,王智,等.一种新的化工过程历史数据压缩方法研究[J].浙江大学学报,2005,39(6):814-818.

[4] 徐慧.实时数据库中数据压缩算法的研究[D].杭州:浙江大学,2006.

[5] 冯磊,李俊,夏雨人.计算机控制系统中历史数据存储与查询的一种方法[J].计算机工程,2003,29(3):108-110.

[6] 黄静.LZW压缩算法VC实现、改进及其应用研究[D].长沙:中南大学,2007.李湘.分布式实时数据库及数据压缩算法研究[D].北京:北京科技大.

猜你喜欢

旋转门压缩算法历史数据
安全通过旋转门
基于设备PF性能曲线和设备历史数据实现CBM的一个应用模型探讨
基于故障历史数据和BP神经网络的接地选线方案研究
基于参数识别的轨道电路监测数据压缩算法研究
迷宫
基于Hadoop技术实现银行历史数据线上化研究
用好细节材料 提高课堂实效
更正声明
PMU数据预处理及压缩算法
旋转门真有趣