背景技术
随着电网规模的不断扩大,电网监视及运行维护工作量日益增大,各专业建立了自身领域的信息化调度子系统,例如:雷电监测系统、覆冰监测系统、中性点直流系统、变压器油色谱系统等等。各调度子系统是电力信息化系统的必要补充,为生产、评估、分析、检修等提供专业数据。以往各调度子系统独立建设,各调度子系统为本专业服务,无法提供跨专业的全景数据,形成调度子系统孤岛,无法满足电力系统进一步发展所需的全局全景数据要求。
通过调度子系统数据平台,所有调度子系统数据与电力系统调度数据进行关联、融合,对于电力系统一次设备,实现了包括生产、台账、调度子系统信息等等在内的全景数据视图。同时在调度子系统接入过程中,对调度子系统模型和数据分开处理,模型采用自动免维护方法引入远程设备监测平台,远程设备监测诊断中心不再需要进行数据建模,而是在调度子系统中完成数据模型的维护,从而实现电网模型的“源端维护,全局共享”。
当前调度子系统之间、调度子系统与上层系统之间基本上是孤立的。存在一些简单的数据整合应用,存在以下几个问题:
1.各调度子系统之间的数据交互没有考虑其业务关联,数据同步方式比较机械,一般采用被动定时的方式。传统的数据交互一般指的是数据同步数据需求端定时主动来进行数据的请求和获取,在获取数据之前不考虑目标数据是否变化,这种方式实时性差、对目标系统负载影响大并且数据同步效率比较低。
2.没有从接口、模型、数据、业务几个层面上系统性的考虑整体交互方案。
本发明用于解决以上述两个问题,此外本发明中自动建模部分采用的是中国专利申请CN201110005486.4“电力信息系统异构数据库多维数据集成的模型及建模方法”中给出的建模方法。从调度子系统中获取电力设备测量模型,即通过基于抽象容器灵活建模方法,归纳各异构信息系统应用模型,创建一种多层容器结构,用于装载调度子系统的模型;通过统一规范的公共命名方法从各调度子系统导出的XML描述文件,创建全局公共对象信息和各调度子系统的私有对象信息以及它们的映射关系,并将这些对象及其映射关系装载到所述的的多层容器模型中。
发明内容
本发明的目的在于:提供电力设备远程监测诊断中心从各调度子系统获取调度子系统模型和监测数据的方法,采用全局映射模型,系统匹配的方式,方便快捷的解决不同系统接入时映射电力系统设备的问题。提供了多平台的u-odbc驱动来实现不同操作系统、不同数据库的调度子系统的数据接入,同时通过订阅/发布的消息服务,使得调度子系统之间能够按照应用和业务的需要及时进行数据交互,最大程度降低数据交互带来的调度子系统之间的耦合。
电力设备远程监测诊断中心获得调度子系统模型并建立全局设备模型映射关系,同时以u-odbc和消息服务方式进行调度子系统之间业务相关的多对对数据交互的方法。
本发明的技术方案是:一种调度子系统数据交互及建模的方法,在完成建立调度子系统的电力设备测量模型和对象映射属性后,进行调度子系统的数据交互,包含以下三个步骤:
a)将调度子系统的多维度数据(电力设备测量数据)关联到全局公共对象模型上:在全局公共对象模型中建立公共对象属性和和各调度子系统多维度数据之间的多维度对象属性之间的映射关系,并将这些公共数据的服务属性及其映射关系装载到已经所创建的多层容器模型中;
b)采用订阅/发布模式的调度子系统数据交互,通过实时缓存模型和消息机制把调度子系统建立映射关系的对象属性多维度数据实时同步到抽象缓存模板中;
c)使用事件驱动的订阅/发布方式,基于跨平台的数据库驱动来进行调度子系统多维度数据模型的XML描述文件的生成和调度子系统之间的数据交互,
其中步骤a)进一步包括:全局对象属性服务和各调度子系统私有的多维度数据服务的映射关系,是通过全局各对象属性到各异构的调度子系统多维度数据构成的源数据库列的关联关系完成的;公共数据服务属性对上的关系是多维的,即容器可以包含多个公共数据服务属性;同时源数据库列对上的关系也是多维的,即一个容器可以通过多个公共数据服务属性与多个多维度数据的属于异构数据库私有数据服务属性相关联,从而完成了多维数据的向全局对象数据属性的集成。
其中步骤b)进一步包括:采用订阅/发布模式的调度子系统数据交互,订阅/发布模式包括队列模式和广播模式;通过建立的全局公共对象模型和各调度子系统多维度数据之间的多维度对象属性之间的映射关系,实时的把调度子系统数据同步到抽象缓存模板中;其中实时性体现在数据更新完全由各调度子系统驱动,通过订阅/发布模式,更新要求被所有订阅的调度子系统获取并通过步骤a)中描述的对应系统的私有数据服务属性来进行数据的更新。
本发明中使用的事件驱动的订阅/发布方式解决传统数据交互的问题。目标系统在确认需要数据请求时通过发布事件的方式通知订阅方,然后订阅方按照发布方事件携带的参数来进行数据的请求,实时性和有效性得到保证,对目标系统负载影响也得到一定程度的减小。
其中步骤c)进一步包括:在调度子系统之间进行数据交换的方式采用跨平台universal ODBC方式,实时数据与事件类数据采用消息服务的订阅/发布模式在调度子系统之间进行交互。批量数据与历史数据通过订阅/发布来触发对应的数据访问接口,从对应的调度子系统中取得。
调度子系统除了在模型和应用上存在差别,在架构、支撑系统、数据库等方面也是各不相同,对于这些传统子系统,在设计和建立时没有考虑数据共享和应用集成的需要,对于数据接入本发明采用了跨平台的ODBC的方式,为数据交互平台实现了ODBC桥。数据由应用产生,数据交互和各调度子系统的应用逻辑是结合在一起的。没有应用的集成,数据交互退化成数据同步,失去了时效性。对于应用整合,利用消息服务的订阅/发布可以解决这些问题,而且对于调度子系统编程工作较少。转换和路由规则在中心库维护,无需硬编码在应用程序中。
本发明基于全局模型,各调度子系统通过自动建模技术建立调度子系统设备对象以及量测对象与全局模型的映射关系;各调度子系统之间面向应用和业务的数据接口和事件驱动的数据交换方式。映射模型主要作用是整合各调度子系统模型,保证上层应用和调度子系统之间能够以一致、统一的方式进行设备和量测的对应,对上层应用提供公共的模型、设备对象,对下与各调度子系统进行交互,获取各调度子系统的模型、设备对象、数据结构等信息。调度子系统模型数据和监测数据通过统一的数据接口,以订阅/发布的方式进行交互,能够最大程度的保证实时性、满足应用和业务逻辑的需要。
本发明的有益效果是:本发明提供了一种方便、快捷、统一的方式,将不同调度子系统的数据接入电力设备远程监测诊断中心系统中,并实现了跨系统的设备对象的自动匹配和模型拼接,支持不同厂家,不同操作系统、不同数据库之间的数据交换,同时在数据交互时支持事件驱动的订阅/发布,遵循消息服务通讯程序规范,使得各调度子系统之间的数据交互能够以松耦合、可扩展的方式接入设备监测数据交换平台中。
具体实施方式
如图1所示电力设备远程监测诊断中心计算机服务器与各个调度子系统计算机服务器通过网络相连接。
本发明使用ODBC驱动,按照订阅/发布的内容从调度子系统中获取设备和量测模型,通过自动维护关联到全局模型上,同时取对应系统的实时数据存入公共缓存区域。整个方案系统结构见图4。所有的调度子系统把数据写入调度子系统数据平台,各调度子系统从调度子系统数据平台获取需要的其他调度子系统的数据。
整个方案包括建立调度子系统电力设备的量测模型的建立和完成调度子系统的数据交互两部分内容。
1、建立调度子系统的电力设备测量模型
对于各调度子系统,包括油色谱、电能质量、雷电、覆冰、中性点直流等系统,各子系统在设计时没有统一规划,有不同的数据模式。由于这些调度子系统服务于电网监视与运维,通过设备状态监测来得到电网设备运行状态,因此在设备层次上能够把这些系统统一起来,同时不同调度子系统关注的监测数据不一样,模型上有差异。
需要建立模型,下面两个步骤完成模型的建立1)通过基于抽象容器灵活建模方法,归纳各异构信息子系统应用模型,创建一种多层容器结构,用于装载调度子系统的模型;2)通过统一规范的公共命名方法从各调度子系统导出的XML描述文件,创建全局公共对象信息和各调度子系统的私有对象信息以及它们的映射关系,并将这些对象及其映射关系装载到所述的的多层容器模型中;
其中步骤1)进一步包括:考虑到多个调度子系统的模型的差异性,抽象容器模型一个特点是其应用模型的兼容性和可扩展性,其实施的方式是不再通过建立具体的模型的方式,也就是说不再按照具体的对象来定义模型的节点和关系,而是通过抽象容器的概念,将一般性的组织和事物中“包含”的关系理解为各级容器的从属结构,而具体的对象的属性通过容器的属性得到体现,即通过容器类型的方法,规范了容器实例化时加载对象的问题。在不考虑数据库容量的条件下,其可扩展性可以是无限的。
步骤1)中所属抽象容器模型是一种自包含的可无限扩展的层级数据模型,包括以下数据结构:
Container(容器)的各属性定义如下:
ContainerDescDefine(容器描述定义)的定义如下:
属性名 |
数据类型 |
描述 |
name |
DT_STRING |
名称 |
alias |
DT_STRING |
别名 |
DContains_DescAtttibute |
DT_S_DARRAY_COMP |
包含描述属性 |
ContainerDesc(容器描述属性)的定义如下:
步骤2)中进一步包括:通过分析各调度子系统模型模式并导出的统一规范的XML描述文件完成公共对象和私有对象信息的装载,公共对象信息是抽取了各异构数据源的对象信息部分,通过公共命名方式对各系统的私有对象信息进行归纳,提取出公共对象信息,并将公共对象信息、私有对象信息以及它们的映射关系装载到已经建立好的具体的容器模型结构。这种映射是一种动态的智能映射,完全是自动完成的,各数据源系统不需要做任何改变。调度子系统是根据其导出的XML文件分析后智能的调整这种映射。
其中所属公共对象信息和各异构数据源私有对象信息的映射,包括以下数据结构:
PubObjectTypeDefine(公共对象类型定义)的定义如下:
属性名 |
数据类型 |
描述 |
name |
DT_STRING |
名称 |
alias |
DT_STRING |
别名 |
inContainer_1 |
DT_BOOL |
允许一级容器装载 |
inContainer_2 |
DT_BOOL |
允许二级容器装载 |
inContainer_3 |
DT_BOOL |
允许三级容器装载 |
DContains_ObjectType |
DT_S_DARRAY_COMP |
包含对象类型 |
Container_1_SourcelD(一级容器源lD)的定义如下:
从调度子系统中获取的电力设备量测模型是孤立的,与其他调度子系统、调度系统等等信息化系统是不能直接关联的,因为存在模型结构、对象命名和对象编码之间的差异。为了让计算机能够把这些不同调度子系统中的对应设备识别出来并建立映射关系(建立对象编码,也就是对象ID之间的关系)。在调度子系统导出电力设备量测模型时首先要处理模型结构的问题,保证导出的电力设备量测模型与全局关联模型结构匹配。其次对于不同命名的设备对象,采用可编程匹配方法进行半自动对象名称匹配。一旦调度子系统设备对象匹配上全局关联模型中的设备对象,映射关系就建立起来了。通过全局设备对象可以找到调度子系统中对应的设备对象,同时也可以通过调度子系统中的设备对象找到全局设备对象。对于调度子系统A中的某个“设备1”和调度子系统B中的某个“设备2”,对应全局映射模型中的“设备”,通过匹配,这些设备建立全局设备映射关系,如图2所示。
2、完成调度子系统的数据交互
调度子系统的数据交互建立在模型映射的基础上,通过模型的映射,可以知道调度子系统中相关专业数据的物理意义以及多个调度子系统集成后所能提供的全部多维数据属性。调度子系统与上层系统、各调度子系统之间存在具体的数据需求,比如油色谱系统需要变压器参数信息、设备状态评估需要油色谱分析数据、中性点直流数据、变压器参数数据等信息。当初建立的各调度子系统并没有考虑数据共享、信息集成的需要。缺乏数据接口、模型接口、应用集成的条件。
在我们的方案中包含三个步骤来解决这些问题:
a)将调度子系统的数据关联到全局模型上:在全局公共对象模型中建立公共对象属性和和各调度子系统之间的多维度对象属性之间的映射关系,并将这些数据服务属性及其映射关系装载到已经所创建的多层容器模型中;
b)通过实时缓存模型和消息机制把调度子系统建立映射关系的对象属性数据实时同步到抽象缓存模板中;
c)使用事件驱动的订阅/发布方式,基于跨平台的0DBC数据库驱动来进行调度子系统模型的XML描述文件的生成和调度子系统之间的订阅/发布方式的数据交互。
其中步骤a)进一步包括:全局对象属性服务和各调度子系统私有的多维度数据服务的映射关系,是通过全局对象属性到各异构调度子系统源数据库列的关联关系完成的;公共数据服务属性对上的关系是多维的,即容器可以包含多个公共数据服务属性;同时源数据库列对上的关系也是多维的,即一个容器可以通过多个公共数据服务属性与多个多维的异构数据库私有数据服务属性相关联,从而完成了多维数据的向全局对象数据属性的集成。
其中所属公共数据服务和各异构数据库私有的多维度数据服务的映射关系,包括以下数据结构:
PubObjectType(公共对象类型)的定义如下:
PubDataAttribute(公共数据服务属性)的定义如下:
属性名 |
数据类型 |
描述 |
name |
DT_STRING |
名称 |
alias |
DT_STRING |
别名 |
RefSourceTableColumn |
DT_S_REF_SIM |
指向源数据列的单向引用 |
DMemberOf_ObjectType |
DT_S_DARRAY_MATE |
属于对象类型 |
SourceSystem(源系统)的定义如下:
属性名 |
数据类型 |
描述 |
name |
DT_STRING |
名称 |
alias |
DT_STRING |
别名 |
DContains_SourceDB |
DT_S_DARRAY_COMP |
包含源数据库 |
SourceDB(源数据库)的定义如下:
SourceTable(源数据库表)的定义如下:
属性名 |
数据类型 |
描述 |
name |
DT_STRING |
名称 |
alias |
DT_STRING |
别名 |
tableID |
DT_ULONG |
表ID |
DMemberOf_SourceDB |
DT_S_DARRAY_MATE |
属于源数据库 |
DContains_SourceTableColumn |
DT_S_DARRAY_COMP |
包含源数据列 |
SourceTableColumn(源数据库列)的定义如下:
属性名 |
数据类型 |
描述 |
name |
DT_STRING |
名称 |
alias |
DT_STRING |
别名 |
columnID |
DT_ULONG |
列ID |
DMemberOf_SourceTable |
DT_S_DARRAY_MATE |
属于源数据表 |
其中步骤b)进一步包括:订阅/发布模式的调度子系统数据交互,订阅/发布模式包括队列模式(阻塞,负载均衡的多对一方式)和广播模式(非阻塞,多对多方式)。通过建立的全局模型和调度子系统之间的模型映射以及数据属性映射,实时的把调度子系统数据同步到抽象缓存模板中。按照抽象缓存模板定义,分为普通缓存与GlS缓存两类。
其中实时性体现在数据更新完全由各调度子系统驱动,通过订阅/发布机制,更新要求被所有订阅的调度子系统获取并通过步骤a)中描述的对应系统的私有数据服务属性来进行数据的更新。
本发明中使用的事件驱动的订阅/发布方式解决传统数据交互的问题。目标系统在确认需要数据请求时通过发布事件的方式通知订阅方,然后订阅方按照发布方事件携带的参数来进行数据的请求,实时性和有效性得到保证,对目标系统负载影响也得到一定程度的减小。
其中所属调度子系统实时数据抽象缓存模板,包括以下数据结构:
CommonBuffer(通用缓存)的定义如下
属性名 |
数据类型 |
描述 |
sysname |
DT_STRING |
子系统标识字符串 |
gid |
DT_STRING |
全局ID |
gid_type |
DT_ENUM |
全局ID类型 |
sid |
DT_STRING |
源系统ID |
sid_type |
DT_ENUM |
源系统ID类型 |
measure_type |
DT_STRING |
量测类型 |
value |
DT_DOUBLE |
值 |
time |
DT_TIME |
时间 |
GisBuffer(Gis缓冲区)的定义如下
属性名 |
数据类型 |
描述 |
sysname |
DT_STRING |
子系统标识字符串 |
gid |
DT_STRING |
全局ID |
gid_type |
DT_ENUM |
全局ID类型 |
sid |
DT_STRING |
源系统ID |
sid_type |
DT_ENUM |
源系统ID类型 |
measure_type |
DT_STRING |
量测类型 |
longitude |
DT_DOUBLE |
经度 |
latitude |
DT_DOUBLE |
维度 |
value |
DT_DOUBLE |
值 |
time |
DT_TIME |
时间 |
其中步骤c)进一步包括:在调度子系统之间进行数据交换的方式采用跨平台universal ODBC方式,实时数据与事件类数据采用消息服务的订阅/发布模式在调度子系统之间进行调用。订阅/发布模式包括队列模式(阻塞,负载均衡的多对一方式)和广播模式(非阻塞,多对多方式)。保障了调度子系统之间或者调度子系统与上层系统之间交互的有效性、可靠性和实时性。监测中心和调度子系统B订阅A系统数据更新事件。当调度子系统A发布更新事件时,监测中心和调度子系统A进行数据交互,调度子系统B和监测中心进行数据交互,见图3。
其中所属消息订阅/发布,包括以下数据结构:
MessageSubscribe (消息订阅)的定义如下
属性名 |
数据类型 |
描述 |
sysname |
DT_STRING |
子系统标识字符串 |
subscribe_destination |
DT_STRING |
订阅消息主题名 |
destination_type |
DT_ENUM |
主题类型(queue/topic) |
message_type |
DT_ENUM |
消息类型 |
enabled |
DT_BOOLEAN |
是否启用 |
MessagePublish(消息发布)的定义如下
属性名 |
数据类型 |
描述 |
sysname |
DT_STRING |
子系统标识字符串 |
publish_destination |
DT_STRING |
发布消息主题名 |
destination_type |
DT_ENUM |
主题类型(queue/topic) |
message_type |
DT_ENUM |
消息类型 |
enabled |
DT_BOOLEAN |
是否启用 |