故障录波数据分析系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
故障录波数据分析系统的设计与实现
沈会斌
(北京中恒博瑞数字电力科技有限公司,北京)
摘要:本文阐述了故障录波数据分析系统的设计和实现方法。
通过分析电力系统录波数据特征,以面向对象的方法对录波数据进行抽象归类,提出了开发录波数据分析系统的具体内核设计框架,并借助Borland C++Builder予以实现,实现后的软件系统已成功应用在DR6000系统中。
关键词:录波数据分析;面向对象设计;C++标准模板库STL;C++类设计;继承与多态;软件分层。
1.引言
在现代电力系统中,故障录波器正得到越来越广泛的应用。
故障录波器监视电力系统运行状况,录波数据和波形图为现场技术工作人员正确地分析事故原因、研究反事故对策、处理事故、评价继电保护功能和装置运行状况提供了正确可靠的依据。
同时,根据录波数据还可分析系统的故障参数、谐波含量、各种电气量的变化规律、故障点定位及系统元件参数测量。
故障录波系统对保证电力系统安全可靠运行起着十分显著的作用,它已成为电力系统自动化控制与管理的重要组成部分。
我公司自主研发的录波器,经历过几代的发展,已经从最初的单片机发展成为高性能的DSP处理平台,在这个过程中,故障录波数据分析一直是非常重要的环节,因此,有必要设计出性能稳定,兼容性强且界面人性化的一种比较通用的故障录波数据分析系统。
本文研究的主题是故障录波数据分析系统的具体实现方法:从抽象对象的属性而构造出合适的数据层次和相关的支持类入手,采用面向对象的程序设计方法,充分应用Borland C++ Builder提供的所见即所得的开发方式,设计一个运行稳定、重用维护灵活和易于群组开发的通用分析软件系统。
2.系统设计
2.1功能需求
故障录波数据分析系统用来对故障录波设备记录的数据进行离线分析。
软件采用的记录数据文件为标准Comtrade格式,因此对所有的标准数据文件均可利用该分析系统进行综合分析。
其基本功能需求简述如下:
1.具备强大的数据分析解析功能,兼容符合Comtrade文件格式的所有录波器
厂家的数据文件。
2.需要有方便灵活的录波处理能力。
3.能显示标准Comtrade文件的模拟波形、开关量波形、谐波波形、频率波形。
4.可以有针对性有选择的显示相关通道的波形。
5.为了方便用户分析波形,需要同轴重叠显示和分轴并列显示两种方式,并且
可以任意在横向和纵向缩放波形,。
6.为了解决数值差别较大的问题,各通道波形可以纵向独立缩放。
7.可与波形同步列表显示模拟量的当前有效值、采样值、相位值以及最大值和
最小值。
8.可显示谐波波形的当前值、谐波含量、幅值和幅角,并可选择显示谐波次数
和显示颜色。
9.具备完善的分析功能,如矢量计算、单端测距、差流计算、功率计算和序分
量计算等,可以帮助用户迅速确定故障,以及分析电网运行情况。
10.具备打印功能,以方便打印波形图和故障报表。
11.具备故障数据分类查询功能,可以让用户方便快捷的从大量数据文件中找到
自己需要的数据。
2.2系统结构
本系统包括波形分析、波形操作、数据分析和打印功能4个主要模块。
每个模块都包括数个子模块,用于实现单个的功能点。
系统的模块结构如图示:
2.3设计原则
1.标准C++模板库STL
2.Borland C++ Builder
3.充分应用C++C++
初设计的CWaveDraw基类也被成功的应用到本公司的稳态数据分析软件及实时数据分析模块,具备了很好的代码移植的特性。
保证了本公司故障录波器的各相关软件界面的和谐统一。
极大的缩短了软件的开发时间。
4.应用软件分层技术,不仅可以明确和突出各组成部分的功能和拓扑关系,而
2.4数据抽象
在软件开发中,针对具体数据的抽象化是其中非常重要的环节。
在本文所研究的录波数据分析系统中,根据电力系统故障录波数据特征,比较关键的数据抽象有以下几个方面:
1.模拟量通道的波形数据抽象(WAVE):主要用于描述绘制模拟量的波形
时的相关属性。
在此数据抽象中,根据C++类的设计理念,同时赋予了外
界对它进行控制的一些方法和属性,以便方便的对此数据抽象进行定义
或者操作。
由于使用了STL,所以可以自由的往里面添加采样数据值,数
据序列的内存维护由STL自身来完成,减少了内存分配与释放的琐碎处
理。
主要的数据属性定义如下所示:
vector<float> Data 用于保存某通道的所有采样点数据
int Len 用于保存某通道采样点数据的个数
TColor Color 模拟量通道绘制时的颜色
float Scale 绘制此通道波形时纵向比例系数
int iWaveWidth 此波形通道占据的绘制宽度
int iWavePosition; 此波形通道在界面上占据的位置
float Max 通道最大值
float Min 通道最小值
2.开关量通道的波形数据抽象(KGWAVE):主要用于描述绘制开关量的波
形时的相关属性。
由于开关量自身的状态只有开与合两种,为了节省内
存空间,用一位来表示一组开关量的状态。
定义WORD来存储开关量状态,16个通道为一组。
:
vector<WORD> Data 用于保存16个开关量通道的状态,取值时通过通
道的数据偏移位置来指定。
int Len 用于保存开关量道采样点数据的个数
TColor Color[16] 本组开关量通道绘制时的颜色
3.模拟量通道对应的属性定义(SIMUCHANEL),它描述了模拟量通道的特
征,成员包括通道标识符,通道名称,通道相位,通道单位,通道比例
系数,通道最大值,通道最小值。
大部分与标准Comtrade文件中的定义
保持一致。
4.开关量通道对应的属性定义(KGCHANEL),它描述了开关量通道的特征,
成员包括通道标识符,通道名称,通道的常态等。
5.采样段属性定义(RATE),它描述了Comtrade文件当中各个采样段的点
数,采样率。
2.5 关键类定义
本系统主要类图定义及继承关系说明:
omtrade类:此类主要用于解析Comtrade文件,即读取Dat数据文件,
模拟量及开关量数据分别存储在vector<WAVE> vSimuWaves和
vector<KGWAVE> vKgWaves当中;读取Cfg配置文件,模拟量及开关
量通道属性分别存储在vector<SIMUCHANEL> vSimuChanel和
vector<KGCHANEL> vKgChanel中;其采样段属性存储在vector<RATE>
vRates当中。
2.CWaveDraw类:此类主要用于绘制开关量或者模拟量的波形曲线,里面包
含了绘制波形曲线所需要的相关控件指针,如TImage(绘制波形),滚
动条(上下左右移动波形),TListView(显示当前鼠标单击处的相关值)等,在主窗体程序中使用此类或者其子类时需要传递这些控件的指针。
封装了波形曲线的横向和纵向比例放大,鼠标单击事件等所有波形曲线
操作所涉及到的功能。
同时,提供了许多的虚拟函数用于其子类的功能
实现。
由此类绘制的波形如下图所示:
3.CSimuParse类:此类继承了CWaveDraw类所有的功能,同时自身主要通过
全周傅氏算法5来分析计算各个模拟量通道的有效值,相角,重载了关于数据显示的相关函数。
4.CSwitchParse类:此类继承了CWaveDraw类所有的功能,同时自身主要用
于分析计算各个开关量通道的当前位置并绘制开关量波形曲线。
5.CXieBoParse类:此类继承了CWaveDraw类所有的功能,同时自身主要用
于计算某个模拟量通道的各次谐波值,最高可以计算的谐波次数可以配
置,只受故障录波装置最高采样率的限制。
3.系统特点
按上所述思想创建的故障录波数据分析系统,具有以下显著优势和特点:1.系统结构层次分明,有利于群组开发。
将数据层同表示层分开,各层通过内
存中的STL结构结构交互信息,模块区分更明显,各部分可专注于自身功能的实现。
数据层可专注于数据的读取、管理、存储、计算等,而表示层可专注于数据的波形显示、数据信息的显示、波形的移动缩放、波形表示特征的设置、多功能打印等等。
2.通用性强,能充分发挥面向对象模块重用机制,只需做简单的数据接口,就
能处理各种类型的录波数据,而且数据通道的处理不受限制,只是根据配置文件中通道的数量来动态的生成所有的数据组合。
3.样式套用十分方便。
对于经常处理的同类型的录波数据,反复设置其显示属
性,是费时又费力的事情。
而根据CWaveDraw基类来生成各相应子类,由子类来完成数据的分析计算,可以简化开发过程,保证界面统一。
在本公司的实时数据分析模块与稳态录波数据分析程序中也成功使用了CWaveDraw 这一波形绘制的基类,充分验证了这一思想。
系统运行的主界面如下:
4.应用与结论
本文提出的设计思想已经成功应用于本公司的Dr750及DR6000系列故障录波器离线数据分析系统,成为我公司故障录波器后台软件的重要组成部分之一。
开发和实践表明,充分利用标准C++模板库STL和面向对象的开发思想,再结合Borland C++Builder所见即所得的开发平台,可以极大的减化开发过程,提高程序稳定性,使缩短开发周期和快速响应用户要求成为可能。
Nicolai M.Josuttis The C++ Standard Library A Tutorial and Refrerence
张万里陈战林等编著C++Builder5.0高级开发技巧与范例
Stanley B.Lippman等著C++ Primer
陈宏刚林斌等著软件开发的科学与艺术
谷水清电力系统继电保护
作者简介:沈会斌(1974~),男,本科,北京中恒博瑞数字电力科技有限公司,从事电力系统自动化装置的开发工作。