【VC++开源代码栏目提醒】:网学会员--在 VC++开源代码编辑为广大网友搜集整理了:能量管理系统动态跟踪技术 - 技术总结绩等信息,祝愿广大网友取得需要的信息,参考学习。
?? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net能量管理系统动态跟踪技术白义传刘永高陈 春王丙文谢 敏国网电力科学研究院/南京南瑞集团公司江苏省南京市210003摘要:能量管理系统EMS在运行过程中经常出现一些无规律的异常现象传统的跟踪手段很难定位此类异常出现的原因也无法判断异常是否已经出现。
文中提出了一种动态跟踪技术可以在不影响EMS运行效率的情况下快速准确地定位无规律异常出现的原因并可以为EMS软件自动消除异常提供依据。
关键词:能量管理系统软件异常动态跟踪中图分类号:TM73收稿日期:2009204221修回日期:2009205221。
0 引言能量管理系统EMS在运行中经常会出现一些异常如短时间的数据跳变、局部功能失效等1。
导致这些异常出现的原因很多如站端传入信息不正确通信环境突然受到干扰维护人员对数据模型维护时操作不当等当然也包括EMS软件自身比较隐蔽的局部缺陷2。
如果这些异常出现的频率较高或者周期性出现定位其出现原因比较容易。
但由于EMS软件规模越来越庞大运行的外部环境越来越复杂实际运行中大多数异常的出现并无规律或者规律很难被发现而且EMS对实时性和稳定性要求均很高不可能中断运行让维护人员对错误进行判断所以传统的软件跟踪技术和手段很难在EMS运行现场发挥作用。
绝大多数异常如果能够被及时发现、及时处理就不会对EMS的正常运行带来太大影响反之日积月累可能会导致EMS更大规模的故障甚至全系统中断运行。
1 传统的异常定位技术在EMS中使用的传统异常定位手段有3类:第1类是人工分析源
代码定位第2类是使用跟踪工具定位第3类是使用输出调试信息来定位324。
第1类方法要求人们必须对整个EMS的全部源码都非常熟悉但由于目前EMS规模庞大开发人员分工非常细使用此种方法分析不规律的复杂异常则非常困难而且此方法是事后分析不能在异常发生的第一时间捕捉到异常发生的环境因此也不可能在第一时间消除异常。
第2类方法的原理如图1所示。
图1 传统跟踪调试工具工作原理Fig.1 Patternoftraditionaldebugtools跟踪工具将自己的跟踪
代码穿插在执行程序
代码中间记录下执行程序在执行过程中的各种资源使用情况发现异常后立即记录下来供调试人员判断。
从图1可以看出一旦使用跟踪工具进入跟踪状态在程序运行的过程中将会有大量的跟踪
代码被运行也许仅需要调试其中1的
代码但100的
代码将被跟踪从而导致软件的运行速度大幅下降。
所以对于实时系统此种方法只能在实验室做一些模拟运行的调试工作无法在现场对实际运行系统进行跟踪调试。
另外常规的跟踪工具对于排查那些简单的内存泄露比较有效但对于比较复杂的逻辑问题此类工具无法起作用且让软件在调试工具中运行本身效率很低无法适用于实时系统。
微软的
VC工具包编译出来的DEBUG版执行程序就是使用此种方法
VC编译器将会在执行程序中植入大量的调试
代码所以DEBUG版的执行程序远比RELEASE版的效率低。
第3类方法是在源
代码中嵌入一些输出语句将EMS中的关键信息输出到终端或者文件中例如:在源程序中使用C/C中的printf/fprintf通过分析输出来判断异常的原因此方法在UNIX/Linux上的服务程序中经常使用。
由于输出到终端或者文件均有I/O开销输出信息太少对定位异常效果不大太多又会严重影响软件的效率所以在实时性要求极高的EMS现场运行环境中此类方法不太实用。
第2类及第3类方法通常被称为传统的跟踪技术。
由上面分析可以看出传统跟踪技术比较适合—58—第33卷 第16期2009年8月25日Vol.33 No.16Aug.252009?? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net于对运行速度要求不高的场合以及实验室环境它在定位快速出现或固定周期出现的异常时比较有效但无法适应实时性要求很高且必需长时间连续运行的EMS无法高效地定位日益庞大的EMS在运行过程中的异常特别是那些长时间运行以后才会出现且出现周期不固定的异常。
因此很多EMS软件厂商使用传统跟踪技术在实验室中调试其产品的DEBUG版但在现场运行的软件全部使用RELEASE版RELEASE版的软件没有调试信息运行效率远比DEBUG版高但无法实现异常跟踪定位。
2 动态跟踪的原理动态跟踪技术源于传统的跟踪技术与传统的跟踪技术相同的是:它需在程序源
代码中放置跟踪
代码不同的是:传统跟踪方式中放置的跟踪
代码肯定会被执行而动态跟踪的跟踪
代码是否被执行是可控的。
当软件正常运行时其
代码的执行序列如图2所示。
图2 正常运行时动态跟踪
代码工作序列Fig.2 Codesequenceofdynamicdebugginginnormalstate此时动态跟踪所有的跟踪
代码均不执行当需要跟踪某些模块的功能时通过软件控制开关启动对应的跟踪
代码此时
代码的执行序列如图3图中第2、第4块跟踪
代码被执行所示。
图3 启动某些跟踪功能运行时动态跟踪
代码工作序列Fig.3 Codesequenceofdynamicdebuggingintrackingstate动态跟踪技术包含3个要素:跟踪
代码、跟踪开关及主控单元。
一个EMS中可以包含成千上万段跟踪
代码每一段
代码可以根据需要将特定的运行环境输出到文件中。
跟踪开关与跟踪
代码段一一对应每一个跟踪开关就是一个在共享内存中的标志位主控单元根据相应的控制逻辑实时计算每一个跟踪开关应该处于的状态并将结果写入对应跟踪开关。
某跟踪
代码是否被执行取决于它所对应的跟踪开关是否打开跟踪开关是否打开由主控单元来控制。
3 主控单元主控单元通过对EMS中相关的资源、功能等进行实时监视自动开启及关闭某些相关跟踪
代码开关从而控制相关跟踪
代码段是否被执行。
主控单元监控的对象主要有3类:EMS的各项资源、各项功能、系统指定的特殊观察条件。
被主控单元监控的资源主要包括每一台机器的内存、虚拟内存、文件句柄、CPU等对于不同的资源有不同的判断依据。
一般来说机器内存、虚拟内存、文件句柄等资源的使用率具有相同的变化属性。
对于一个系统如果它们的变化趋势保持稳定如图4所示则认为该系统的此类资源使用是正常的。
图4 正常的资源使用Fig.4 Normalresourceusagetrend对于一个EMS如果机器内存、虚拟内存、文件句柄的资源使用率变化趋势缓慢上升如图5所示则该系统运行一段时间以后某种资源必然会枯竭进而引起系统运行缓慢、部分功能失效甚至系统崩溃等。
图5 异常的资源使用Fig.5 AbnormalresourceusagetrendCPU资源的使用特性非常明显判断其使用是否正常也非常简单。
如果平均CPU负荷低于30则认为该EMS的CPU负荷正常当然平均负荷越低越好如果CPU负荷居高不下例如:长时间高于50则该系统在电网事故状态下肯定无法及时反应。
主控单元根据不同类型资源的变化特性首先判断EMS每一类型的资源整体上使用是否有异常如果发现某一类资源有异常趋势就立即打开对应的跟踪调试
代码段记录该类资源的使用情况通过一个较长时间记录得到该类资源申请释放的规律即可找到到底哪个模块没有正确使用该类资源。
开发及维护人员根据这些详细的记录信息及分析结果即可较为容易地定位错误并加以改正。
通过资源监控跟踪到的异常信息一般与EMS软件自身的局部缺陷以及操作系统包括附属的各种驱动上的缺陷有关如在实际工程现场多次使用—68—20093316 ?? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net此种方式查找机器内存被持续消耗的原因准确判断出计算机显卡、声卡驱动的泄漏规律。
被主控单元监控的功能分为基本功能及扩充功能。
EMS基本功能包括:内部网络通信、外部网络通信、实时数据处理、历史数据处理、图形功能、报表功能等。
EMS扩充功能与每一个工程现场的配置相关如电压无功控制VQC、状态估计、调度员潮流等。
每一种功能的判断依据各不相同主控单元需要根据每一项功能来定制判断依据。
如实时数据的判断方法是关键数据是否刷新实时数据整体变化频率如何等。
功能监控对于检测EMS的传入信息异常及操作维护人员的误操作非常有效例如:维护人员在系统中错误地修改了配置导致某项功能异常主控单元侦测到异常后启动相关的跟踪
代码。
事后分析时可以通过比对操作维护记录及跟踪结果很容易发现二者之间的联系。
除了通过监控资源、功能外主控单元还可以通过判断系统指定的特殊观察条件来自动启动及关闭跟踪
代码开关例如:可以通过设置让主控单元监控关键测点的合法范围、变化速率范围等。
实际工程中经常检测系统总有功、系统频率的合理范围、变化速率一旦发现异常将相关的信息从前置通道收到的源码到数据输入历史库的相关处理流程上所有相关的跟踪
代码段开关全部开启记录下处理流程中的关键信息以便为事后分析异常使用。
由于主控单元监控的对象是EMS及操作系统的结果信息其占用的内存及CPU资源极低不会对系统造成额外的负担。
由于主控单元自动监视不可能发现所有的异常所以需要提供一个人工开启和关闭跟踪
代码段的功能当操作人员及维护人员在EMS运行的过程中发现某些结果异常可以开启某些相关跟踪
代码段检查到底是软件本身的BUG还是信息源有问题或者是参数错误等其他问题。
4 结语动态跟踪技术克服了传统跟踪技术的缺点可以在实时性要求很高的工程现场使用得到的信息也非常具有针对性。
另外动态跟踪在运行态与跟踪态之间切换时无需中断EMS的运行更无需对源
代码重新编译这对于定位偶尔出现的异常特别有效。
7年来通过500多个现场实践证明动态跟踪技术对于解决实时EMS现场跟踪特别有效它可以帮助软件开发人员及工程维护人员快速定位、消除日益复杂的EMS运行过程中的各种无规律异常极大地提高了EMS的软件易维护性及稳定性。
此技术也可以用于其他实时软件系统。
参考文献1秦杰马韬韬郭创新.调度自动化设备状态在线报警系统的设计及应用.电力系统自动化2009336:95298.QINJieMATaotaoGUOChuangxin.Designandimplementationofon2linestatemonitoringforpowergridautomationsystem.AutomationofElectricPowerSystems2009336:95298.2章坚民楼检.基于CIM/SVG和面向对象的配电单线图自动生成.电力系统自动化20083222:61265.ZHANGJianminLOUJian.Automaticgenerationofsingle2linediagramfordistributionfeedersystemsbasedonCIM/SVGandobjectorientation.AutomationofElectricPowerSystems20083222:61265.3姬源李颖杰.网、省调级电网能量管理系统EMS稳定性研究与实现.贵州电力技术2007106:124.JIYuanLIYingjie.TherealizationandstabilityresearchofEMSofregionalorprovinciallevelpowergrid.GuizhouElectricPowerTechnology2007106:124.4孙昌爱金茂忠刘超.软件体系结构研究综述.软件学报2002137:122821237.SUNChangaiJINMaozhongLIUChao.Overviewsonsoftwarearchitectureresearch.JournalofSoftware2002137:122821237.白义传1969—男通信作者教授级高级工程师主要研究方向:电力系统调度自动化。
E2mail:baiychnaritech.cn刘永高1973—男工程师主要研究方向:电力系统调度自动化。
E2mail:liuygnaritech.cn陈 春1979—男工程师主要研究方向:继电保护及故障信息系统。
E2mail:chenchunnaritech.cnDynamicTrackingTechnologyforEMSBAIYichuanLIUYonggaoCHENChunWANGBingwenXIEMinStateGridElectricPowerResearchInstituteNanjing210003ChinaAbstract:DuringitsoperationtheenergymanagementsystemEMSoftenfacesirregularabnormalphenomena.Itisverydifficultfortraditionaltrackingtechnologytofindoutwhyandwhenabnormalitieshaveoccurredorwhethertheyhaveoccurredornot.AdynamictrackingtechnologyproposedisbelievedtobecapableofaccuratelylocatingtheabnormalityintimewithoutaffectingtheEMSefficiencywhilefurnishingabasisfortheEMStoeliminateabnormalitiesonitsown.Keywords:energymanagementsystemEMSsoftwareabnormalitydynamictracking—78—??研制与开发?? 白义传等 能量管理系统动态跟踪技术