1.1 实时数据库系统体系结构设计和描述
作为流程工业自动控制系统的综合数据平台,实时数据库在企业生产信息的集成、存储和处理环节均起着关键作用,是流程工业信息化的核伯基础设施。实时数据库具有强大的多源异构数据采集接口,优异的实时数据存储与巧问性能,高效的历史数据压缩与条件检索能力,以及数据与服务的高可靠性和高可用性。
关系数据库服务器应用服务器实时管理调度管理设备管理安全管理工作站服务器服务器工作站工作站工作站实时数据库系统服务器工作站工作站PLC密炼、准备、成型DCS化工、石化SCADA机台智能仪表长输管线HMI
图1.1 实时数据库在流程工业信息化架构中的定位
由图1.1可见,实时数据库位于流程工业信息化架构中的MES层,对PCS
层的工业现场过程数据进行实时采集、可靠存储和高效处理,为同层的实时管理、调度管理、设备管理、安全管理等应用提供高效的数据服务。 1.1.1 工程数据系统分析
流程工业的实时数据库中需要管理的数据有:位号实时数据、位号的历史数据、服务器信息、位号的属性信息、系统状态信息、角色权限信息、批次信息、计算结果信息等。
主要的时态关系包括服务器的有效性和位号的有效性;位号的暂态属性;实时数据和历史数据的时态,位号的有效性和相关实时数据和历史数据的有效性;系统的暂态信息;服务器的状态信息等。这些数据之间的关系如图1.2所示。
服务器服务器属性自定义组位号其他索引位号属性实时数据内存历史数据 图1.2 实时数据库系统功能数据模型
1.1.2 现存实时数据库系统数据管理模型分析
目前现存的一些实时数据库产品有Wonderware公司的Industrial SQL Server\\AspenTech公司的InfoPlus、HoneyWell公司的UnifomreneepHD、OSI公司的PI等。它们的实时数据库模型主要采用如下两类方法来建模。
1) 使用关系数据库的数据模型
这种数据模型可以方便地表达复杂的逻辑关系,但是关系数据库很难支持对数据对象的描述,其查询和访问速度也很难满足高实时性的要求。W6ndersare公司的nIdusitralsQLsverer就是这样的一个实时关系数据库系统。
2) 按照传统的功能模块式的数据管理模型
这种方式在数据管理上,它根据功能的需要添加相应的数据单元管理模块,根据需要与其他模块建立联系。这种方式使得各种数据单元模块清晰,在一定程度上方便了扩展。但是,模块之间关系复杂,同实时数据库的事务处理的模型很难集成,因而实时数据库事务的处理实现更加复杂。目前普遍使用的是这种方式。 1.1.3 位号映射模型
在位号的数据管理模型中,我们采用位号映射的方法来组织管理各种位号数据。基于流程工业需求的考虑,我们将位号分为4类:源位号、目标位号、虚拟位号、无源位号。这些位号的逻辑关系和存储结构如图1.3所示。
1.3 位号映射结构
1.1.4 数据设计
根据流程工业的需求我们首先确定位号属性、服务器属性、实时数据中包含的内容等(这里只列出主要的信息项)。参见表1.1-1.3:
表1.1 服务器属性表
服务器静态属性和定义 服务器名称 服务器节点名 服务器PROGID 服务器描述 接口软件名称 节点名称 节点ID 接口软件类型 服务器类型 服务器句柄 服务器运行状态 服务器运行状态标志 服务器的启动时间 当前时间 上次更新的时间 服务器状态 项目 标准属性 使能属性 采集属性 数据处理属性 报警属性 类型属性 数据的工程类型 位号的工程类型 描述 服务器名称,具有唯一性 服务器节点名,具有唯一性 服务器PROGID,具有唯一性 服务器描述 接口软件名称,具有唯一性 节点名称 节点ID 1-OPC 2-DDE 3-other OPC,DDE,other 服务器句柄,具有唯一性 服务器运行状态 服务器运行状态标志 服务器的启动时间 当前时间 上次更新的时间 服务器状态 表1.2 位号属性表 内容和说明 位号名、位号ID、上下限、位号单位、想成、来源等 使能标志 采样频率等 数据处理相关参数 哪种情况报警 位号类型 无、累计、给定、阈值、测量值 开关量输入、开关量输出等 变换、吹风器、合成等 表1.3 实时数据表 项目 描述 工程量 实际值 标准量 0-1之间的值 时间 位号数据改变的时间 报警类型 见位号的报警属性说明 质量码 标志位号的实时数据的可信程度 1.2 流程工业大型实时数据库的数据管理模型设计 1.2.1 数据模型总体设计
数据管理的总体模型中,按照实时数据库的标准数据模型的建模方法,划分数据模块,在模块内部按照功能组织数据,而且同一模块内部的数据具有相同类型的时态特性,满足事务处理和调度的需要。数据管理模型总体构成的示意图如图1.4所示。
图1.4 实时数据库数据管理分类示意图
1.2.2 数据的存储和多层索引
在本实时数据库中,采用内存实时数据库的策略。为了满足数据访问的实时性,还要设计优良的存储和索引结构,同时使用高效的实现技术。
实时数据库中的位号数据按照表集的方式来组织,除建立位号级的索引外,同时给这些表建立相应的索引,从而形成多级索引的结构。根据实时数据库的数据活动的分析,数据按照来源和数据类型进行分类,更加适合位号刷新活动和位号数据的存储。所以可以根据来源和数据类型组织数据表,位号的静态数据、实时数据、历史数据采用相同的索引方式,可以共享同一套索引结构。在该模型中,采用位号的实时数据和静态数据分别存储的方式,将位号的静态数据独立处理可以支持更多的应用,方便扩展,如支持批次管理等。 1.2.3 数据备份和恢复技术
目前实时数据库和内存数据库理论中恢复技术都是基于事务提交方式设计的系统恢复技术,这通常是在强实时系统环境下的事务管理方式。在流程工业的实时数据库系统中,事务是规定在某个时间长度内的,事务的提交方式不如强实时环境下的复杂,因而需要提出系统的基于工程数据安全的数据备份和恢复技 术。
在简化强实时内存数据库系统恢复技术后,分析了工程数据安全的需求,采 用了一种增量备份和启动恢复的策略,如图1.5所示。
图1.5 备份示意图
1.2.4 查询模型和查询优化
这里指的查询功能体系是指整个实时数据库系统的查询。其中查询可以在几
个部件中进行。首先是实时数据库核心部件,它提供实时数据库中所有工程数据包括组态信息的查询;其次是组态软件中的查询,这里的查询针对组态信息的查询,完全按照关系数据库的方式来组织,不仅包括各种条件查询还可进行SQL语句查询;最后是Web服务器中的查询。本节研究的重点是实时数据库核心部分的查询,在这部分中,查询任务具有一定的复杂性,而且需要满足实时性。 1.3 实时数据库的事务调度策略及其并发控制协议 1.3.1 事务调度、并发访问控制策略及其实现方法
实时数据库模块的核心部件是实时事务调度器。实时事务调度器主要解决 事务的优先级分配策略、超载管理以及并发事务的冲突处理等,实时事务调度器对多个客户端和数据采集接口发来的实时事务请求合理地调度,使尽可能多的实时事务在其截止期内完成。主要有以下几个模块:
1. 接收、暂存信息模块。负责接收多个客户端发来的请求信息,并将它们暂时存放到一内存缓冲区—邮箱R中,每个信息成为一个邮件。 2. 填写事务信息模块。该模块负责清查、处理内存缓冲区。 3. 实时事务调度模块。该模块通过对系统中某时刻所有请求调度的事务进行优先级比较、冲突加锁处理等一系列操作后,最终选择出本次调度将投入运行的事务。 4. 优先级分配管理模块。该模块根据一定的原则对到达系统的事务分配优先级,使得系统调度的事务有一定的尺度。 5. 并发控制模块。避免并发访问冲突。
模块之间的关系如图1.6所示:
1.6 事务调度模块间的关系
1.3.2 流程工业实时数据库并发控制协议
先分析流程工业实时数据库中并发访问发生的情况,实时数据库系统中的事务有客户端访问事务、数据采集事务、组态事务。针对不同的数据这些事务还可细分。并发访问示意如图1.7所示。
图1.7 实时数据库系统的并发访问事务关系
2. 历史数据库
2.1 历史数据库系统概述
DCS历史数据库最主要的功能是对历史数据进行存储和查询,它按一定的周期大小对实时数据库的实时数据进行采集、存储,以记录模拟量点和开关量的变化过程。DCS历史数据最主要的作用是用于操作员站的趋势查看和数值显示,对于历史数据分析,可分为在线形式和离线形式两种,在线形式主要是对历史趋势的分析,而转储到光盘或者磁带的部分则只能采用离线分析形式。 2.2 DCS历史数据库体系结构
图2.1 历史数据库系统框架图
DCS历史数据库系统框架如图2.1所示,历史数据库主要由初始化模块、数据收集模块、数据存储模块以及数据查询模块组成,这些是DCS历史数据库的
核心功能模块。历史数据库通过API调用从实时数据库采集实时数据。
数据收集模块:包括模拟量点和开关量的收集。模拟量点收集按照组态设定好的收集周期对各点依次执行收集,并依次存储到内存缓冲区中。开关量开始收集时,先从实时库读取各个点的初始值,之后等待消息队列有新消息通知时才从定长消息队列取出变位信息并转换成变位结构体存放在开关量的内存缓冲区。
数据存储模块:数据存储模块在内存缓冲区的数据收集满十分钟或者程序退出时,将内存缓冲区的数据转储为一个相应大小和相同时间段的磁盘文件。它要根据规则进行一系列操作,包括根据内存缓冲区的整十分钟起始时间计算出十分钟序号并作为文件名、创建文件并按数据文件结构的设计将相关信息从内存复制到文件、文件重名时的处理、存储完要对所用内存缓冲区初始化。开关量和模拟量点的存储分别用一个线程执行。
数据查询模块:根据信息指定的查询类型、查询方向、查询时间长度等判断是执行模拟量点查询还是开关量查询,是从内存缓冲区查询还是从磁盘文件查询。并执行响应的查询操作。
历史库初始化:每次在历史库刚开启时,需要历史数据库初始化模块来负责一些初始化操作,为后面的数据收集、存储、查询做好准备。 2.3 数据收集
2.3.1 模拟量点收集方式
模拟量点收集时按照工程师站组态好的固定大小的周期进行收集,用一个以收集周期为计数周期的变量来控制,当该变量能被周期整除时,就对所有模拟量点执行收集。收集时,由模拟量点收集线程调用实时库提供的API接口,依据需要收集的所有点的点号排列顺序依次读取模拟量点的实时值。每个模拟量点只存储采集值和质量位,总共5字节。这样的存储结构如表2.1所示。
表2.1 模拟量点历史数据存储结构
字段名 字段类型 描述 dwValue DWORD 采集时刻的值 bStat BYTE 历史状态 2.3.2 开关量点收集方式
DCS历史数据库对开关量点采用有变才存的策略,即任何一个开关量点,假如它原来是“0”状态,那么下一次收集要等到它变成“1”状态才收集。DCS历史数据库的开关量点变位存储结构如表2.2所示。其中历史值包括1bit历史状态,“无效标志位”、“可疑标志位”、“禁止标志位”分别只需1bit,因而每个开关量的历史数据值只需一个字节。
表2.2 开关量点变位结构体
bValue BYTE 历史值
2.4 数据存储
历史数据具有一次存储,多次读取的特点,设计思想是按日期来命名文件夹,文件夹里存放当天的所有数据文件。现有的DCS历史数据库按整十分钟来划分每天的历史数据,这样每个十分钟在当天144个十分钟里都有自己的序号,以此
字段名 iTime shMs shPid 字段类型 time_t short unsigned short 描述 发生变位的时间 发生变位时间的毫秒数 发生变位的开关量点的点号 序号命名相应的文件。然后在当天文件夹下,创建该文件,最后根据文件结构的设计将内存缓冲区的数据写入到文件。长期大量的数据并不影响历史数据库的搜索速度,因为增加的数据只是多一个文件夹,而文件夹得名字都是有规律的,可以根据查询时间,直接打开对应的文件夹。同时用户在需要获取某个时间段的数据文件时能够快速找到。
数据文件xx年1月1日xx年1月2日 xx年2月1日文件夹历史库存储路径xx年2月2日 xx年2月29日 xx年12月1日xx年12月2日 xx年12月31日0.dat1.dat 143.datDIG0.datDIG1.dat DIG143.dat 图2.3 历史数据文件磁盘存储目录结构
2.5 数据查询
在查询数据时,系统会依次查看内存数据库、二级缓存区和磁盘历史数据库,数据查询流程如图2.4所示,具体步骤为:
(1)根据查询条件遍历内存数据库中的实时数据,对内存数据库中的数据进行筛选判断,若所查数据都存在于内存数据库中,则读取符合条件的数据并返回;
(2)进入二级缓存中查询缓存区中的历史数据,若所查数据都在二级缓存区中,则读取符合条件的数据并返回;
(3)根据查询记录点的记录方式,进入时间索引文件,先按照顺序查询起始时间所在的信息单元,再查询结束时间所在的信息单元,将所有满足查询条件的历史文件组名记录;
(4) 根据历史文件组名在二级索引文件进一步查询,先在数据块文件中查询满足符合时间条件的历史数据块信息,包括历史数据块的起止时间、起始位置;
(5)进入对应的信号点索引信息文件,查询记录点所在数据块的历史数据信息,包括记录点在对应历史数据块中的位置和压缩后的历史数据量;
(6)根据信号点索引信息文件查询到符合条件的历史数据文件,读取相应的历史数据和“相对时间”。
开始查询遍历内存数据库是所需查询的数据是否都在内存数据库否遍历二级缓存区是所需查询的数据是否都在二级缓存区读取内存库中符合条件的数据否遍历时间索引文件,查询符合条件的历史文件组编号符合查询时间条件的历史文件组读取二级缓存区符合条件的数据历史文件组编号读完读取文件组编号进入二级索引下一数据块遍历一数据块索引文件查询满足条件的历史数据块遍历信号索引文件查询历史数据在数据块中的位置和相对时间查询下一个记录点在历史数据文件中读取符合条件的历史数据查询结束图2.4 历史数据查询流程图
3. 系统测试验证 3.1 实时数据库管理
实时数据库编辑实现实时数据库的管理,创建、删除变量,设置、修改变量属性,包括变量的基本属性(变量名、读写属性、变量类型、物理描述、工程单位、最大值、最小值、变量转换系数等)、报警属性(界限值报警和变化率报警)和数据采集属性(数据来源、数据设备、寄存器、寄存器类型),其中数据报警
属性设置报警方式,数据采集属性设置变量值的来源与输出。实时数据库管理界面如图3.1示。
图3.1 实时数据库管理界面
3.2 历史记录配置
历史记录配置软件界面如图 2.6示,主要包括了窗口标签、菜单栏、工具栏、导航栏、详细信息列表显示区和状态栏等。其中,窗口标签显示了当前历史数据库的状态。导航栏显示了历史记录方式及其分组。详细信息列表显示区以列表形式显示所有历史记录点的详细信息,包括工作站、Tag ID、变量名、变量类型、记录方式等。
配置信息中可以设置存储路径、添加/删除记录点,用来完成历史数据存储路径的设置和记录点的添加、删除和查询功能。
图3.2 历史记录配置界面
3.3 实时监控
实时历史数据库需要长时间稳定、在线运行,为组态软件的运行提供数据支持,系统每隔1秒从实时数据库读取实时数据刷新到组态画面上,用户可以看到记录点的最新实时数据,实现电站管理、设备管理,查看设备数据、气象数据。系统运行时候实时数据更新如图3.3示。
图3.3 实时数据库运行数据
因篇幅问题不能全部显示,请点此查看更多更全内容