王亚坤,曾德良,黄啸彬
(华北电力大学控制与计算机工程学院,河北保定071003)
实时数据库平台是实现电厂管控一体化的桥梁,是厂级监控信息系统 (SIS)的核心部分,是电力企业信息化建设的关键环节。实时数据库在SIS系统中起着非常重要的作用,是SIS系统存贮数据的基础。实时数据库是一种特殊类型的数据库系统,但有许多与关系型数据库存在差异,核心就是对大量的实时信息进行处理,由于成年累月的数据将占据大量的硬盘空间。一个新建300 MW的火电厂的SIS系统,需要处理的测点数超过了10 000点,这些测点的变化周期通常在1 s之内,也就是说,需要将超过10 000点的数据在1 s之内保存到数据库中。例如系统每1 s存储1次,每次单点占用8个字节,那么保存10年的数据量将有10 000×8×10×365×86 400=25 228 800 000 000字节,也就是 23TGB,若用1TGB的硬盘存放,需要存放23块硬盘。所以数据压缩尤为必要。实时数据的数据变化具有一定波形规律:工业实时数据中,只有一小部分测点的值经常发生改变,工业实时数据中很多测点的数值都具有慢变化的特征,数值变化与时间变化具有共同变化特性,用户在一定范围内,能够允许数据的精度损失。在工业应用领域中,常用的压缩算法分为3类:无损压缩、有损压缩、二级压缩,其中无损压缩中常用的是例外报告技术。然而例外报告中的死区设置比较困难,总是凭借经验来手动设定压缩死区,不具有科学依据。本文主要就此问题进行了研究,并且以某个温度信号为例,通过大量的数据分析,找出数据的动态特点,给出压缩设置的准则。
康派是北京华电天仁公司开发的SIS软件,目前在数个电厂里得到了应用。本文取一个典型信号进行了研究。在康派SIS系统组态画面里找出一个典型温度信号,即省煤器蒸汽温度,数据库点名是ZSDC2.U3DAPUSH.DA001318(eDNA 数据库点名字)。图1是原始数据的曲线图,时间段是20081001 00T00:00~20081201T00:00:00,总共2个月的时间,数据个数是85 248个,温度范围基本在240~280℃。
图1 原始数据曲线图Fig.1 Curve of original data
例外报告是用来提供当前值的,它和采集数据的控制系统相关联。所有的控制系统和仪器都会产生“无用数据”。
例外报告的目的,就是将控制系统中的“无用数据”过滤掉,而只引进有意义的过程数据值。例外偏移量、最小时间限定和最大时间限定都是可调整的参数,需要客户方的过程工程和控制、仪器工程人员凭借知识和经验来设定每个Ta测点适当的盲区宽度。最小时间限定,消除了由一个快速振荡的测点所产生的大量的例外报告,而最大时间限定,则用于网络本身证明传输节点还处于活动状态,而并没有掉线所用。例外偏移量以上一个值为基准定义上下波动的一个死区,超出死区的数值才通过压缩测试,通过后进行存储并且作为下一个值的基准。下面给出了例外报告的部分代码(VC++):
/////////////////例外报告处理
if(fabs(temp_timestart-StringToUTCTime((const char*)szTime)) else{if(fabs(temp_timestart-StringToUTCTime((const char*)szTime))>reportdlg.Get_ExcMax) { null_fill(szTime,sizeof(szTime)); null_fill(szStatus,sizeof(szStatus)); strMessage.Format("%f,%s,%s,%d",dValue,szTime,szStatus,count_data); m_lbResult_process.AddString(strMessage); temp=dValue; temp_timestart=StringToUTCTime((constchar*) szTime);} else{ if(fabs(temp-dValue)>reportdlg.Get_ ExcDev){ null_fill(szTime,sizeof(szTime)); null_fill(szStatus,sizeof(szStatus)); strMessage.Format("%f,%s,%s,%d",dValue,szTime,szStatus,count_data); m_lbResult_process.AddString(strMessage); temp=dValue; temp_timestart=StringToUTCTime((constchar*) szTime);} else{}}}/////////////////例外报告处理 图2 例外报告原理示意图Fig.2 Interface of data analysis software 在此根据数据库给出的DLL,编写相关软件,程序由VC++6.0实现。完成从数据库取数据,并且在线完成数据分析。所有数据均来自于山西漳山电厂。 软件完成了从 eDNA数据库里将原始数据取出,并且通过例外报告技术进行处理,完成后对结果进行统计分析。把漳山电厂2个月的数据分成3种时间段进行分析,从10月1日到10月11日总共10 d进行分析,分别设立相应的压缩死区,得出数据分析表,共15个。同样的从10月1日~11月1日30 d的数据进行分析,从10月1日~12月1日进行数据分析,各自得出15个表。表1是分析10 d数据时死区为0.01的测试结果。 表 2是压缩死区设置为 0.01(30 d)和 0.5(60 d)时的测试结果。通过编写的软件分别设置不同的压缩死区,根据实际电厂运行数据,得出不同压缩死区情况下相应的压缩率是多少。将45个汇总表格中的死区设置和压缩率进行单独汇总。汇总成数据结果分析表,如表3所示。 表1 例外报告压缩死区(10 d)Tab.1 Deadzoneofexceptionreportcompression(10d) 表2 例外报告压缩死区(30 d)Tab.2 Deadzoneofexceptionreportcompression(30d) 表3 数据结果分析汇总表Tab.3 Data analysis summary 由表2里的数据信息,以压缩死区为横轴,压缩率为纵轴,得到10 d,30 d,60 d 3种时间情况下的死区—压缩率曲线图(如图 3)。分别以 3种不同颜色代表3种时间情况下的统计结果。 图3 死区—压缩率曲线Fig.3 Dead zone-compression ratio curve 图中曲线表明,在60 d的运行数据中,3种时间间隔下的统计结果基本上是一致的,没有较大的差异。压缩死区的设立,效果最好的都体现在了0.01~0.5℃之间,压缩率从5%~80%左右的区间里,这时候的温度差比起85 248个电厂原始数据的平均值251.529 177℃共最大不超过4℃,数据基本能满足电厂日常维护、研究等应用。根据实际需要,通过死区—压缩率曲线图,设置相应的压缩死区。而按照经验性的设置为数据点值的1%~1.5%不合适,因为1%也是有2.5℃的,然而按照研究的曲线表面在0.01~0.5℃范围内即取得了较好的压缩效果。 现代新电厂规模越来越大,控制也越复杂,测点也在迅速增加,数据特性的研究显得尤为必要。结合数据本身的特点,设置合适的压缩死区,解决数据的压缩精度和存储数据量的平衡问题是本文研究的核心。介绍了一种电厂信号的分析过程测试结果及其结果的分析。电厂的数据种类繁多,温度、压力、流量、阀门开度等,各种信号本身有着不同的数据特性,即使是温度信号也拥有包括高温信号、低温信号、快变信号和慢变信号,其各自的数据特性也有较大差异。今后对火电厂信号进行分类研究,找出不同信号的数据特性,为压缩死区的设置提供一个科学的依据。 [1]孙皓.VisualC++范例大全[M].北京:机械工业出版社,2003.SunHao.VisualC++examples of Collection[M].Beijing:Mechanical Industry Press,2003. [2]刘锐宁,宋坤.VisualC++开发典型模块大全[M].北京:人民邮电出版社,2004.LiuRuining,SongKun.VisualC++developmentofatypical modulecollection[M].Beijing:People's Posts&Telecom Press,2004. [3]侯其锋,李晓华.VisualC++数据库通用模板开发与系统移植[M].北京:清华大学出版社,2002.Hou Qifeng,LiXiaohua.Visual C++generictemplatedatabase development and system migration[M].Beijing:Tsinghua University Press,2002. [4]吴乐南.数据压缩[M].北京:电子工业出版社,1995.Wu Yuenan.Data compression[M].Beijing:Electronic Industry Press,1995. [5]吴今培,孙德山.现代数据分析[M].北京:机械工业出版社,2002.Wu Jinpei,Sun Deshan.Modern data analysis[M].Beijing:Mechanical Industry Press,2002. [6]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.Sun Xin,Yu Anping.The introduction of VC++in-depth Details[M].Beijing:Electronic Industry Press,2006. [7]尹成群,李丽,吕安强,等.基于混沌和SVK-DWT的数字图像水印算法[J].电力科学与工程,2008,24(4):54-58.Yin Chengqun,Li Li,Lv Anqiang,et al.SVK-DWT Based onchaos anddigitalimage watermarking algorithm[J].Electric Power Science and Engineering,2008,24 (4):54-58. [8]陈鑫铎.实时历史数据库的压缩与实现[J].电子科技大学学报,2007,24(4):54-58.Chen Xinduo.Real-time compression and the realization of historicaldatabases[J].Electronic Scienceand Technology University,2007,24(4):54-58. [9]汤同奎.SDT算法及其在过程数据压缩中的应用[J].上海交通大学学报,2006,2(3):47-49.Tang Tongkui.SDTalgorithmand itsapplication in the processofdata compression[J].ShanghaiJiaotong University,2006,2(3):47-49. [10]李晶皎,朱志良,王爱侠.模式识别[M].北京:电子工业出版社,2004.LiJingjiao,ZhuZhiliang,WangAixia.Patternrecognition[M].Beijing:Electronic Industry Press,2004.2.2 编写软件实现取数据统计分析处理
2.3 绘制表格进行结果分析
3 结语