摘 要:针对关系型数据库系统在变电站自动化系统的实时应用中存在的缺陷,根据变电站的结构与特点,分析了变电站自动化系统中实时数据库系统的构成,利用面向对象技术给出了变电站自动化系统实时数据库的数据模型与接口实现方法,对其体系结构、分布式机制、系统特色等方面进行了探讨。
关键词:变电站;实时数据库;分布式体系结构
Abstract:To the limitation of the relative database system existed in the realtime application of substation automation system, the paper analyses the composition of the realtime database (RTDB) of substation automation system according to the structure and features of substation automation. A method of realizing data model and interface using objectoriented technology is given. The system structure, distribution mechanism and some features are also discussed.
Keywords:substation;realtime database;distribution mechanism
0引言
在变电站自动化系统中需要对变电站运行进行监视、控制和管理,不仅需要维护大量的共享数据和控制知识;而且这些应用活动的完成又具有严格的时限,要求在某时刻或某有限时间内把从RTU采集来的遥测、遥信和电量数据,按彼此间的关联存取和处理,这些数据的有效时间是短暂的,过时则失效,因此变电站自动化系统的正确性不仅依赖于逻辑结果,而且还依赖于逻辑结果产生的时间[1]。关系型数据库在存储和管理永久性、非短暂数据方面虽然有着广泛的应用,但是,由于它主要存储在慢速的外部存储设备,执行时间不可预测,没有定时性,利用它管理实时数据显然存在着严重的不足。因而将实时技术和数据库技术相结合,进行变电站自动化系统的实时数据库系统方面的研究是非常必要的。
为适应大型变电站和集控站的需要,系统采用分层分布式结构,即按照变电站被监控、保护对象和系统功能,分布设置多台微机,并将它们连接到能共享资源的网络上实现分布式处理;功能结构如图1所示,SCADA系统主要由前置数据处理模块,SCADA服务模块,实时库维护模块,画面监视模块构成。前置数据模块解释各种规约,不同规约分别作成规约库,根据变电站的具体规约配置由前置数据进程动态加载。前置机将解释出来的YC,YX,KWH的原码以及解释后的SOE放入共享内存,SCADA服务模块通过共享内存与前置机通信,读取这些生数据,经过处理后生成熟数据,写入实时库;另外,SCADA服务模块还完成一些可控对象的遥控和遥调功能。实时库维护进程负责实时数据库的备份,动态加载,向客户端提供数据服务。画面监视模块完成实时数据、曲线、动画的显示,事故报警,报表的制作与打印等。PAS主要完成变电站系统大量在线综合分析和计算,包括:无功电压综合控制、故障分析与控制等。其数据信息主要是设备参数信息及大量的实时运行状态信息等。通过配置Web服务器,用户经过管理网关的身份验证后,可在Internet各处使用浏览器监控整个变电站监控运行的动态情况。
实时数据库首先是一个数据库管理系统,它应具有一般DBMS的基本功能,包括有效的数据存取,各种数据库操作,任务的调度与并发控制以及恢复机制。实时数据库的体系结构包括实时任务调度与管理、内存数据库、I/O调度。其中内存数据库是实时数据库的核心之一,它包括数据库数据模型、数据操作、实时资源管理和网络通信[2]。
2.1内存数据库的结构
内存数据库要求较大内存,但如果内存开辟的过大,将会影响操作系统的运行性能,因此将两类数据保存在内存,一类是具有暂短有效时间的数据,如遥测量、遥信量、电度量等数据;二类是存取频率高的数据,如计算规则和参数配置等数据。
在系统设计中采用C 语言和面向对象技术来构造数据表类和数据库类。在这个系统中,核心类是数据库类,即RTDBDATA类,它控制着对数据库的交互应用,包括事务管理、内存分配、数据库访问等,主要封装了三类成员: ① 同步事件对象; ② 由数据表类声明的对象; ③ 从通信协议层接收、发送数据和任务管理。
内存数据库中的数据存放在表中,一个数据库中可以包含很多个表。这里的表对应于C 中的类,表中的记录对应于类的实例,相同类型的记录放在同一个表中,主要有遥测类、遥信类、电度类、计算规则类、控制操作类和操作规则类。遥测类包含越限监视、最值和平均值统计、历史采样处理等任务;遥信类包含变位监视、复合遥信计算等任务;电度类包含电量累计与统计等任务;控制类包含控制等任务。利用RTDataTable类作为实时数据库中所有数据表类的基类,是抽象类,封装了实时数据表类的公共属性和方法;RTData类作为RTYcTable(遥测类)、RTYxTable (遥信类)、RTKwhTable(电量类)和RT-Control(控制类)的基类,是抽象类,封装了启动Start、停止Stop等方法,派生于RTDataTable类;RTRules类是RTCalculate(计算规则类)和RTCondition(控制规则类)的基类;封装了计算等任务,也派生于RTDataTable类。
2.2实时任务调度管理与数据安全问题
在变电站自动化系统中,实时任务之间、数据对象之间关系比较复杂,存在着相互制约和相互依存的现象,因此必须管理好各实时任务的活动和冲突问题。线程是解决并发冲突的有效技术,它具有临界区、互斥、信号量、消息、同步事件和互锁函数等多种同步机制,可用来解决资源共享和线程之间的协调问题。另外实时数据库也有用户及权限管理的问题,在实时数据库中应建立若干用户,对每一用户给予不同的权限。比如超级用户(可访问所有的实时库,可以对数据进行读写),SCADA用户(只对SCADA实时库有读写权限),一般用户(只能进行读操作)。
实时数据库保存从现场(I/O)测控单元采集实时数据,其数据在每次系统扫描周期之后被刷新一次,在实时数据库中可以保存模拟量、数值量、脉冲累计量、控制量、计算量、虚拟量等类型的点,实时数据库支持用户对实时数据的编辑、查询。
3.1数据库的启动与初始化
实时数据库系统在未启动时以文件的形式存放硬盘上。实时库在启动的时候需要一个参照的蓝本,叫做实时库表结构,此表结构存放在历史库中,此表结构定义了实时库中数据表的表模式和列模式。启动时,从历史库中读自身的结构,形成相应的实时库表,将其安装在内存,以保证数据的查找,满足数据更新的实时性。主要完成: ① 为数据库分配内存,使之驻留内存; ② 根据变电站的层次结构,为各库建立层次型的指针连结,即上一层库的记录对下一层数据库相关记录的指针,并检验层次指针的合理性和层次结构的完整性; ③ 启动主线程序,为各种应用提供数据服务。
3.2数据库的管理系统
在实时数据库启动前可以利用此管理系统进行实时数据库配置库的设定,包括表结构以及触发器的设定。实时数据库启动后此管理系统可实现实时数据库的交互式录入和维护功能,主要有:拓扑结构和设备数据的录入、修改和删除、SCADA数据的录入、修改和删除。变电站的设备发生变动时,可以及时地反映到实时库中,可通过消息实现在线维护和数据表的动态加载。实时数据库提供与商用数据库类似的数据库定义语言(DML)和数据库操作语言(DDL)。其中DDL包括create table,drop table等,DML包括select,update,delete,insert等,并且提供实时库客户端来完成这些操作。
3.3事件驱动机制
实时数据库一般情况下均处于被动状态,但在应用过程中,有些功能包含了数据主动服务的要求,即一些应用功能是由数据的变化而引起的,如越限告警、变位告警、事故告警等,这就需要实时数据库具有一定的主动功能,可以仿照关系数据库