iP9000水电厂智能一体化平台数据模型的对象化设计

2017-08-16 04:19文正国陈小松
水电站机电技术 2017年7期
关键词:对象化水电厂数据模型

文正国,陈小松

(北京中水科水电科技开发有限公司,北京 100038)

iP9000水电厂智能一体化平台数据模型的对象化设计

文正国,陈小松

(北京中水科水电科技开发有限公司,北京 100038)

针对水电厂自动化系统传统的以数据点定义为主要方式的数据模型组织方式的缺点,iP9000水电厂智能一体化平台提出以面向对象的思想构建以对象定义和对象关系定义为主要内容的数据建模方法。本文介绍了对象化模型设计的基本原理、概念和设计方法,描述了对象化模型设计的要点,并提出了适合对象化模型存储的数据库要求。

iP9000智能一体化平台;对象化;建模

0 引言

传统的水电站计算机监控系统系统和其他二次自动化系统通常按照生产单元、数据类型进行数据信息的描述和组织,如全厂分为多个机组单元、开关站和公用系统,每个生产单元包含模拟量(遥测)、开关量(遥信)、脉冲量等数据类型的数据集合,形成一种简单层次化的、单向包含的、以数据点定义为主要方式的数据模型结构。这种数据组织模式的优点是结构简单清晰、易于实现和维护,但缺点是层次太过简单,缺乏用于表示具体生产子设备如调速器、励磁等中间层次的数据模型,单个子设备的各项数据散落在整个单元数据集中,数据点之间没有横向的关联关系,难以清晰直观反映设备的状态。而且数据表示形式单一,缺乏自我描述能力,动态扩展性差。简而言之,传统的数据模型层次简单、粒度较粗,很难描述复杂的设备内部各数据之间、各个设备之间的关系与联系。iP9000智能一体化平台作为水电厂自动化系统的基础架构和支撑平台,需要支持不同系统的各种数据类型和关系模型,并在其上部署智能化应用系统,采用面向对象化的数据模型就是一种必然的选择。

1 对象化设计原理

1.1 基本原理

水电厂生产系统及其自动化系统是由一些设备元素构成的,这里的设备元素包括水轮发电机组、变压器、开关站设备、油气水辅助设备等,每一类设备又包含成百上千的子设备,如调速器、励磁系统、润滑设备、冷却设备、母线、开关等。每个设备元素都有各自的功能,整个电站的功能由各个设备相互协调配合完成。每个设备元素又都有各自的状态,整个生产系统的状态由各个设备的状态来体现。根据规模、规格以及功能,各个设备元素之间又可以存在着相同或相似性,并且各个设备元素的规模、规格以及功能都会根据需要随时发生变化。实际的生产系统工作模型与面向对象的软件模型有着自然的对应关系:各类设备都是一些对象,每个对象都有各自的状态和功能;各对象之间可以存在着整体与部分的关系,即一个对象可以由多个其他对象构成(聚集);各对象之间也可以存在一般与特殊的关系,即一个对象除了具有与其他对象相同的功能外,还可有自己特殊的功能,并且通过聚集和继承机制,可以随时增加新的对象。鉴于实际的生产系统工作模型与面向对象的软件模型之间的一致性,采用面向对象技术来设计生产系统的数据模型将会非常自然和有效。

面向对象的基本思想是通过对问题领域进行自然的分割,用更接近人类通常思维的方式建立问题领域的模型,并进行结构模拟和行为模拟,从而使设计出的软件能尽可能地直接表现出问题的求解过程。因此,面向对象的方法就是以接近人类常规的思维模式,将客观世界的实体模型化为对象。每一种对象都有各自的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统。

1.2 基本概念

在数据模型的对象化设计中,对象、属性、方法、类是基本的概念。

(1)对象

包含了数据属性和围绕着数据的操作方法,可以认为是数据和行为的统一体。比如:对象可以是1个电站,可以是某台机组的调速器,还可以是调速器的压力油罐压力。对于一个对象,应具有如下特点:

1)每个对象具有一个唯一的对象标识,用以区分在数据模型中的其他任何对象;

2)每个对象具有一组描述其特征的属性和对应的属性值,用以表明该对象包含的信息和自身状态;

3)每个对象具有一组表示对外提供服务的操作方法,用以改变对象的状态、提供对象的信息等。

(2)属性

属性是对象所包含的数据。一个对象可以包含多个属性,每个属性可以是任意类型的数据,包括数值、描述性字符串,甚至可以是图像、视频流、另一个实体对象等。

(3)方法

方法是对对象的操作,也可认为是对象对外提供的行为和服务,如对对象的状态或数据进行读取、修改等。类通过方法实现封装和多态特性,隐蔽其内部实现细节。

(4)类

类是对对象的抽象,具有相同属性和方法的对象可以抽象出类。类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和方法。如所有的水轮发电机组都具有额定水头、额定出力、额定转速、实发有功、运行状态等共有属性,以及开机、停机等相同的操作方法,就可以抽象为水轮发电机组类。建立了水轮发电机组类的数据模型后,每台发电机组就可以定义为类的一个实例化对象。

1.3 建模方法

水电厂面向对象数据建模的主要方法有抽象、分类、概括、聚合、关联等。

(1)抽象

基于从实体到模型的思维,将水电厂生产系统的各种实体设备按其属性和功能抽象出对象模型,建立映射关系,如1号机组对象、大坝对象、调速器对象。

(2)分类

分类是把具有相同属性结构和操作方法的对象归纳为一个公共类。例如,所有机组对象可归纳出机组类,所有的开关对象可归纳为开关类。按不同层次和粒度,水电站数据模型可归纳出流域类、电站类、机组类、发电机类、定子类、温度类等。

(3)概括

概括是把多个类中相同的属性和操作方法抽象出来,形成一个更高层次、更具一般性的超类,原来的类是这个超类的子类。超类用来表示概括的特征,子类是超类的一个特例。子类还可以进一步分类,作为几个子类的超类。例如,混流式机组类、轴流式机组类、冲击式机组类可以提取出水轮机组类。

(4)聚合

聚合是将几个不同类型的子对象聚集在一起组合成一个复合对象,用于表示更高层次的对象。复合对象与子对象的关系是整体和部分的关系。例如开关站对象除了包含电压等级等属性外,还包含母线对象、断路器对象、隔离刀闸对象、各种保护对象等。

一个复杂对象由多个简单对象或其他复杂对象组成。一个复杂对象被视作一个树,对象本身是根结点,它的成员对象是树的孩子,树的叶结点是简单对象。

(5)关联

关联表示对象之间的引用关系,比如水头对象与机组对象之间的关系。这种关系通常使用类的属性表达,即类的属性值为另一个对象或包含对象的集合。关联关系所涉及的两个对象可以处于任何不同的层次,而不是像聚合关系中那样两个对象属于整体与部分的关系。关联是一种连接关系,说明从一个对象可以联系到另一个对象,也可以形成双向联系。

2 对象化设计要点

2.1 对象名称ONAME

每个对象具有一个系统唯一的名称ONAME。系统支持对象名以任何规则命名,只要不与系统中已存在的对象名重合就行。但为了便于直观表达该对象表示的实际设备或功能,以及所属对象或范围,对象名的命名规则采用层次化结构,由上层对象名加上自身描述名组成,如:

GBZ.220SWY.2206BREAK1.OPEN

“GBZ”表示电站名,“220SWY”表示220 kV开关站,“2206BREAK”表示编号为2206的断路器,“OPEN”表示开接点。

层次化结构名称不是必须的,但是因为包含了有意义的信息,对于数据模型的使用者和维护者来说更加便利。

对象间的层级关系采用另外的机制实现,在下文中进行说明。

2.2 对象标识OID

虽然每个对象都有一个独一无二的名称,但由于名称字符串通常都比较长,对对象进行处理时如果都采用名称进行区分,对空间占用和运行效率都会有不利影响。因此,需要给每个对象分配一个系统唯一的编号,称为对象标识OID。只要OID相同,无论对象的属性、操作如何修改都是同一对象,只要OID不同,即使其属性、操作都一样也是不同对象。对象OID一经分配确定后即不再修改,在整个系统生命周期中保持不变。

在系统内部采用OID进行数据处理和存储,能够提高系统响应速度,节省存储空间。而在人机联系界面上,如系统配置界面、维护界面、操作界面,对象则以对象名的形式使用和标示,以便更加直观。

2.3 基本对象

任何数据点均定义为一个基本对象,拥有名称、ID、类型、值(状态)、质量状态、更新时间、更新来源等基本属性。根据其类型的不同作为某一种类型的实例化对象,如遥测类对象、遥信类对象,每一类对象还拥有类型相关的属性,如遥测类对象包含工程量程参数、报警限值参数、工程单位等属性,遥信类对象包含状态变化时间等属性。

在工程实践中,还可以根据需要动态添加任意类型的新属性及对应的操作方法,如关联对象或对象集合名。

2.4 通用对象

通用对象用来表示各类设备、部件、模块、功能,例如:1座大坝、1个压力油罐、1台主机、1块CPU、1个进程等。通用对象通常包含了较复杂的属性和其他子对象,并且具有层次性,要么包含其他子对象,要么属于一个或多个父对象,因此具有父对象属性和子对象属性。多个父对象的情况虽不普遍,但确实存在,例如,我们可以把坝前、坝后水位对象当作多个机组对象的子对象。

通过对象之间的层级关系,整个数据模型可看作是只有一个根节点、有层级差别、由树形结构衍生的树形网状结构,我们称之为树网结构。此结构中有根节点、中间节点和叶节点。根节点是唯一的,可以从根节点遍历整个数据模型;中间节点都是通用对象,表示系统中所有实体设备和功能的抽象模型。叶子节点都是数据点类型的基本对象,表示具体的状态、值、参数等信息。

当系统中所有的节点都只有一个父对象时,数据模型就是一个标准的树形结构,也可以说树形结构是通用设备对象关系的一种特殊状态。

2.5 对象的层级关系表示

对象的层级关系表示可以采用两种方式:自上而下与自下而上。自上而下的方式就是在对象中表示包含哪些子对象;自下而上的方式就是在对象中表示属于哪些父对象。自上而下的方式便于从根节点开始对数据库进行遍历,自下而上的方式便于从叶节点对象一直上溯至根节点对象父对象。从处理的便利程度和性能考虑,我们的模型同时采用自上而下和自下而上两种表示方式:根节点对象只包含子对象属性,中间节点对象同时包含父对象属性和子对象属性,叶子节点对象只包含父节点对象属性。父对象属性和子对象属性的值为对象标识OID列表。例如,调速器对象属于机组对象,就在调速器对象的父对象属性中保存机组对象的OID,机组对象的子对象属性中包含调速器对象的OID。当列表中的对象数量较多时,我们还可将列表中所有成员新建为一个集合对象,而在对象属性中保存集合对象名。

father object:

attribute child_obj:obj_oid(set)

child object:

attribute father_obj:obj_oid(set)

图1 对象的层级关系表示

2.6 对象的关联关系表示

在系统中,对象之间除了层级关系外,还可以建立关联关系,即两个对象之间不是从属关系,但存在某种联系,可以是单向的,也可以是双向的。通过关联关系,应用程序可以根据一个对象的状态变化去修改其关联的另外一个对象的状态,以实现某种功能。关联关系的实现方式与层次关系类似,有关联关系的对象通过增加一个关联对象属性来指向关联对象。

attribute relationship_obj:obj_oid(set)

如果一个对象有不同性质的多个关联关系,只需要增加相应的多个属性即可。

3 对象化模型的存储

以对象化形式组织的水电厂数据模型,因需要支持动态添加对象属性,属性类型没有限制,可以为简单的数值、字符串,也可以为复杂的二进制数据流,比如图片、文档,还需要支持各种层次关系和关联关系的表示。若采用传统的实时数据库或关系型数据库存储对象化模型,需要将对象的属性和各种关系一一映射为实时数据库中的结构成员或关系表中的域,预先定义其数据结构和数据类型。因难以适应对象模型的动态修改,传统数据库将会显得力不从心和低效。

随着数据库技术的发展,直接支持对象表达和存储的数据库日益成熟,如NoSQL数据库。NoSQL数据库泛指非关系型的数据库,如key-value存储数据库和文档型数据库,其主要特点是不需要严格遵循数据约束,模式自由,不需要预先定义表结构和数据类型就可支持动态存储各种复杂的数据类型,非常适合对象化数据模型和对象数据的存储。

4 结语

数据模型是对客观事物及其联系的数据描述,即实体模型的抽象化。iP9000水电厂智能一体化平台采用面向对象化的数据模型设计,在生产控制自动化领域以自然直观的方式建立一种贴合生产运行需要、基于对象化的数据组织模型,并采用高效的、适合于对象化存储的数据库,为智能控制、智能报警和智能诊断等高级应用提供了有力的平台支撑。

[1]王德宽,张 毅,刘晓波,等.智能水电厂自动化系统总体构想[J].水电自动化与大坝监测,2011,35(1):5-9.

[2]纪 陵,李忠明,蒋衍君,等.智能变电站二次虚回路对象化信息模型描述方法研究[J].华电技术,2015,37(2):4-6.

[3]戴毅茹,严隽薇,张晓棠.面向对象技术的资源建模方法[J].计算机集成制造系统,2001,7(10):22-26.

[4]陈 华,郭生练,熊立华,等.面向对象的GIS水文水资源数据模型设计与实现[J].水科学进展,2005,16(4):556-563.

[5]徐小玲.基于面向对象数据模型的信息管理系统[J].电子科技大学学报,2003,32(1):85-88.

[6]邵鹏鸣,李成刚,吴翰声.基于对象模型的不确定环境下服务性机器人系统模型研究 [J].机械工程学报,2001,37(8): 47-51.

[7]张金江,郭创新,曹一家,等.变电站设备状态监测系统及其IEC模型协调[J].电力系统自动化,2009,33(20):67-72.

TV736

A

1672-5387(2017)07-0001-04

10.13599/j.cnki.11-5130.2017.07.001

2017-04-27

文正国(1975-),男,高级工程师,从事水电厂自动化系统技术的研究与开发工作。

猜你喜欢
对象化水电厂数据模型
对象化的思想:人类生活中的信息
“非对象化”及其人本价值
面板数据模型截面相关检验方法综述
论对象化及人之存在
对京剧表演对象化思维的反思
浅谈水电厂自动化系统的智能化改造
基于SOA的智能水电厂一体化平台设计
iP9000水电厂智能平台
北斗通信在小型水电厂电量采集中的应用
基于分位数回归的电力负荷特性预测面板数据模型