1 引言
所谓的组态(configuration)技术就是对于不同但类似的应用对象不需要重新设计和编程,只需根据系统分析,应用面向过程的组态工具(软件包)进行简单的配置和定义或编写简单的组态语言,即可设计完成一个特定功能的新系统或修改系统的功能。
风电场组态监控系统是用来对风电场内各台所需查看的风机的具体信息进行监视的系统。风力发电是当今世界新能源开发中技术最成熟、最具有大规模和商业化发展前景的发电方式。随着风场个数的增加,单个风场装机容量的增加,对风场内每个风机的控制和管理的难度也在增加,使得传统的工业控制软件已无法满足用户的各种需求,此时就需要一种软件,它是在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建风场自动控制系统监控功能的、通用层次的软件工具,组态软件就应运而生。
本文在调研了风电场的基本信息的基础上,开发了基于风电场的组态监控系统运行时软件,运行时软件是用来还原组态成品的软件,将在下文中进行详细的讨论。
2 软件开发
2.1 组态软件的设计时与运行时
组态软件可以分为两部分实现,分别是设计时和运行时。运行时将解析由设计时所生成的中间文件以及组态资源文件,等同于商品化工控组态软件的目标执行文件。本文主要研究运行时软件的开发与实现。
界面组态设计时,等同于界面组态开发环境,组态制作人员设计具体组态界面的开发环境,开发环境生成 .xml组态描述文件(中间文件),以及组态资源文件(xap,其中包含组态描述文件))和运行时。如图1所示。 (图片)
图1 组态软件结构图 2.2 组态软件开发原理
在分析风场具体信息的基础上,为了使用于远程监控组态软件运行时得以实现,在visual2008/c#平台上建立了puremvc框架,从而使得在实际的开发过程中可以灵活的处理各种信息。puremvc是基于模型、视图和控制器mvc模式的一种轻量级的应用框架,它对外的接口是facade,由facade来组织整个应用,其命名规范也显而易见,可以望文生义。其中controller,model,view是管理icommand,iproxy,imediator的容器,而icommand,iproxy,imediator是应用系统要扩展的mvc各层的接口。
组态制作人员通过组态界面设计时设计出需要查看的风机以及具体信息,通过设计时软件生成相应的xap包,运行时将该xap包还原成制作人员配置的界面并将数据绑定到相应的控件,从而将完整的界面呈现给用户。
由设计时所生成的xap包内包含运行时所需要的资源文件,但运行时还是针对xap包中的.xml文件进行还原。控制器主要是用于发送各种命令,用来传递信息,而模型主要是执行控制器所发送的各种命令,以及对各种信息进行解析和处理。在该软件中针对.xml文件中涉及的各种控件的事件的处理都集成在上图所示的事件中。公共基类用于将模型中处理后的各种数据与信息传给继承于它的各种控件,从而使设计时的界面得以还原。组态运行时(还原)软件结构图如图2所示。(图片)
图2 组态运行时软件结构图 2.3 xml文件形式
由设计时所生成的xap包中包含了组态描述文件即config.xml文件,该文件包括了组态设计人员所布置的各种控件的基本信息。以一条表示一个风机控件信息为例:
设计时将生成的该风机控件的基本信息放在该条.xml文件的节点中,该节点又具有多条属性(此例中指包含了一些基本属性,开发人员可以根据需要对属性进行添加),用于表示该风机控件的各种信息,运行时通过解析这些节点及其相应属性从而将风机控件显示在指定的界面上。
2.4 控制器块的功能
控制器块主要功能是发送命令和传递各种信息。例如:控制器块通过发送开始命令将xap包的的相对路径传送给xml文件处理代理,同时,文件读取命令通知文件流获取代理,准备获取经xml文件处理代理处理后的文件流,数据流创建命令通知数据处理代理准备处理文件流中的相应数据。
控制器块控制着整个软件的各种行为,它传递的信息仅仅是一些整体的,未经过解析的信息,而对具体信息的解析还需要交给模型块来处理。
2.5 模型块的功能
模型块包含了许多用于处理各种数据的代理类。以数据处理代理为例,它将处理经过xml文件处理代理处理后的文件流,提取该文件流中的各种信息,以合适的,自定义的数据结构存储下来,以便在创建每一个控件时可以根据自身的信息对其在界面上的位置,颜色等多种属性进行准确的还原。例如可以通过如下的数据结构类来存储一条xml节点中的信息,如图3所示。(图片)
图3 xml文件数据节点的存储 数据处理代理通过实例化blockdmo类,调用该类中的与xml文件各个节点属性对应的属性来储存节点中各个属性的值。而将数据存储以后就要将存储的信息还原在界面上,如图4所示。(图片)
图4 运行时界面还原过程 数据处理代理首先调用自身的pasedata方法,利用blockdmo类将各个节点中的数据存储在一个以blockdmo为存储类型的堆栈中。再通过blockdmocreat方法,遍历各个blockdmo类型的数据,通过blockdmo自身的creat方法将自身创建出来。这个创建过程实质上是:blockdmo通过调用公共基类,将相应的数据信息传递给继承于公共基类的相应控件类,于是,这些控件类便可以利用传入的blockdmo中的相应数据将自己给创建并显示出来,同时将采集到的每台风机所需要的各种数据绑定到.xml文件中所指定的演示这些数据的各个控件上。
3 风电场组态应用
首先,可以由设计时生成一个xap包,该包内包含用户需要查看的各种信息和资源,设计时接到这个xap包后,最主要的是解析该包中的.xml文件,充分利用.xml文件中的信息还原出用户所需要利用哪种控件查看哪种信息,创建出相应控件,并对其所要显示的数据进行实时更新。主要流程如图5所示。(图片)
图5 整体框架流程图 由设计时生成的文件如图6所示。(图片)
图6 由设计时提供的文件中不仅有一个单独的config.xml文件,在xap包中也包含了同样一个.xml文件以便运行时进行查看和解析。
4 结束语
组态软件通过灵活的组态方式,以“搭积木式”的方式灵活配置、组合各功能模块,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。本文基于这种思想,实现了组态运行时界面的还原,并将其运用到风电场的实时监控组态系统,使用户可以方便的查看风场的实时信息。
9/20/2011
|