一种基于脚本实现电力监控系统功能扩展和定制的方法
技术领域
本发明属于电力系统监控技术领域,具体涉及一种实现电力监控系统功能扩展和定制的方法。
背景技术
电力监控软件为各种应用提供了图形绘制,建模,监视和控制等功能的通用支持。各应用系统在此基础上进行配置和扩展,满足各应用不同的需求,因此需要监控系统具有很强的开放性,可扩展性和定制能力。
目前的做法多是采用编写程序的硬编码方式,各应用系统在监控系统软件基础上开发各自的程序模块,实现其应用领域特定的功能。这种方式在集控,变电站综合监控等需求明确的领域,能够很好的满足其应用需求。但对其他一些监控系统,如配电自动化系统,储能监控系统,高压直流监控,系统需求多样,不同工程需要浏览和监视的数据差别很大,数据的表现形式多样,大容量储能等监控系统中控制策略多变,工程投运后经常进行功能的微调,监控系统和应用程序模块不可能在开发时考虑到所有工程上的需求,如果为每个工程都开发特定的程序版本,势必会造成程序版本的混乱和失控,而且程序升级导致的中断系统运行有时也不能被电力用户所允许,因此需要使用一种能够不中断系统运行的技术手段,在不影响其他监控功能前提下,在线增加,修改已有功能。
使用脚本实现电力应用系统工程上的需求弥补了以上软件平台在应用上的局限与不足,脚本编辑简单,修改方便,不需编译即可执行,简化了开发周期,保证了系统的连续运行,另外,现在主流的脚本语言都提供面向对象支持,运算和分析能力很强,脚本的另一优势是,在脚本执行过程中,不会因为脚本本身的语法,逻辑等原因影响系统的稳定运行,对于稳定性要求高的电力监控系统而言是一个非常好的技术手段,同时,监控系统软件有了脚本的支持,能够更加方便的扩展到更多的监控领域。
发明内容
本发明的目的是在电力监控系统软件基础上,通过脚本实现监控系统功能的调用,满足电力监控系统不同的应用需求,提供了一种不影响系统运行,不需编译应用程序,开放,维护简单,易于扩充的技术手段。本发明根据脚本常用的设计规范,并借鉴面向对象的思想将监控系统的部分组成元素封装为对象及其属性和方法,供脚本调用。
本发明具体采用以下技术方案:
一种基于脚本实现电力监控系统功能扩展和定制的方法,其特征在于,所述方法包括以下内容:
(1)将电力监控系统的实时数据库封装为一个实时库脚本对象,通过调用脚本对象的方法,实现对所述实时数据库读取和查询,以及打开和关闭实时数据库,所述实时数据库打开后能够根据记录关键字查询模拟量和状态量的运行值,或者记录名称,类型等其他属性值,或者根据属性值条件进行过滤,返回查询结果;实时数据库关闭后不能进行查询等操作,以保证数据安全;
(2)将电力监控系统中的SCADA相关控制操作封装为一个SCADA脚本对象,把设备类型、关键字、操作类型封装为对象属性,将预选、执行、反校操作步骤封装为对象的方法,在SCADA脚本对象中实现控制流程的调用,根据每一个步骤的返回状态,选择下一步操作;
(3)在UI脚本对象中实现窗体文件的加载和释放,将窗体设计工具设计的窗体文件保存在磁盘中,在脚本文件中通过窗体文件名称把窗体加载进来,并进行显示,将实时库脚本对象中查询到的属性值通过窗体控件显示出来,所述脚本文件响应窗体控件的动作来执行相应的操作;
(4)在GUI脚本对象中实现图元的位置、颜色和显示值属性的读写功能,将图元、图层、文档等电力监控系统的自定义对象的属性和方法进行封装,使图元在运行时能够显示SCADA控制操作的结果。
本发明具有以下有益效果:
(1)能够方便的对电力监控系统的功能进行扩展,通过脚本可以重新实现用户交互界面的设计,对控制流程进行干预,增加了运行过程中监控画面的显示控制方式,实现工程中多样化的需求。
(2)不影响电力监控系统正常运行,增加和减少脚本均不用启停系统,保证电力监控系统的连续运行。
(3)不影响电力监控系统稳定性,脚本语言本身在运行中出现错误,不会造成系统的异常退出。
(4)有利于电力监控系统软件的版本控制,脚本仅与具体工程相关,脚本文件是工程数据的一部分,其修改不影响监控软件本身,保证了软件版本的唯一性。
附图说明
图1为实现电力监控系统功能扩展和定制方法的示意图。
具体实施方式
下面结合说明书附图对本申请的技术方案作进一步详细说明。
如图1所示为本发明实现电力监控系统功能扩展和定制方法的示意图,在传统电力监控系统基础上,将实时库,SCADA,监控界面的部分功能封装为脚本对象,通过脚本实现功能的扩展和定制。具体包括以下内容:
(1)将电力监控系统的实时数据库封装为一个实时库脚本对象RealDB,实时库脚本对象的属性为表名(tablename),打开标志(isopened),脚本对象的方法有打开(open),关闭(close),读取(read),查询(query)等。通过脚本对象的打开和关闭方法,实现实时库的打开和关闭操作,实时库打开后,通过实时库脚本对象的读取方法实现根据记录关键字查询单个或多个属性的值,或者通过实时库脚本对象的查询方法,根据属性值条件进行过滤,返回查询结果;实时数据库关闭后不能进行查询等操作,以保证数据安全;
(2)将控制操作封装为一个SCADA脚本对象Operation,SCADA脚本对象的属性为设备(device),关键字(key),操作类型(type),SCADA脚本对象的方法有预选(select),执行(exec),反校(solicit)等,在脚本文件中首先调用SCADA脚本对象的预选方法,选择成功后逐步调用执行,反较方法,完成控制流程的实现。在任何一个步骤出现失败,则根据需求终止控制或进行其他控制策略。如果是顺控流程,则按照规定控制顺序的逐步执行,如果其中一个控制操作失败,则根据控制要求进行恢复或者其他操作。
(3)将窗体文件的加载和释放封装为一个UI脚本对象UILoader,其加载(load)方法将窗体设计工具设计的窗体文件从磁盘读取出来,显示(show)方法实现窗体文件的显示,脚本文件将实时库脚本对象查询的属性值用窗体中控件进行显示,并响应控件的动作来执行相应的操作。
(4)将电力监控系统监控界面中的电力组件,监控图形封装为GUI脚本对象,将组件关联的设备,颜色,图形名称等作为脚本对象的属性,将图形中组件遍历,查询封装为图形脚本对象的方法,将电力监控系统中主窗体等封装为脚本对象,主窗体的获取图形窗口得到监控图形,通过图形的遍历,查询方法得到电力组件。
本发明脚本语言的选择需参考监控系统的实现语言,如javaScript等标准脚本语言,如果监控系统使用Qt4.3及其以上版本作为图形模块开发工具,还可以选择Qt提供的QtScript模块,此模块提供了应用程序封装脚本对象的通用方法,提供了脚本解释引擎,还能在脚本中利用Qt的信号和槽等特性,使脚本功能实现更加灵活。
对于上述一种基于脚本实现电力监控系统功能扩展和定制的方法,本申请在脚本对象的封装、脚本文件的关联和触发,以及脚本的运行和终止三个方面进一步优选以下实施方式:
1.脚本对象的封装
将实时库脚本对象,SCADA脚本对象,GUI脚本对象和UI脚本对象合并为一个脚本对象库,脚本对象库是一个独立于电力监控系统的动态库,根据QtScript脚本对象封装要求进行封装。
2.脚本文件的关联和触发
QtScript模块使用javaScript脚本语言,脚本文件嵌入到电力监控系统的应用程序中运行。脚本文件可与监控图形关联,在图形打开或者关闭的时候运行脚本;脚本文件可与监控图形中的某个具体图元关联(如按钮等),当点击这些图元的时候运行脚本;脚本文件也可与监控系统的菜单关联,点击菜单时运行脚本。
3.脚本的运行与终止
监控系统运行后,通过图形打开,图元点击或者菜单调用等方式触发了脚本以后,脚本即开始运行。每个脚本文件由一个QtScript模块的脚本引擎加载,管理脚本的变量和上下文环境,同一时间多个脚本运行时,彼此独立运行,不互相影响。当运行脚本的图形关闭后,脚本停止运行。
以直流监控系统为例,直流对监控系统控制的需求比较特殊,遥调操作数由鼠标控制,不接受键盘输入,有些控制如功率反转控制是一键直接控制,不需要选择,执行等逐步进行,有些控制是由两个遥调操作组合控制,必须按照顺序进行操作,并根据每一个步骤的执行成功与否判断下一步操作。
直流监控的遥调操作脚本关联到按钮图元上,当点击按钮时调用脚本,由脚本加载遥调窗体,实现对遥调过程的脚本控制,遥调的目标值由窗体上“+”,“-”按钮进行设置,是直流监控系统用户提出的界面方式,在其他电力监控系统中不常用,使用脚本实现,使监控系统只关注遥调的实际操作步骤,而不必关心其人机界面的表现方式。在保证通用性的前提下,实现了监控系统功能的开放与扩展。
另外一类遥控是保护信号复归等操作,不需任何界面交互,“预选”成功后直接进行“执行”操作,由脚本控制全部过程,实现了控制方式的定制。如果运行后需要修改控制方式,增加选择后的人机交互,直接修改脚本文件和人机交互界面的ui文件即可,不需中断系统运行。
在配网,大容量储能,集控等监控系统中,均可参照本实施例进行实施。
综上所述,本发明的方法是在现有电力监控系统基础上,针对其在扩展和定制上的局限,提出了一种实现电力监控系统软件的扩展性和定制能力的方法,特别是在不允许中断系统运行的时候,能快速满足工程现场的需求。
其方法的具体技术方案由本发明的权利要求所限定。