| WO/1995/014281 | METHOD OF AUTOMATICALLY MODELLING PART OF AN OVERALL PROCESS BY MEANS OF A COMPUTER |
| JP01258438 | ARTICLE INFORMATION CONTROL SYSTEM |
| JP2001001227 | TRANSFER MACHINE |
王常力 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
SHI, Bo (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
施波 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
YUAN, Xuefeng (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
杭州和利时自动化有限公司 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
WANG, Changli (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
王常力 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
SHI, Bo (North No. 1, No. 19 Road Xiasha Economic and Technological Development Zon, Hangzhou Zhejiang 8, 310018, CN)
施波 (中国浙江省杭州市下沙经济技术开发区19号路北1号, Zhejiang 8, 310018, CN)
| 权 利 要 求 1、 一种分布式控制系统的历史数据处理方法, 其特征在于, 所述方法包 括: 采集分布式控制系统 DCS中的实时变量数据; 利用两块内存交替按照预置存储规则对所述变量数据进行存储,并对依次 存储的变量数据分配以示区分的标识信息, 当利用其中一块内存进行存储时, 将另一块内存中已存储的变量数据转移至存储磁盘。 2、 根据权利要求 1所述的分布式控制系统的历史数据处理方法, 其特征 在于, 所述将另一块内存中已存储的变量数据转移至存储磁盘之后, 所述方法 还包括: 将当前转移至存储磁盘中的变量数据和已存储在所述存储磁盘中的历史 变量数据进行比较, 如果变量数据携带的标识信息相同, 则进行数据合并、 分 类处理。 3、 根据权利要求 1所述的分布式控制系统的历史数据处理方法, 其特征 在于, 当需要查询已存储的变量数据时, 所述方法还包括: 判断需要查询的数据所属的标识信息; 判断内存中未转移至所述存储磁盘的变量数据中是否包括携带有该标识 信息的变量数据, 如果是, 则先读取内存中携带有该标识信息的变量数据, 然 后读取所述存储磁盘中携带有该标识信息的变量数据; 根据变量数据中携带的标识信息确定是否查询到所有变量数据。 4、 根据权利要求 1所述的分布式控制系统的历史数据处理方法, 其特征 在于, 所述利用两块内存交替按照预置存储规则对所述变量数据进行存储, 包 括: 按照预置时间间隔或预置内存容量阈值,利用所述两块内存交替对所述变 量数据进行存储。 5、 根据权利要求 1-4中任一项所述的分布式控制系统的历史数据处理方 法, 其特征在于, 所述方法还包括: 当所述磁盘的存储空间达到预设的阈值时, 自动删除磁盘中存储时间最长 的历史变量数据。 6、 一种分布式控制系统的历史数据处理装置, 其特征在于, 所述装置包 括: 数据采集单元, 用于采集分布式控制系统 DCS中的实时变量数据; 存储单元,用于利用两块内存交替按照预置存储规则对所述变量数据进行 存储, 并对依次存储的变量数据分配以示区分的标识信息, 当利用其中一块内 存进行存储时, 将另一块内存中已存储的变量数据转移至存储磁盘。 7、 根据权利要求 6所述的分布式控制系统的历史数据处理装置, 其特征 在于, 所述装置还包括: 合并、分类处理单元, 用于将当前转移至存储磁盘中的变量数据和已存储 在所述存储磁盘中的历史变量数据进行比较,如果变量数据携带的标识信息相 同, 则进行数据合并、 分类处理。 8、 根据权利要求 6所述的分布式控制系统的历史数据处理装置, 其特征 在于, 所述装置还包括: 第一判断单元, 用于判断需要查询的数据所属的标识信息; 第二判断单元,用于判断内存中未转移至所述存储磁盘的变量数据中是否 包括携带有该标识信息的变量数据; 读取单元,用于当内存中未转移至所述存储磁盘的变量数据中包括携带有 该标识信息的变量数据, 则先读取内存中携带有该标识信息的变量数据, 然后 读取所述存储磁盘中携带有该标识信息的变量数据; 第三判断单元,用于根据变量数据中携带的标识信息确定是否查询到所有 变量数据。 9、 根据权利要求 6所述的分布式控制系统的历史数据处理装置, 其特征 在于, 所述存储单元还包括: 存储条件设置子单元,用于当利用两块内存交替按照预置存储规则对所述 变量数据进行存储时,按照预置时间间隔或预置内存容量阈值, 利用所述两块 内存交替对所述变量数据进行存储。 10、根据权利要求 6-9中任一项所述的分布式控制系统的历史数据处理方 法, 其特征在于, 所述装置还包括: 磁盘整理单元, 用于当所述磁盘的存储空间达到预设的阈值时, 自动删除 磁盘中存储时间最长的历史变量数据。 |
本发明涉及工业自动化控制技术领域, 更具体地说, 涉及一种分布式控制 系统的历史数据处理方法和装置。
背景技术
目前, DCS ( Distributed Control System , 分布式控制系统) 已经广泛应 用于核电、 火电、 化工等领域。
在利用 DCS进行管理控制的过程中所产生的历史数据在 整个操作过程中 具有很重要的作用。对这些历史数据的处理通 常通过数据库执行。现有技术中, 目前普遍的做法是采用专用程序和专业数据库 软件对历史数据执行管理。其实 现过程是: 在进行历史数据存储数据时, 由专用程序负责数据的处理过程, 然 后把完成处理的且需要存储的数据放入专业数 据库中;当需要进行历史数据查 询时, 从专业数据库中, 按照关键字检索数据, 然后经过专用程序处理后, 返 回给用户。
上述方法在很多商业数据库和小型 DCS控制系统中广为采用。由于采用了 专业数据库, 数据通用性比较好, 可以 4艮好的和第三方系统进行交互。
但是, 通过发明人的研究发现, 现有技术中仍然存在着以下缺点: 由于专业数据库需要满足各个应用系统的应用 需要, 因此,使用者通常会 发现以高昂的价格买了很多不需要的功能,数 据库系统比较庞大, 容易由于专 业数据库的问题, 导致软件故障; 此外, 在这样的数据库中, 很难迅速定位问 题,灵活性较差,就算能确认是专业数据的问 题,问题被解决的周期也比较长。
发明内容
有鉴于此,本发明实施例提供一种分布式控制 系统的历史数据处理方法和 装置, 以便提高历史数据处理的可靠性和高效性。 本发明实施例提供一种分布式控制系统的历史 数据处理方法,所述方法包 括:
采集分布式控制系统 DCS中的实时变量数据;
利用两块内存交替按照预置存储规则对所述变 量数据进行存储,并对依次 存储的变量数据分配以示区分的标识信息, 当利用其中一块内存进行存储时, 将另一块内存中已存储的变量数据转移至存储 磁盘。
优选的, 所述将另一块内存中已存储的变量数据转移至 存储磁盘之后, 所 述方法还包括:
将当前转移至存储磁盘中的变量数据和已存储 在所述存储磁盘中的历史 变量数据进行比较, 如果变量数据携带的时间戳信息相同, 则进行数据合并、 分类处理。
优选的, 当需要查询已存储的变量数据时, 所述方法还包括:
判断需要查询的数据所属的标识信息;
判断内存中未转移至所述存储磁盘的变量数据 中是否包括携带有该标识 信息的变量数据, 如果是, 则先读取内存中携带有该标识信息的变量数据 , 然 后读取所述存储磁盘中携带有该标识信息的变 量数据;
根据变量数据中携带的标识信息确定是否查询 到所有变量数据。
优选的,所述利用两块内存交替按照预置存储 规则对所述变量数据进行存 储, 包括:
按照预置时间间隔或预置内存容量阈值,利用 所述两块内存交替对所述变 量数据进行存储。
优选的, 所述方法还包括:
当所述磁盘的存储空间达到预设的阈值时, 自动删除磁盘中存储时间最长 的历史变量数据。
一种分布式控制系统的历史数据处理装置, 所述装置包括:
数据采集单元, 用于采集分布式控制系统 DCS中的实时变量数据; 存储单元,用于利用两块内存交替按照预置存 储规则对所述变量数据进行 存储, 并对依次存储的变量数据分配以示区分的标识 信息, 当利用其中一块内 存进行存储时, 将另一块内存中已存储的变量数据转移至存储 磁盘。 优选的, 所述装置还包括:
合并、分类处理单元, 用于将当前转移至存储磁盘中的变量数据和已 存储 在所述存储磁盘中的历史变量数据进行比较, 如果变量数据携带的标识信息相 同, 则进行数据合并、 分类处理。
优选的, 所述装置还包括:
第一判断单元, 用于判断需要查询的数据所属的标识信息;
第二判断单元,用于判断内存中未转移至所述 存储磁盘的变量数据中是否 包括携带有该标识信息的变量数据;
读取单元,用于当内存中未转移至所述存储磁 盘的变量数据中包括携带有 该标识信息的变量数据, 则先读取内存中携带有该标识信息的变量数据 ,, 然 后读取所述存储磁盘中携带有该标识信息的变 量数据;
第三判断单元,用于根据变量数据中携带的标 识信息确定是否查询到所有 变量数据。
优选的, 所述存储单元还包括:
存储条件设置子单元,用于当利用两块内存交 替按照预置存储规则对所述 变量数据进行存储时,按照预置时间间隔或预 置内存容量阈值, 利用所述两块 内存交替对所述变量数据进行存储。
优选的, 所述装置还包括:
磁盘整理单元, 用于当所述磁盘的存储空间达到预设的阈值时 , 自动删除 磁盘中存储时间最长的历史变量数据。
同现有技术相比, 本发明提供的技术方案通过内存和磁盘相接合 , 并且最 终的实时变量数据是以磁盘文件的形式存储, 从而避免把大量的数据存放在内 存, 既占用了系统的大量资源, 另外如果发生断电等意外故障, 数据丟失也越 多的缺陷, 提高了历史数据处理的可靠性; 此外, 通过在变量数据的存储过程 中为变量数据分配以示区分的标识信息,便于 在数据查询过程中对变量数据的 定位, 从而方便判断实时变量数据存储中是否产生数 据的丟失。
附图说明 为了更清楚地说明本发明实施例的技术方案, 下面将对实施例或现有技术 描述中所需要使用的附图作筒单地介绍,显而 易见地, 下面描述中的附图仅仅 是本发明的一些实施例,对于本领域普通技术 人员来讲,在不付出创造性劳动 的前提下, 还可以根据这些附图获得其他的附图。
图 1 为本发明实施例提供的一种分布式控制系统的 历史数据处理方法流 程示意图;
图 2为本发明实施例提供的数据的采集和存储线 示意图;
图 3 为本发明实施例提供的一种分布式控制系统的 历史数据处理装置结 构示意图;
图 4 为本发明实施例提供的另一种分布式控制系统 的历史数据处理装置 结构示意图;
图 5 为本发明实施例提供的第三种分布式控制系统 的历史数据处理装置 结构示意图;
图 6 为本发明实施例提供的又一种分布式控制系统 的历史数据处理装置 结构示意图。
具体实施方式 下面将结合本发明实施例中的附图,对本发明 实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是 全部的实施例。基于本发明中的实施例, 本领域普通技术人员在没有做出创造 性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
首先对本发明提供的分布式控制系统的历史数 据处理方法进行说明,参照 图 1所示, 所述方法包括:
步骤 101、 采集分布式控制系统 DCS中的实时变量数据;
步骤 102、 利用两块内存交替按照预置存储规则对所述变 量数据进行存 储, 并对依次存储的变量数据分配以示区分的标识 信息, 当利用其中一块内存 进行存储时, 将另一块内存中已存储的变量数据转移至存储 磁盘。
本发明提供的技术方案通过内存和磁盘相接合 ,并且最终的实时变量数据 是以磁盘文件的形式存储,从而避免把大量的 数据存放在内存, 既占用了系统 的大量资源, 另外如果发生断电等意外故障, 数据丟失也越多的缺陷, 提高了 历史数据处理的可靠性; 此外,通过在变量数据的存储过程中为变量数 据分配 以示区分的标识信息,便于在数据查询过程中 对变量数据的定位,从而方便判 断实时变量数据存储中是否产生数据的丟失。
为了便于对存入硬盘的数据进行管理, 本发明实施例中,将当前转移至存 储磁盘中的变量数据和已存储在所述存储磁盘 中的历史变量数据进行按预置 的合并条件进行合并、 分类处理。 预置的合并条件可设置为: 数据库的版本级 别以及变量数据中携带的时间戳信息。
如果硬盘中已存储有携带有某种标识信息, 例如时间戳信息的变量数据, 则将当前变量数据转存入硬盘时, 通过判断是否满足合并条件 , 决定是否应 该将当前刚刚转存的变量数据和硬盘中已存储 的变量数据进行合并、 分类处 理。 当然,数据合并的前提条件是硬盘中已存储的 变量数据和当前需要转存的 变量数据属于同一数据库版本。 当满足合并条件时, 则进行两部分数据的合并 及分类,例如:将属于同一数据库版本且具有 相同时间戳信息的数据进行合并, 存入同一个文件中。如果硬盘中已存储的数据 以文件的形式进行保存,通过合 并、 分类处理, 可以将相关的数据保存在同一个文件中, 便于后续对硬盘中数 据的查询读取。 否则, 如果当前转存的变量数据不满足合并条件时, 则对已存 储的文件进行重命名, 并进行备份, 新存入的数据将占用原来数据的文件名。
本发明实施例中, 当需要读取数据时, 需要首先判断需要查询的数据所属 的标识信息; 然后, 判断内存中未转移至所述存储磁盘的变量数据 中是否包括 携带有该标识信息的变量数据,如果是, 则先读取内存中携带有该标识信息的 变量数据, 然后读取所述存储磁盘中携带有该标识信息的 变量数据; 并且, 根 据变量数据中携带的标识信息确定是否查询到 所有变量数据。
仍以标识信息中的时间戳信息为例,由于内存 中 艮可能仍存储有未转存至 硬盘的数据, 需先判断查询时间段, 即查询数据所属的时间段, 并根据变量数 据携带的时间戳信息判断当前内存中是否留有 属于该时间段的变量数据,如果 内存时包括了该时间段的变量数据,则需要先 读取内存中属于该时间段的且未 转移至所述存储磁盘的变量数据,然后读取所 述存储磁盘中属于该时间段的变 量数据;根据变量数据中携带的时间戳信息确 定是否查询到所有属于该时间段 内变量数据。
由于每次变量数据在内存中存储时,都被分配 有以示区分的标识信息, 因 此, 在数据读取过程中, 通过统计计算所读取的数据中携带的标识信息 , 可以 确定是否查询到所有变量数据。
此外, 本发明实施例中的预置存储规则根据实际应用 场景, 可以规定为按 照预置时间间隔或预置内存容量阈值,利用所 述两块内存交替对所述变量数据 进行存储。 例如: 当存储规则规定时间间隔时, 则利用第一块内存进行规定时 间内的数据存储, 到存储时间到达规定时间时, 启用另一块内存, 接着由另一 块内存进行数据存储, 此时, 第一块内存将其存储的数据转存入硬盘; 当第二 块内存的存储时间到达规定时间时, 再由第一块内存进行数据存储, 同时, 由 第二块内存将其存储的数据转存入硬盘; 依次类推。 同理, 预置内存容量阈值 时, 则当其中一块内存的存储量到达预置内存容量 阈值时, 启用另一块内存进 行数据存储, 同时,将存储量到达预置内存容量阈值的内存 中的数据转存入硬 盘中。 当然, 具体的时间间隔和容量阈值可以根据实际应用 进行合理设置, 本 发明对此不做具体限定。
由于最后的变量数据都是存储在硬盘中,为了 避免硬盘因为存储量已满使 得新的数据存储失败从而导致数据丟失, 可以为硬盘设置存储空间预置, 当硬 盘的存储空间达到预设的阈值时, 自动删除磁盘中存储时间最长的历史变量数 据。 从而, 保证硬盘中始终存在有足够的存储空间。
为了便于对本发明进一步的理解,下面仍以分 布式控制系统中的历史数据 在分布式控制系统中,产生的实时变量数据通 常包括实时模拟量数据和实 时开关量数据。 此外, 分布式控制系统中的历史数据库是多线程处理 系统。 所 谓线程是一组指令的集合, 或者是程序的特殊段, 它可以在程序里独立执行, 也可以把它理解为代码运行的上下文。所以线 程基本上是轻量级的进程, 它负 责在单个程序里执行多任务。 通常由操作系统负责多个线程的调度和执行。
多线程是这样一种机制, 它允许在程序中并发执行多个指令流,每个指 令 流都称为一个线程,彼此间互相独立。多线程 和进程一样拥有独立的执行控制, 由操作系统负责调度。 多线程是多任务的特殊形式。 通常, 有两种类型的多任 务: 基于进程和基于线程的多任务。 进程本质上是正在执行的程序。 因此, 基 于进程的多任务就是允许计算机同时运行两个 或者更多程序的特性。例如,基 于进程的多任务允许使用电子制表软件或者浏 览 Internet的同时运行文字处理 程序。 在基于进程的多任务中, 程序是调度程序可以分派的最小代码单元。 多 线程是为了使得多个线程并行的工作以完成多 项任务, 以提高系统的效率。 线 程是在同一时间需要完成多项任务的时候被实 现的。
历史数据库从功能上进行划分,可以分为实时 变量数据的采集存储和历史 变量数据查询两大部分。从版本上, 历史库数据库提供了离线历史库版本和在 线历史库两大版本。离线版本与在线版本的区 别是离线版本没有变量数据收集 功能, 只有数据查询功能。 所以它占的操作系统的资源比较少, 对环境的依赖 性也小。 当在现场环境受限制的情况下, 用户可以通过拷贝存储的历史数据, 在离线版本下分析数据。此外特别适用于当研 发人员不在现场时,也可通过工 程人员提供的现场历史数据, 真实还原现场的问题的情况, 分析数据, 排除故 障。
历史数据库是多线程结构,为数据库中的每个 主要功能各分配一个线程进 行相应的数据处理, 多线程之间协同工作, 在保证数据处理高效率的同时, 也 易于数据库的维护。
本发明实施例中, 历史数据库的主要线程包括:
( 1 ) 变量数据采集相关的线程, 主要包括: 模拟量数据收集线程, 开关 量数据收集线程, 模拟量数据存盘线程, 开关量数据存盘线程;
( 2 )对夕卜服务线程,主要包括:通过对外的 API ( Application Programming Interface, 应用程序编程接口)提供数据查询等其它服务 , 可以根据实际项目 需求, 配置服务线程的个数和各个线程的数据空间, 还包括 FTP ( File Transfer Protocol, 文件传输协议)服务线程, 同样, FTP服务线程也是可以配置的。
历史数据库对外提供丰富接口, 大多数 API接口已被封装成 COM接口, 支持 VB脚本语言, 对历史数据库的访问。 VB筒单的语言和语法结构, 方便 工程人员学习和扩展应用功能。 同时提供 FTP服务, 可以上传和下载文件。 DCS系统的其他模块, 可以把需要存储的文件, 发送给历史数据库存储。 可见, 本发明实施例中开放的服务 API设计, 扩展系统 API非常容易,可 以很容易配置服务的并发数量和访问数据大小 。
( 3 )其他辅助线程, 例如: 主从数据对齐线程, 磁盘空间维护线程。 通常,在线历史数据库是冗余的设计, 分为一个主历史数据库和一个从历 史数据库。 系统服务是基于 FLRPC (轻量级远程过程调用)的设计, FLRPC是 按照 RPC (远程过程调用 )协议的思想, 自行设计的, 满足工控需要的协议)。 由于通讯协议是自行设计, 可以灵活设置服务并发访问的数据, 并且可以配置 各个访问线程的数据空间大小。 另外基于该协议, 可以比较容易设计一主一从 的历史数据库服务器。主从的切换也是协议自 动根据网络状态进行切换。在正 常的情况下, 主历史数据库处于工作状态, 从历史数据库处于准备工作状态, 虽然处于准备工作状态,但设计上保证主从历 史数据库的数据是一致的。如果 主历史数据库发生故障,从历史数据库可马上 改变为工作状态, 两台历史数据 库的切换所需时间可以控制在 3s以内。 当主历史数据库收集到新的变量数据, 主从数据文件对齐维护线程都会启用,对主从 历史数据库中已经存盘的数据进 行比较,将主历史数据库收集到的新的变量数 据同时发送给从历史数据库,保 持两者数据的一致性。
下面结合图 2, 分别说明数据采集相关线程中的模拟量数据的 采集和存储 线程以及开关量数据的采集和存储线程。
对于模拟量数据的采集和存储来说, 首先, 工程师站下装模拟量点名项名 表到历史数据库;
工程师站主要是工程人员对数据库点的添加修 改,以及组态各种工业控制 流程图等。 工程师站组态完编译后, 会下装给历史数据库启动所需要的文件, 这些文件包括了历史数据库需要进行数据采集 的点项名信息,点项名就是数据 库中点的名字。 一个数据库点可以有很多项, 例如: AV代表当前值, MU代 表量程上限, MD代表量程下限;
历史数据库从模拟量点项名文件读取各个点项 的采集周期。历史数据库依 照采集周期, 把点项名分为各个注册组, 向实时库进行注册, 所谓采集周期即 指多长时间采集一次实时数据的值。 实时库给每个注册组分配一个组号。 需要 说明的是, 历史数据库与实时数据库是密切相关的。历史 数据库的数据都是来 自实时数据库的,数据包括:实时数据库主动 发送给历史数据库的开关量数据; 历史数据库定时主动向实时数据库请求的模拟 量数据。
本发明实施例中, 采用按照预置时间间隔, 利用所述两块内存交替对模拟 量数据进行存储为例进行说明。 当历史数据库初始启动时, 创建例如 10分钟 存储时间间隔的两块内存。 10分钟内采集的模拟量数据存到其中一块内存 , 当到达 10分钟的存储时间时, 进行内存切换。 另一块内存开始接收模拟量数 据。原来那一块内存中的模拟量数据将转存到 本地磁盘, 并为转存入硬盘的数 据分配标识信息, 例如: 表示存储顺序的编号信息。
开关量数据的采集与模拟量不同,模拟量是历 史数据库按照组态的点项的 采集周期, 主动请求实时数据库的,数据量的大小是可以 根据点项的个数和采 集周期, 进行计算的。 但是开关量的数据是历史数据库被动接受的, 有变位时 由实时数据库主动向历史数据库发送。
历史数据库根据下装的开关量的点项名信息, 对实时数据库发送的变位信 息进行过滤, 由于开关量是历史数据库被动收集的, 是有变位才收集的, 不需 要收集的变位或已经收集的重复变位信息进行 丟弃。 当然,对于哪些点项变位 信息需要在历史库收集, 已在实时数据库中进行相关设置。
仍采用按照预置时间间隔,利用所述两块内存 交替对模拟量数据进行存储 为例进行说明。 当历史数据库初始启动时, 创建例如 10分钟存储时间间隔的 两块内存。 10分钟内采集的开关量数据存到其中一块内存 , 当到达 10分钟 的存储时间时, 进行内存切换。 另一块内存开始接收开关量数据。 原来那一块 内存中的开关量数据将转存到本地磁盘,同样 为转存入硬盘的数据分配标识信 息, 例如: 表示存储顺序的编号信息。
通常, 存储在磁盘中的数据以文件形式进行存储。 对于开关量数据来说, 其在文件中是队列模式, 因此, 先存入的数据存放于磁盘中偏移量小的地方; 对于模拟量数据,对应每个点项的变量数据在 逻辑上存放于硬盘中的同一 个区域。 根据偏移量, 硬盘中依次出现对应第一个点项的数据区域, 第二个点 的数据区域 ... ...需要说明的是,在对应于第一个点项的数据 区域, 包括采集时 间段内对应第一个点项的所有 N个采集值, 分别是时间 1 的采集值, 时间 2 的采集值, 时间 3的采集值 ... ...时间 N的采集值。 因此, 每个文件代表所有 下装模拟量点项在固定时间段的所有变量数据 , 如果模拟量下装了 N个点项。 则从文件开始到结束, 分别是第一个点项数据区, 第二个点项数据区 ......第 N 个点项数据区。
因此, 可以根据依次为文件分配的标识信息, 为每天的文件数据建立一个 文件夹。 通过查找具体的文件夹和文件, 迅速找到某一段时间所存储的数据。
除此之外, 当查询服务线程启动后, 历史数据库响应外部的查询请求, 开 始对磁盘中存储的变量数据进行查询。
对于模拟量数据, 首先将磁盘中的数据文件加载到内存; 通常, 模拟量数 据文件的设计是规则的,现行设计中, 只要是同一个版本的模拟量点项名下装 文件, 那么对应每个点项名的数据在每个文件中的位 置都是相同的, 并且每个 数据文件的大小也是相同的。 因此, 找到相应文件后, 可以根据偏移量找到相 应的数据。
对于开关量数据, 同样先将数据文件加载到内存, 开关量数据存储是按照 队列的模拟, 并且这些开关量点都是以链表的方式关联的。 本发明实施例通过 对普通链表数据结构的变换使用,优化查询。 链表是一种常见的重要的数据结 构。 它是动态地进行存储分配的一种结构。 它可以根据需要开辟内存单元。 链 表是指将若干个数据项按一定的规则连接起来 的表, 其中的数据项成为结点。 链表有一个 "头指针" 变量, 以 head表示, 它存放一个地址。 该地址指向一 个元素。 链表中每一个元素称为 "结点 ", 每个结点都应包括两个部分: 一为 用户需要用的实际数据, 二为下一个结点的地址。 因此, head指向第一个元 素: 第一个元素又指向第二个元素; ……, 直到最后一个元素, 该元素不再指 向其它元素,它称为 "表尾",它的地址部分放一个 "NULL" (表示 "空地址";), 链表到此结束。本发明实施例中的链接从物理 的存储上看是一个链接,但如果 从数据解析上看是多个链接组合成的一个大链 接。 例如有 A、 B、 C、 D四个 点, 文件中存储的开关量值队列是: A1,B1,B2,B3,A2,C1,A3,D1...这些变位在 文件中的位置是连续的, 每个变位所占的空间大小也是相同的。 以点 A为例, 其中 A1表示点 A的第一次变位, A2表示点 A的第二次变位, 其他可依次类 推。 那么在点 A的某一次变位项中, 均存储它前一次变位时的数据偏移量, 例如: 在 A3的该次变位项中, 存储它前一次变位 A2的数据偏移量。 由此可 见, 在一个数据文件中只要知道点 A的最后一次变位的偏移量, 就可以在整 个文件中, 将点 A的所有变位都找出来, 从而达到快速检索所有开关量数据 的功能。
可见, 本发明实施例中通过合理的数据结构设计,使 得对于数据的查询效 率进一步提高。
当变量数据的存储和查询是同时进行时,由于 存储和查询操作都是对同一 数据源进行操作, 因此应保证在这两种操作下数据的无损和一致 性, 同时应满 足存储和查询的高效性。 为了实现这一目的, 本领域技术人员可以使用临界区 ( Critical Section )、 事件(Event )来进行各线程之间的协调工作。
除此之外, 本发明实施例中, 利用多个先进先出的循环队列应用结合多线 程, 形成流水线处理机制。 为每个需处理的数据类型建立一个合适大小的 数据 队列, 然后为每个数据队列建立一个相应的线程。 同时, 保证一个线程只处理 一个数据类型。 另外, 主线程负责调度控制, 子线程相互协作, 形成流水线处 理。
当 DCS系统长年累月的稳定运行后, 再大的磁盘空间, 也会被填满, 这 时如果不定时清理磁盘空间, 那么系统将会无法正常运行。 因此, 本发明实施 例中的历史数据库设置有定时维护磁盘空间的 线程。当磁盘空间大小小于某个 设定的值时, 维护磁盘空间的线程会自动删除时间最长的数 据。 另外, 实际应 用中的 DCS系统中, 还可以设置自动存档任务, 自动对历史数据进行存档, 例如: 刻录成光盘保存数据。 相应上述分布式控制系统的历史数据处理方法 实施例,本发明还提供了一 种分布式控制系统的历史数据处理装置, 如图 3所示, 所述装置包括:
数据采集单元 301 , 用于采集分布式控制系统 DCS中的实时变量数据; 存储单元 302, 用于利用两块内存交替按照预置存储规则对所 述变量数据 进行存储, 并对依次存储的变量数据分配以示区分的标识 信息, 当利用其中一 块内存进行存储时, 将另一块内存中已存储的变量数据转移至存储 磁盘。
可见, 本发明实施例通过内存和磁盘相接合, 并且最终的实时变量数据是 以磁盘文件的形式存储,从而避免把大量的数 据存放在内存, 既占用了系统的 大量资源, 另外如果发生断电等意外故障, 数据丟失也越多的缺陷, 提高了历 史数据处理的可靠性; 此外,通过在变量数据的存储过程中为变量数 据分配以 示区分的标识信息,便于在数据查询过程中对 变量数据的定位,从而方便判断 实时变量数据存储中是否产生数据的丟失。
所述存储单元还可以包括: 存储条件设置子单元, 用于当利用两块内存交 替按照预置存储规则对所述变量数据进行存储 时,按照预置时间间隔或预置内 存容量阈值, 利用所述两块内存交替对所述变量数据进行存 储。
本发明实施例中的预置存储规则根据实际应用 场景,可以规定为按照预置 时间间隔或预置内存容量阈值,利用所述两块 内存交替对所述变量数据进行存 储。 例如: 当存储规则规定时间间隔时, 则利用第一块内存进行规定时间内的 数据存储, 到存储时间到达规定时间时, 启用另一块内存, 接着由另一块内存 进行数据存储, 此时, 第一块内存将其存储的数据转存入硬盘; 当第二块内存 的存储时间到达规定时间时, 再由第一块内存进行数据存储, 同时, 由第二块 内存将其存储的数据转存入硬盘; 依次类推。 同理, 预置内存容量阈值时, 则 当其中一块内存的存储量到达预置内存容量阈 值时,启用另一块内存进行数据 存储, 同时, 将存储量到达预置内存容量阈值的内存中的数 据转存入硬盘中。 当然, 具体的时间间隔和容量阈值可以根据实际应用 进行合理设置, 本发明对 此不做具体限定。
在本发明的另一个优选实施例中, 如图 4所示, 所述装置还包括: 合并、 分类处理单元 303 , 用于将当前转移至存储磁盘中的变量数据和已 存储在所述存储磁盘中的历史变量数据进行比 较,如果变量数据携带的标识信 息相同, 则进行数据合并、 分类处理。
为了便于对存入硬盘的数据进行管理, 本发明实施例中,将当前转移至存 储磁盘中的变量数据和已存储在所述存储磁盘 中的历史变量数据进行按预置 的合并条件进行合并、 分类处理。 预置的合并条件可设置为: 数据库的版本级 别以及变量数据中携带的时间戳信息。
如果硬盘中已存储有携带有某种标识信息, 例如时间戳信息的变量数据, 则将当前变量数据转存入硬盘时, 通过判断是否满足合并条件 , 决定是否应 该将当前刚刚转存的变量数据和硬盘中已存储 的变量数据进行合并、 分类处 理。 当然,数据合并的前提条件是硬盘中已存储的 变量数据和当前需要转存的 变量数据属于同一数据库版本。 当满足合并条件时, 则进行两部分数据的合并 及分类,例如:将属于同一数据库版本且具有 相同时间戳信息的数据进行合并, 存入同一个文件中。如果硬盘中已存储的数据 以文件的形式进行保存,通过合 并、 分类处理, 可以将相关的数据保存在同一个文件中, 便于后续对硬盘中数 据的查询读取。 否则, 如果当前转存的变量数据不满足合并条件时, 则对已存 储的文件进行重命名, 并进行备份, 新存入的数据将占用原来数据的文件名。 需要注意的是, 数据查询时, 时间戳和文件名必须是——对应, 才能实现查询 定位。 此外,如图 5所示的另一种分布式控制系统的历史数据处 装置中, 所述 装置还包括:
第一判断单元 304, 用于判断需要查询的数据所属的标识信息;
第二判断单元 305 , 用于判断内存中未转移至所述存储磁盘的变量 数据中 是否包括携带有该标识信息的变量数据;
读取单元 306, 用于当内存中未转移至所述存储磁盘的变量数 据中包括携 带有该标识信息的变量数据,则先读取内存中 携带有该标识信息的变量数据,, 然后读取所述存储磁盘中携带有该标识信息的 变量数据;
第三判断单元 307, 用于根据变量数据中携带的标识信息确定是否 查询到 所有变量数据。
本发明实施例中, 当需要读取数据时, 由于内存中很可能仍存储有未转存 至硬盘的数据, 因此, 需要先读取内存中未转移至所述存储磁盘的变 量数据, 然后读取所述存储磁盘中的变量数据;根据变 量数据中携带的标识信息确定是 否查询到所有变量数据。
此外, 图 6所示的又一种分布式控制系统的历史数据处 装置中, 所述装 置还包括:
磁盘整理单元 308, 用于当所述磁盘的存储空间达到预设的阈值时 , 自动 删除磁盘中存储时间最长的历史变量数据。
由于最后的变量数据都是存储在硬盘中,为了 避免硬盘因为存储量已满使 得新的数据存储失败从而导致数据丟失, 可以为硬盘设置存储空间预置, 当硬 盘的存储空间达到预设的阈值时, 自动删除磁盘中存储时间最长的历史变量数 据。 从而, 保证硬盘中始终存在有足够的存储空间。 对于装置实施例而言, 由于其基本相应于方法实施例, 所以描述得比较筒 单,相关之处参见方法实施例的部分说明即可 。 以上所描述的装置实施例仅仅 是示意性的,其中所述作为分离部件说明的单 元可以是或者也可以不是物理上 分开的,作为单元显示的部件可以是或者也可 以不是物理单元, 即可以位于一 个地方, 或者也可以分布到多个网络单元上。可以根据 实际的需要选择其中的 部分或者全部模块来实现本实施例方案的目的 。本领域普通技术人员在不付出 创造性劳动的情况下, 即可以理解并实施。
本领域普通技术人员可以理解实现上述实施例 方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完 成,所述的程序可存储于计算机 可读取存储介质中, 该程序在执行时, 可包括如上述各方法的实施例的流程。 其中,所述的存储介质可为磁碟、光盘、只读 存储记忆体(Read-Only Memory, ROM )或随机存储记忆体(Random Access Memory, RAM )等。
对所公开的实施例的上述说明,使本领域专业 技术人员能够实现或使用本 发明。 对这些实施例的多种修改对本领域的专业技术 人员来说将是显而易见 的,本文中所定义的一般原理可以在不脱离本 发明实施例的精神或范围的情况 下, 在其它实施例中实现。 因此, 本发明实施例将不会被限制于本文所示的这 些实施例, 而是要符合与本文所公开的原理和新颖特点相 一致的最宽的范围。
