实时历史数据

2024-07-10

实时历史数据(共11篇)

实时历史数据 篇1

0 引言

随着电网企业坚强智能电网建设的逐步推进, 产生了大量的实时数据, 继而沉淀生成海量的历史数据, 这些海量实时/ 历史数据都是电网企业生产运行过程中的重要财富, 是实现精益化管理的重要信息基础。在这一背景下, 浙江省电力公司积极探索和尝试, 初步建立了以国产实时数据库为基础的实时/ 历史数据平台, 以满足各业务应用对实时/ 历史数据进行存储、整合、共享以及统一和标准访问的需求。但目前平台在应用层面仍缺少统一规划, 亟需形成一个统一的应用技术架构。

1 现状分析

实时/ 历史数据平台是对电网生产运行过程中各业务应用形成的实时/ 历史数据进行存储、集中、整合、共享和分析的场所, 同时提供标准统一的访问方式, 是为智能电网和SG-ERP各业务应用——特别是跨专业、跨部门的综合业务应用在实时/ 历史数据层面提供技术支撑的信息基础设施[1,2]。

《国家电网公司海量历史准实时数据管理平台典型设计》中对实时/ 历史数据平台进行了明确定位:一方面是SG-ERP的实时数据中心, 与结构化数据管理平台、空间数据管理平台和非结构化数据管理平台共同构成SG-ERP数据中心;另一方面, 也是各业务构建实时/ 历史数据计算分析应用的基础支撑平台。根据国家电网公司典设要求, 实时/ 历史数据平台在数据管理和应用管理上都要具备良好的可扩展性和可维护性, 以支撑各业务应用持续发展的需要。同时要求在实时/ 历史数据平台建设过程中, 确保业务应用规范化实施和统一化管理。

目前, 国内外针对实时/ 历史数据应用的技术框架主要偏重于数据管理方面, 如数据接入、存储、访问等方面的技术框架和技术标准较多[3,4,5]。对于应用技术框架, 则没有相关的规范和标准。

从国家电网公司内部来看, 华北、上海等实时/历史数据管理平台建设试点单位偏重于数据管理方面规范和技术的研究, 在应用规划和应用实现技术框架上, 都没有深入的研究和成型的成果。

浙江电力在2012 年开展了实时/ 历史数据平台验证性研究和建设工作, 制定了实时/ 历史数据平台技术规范, 初步在实时/ 历史数据的接入、存储和访问方面制定了相应的技术规范, 并在此基础上构建了浙江电网实时/ 历史数据平台。但在平台应用规范化管理方面, 尚未制订相关的标准和技术规范, 大多地市局个性化应用使用平台提供的二次开发工具实施, 少量全省标准化应用沿用相关厂商各自的技术框架, 并且按照各自的应用实施方案设计、开发和运维具体业务应用, 且独立部署。这与全省“统一平台”理念相背离, 也不符合国家电网公司典设方案中实时/ 历史数据及其应用的集中、统一管理要求。

因此, 从平台应用集中、统一和标准化管理要求出发, 综合考虑平台应用的可持续发展, 在“统一平台”应用规范化管理层面应对平台应用技术框架规范进行统一。

2 统一应用技术架构

2.1 总体架构

根据国家电网公司典设要求, 浙江电网实时/ 历史数据平台采用全省大集中的部署模式。为了促进平台上应用的规范化发展, 尤其是省级综合应用的统一规划和实施, 应采用统一的应用技术架构, 即参与平台上应用建设的开发单位必须遵循统一的应用技术框架实施平台标准化应用, 使得不同的业务功能模块将打包合并到一个运行环境中。应用平台总体架构如图1 所示。

该架构主要有以下特点。

1) J2EE架构。应用平台基于J2EE架构, 所有应用模块将运行在一个统一的Web APP中。

2) 数据库。业务应用基于实时数据库和关系型数据库, 实时/ 历史数据都存放在实时数据库中, 各业务应用通过实时数据库提供的API、SDK等实现对实时/ 历史数据的访问。应用平台中用户、组织结构、应用权限及元数据 (测点属性中与具体业务密切相关的元数据) 管理等采用关系型数据库进行存储和管理。

3) 系统鉴权服务。业务用户对应用系统的访问必须通过平台提供的鉴权服务, 只有合法的用户能够访问相应的业务模块。

4) 单点登录。系统实现与企业门户系统的集成, 并实现用户单点登录, 用户登录企业门户后, 无需输入用户名和口令, 可直接访问集成的各应用系统。

5) 基础业务应用。应用系统平台的基础应用主要包括组织人员管理、应用权限管理、系统管理、个人主页设置和测点管理等功能模块。1组织人员管理:主要用于提供覆盖全省的各业务单位的组织结构, 以及与之相对应的用户信息。2应用权限管理:提供对系统用户的角色分配功能, 并对所有业务模块相关功能进行权限的配置和绑定。3系统管理:为具体业务应用系统提供服务监控、日志记录、活动审计和系统参数配置等。4个人主页设置:主要提供用户个性化的主页设置, 包括一些用户个性化参数设置。5测点管理:是对实时/ 历史数据平台原测点管理功能的扩展, 在关系型数据库中维护测点的基本信息, 提供实时数据库测点与运检、营销、调控等专业平台中设备的对应关系, 同时提供测点关联关系的维护, 并可绑定相关权限。

6) 按专业分类业务应用。未来应用平台将广泛应用于运检、调控、营销、规划辅助以及信息资源监控等业务的信息化管理, 这些业务功能模块将基于实时/ 历史数据平台, 采用统一的基础架构, 包括组织、人员、权限、测点管理等, 为各专业定制功能。

7) 系统接口服务。应用平台中将提供统一的系统接口服务, 对外部业务系统 (如运检、营销、调控等系统) 提供实时/ 历史数据和相关业务功能的访问。同时提供对接口服务的监控和审计。

2.2 应用权限管理

在实时/ 历史数据应用平台中, 采用基于角色的访问控制 (Role-Based Access Control, RBAC) 方法进行应用权限控制。在RBAC中, 包含用户、角色、许可权等基本数据元素, 权限被赋予给角色, 而不是用户, 当某个角色被指定给某个用户时, 此用户就拥有了该角色所包含的权限[6,7,8]。会话Sessions是用户与激活的角色集合之间的映射。RBAC3 模型如图2 所示。

RBAC3 模型在传统的RBAC模型上引入了角色继承和责任分离2 种特性, 采用RBAC3 模型的权限控制具有以下特点。

1) 权限指派关系可以根据需求和临时情况动态调整和修改。由于权限与角色相关联, 用户通过成为适当角色的成员而得到这些角色的权限, 这极大地简化了权限的管理。在一个组织中, 角色可根据业务工作而被建立, 用户则依据相应的责任和资格来指派相应的角色, 用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而被赋予新的权限, 而权限也可根据需要而从某角色中回收。

2) 角色可继承。除了具有自身的属性与权限之外, 还可以继承其他角色, 从而自动拥有被继承角色的属性与权限。如付费用户可以继承普通用户的属性与权限, 超级管理员可以继承普通管理员的属性与权限。

3) 角色可约束。约束原则将在权限被赋予角色时, 或角色被赋予用户时, 以及当用户在某一时刻激活一个角色时被强制性遵循。约束原则包括角色的互斥关系, 即互斥角色不能同时处于活动状态, 以及角色的最大活动会话数量受限规则等。

4) 提供对实例级别对象控制权限。在RBAC模型中, 资源对象是权限控制的目标, 将资源与角色指派关系绑定后将决定用户对资源的操作权限[9,10], 因此在应用平台中资源的定义及划分的颗粒度决定了系统权限控制的精细程度。权限设置方法见表1 所列。

2.3 个人主页设置

实时/ 历史数据应用平台为用户提供灵活的页面展示方式, 除了默认的主页外, 用户还可以自定义个人主页, 并可选择登录后采用何种主页模式。

1) 缺省主页展示。系统默认为每个用户提供应用访问主页, 根据权限设置情况, 每个用户的主页中只展示允许该用户访问的业务功能模块, 每个应用模块提供一个入口链接, 用户通过入口可进入系统, 每个业务应用具有独立的页签展示导航菜单和数据视图。当管理员重新分配用户权限后, 用户默认主页中相应业务模块展示将进行调整。用户可在工作台页面上查看业务模块的属性, 主要包括业务模块相关的权限设置情况。如果该用户具有该模块的管理权限, 可进行角色添加和用户指派。

2) 个性化主页定制。用户可以对个性化主页的布局进行选择, 系统支持多种布局方式。用户选定的布局方式将作为用户的个性化参数之一, 可以自行进行维护。用户可以在选定的布局中, 设置需要展示的内容组件。每个业务应用都可以配置作为展示的资源 (可以在应用权限模块中由管理员进行配置) , 如果用户具有这些资源的访问权限, 即可选择并放置到个人主页中。用户可对个人主页中的内容组件进行维护, 包括增加或删除, 同时也可在页面中拖拽调整各内容组件的位置。用户设置完成个性化主页后, 登录系统时将默认打开该页面。

2.4 测点管理

应用平台中的测点管理主要是为了建立实时数据库测点与外部其他业务系统设备模型之间的对应关系, 并建立相关的设备对象元数据。设备模型对应关系如图3 所示。

目前外部业务系统主要有生产系统、营销系统和调度系统等, 这些系统均有自身独立的设备管理模型, 当实时/ 历史数据平台接口服务器接入设备测点数据时, 如果只建立设备和测点的对应关系, 则最终无法形成不同业务系统之间设备模型的对应, 而通过设备元数据 (包括设备类型、电压等级、所属单位、变电站、间隔、设备名称等) 的维护管理, 可以判定重要元数据一致的测点所采集的数据来自于同一台设备资源, 为将来跨业务系统进行业务功能设计提供基础。同时通过建立对象元数据, 可以更方便地对测点对象根据元数据 (如按电压等级、设备类型等) 进行分类统计和查询。

此部分的主要功能如下。

1) 自动建立测点对应关系。当系统从接口采集数据时, 根据预先建立的设备匹配原则, 对满足条件的设备自动创建测点和设备对应关系, 并提取设备元数据信息。设备元数据信息包括设备类型、电压等级、变电站、所属单位、数据所属业务系统、设备名称等。

2) 提供手动方式对测点关联信息和设备元数据进行维护, 包括信息的增加、删除、修改和查询。

3) 提供对测点数据的分类统计报表, 用于分析测点建设情况。

4) 提供对测点对应关系和元数据的导入和导出, 数据格式可采用CSV或XML。

2.5 系统接口服务

实时/ 历史数据平台需要为外部系统提供一系列数据访问服务, 涉及的数据范围包括电网数据、电量数据、设备监测数据、用电运行数据、电能质量数据、环境气象数据、雷电监测数据、发电运行数据以及其他历史/ 准实时数据等。

应用平台向外部业务系统提供Web Service服务, 采用标准的跨平台的方式提供数据访问服务[11,12], 具体功能如下。

1) 提供的Web Service服务支持用户验证, 通过验证的用户在访问相关数据时需要满足应用平台中数据访问权限设置, 用户无法访问未经授权的数据。

2) 提供各类历史/ 实时数据的查询服务, 包括最新数据查询、历史数据查询、历史数据统计、报警时间查询等。

3) 可以通过设置启用或禁用指定的数据访问服务。

4) 可以对服务的访问者进行启用或禁用管理。

5) 可以对数据访问情况进行统计分析, 对可能造成性能问题的服务进行分析并实施控制。

3 结语

实时/ 历史数据平台应用技术架构是实时/ 历史数据平台研究的一个重要领域, 与核心基础数据库产品以及数据规范化接入、存储、访问的研究有着同等重要的意义。通过对实时/ 历史数据平台上应用现状的分析, 研究满足各业务应用需求的统一技术构架, 一方面可以提升实时/ 历史数据平台应用的整体管控能力, 改变现有平台上业务应用缺少统一规划和规范化技术架构的现状, 改变现有应用技术支持厂商各自为政、存在技术壁垒的现状, 形成平台应用建设的良性生态链;另一方面可以提升实时/ 历史数据平台应用的信息化水平, 有效地沉淀和积累技术及业务能力, 提升应用的实用化水平, 有利于平台应用能力的可持续发展。

参考文献

[1]方明霞.PI数据库在浙江电网的应用现状与展望[J].浙江电力, 2010, 29 (4) :51–54.FANG Ming-xia.Application situation and prospect of PI in Zhejiang power grid[J].Zhejiang Electric Power, 2010, 29 (4) :51–54.

[2]王俏文, 陶文伟, 丁坚勇, 等.基于PI数据库的供电企业实时数据中心的设计与实现[J].电力系统自动化, 2009, 33 (6) :99–103.WANG Qiao-wen, TAO Wen-wei, DING Jian-yong, et al.Design and development of power supply enterprise real-time data center system based on PI database[J].Automation of Electric Power Systems, 2009, 33 (6) :99–103.

[3]樊勇, 徐孝忠, 严浩军, 等.电网企业实时数据管理方法和工具的探讨[J].华东电力, 2012, 40 (3) :485–487.FAN Yong, XU Xiao-zhong, YAN Hao-jun, et al.Real-time data management methods and tools for power grid enterprises[J].East China Electric Power, 2012, 40 (3) :485–487.

[4]张鹰, 汤磊.SCADA与PI间的数据接口及通信规约设计[C]//2006电力系统自动化学术交流研讨大会论文集, 2006:195–197.

[5]田家英, 赵舫.PI实时数据库在供电企业中的应用[J].电力系统保护与控制, 2006, 34 (15) :46–49.TIAN Jia-ying, ZHAO Fang.Application of PI real-time database in power supply enterprise[J].Power System Protection and Control, 2006, 34 (15) :46–49.

[6]张燕燕.基于角色访问控制的实现研究[J].网络安全技术与应用, 2006 (8) :53–54.ZHANG Yan-yan.Implement of role-based access control[J].Network Security Technology and Application, 2006 (8) :53–54.

[7]姜宇锋, 付钰, 吴晓平.基于RBAC的权限系统设计与实现[J].计算机与数字工程, 2009, 37 (6) :98–101.J I A N G Yu-f e n g, F U Yu, W U X i a o-p i n g.D e s i g n a n d implementation of authorization system based on RBAC[J].Computer and Digital Engineering, 2009, 37 (6) :98–101.

[8]董永峰, 陆军, 刘建波, 等.改进的RBAC模型在信息服务平台上的应用[J].计算机应用与软件, 2012, 29 (5) :99–103.DONG Yong-feng, LU Jun, LIU Jian-bo, et al.Application of improved RBAC model to information service platform[J].Computer Applications and Software, 2012, 29 (5) :99–103.

[9]吴江栋, 李伟华, 安喜锋.基于RBAC的细粒度访问控制方法[J].计算机工程, 2008, 34 (20) :52–54.WU Jiang-dong, LI Wei-hua, AN Xi-feng.Method of finely granular access control based on RBAC[J].Computer Engineering, 2008, 34 (20) :52–54.

[10]赵卫东, 毕晓清, 卢新明.基于角色的细粒度访问控制模型的设计与实现[J].计算机工程与设计, 2013, 34 (2) :474–479.ZHAO Wei-dong, BI Xiao-qing, LU Xin-ming.Design and implementation of fine-grained RBAC model[J].Computer Engineering and Design, 2013, 34 (2) :474–479.

[11]陶敏, 郭宁.PI实时/历史数据库系统平台架构优化[J].浙江电力, 2011, 30 (8) :1–4.TAO Min, GUO Ning.Optimization of platform architecture for plant information database[J].Zhejiang Electric Power, 2011, 30 (8) :1–4.

[12]周升, 陶敏.实时/历史数据库平台通用访问方法研究[J].浙江电力, 2012, 31 (12) :94–98.ZHOU Sheng, TAO Min.Study of universal access method in real-time/historical database platform[J].Zhejiang Electric Power, 2012, 31 (12) :94–98.

实时历史数据 篇2

靶场弹道跟踪实时数据平滑算法及实现

通过分析靶场测试中目标的弹道特性,提出并利用了Gram-Schmidt曲线拟合方法实现弹道数据的.平滑处理.并利用VC++高效编程保证了弹道数据平滑的实时性.试验表明,该方法能够大大提高靶场弹道测试过程中弹道测试设备对飞行特性不稳定目标的跟踪能力,同时减少了跟踪过程中跟踪抖动对精密跟踪设备的损害.

作 者:胡杰 钱礼华 付宇 HU Jie QIAN Li-hua FU Yu 作者单位:中国兵器工业第○五一基地,陕西,渭南,714200刊 名:桂林航天工业高等专科学校学报英文刊名:JOURNAL OF GUILIN COLLEGE OF AEROSPACE TECHNOLOGY年,卷(期):200914(4)分类号:V557关键词:弹道跟踪 实时数据平滑 Gram-Schmidt 曲线拟合

实时历史数据 篇3

关键词 实时数据库 数据采集 系统设计 实现

中图分类号:TP392 文献标识码:A

这些年,企业进行信息化建设是我国一些大型企业所面临的重大问题。自从新世纪以来,烟草企业也逐渐开始信息化建设。随着MES 系统逐渐被人们认可,在接下来的几年之内,卷烟企业进行战略性调整和信息化建设是关键的工作,这直接决定了中国烟草工业的命运。

1 数据中心框架结构和设计

1.1系统设计的目标

设计出来的实时数据采集系统达到的效果如下:能够建设符合各个领域里面的决策系统;集中了很多小规模范围里面的应用;能够有效分担其它的事物处理系统的负担,提高决策和事物处理的效率。这个系统建设是以公司的业务流程建立的一个管理机制,是可以提供准确相同的分析数据。整个系统采用的是大量数据集中在一起的方式,这样就可以实现数据的自动获取和积累,还有就是业务数据和信息在整个行业里面实现共享。这个系统还能够提供一个相当强大的数据处理平台,能够满足不同种类业务的分析。整个系统的建立还能够提高工作的效率和准确性。这个系统能够满足现代的企业管理模式,这样就可以使得业务流程化和规范化。这样就可以通过智能的商业技术对集团的信息进行分析预测,还可以实现业务的自动化,为企业领导分析决策提供一个准确的依据。

1.2系统的性能指标

在进行实时数据库系统设计的时候需要保证的系统性能如下:(1)可靠性和及时性,设计出来的系统必须能够二十四小时进行工作。这样就可以保证系统在任何情况之下都可以进行资源的分配,这样就可以保证各个板块的功能能够正常进行。(2)系统的整体性和效率性,设计的系统需要是一个高效的一体化管理系统,系统需要能够容纳大量的数据,而且数据的更新还需要在短时间之内完成。整个系统需要在短时间之内完成对数据的处理,而且还需要高效率高质量完成。(3)系统需要先进和实时,整个系统可以运用充分的资源,然后根据客户的要求,把高的工作效率和好的经济效益当作是主要要求,在这个基础上,为客户提供一系列业务服务平台。(4)系统的安全性和实时性,系统采集的数据安全是十分重要的,在系统的设计过程当中,设计人员需要采取严格的技术来对技术进行保密。设计人员需要通过保密技术来保证用户身份的真实性,数据的完整性。在网络连接良好的情况之下,对每一个IP地址请求的操作处理时间需要控制在一分钟时间之内。(5)整个系统需要支持集群技术,设计人员可以通过多个服务器来完成一个集群,当服务器上面的用户达到最大的时候,其它的服务器会开始工作。(6)整个系统需要有一个完好的信息输出端口,整个系统的目标是为了对数据进行分析,而分析的目的是为了借鉴使用。为了能够进行应用,就需要把分析得到的结果数据转化成不同的输出文本,有的人需要把它变成演讲文稿,有的人就需要获得一个Excel数据。一般的开发格式有Excel, PPT, HTML等。

2 系统的结构

烟草企业对过程的监控和数据出来了是通过紫金桥实时数据库来完成的,它把现场的各种数据集中在一起,这些数据包括了生产上面的数据、设备的数据和质量数据等,在此同时整个数据库还包括一个完整的数据查询和分析功能,这可以为企业的生产和决策提供一个可靠的依据。还有生产过程出现状况的时候,系统还能够随时发出警报,这样就能够很方便采取处理解决的措施。整个系统还需要提供各种接口,比如说S Q L 接口、AP I接口等,通过这些接口就可以把各种组件连接到一起,这样就可以实现数据库能够正常工作。

3 实时数据库的功能

实时数据库的作用是对烟草企业的生产过程实施监控管理,但是它在这个系统的作用不只是储存数据,它还需要处理现场采集获得的数据,对获得的数据进行加工分析,一旦出现异常情况发出警报。它需要实现的功能如下:(1)事故的追忆功能。这就需要系统对和事件有关的状态进行记录,这样在事件产生之后就能够进行原因分析了。事件的数量、时间范围等都是可以自由设定的。(2)数据的压缩备份功能,中心的服务器刷新的时间是1 s ,在这样的情况之下,数据库不进行压缩的话是无法容纳这么多数据的。这就要求数据库进行压缩运算,这就可以解决数据量大的问题。(3)物料平衡,系统需要对实际的投料数据、收率数据等进行计算,然后对不同的时间数据进行统计分析。实时数据库当中的数据也是可以来自现场的,也可以通过人工输入的方式。(4)趋势分析,趋势功能主要包括了用户可以选择查看一些含有PID 数值的趋势图,也可以把趋势图打印出来,或者是把图片保存成图片的格式。用户还可以输入开始和结束的时间来查看数据的走向。趋势图如图1 所示。(5)系统还需要有班组考核功能,主要通过对重要工艺数据的追踪,发现生产过程当中的问题,然后提出改进意见。(6)系统还需要有统计分析功能,这样就可以全程监控产品质量。(7)系统还需要有报表系统,这样就可以制作各种各样的报表。

4 总结

考虑到我国烟草企业的规模大,所以系统的点数要多,这样就要有好的数据采集和储存,还需要制定大量的趋势图和报表。实施数据库需要有良好的性能和繁多的数据接口,这样不仅能够满足项目要求,还能够对烟草企业做出评价,推动烟草企业的信息化发展。

参考文献

[1] 张俊良,薛振兴.烟草企业数据中心系统的设计与实现[J].安徽:电脑知识与技术,2009(5) : 2316.

[2] 付文,范广辉.实时数据库实现烟草行业过程管理实时监控系统[J].江苏:工业控制计算机,2009(3) : 17-18.

[3] 徐毅博.烟草一号工程工业数据采集系统设计与实现[J].北京:硅谷,2012(7) : 170-172.

实时历史数据 篇4

在工业生产中,要维护大量共享数据和控制数据;又需要实时处理来支持其任务与数据的定时限制[1]。传统的实时系统虽然支持任务的定时限制,但它针对的是结构与关系很简单、稳定不变和可预报的数据,不涉及维护大量共享数据及它们的完整性和一致性[2]。实时数据库需要对一系列的概念、理论、技术、方法和机制进行研究,并对各个功能模块做详细周到的设计[3,4]。

历史数据处理作为工业实时数据库系统的一个核心功能,其主要作用是保存实时数据的历史记录。由于先进控制应用和实时优化的需要,有一部分历史数据被访问的频率可能很高,为了减小磁盘的读写负担,需要在内存中保存部分近期的历史数据,称之为内存历史数据。另外,对于超过一定时限陈旧的数据,需从内存中清除,并做一定的处理,然后转存到磁盘文件上。

1.1内存历史数据库

有部分历史数据是保存在内存里的。因为某些先进控制软件和实时优化软件等需要频繁访问这些数据,而内存的存取速度快的特点可以充分满足这些软件的实时访问需求。根据需要可以将某些历史数据有选择性地保存到磁盘历史数据库中[5]。

1.2 磁盘历史数据库

磁盘历史数据库主要以磁盘文件的形式存储历史数据。这种以磁盘文件为介质的形式适宜于存储长时间、大量的历史数据。同时便于转移、备份历史数据。为了使磁盘历史数据库具有快速、稳定的存储、读取性能,历史数据文件的结构、数据缓冲区的设置及使用的压缩算法等设计都是至关重要的。

目前,实时数据库市场主要为国外的 PI(PlantInformation system)、Industrial SQL Server 等几大品牌所占据。这几个实时数据库在技术性能、功能扩展等方面是比较先进成熟的。

PI 采用了独到的压缩算法和二次过滤技术,这使得 PI 成为实时数据库中压缩性能最为优越的一个。根据计算通过 PI 的数据压缩技术的处理,104点/s 数据存储一年,仅需4 G 空间。性能优越、使用简单等优点使得 PI 成为应用最广泛的实时数据库产品[6]。

IP21(InfoPlus.21)用于集成生产过程信息与高层次应用程序的基础数据平台,它使用户可以访问和集成来自整个工厂范围内 DCS 及 PLC 的数据,它通过功能极强的分析工具、历史数据管理、图形化的用户界面和大量的过程接口来访问和集成数据。IP21是一个智能化实用化的信息管理系统,它可以提供给用户最需要的东西:合适的实时应用支持、多线程、客户机/服务器结构。先进的过程数据服务器和历史数据管理在应用的任何地方都是可行的,特别是其灵活的数据结构可以根据应用的需要重新定义以适合自己的应用系统的需要。

Industrial SQL Server 是由数据采集、数据压缩、生产动态浏览和历史数据归档等功能构成一个完整的实时数据库系统,实时数据和历史数据用专门的文件保存[7];数据库服务器内嵌 MS SQL Server,使其具备关系型数据库特性,增强了复制功能,集成了 Mail 和Internet。它是第一个可满足工厂对数据采集速度、存储量要求的实时关系型数据库,是常规关系型数据库的数据采集速度、存储量的数百倍;它扩展了 SQL 语句,使其具有了时间特性。

上述几大实时数据库虽然在很多方面都很先进,但也存在一些不足之处需要改进。首先,现今几大实时数据库的历史数据查询性能有待提高。影响到查询性能一个很重要的因素是历史数据的文件结构,尤其是索引结构。另外,各实时数据库生产商在历史数据的压缩处理这方面下了很大的功夫,尤其是 PI 在这方面做得很好,但是历史数据的压缩效率还有提升的空间。

2 历史数据存储过程

实时数据库通过接口软件从下层采集数据,这些数据同时被写入到内存历史数据库和磁盘历史数据库中。某个测点在内存数据库中保存的历史数据长度,在测点组态时就已确定。当保存的内存数据长度超过这个值时,相对陈旧的数据将会被新采集到的数据替换。而将写入到磁盘的历史数据,只要磁盘空间足够大,一般是没有长度限制的。整个工厂的过程数据存储量是巨大的,不进行相应的压缩处理必将浪费大量的存储空间。因此,数据压缩是历史数据写入到磁盘之前的重要处理环节。

如图1所示,实时数据库通过接口软件从下层设备采集数据,采集方式可以是多种多样的。当今比较通用的是用 OPC(OLE for Process Control)通信方式获取数据,此时接口软件即相当于一个 OPC 客户端,通过网络获取 OPC 服务器提供的数据。接口软件获取的数据有2份拷贝,一份传至内存数据库,替换掉内存数据库内原有的陈旧数据;另外一份则通过调用磁盘历史数据库模块做一些相关处理,将数据写入到磁盘文件。其中,历史数据库的历史数据存取模块是提供对历史数据读取操作的相关接口。工厂过程数据如不经过任何处理全部存入磁盘文件,占用的空间将会是相当庞大的。因此,过程数据在存入磁盘之前需要经过相关的压缩处理。各种数据类型所采用的压缩方式有可能是不一样的,压缩算法在本文后面章节有详细描述。此外,为防止频繁进行磁盘写操作,内存中开辟了历史数据缓冲区,需要存入磁盘的过程数据首先放在缓冲区,当缓冲区中积累了一定数量的历史数据时再一次性地写入到磁盘历史数据库文件中。

3 内存历史数据库管理

在实时数据库中可能有一部分测点的近期数据将有可能被频繁访问,若每次访问这些测点数据都从磁盘上临时读取,这对磁盘将会是一个很大负担。内存历史数据库即是用作存放这些数据的。

在测点组态时,可根据需要设置各个测点要保存的内存历史数据长度。内存数据库根据组态信息预分配数据空间。进入内存数据库的数据都是经过压缩处理的,过程数据源源不断地通过接口软件采集而来,填入到内存数据库的数据区。当数据区填满时,陈旧数据从数据区中被淘汰掉,取而代之的是新采集来的数据,以保持测点数据的实时性。

4 磁盘历史数据库管理

各位号的磁盘历史数据是以磁盘文件的形式存在的。所设计的磁盘历史数据库中存在2种文件:历史数据文件和管理信息文件。一个实时数据库项目通常有一个管理信息文件及多个历史数据文件。历史数据文件主要存放位号历史数据及相关的索引信息;而历史数据管理文件保存了实时数据库中所有历史数据文件的信息及文件间的时间索引,以便快速定位某时间段对应的历史数据文件。

4.1磁盘历史库的文件描述

4.1.1 历史数据文件

历史数据文件采用的是页面存储管理方式,这样可以提高存储和访问效率。页面大小设置为多少最合适,可以根据相关性能方面的测试获取,历史数据文件结构如图2所示。

历史数据文件一般都有一个文件头页,这个页面记录了本数据文件的首个空页、空索引页的位置、页总数及页尺寸等信息。文件头页为整个文件的起始页,文件头页后紧跟着的是大量的数据页。数据页分为历史数据页和索引数据页2种类型。

历史数据页中存放位号的历史数据。一个位号的历史数据可存放在多个页面上,但一个页面不可存放多个位号的历史数据。同一个位号的历史数据可能分散在不连续的数据页内,这些不连续的数据页通过时间索引链接在一块,于是形成同一位号的历史数据链。历史数据链中的数据是以时间顺序排列的。时间索引页为测点历史数据建立一段顺序时间索引,为了提高查询速度,一个时间索引页中保存多个时间索引。每个时间索引都对应着本文件内一个历史数据页。同一时间索引页中存放的均为相同位号数据页的索引,同位号诸多索引页之间通过某种机制前后链接在一起形成索引链。并且这个索引链是跨文件的。如此通过对索引链的前后查找,就可以定位到某待查询时间的历史数据所在的页,然后再通过二分查找或者顺序查找的方式,定位到该数据页中那个要查找的历史数据。

4.1.2 管理信息文件

历史数据库的管理信息文件主要记录那些正在被实时数据库使用的历史数据文件。其主要目的是快速定位到某时间段对应的历史数据文件。一个实时数据库项目中一般有一个管理信息文件,另外还有很多个历史数据文件。管理信息文件与历史数据文件如图3所示是一对多的关系,但并非每一个历史数据文件都在管理信息文件中有记录。

4.2磁盘历史数据缓冲区

磁盘历史数据缓冲区是为了防止频繁地写磁盘而开辟的一块内存区。将要写入到磁盘的历史数据,首先放在缓冲区中,当缓冲区中累积了一定数量的历史数据时再一次性写入历史数据文件中[8,9]。

系统中配置有系统参数作为存盘时间。当存盘时间到达后,一次写入磁盘历史数据库。系统结束运行时,要将历史数据缓冲区的历史数据写入历史数据文件。用户访问历史数据时,系统首先检查历史数据缓冲区是否有用户需要的历史数据,然后再查历史数据库文件中是否有用户需要的历史数据。

用户通过系统参数可以设置历史数据库缓冲区的大小,历史数据缓冲区设置得比较大可以加快查找近期历史数据的速度,但同时内存开销也加大。最好根据本机物理内存的容量,动态设置缓冲区大小。

5 磁盘历史数据库实现

磁盘历史数据库是实时数据库的一个子模块,它主要是由实时调度模块来驱动。本课题中是以动态链接库的形式实现的。

5.1磁盘历史数据库的总体架构

磁盘历史数据库主要是为实时模块提供了对磁盘历史数据进行操作的功能。该模块主要针对上面所提到的2种文件:管理信息文件和历史数据文件。其内部大体框架以及调用流程如图4所示。

其中,接口模块负责为外部调用模块提供接口函数。通过这些接口,磁盘历史库的功能暴露给外部模块。读写操作模块是整个历史库的核心模块,提供了最为核心的读写功能,其上层接口模块中一些主要的功能函数,实际上都是在对读写模块进行封装。由于写数据的实现相对比较复杂,在此将其提出来做详细描述。写数据函数实现大致如下:

pLastData = GetLast(pCompress);

if ( pLastData == NULL )

{

//追加模式

return Append(pCompress,pData, nCount);

}

if (IsTimeLessThan(pLastData, pStartData) )

{

return Append(pCompress, pData, nCount);

}

if (IsTimeLessThan(pEndData, pLastData) )

{

//插入模式

return Insert(pCompress, pData, nCount);

}

//中间插入模式

return MidAppend(pCompress,pData,nCount);

首先,从存放在磁盘上的压缩结构中获取历史数据文件中某测点的最后一个数据。如果不存在该数据,则表示系统刚初始化,就直接追加数据。同样,如果待存入这批数据的起始时间在磁盘最末历史数据之后,依然采用的是追加模式。

除此之外,还有另外2种情况:一是待写入这批数据的结束时间在磁盘最末历史数据之前;二是待写入这批数据的起始时间在磁盘最末历史数据之前,但结束时间在磁盘最末历史数据之后。对于这2种情况,前者采用插入模式写入数据,而后者采用中间插入模式写入数据。所谓的中间插入是在删除部分已有数据的前提下进行的一种特殊追加方式。 由于篇幅问题,上述几种数据写入模式的具体流程在此不再做详细描述。

另外,数据页模块负责对缓冲区的数据页面进行解析,其调用了压缩模块的功能。管理信息文件访问模块和历史数据文件访问模块,分别提供了对管理信息文件和历史数据文件的访问功能。

5.2磁盘历史库重要功能模块详述

5.2.1 读写操作功能模块

读写子模块主要是提供了对历史数据的读写操作功能。通过该模块可以读取到某一段时间内的所有数据。写操作方面,该模块对传入的数据做相关的压缩处理,然后调用下层的一些模块将数据写入到历史数据文件。

读历史数据函数的大致形式如下:

int GetData(Time *pStart,Time *pEnd,HisData *pData )

要获取数据的时间段通过 pStart、pEnd 这2个输入参数传入,而 pData 作为一个输入/输出参数,传入的是要获取的测点标识号等相关信息,而得到的是对应时间段的历史数据。

写历史数据函数的大致形式如下:

int WriteData( HisData *pHisData)

待写入的历史数据列表由 pHisData 参数传入,在函数内部根据时间属性判断进行的是追加操作还是插入操作,从而往磁盘文件新增历史数据。读写模块给历史库提供了最核心的功能,因此,它是最为关键的一个模块。在本历史库中的源码中该模块占据了5 000行左右的代码,是一个很大的模块。

5.2.2 压缩模块

在工业控制过程中,测点将产生大量实时数据,由此产生的历史数据是海量的,如不做任何处理直接存储到磁盘历史库,将占用大量空间[10,11,12]。因此,压缩处理是磁盘历史库中一个很重要的功能。

磁盘历史库中压缩处理分为有损压缩和无损压缩2种。这里所指的有损压缩实际上就是一个筛选数据的过程,通过有损压缩过程,磁盘历史库从大量数据中筛选出哪些是需要保存到历史数据文件的,哪些是可以丢弃的。而无损压缩则是将原始数据以某种编码方式来存储,以达到节省存储空间的目的,这种压缩方式是可以通过解压缩来恢复数据原貌的[13,14,15]。磁盘历史库对不同数据类型采用的压缩方式是不尽相同的。主要分为浮点型数、开关量数以及字符串数这3种来进行处理。

a. 浮点型数据的压缩方式。本磁盘历史库中针对浮点型数据采用了旋转门压缩算法。在进行数据压缩时,旋转门压缩算法将比较新的实时数据点和前一个被保留的数据点之间的偏移,如果新的数据点和前一个被保留的数据点所构成的压缩偏移覆盖区的区域可以覆盖前面所有的数据点时,将没有任何数据点被保存。反之如果有任何一个数据点落在压缩偏移覆盖区外,则新数据点的前一个点将被保留,同时整个压缩偏移覆盖区将被重置,并且以新数据点的前一个点作为新的起点。而上面所说的压缩偏移覆盖区实际上是一个平行四边形,其起点是前一个被保留的数据点,终点是最新的一个数据点。平行四边形垂直方向的边长是压缩偏移量的2倍,压缩偏移量由测点组态决定,可以为每个测点指定其合适的压缩偏移量。图5说明了旋转门压缩算法的原理(y 为值坐标,t 为时间坐标)。

浮点型数据压缩处理的实现,即逐个判断所有的历史数据点,哪些是需要写入到磁盘文件,哪些是可以丢弃的这样一个过程。在下列这几种情况下,数据是需要写入到磁盘文件的:当前点为本测点的第1个数据时;当前点质量戳与前一点质量戳不一致时;当前点未通过旋转门压缩检测时。

b. 开关量数据的压缩方式。开关量数据采用的是变化即保存方式,这也是一种无损压缩方式,但其原理和实现都比浮点数所使用的旋转门压缩算法更简单。压缩模块在处理每个原始开关量数据时,都会与历史数据库中相同测点的最后一个历史数据记录做比较。如果当前开关量数据和最后历史数据记录的值相同则滤过该数据,不将其保存进历史数据文件;反之,则保存进历史数据文件,并将该数据设为最后历史数据记录。如一串原始开关量数据为11101001,经过开关量压缩处理,最后得到的要存入到磁盘文件上的数据就为10101。

c. 字符串数据的压缩方式。字符串数据是一种比较特殊的数据类型,单个数据的长度可能比较长。因此,有可能需要进行2次压缩。针对原始的字符串数据,首先通过有损压缩筛选出需要保存的字符串历史数据。然后再根据需要保存的字符串历史数据的具体情况选择性地做无损压缩处理。并非所有的字符串历史数据都需要做无损压缩,只有针对那些比较长的字符串,无损压缩才有意义。当然,经过无损压缩的历史数据从磁盘文件读出来时,必须做相应的解压缩操作,以恢复数据原貌。字符串数据的压缩过程实现大致如下:

if(strcmp(pData->Value,(pCompress->pLastSave)->strValue)==0)

{

//与上一记录数据内容相同,则不保存

return;

}

//记录最后保存数据信息

Copy(GetLastSaveData(pCompress),pData);

if(pData->Length>=20)

{

//执行无损压缩

ExecuteZlibCompress(&ComprData,pData);

//保存历史数据

AppendData(pWriteInfo,&ComprData);

return;

}

//保存历史数据

AppendData(pWriteInfo,pData);

return;

待处理数据进入之后首先与磁盘上记录的上一次保存数据进行比较,如果值相同则不进行任何存储操作。反之,值不相同,则需要将该数据保存至磁盘历史文件,并再对最后保存数据信息做修改。另外,如果待保存字符串数据过长,进行无损压缩处理是有必要的。至于如何衡量字符串是否过长,这与采用的无损压缩算法有关,需要通过相关测试获取。本文中所描述的历史库采用了 zlib 无损压缩。通过测试表明,采用20字节作为字符串长短衡量标准是比较合适的。

压缩模块有大约1 000行的代码。在这个模块中根据不同的数据类型进行不同的压缩操作,这是本历史库的一个特点。实际上,本历史库中数据的压缩效率也是很高的。

5.2.3 数据页存取模块

历史数据文件采用页面存储,数据页存取模块的主要功能是对这些页面进行操作。其中,页面分为历史数据页和数据索引页2种,这2种页面的大小不一定相同,页面结构也不相同。因此,对这2种页面的解析方式是不一样的。数据页存取模块代码量约2 000行,这部分主要负责解析这2种页面。

6 结语

历史数据处理是实时数据库中一个至关重要的功能。文中论述了实时数据库系统历史数据处理的详细过程,以及磁盘历史数据库的实现技术。

摘要:实时数据库(RTDB)是传统数据库技术与实时系统相结合的产物,是厂级信息监控系统(SIS)的核心。历史数据是系统定时从实时数据库中采样,保存到历史数据库中的数据,用户需要时可随时从历史数据库中访问历史数据。历史数据库包含内存历史数据库和磁盘历史数据库。内存历史数据库关注的是测点近期数据的组织方式;磁盘历史数据库管理的对象是历史数据文件和管理信息文件。对磁盘历史数据库的文件结构、缓冲区进行了描述,并详细阐述了其总体架构及重要功能模块(读/写操作、压缩、数据页存取)的实现技术。

VFP环境下实时数据采集的实现 篇5

----服务程序包括二个基本部分:其一是WinMain入口函数,它主要完成一此初始化任务,建立一个名为hwnd的原始数据显示窗口,服务程序名为PFBCdas。其二是应用程序功能函数MainWndProc。下面是程序清单(因篇幅关系,在此省去WinMain函数)。

#define AD_Interval 1000 //采样周期为 1000ms

#define base 0x280 // A/D采样板基地址

/* base+k (k=1,2,…14)为A/D板各寄存器地址 */

#include

#include

#include

#include

#include

#include

#include

#include

#include

int i, j, k , AD_Status, idTimer;

int AD_Data[8][16]; // A/D数据存储单元

int DdeAdviseStatus=0;

char buf[64], DDEbuf[2048]; //数据暂存缓冲器

char szAppName[]=“PFBCdas”; //服务程序名

char szDdeTopic[]=“AD001”; //主题名

char szDdeItem[]=“DATA”; // 数据项名

long FAR PASCAL _export MainWndProc(HWND, UINT, UINT, LONG) ;

long FAR PASCAL _export MainWndProc (HWND hwnd, UINT message, UINT

wParam, LONG lParam)

//应用程序功能函数

{

ATOM aAppName,aTopic;

ATOM aItem;

GLOBALHANDLE hDdeData;

DDEDATA FAR *lpDdeData;

static HWND hwndClient;

switch (message)

{

case WM_CREATE:

idTimer=SetTimer(hwnd,NULL,AD_Interval,NULL);

//打开定时器

outportb(base+11,0x10); //选择软件触发方式

outportb(base+9,1); //选择输入信号放大倍数为10

outportb(base+14,0);

outportb(base+13,0); //清A/D完成位

outportb(base+10,0); //选择通道0

return 0;

case WM_TIMER:

for(i=0;i<6;i++)

for(j=0;j<16;j++) //采样点为6*16=96个

{

outportb(base+13,j);

outportb(base+10,i);

outportb(base+12,0); //启动A/D转换

do AD_Status=inportb(base+5);

while ((AD_Status&0x10)==0x10);

//判转换是否结束?

AD_Data[i][j]=(inportb(base+5)&0x0f)*256+inportb(base+4);

/* 读A/D转换后的数字值 */

}

_strdate(buf); //取采样日期

strcpy(DDEbuf,buf);

strcat(DDEbuf,“,”);

_strtime(buf); //取采样时间

strcat(DDEbuf,buf);

strcat(DDEbuf,“,”);

for(i=0;i<6;i++)

for(j=0;j<16;j++)

{

char temp[32];

strcat(itoa(AD_Data[i][j],buf,10),“,”);

/*各采样数据之间以逗号分隔*/

strcat(DDEbuf,buf);

}

if(DdeAdviseStatus!=0) //如果建立了DDE服务

{

aItem = GlobalAddAtom (szDdeItem) ;

//添加DDE数据项为全局原子

hDdeData = GlobalAlloc (GHND | GMEM_DDESHARE,

sizeof (DDEDATA) + strlen (DDEbuf)) ;

/*给采样数据分配全局内存块*/

lpDdeData = (DDEDATA FAR *) GlobalLock (hDdeData) ;

lpDdeData->fResponse = 0 ;

lpDdeData->fRelease = 1 ;

lpDdeData->fAckReq = 0 ;

lpDdeData->cfFormat = CF_TEXT ;

//采样数据为文本格式

lstrcpy ((LPSTR) lpDdeData->Value,DDEbuf) ;

/*将采样数据从缓冲器放至DDE内存*/

GlobalUnlock (hDdeData) ;

if(!PostMessage(hwndClient,WM_DDE_DATA,hwnd,

MAKELONG(hDdeData,aItem))) //发送DDE数据

{

GlobalFree(hDdeData);

//若发送失败,则释放资源

GlobalDeleteAtom(aItem);

}

}

return 0;

case WM_DDE_INITIATE: //DDE初始化

hwndClient=wParam;

实时历史数据 篇6

关键词:数据同步共享锁实时数据监控

中图分类号:TM73文献标识码:A文章编号:1674-098X(2011)05(c)-0018-01

1 引言

在工控组态软件领域,普遍存在一个称作读者写者的问题,即对某些资源的访问,存在两种可能的情况,一种访问必须是排他的,称作写操作;另一种访问可以是共享的,称为读操作。对于一个实时数据监控系统来说,由于Windows是一个多任务抢占式的操作系统,在多个线程共同访问一个数据区的环境下,会产生数据同步的问题。比如:有提供数据的服务程序A和若干界面显示程序B、C、D等。服务程序和显示程序共同使用一块数据内存区E,其中服务程序负责更新内存数据(写操作),而显示程序则定时访问内存区数据(读操作)。假设数据内存区E中变量的数据结构为:

FILETIMEftTime;//时间

DWORD dwValue;//值

那么,在B刚读取完某个变量的ftTime值后,插入了A的写操作,这时候再读取到的dwValue值就和ftTime不一致了。这种不一致的现象必须通过数据同步来避免。所以,对内存区E的读写访问必须作以下两个约束:

1)A正在进行写操作时,B、C、D必须等待该操作完成才能访问E;约束条件(1)

2)B、C、D正在访问E时,A 必须等待该操作完成才对E进行写操作;约束条件(2)

以上约束可以简单的归纳为:读写互斥。

2 一般解决方法

在Windows下,系统提供了事件、互斥量、信号量等核心对象以及一些等待函数来进行多线程同步。单独使用这些核心对象均能够实现读写的互斥。

但是单纯的实现读写互斥并不能完全满足实时监控系统对访问效率的要求。因为读操作的并发并不会引起数据的不同步,为了提高效率,必须在之前的两个约束的基础上增加读写访问的另一约束,即约束(3):B、C、D能够同时访问E。

3 共享锁

3.1 数据结构

利用Windows内核对象的特性,可以编程实现满足上述三点约束条件的共享锁类。

共享锁的内部数据结构由读事件、写事件、互斥对象和读者计数组成。

其中,读、写事件是一对命名的、手动重置的事件,初始化为有信号状态。事件可以使用Windows Api函数CreateEvent、ResetEvent和SetEvent 来创建、重置和置位。这对事件成员的作用是实现读写的互斥。

共享锁中的互斥对象是一个初始化无所有者的命名互斥量。互斥量可以使用CreateMutex、WaitForSingleObject和ReleaseMutex来创建、进入和离开。互斥对象在共享锁中的作用有两个:对写操作进行保护,保证一个时刻内只有一个线程在进行写操作;在多个读线程中保护读者计数,保证所有读线程中对读者计数的操作都是原子操作。

读者计数实际上是一片命名的内存区,可以用CreateFileMapping和MapViewOfFile来创建和映射该内存区。读者计数用于对同一时刻内的并发读操作进行管理。

3.2 读写操作流程

3.2.1 写操作

数据服务A在对数据内存区E進行写数据操作时,首先重置写事件。这时候写事件为无信号状态,这就意味着B、C、D等读线程将在“等待 写”这一步中挂起,不再进行读操作。接下来A将等待读事件,如果之前时刻已经有若干线程在进行读操作,那么A将等到这些操作完成后进入互斥对象。这就意味着A已经独占了内存区E这块资源,可以放心地进行写操作了。

在A完成写操作后,首先离开互斥对象,释放之前独享的这块资源,再置位写事件,让B、C、D等读线程结束挂起状态,进行读操作。

3.2.2 读操作

假设B线程某一时刻想以读者的身份访问数据区,B首先等待写事件,如果写操作正在进行,那么B将被挂起直到写操作完成。接下来B将访问读者计数,如果读者计数为0,B将重置读事件;否则意味着在前一时刻已经有另外的读者(C或者D)已经重置了读事件,B将读者计数自增后直接进入读操作。当然,在访问读者计数的整个过程中都使用互斥对象对计数进行保护。

在完成读操作后,B再次访问读者计数字,如果发现此时B已经是最后一位读者(计数=1),B将置位读事件,计数自减后退出。

4 比较和结果

4.1 实验平台的搭建

创建一个写者线程,三个读者线程,同时运行。在每个线程内,记录下每次操作的性质(读或写)、操作时间和操作者(线程),保存到日记文件中,是为原始数据。分三次进行实验:1无数据同步;2使用互斥对象进行数据同步;3使用文中所述共享锁进行数据同步。

4.2 比较和结果

未使用锁情况下,由于Windows是抢占式的操作系统,A、B、C、D四个进程将对E资源进行无序的竞争。

使用了互斥锁情况下,在B、C、D的读周期内不可能再出现值被A修改的情况。但是这样的数据同步的缺陷也是明显的:在B的读周期内A、C和D都在挂起等待状态,消耗了不必要的时间;另外,在这样的数据同步模式下,读者和写者的地位是平等的,A作为数据的提供者却必须要和B、C、D同等的去抢占资源,而且读者越多负担越重,是一种很不合理的作法。同样,在B、C、D的读周期内数据不会被A改动,解决了数据同步的问题。另外,B、C、D可以并发进行,因为多个读者访问不会对资源E造成破坏,避免了A不必要的等待时间,提高了效率。

更重要的是,共享锁对读者和写者的权限进行了区分:写者优先于读者访问共享资源。这是因为任意时刻下A想对资源E进行写操作时都会重置写事件,这时试图进行读操作的其他读者就被迫进入等待状态,A只需要等待前一时刻已经进入读周期的进程完成操作。这就保证了服务程序A的工作效率,也就是保证数据的实时性。

5 结语

综上所述,共享锁具有同步数据和优先保证写者效率的工作特性。这些独特的工作使得这样的共享锁在工业控制级别的实时软件系统中具有很重要的现实意义。在实时数据库、实时监控系统、数据报警系统等领域的软件开发中具有广泛的应用前景。

参考文献

实时历史数据 篇7

为了解决上述问题,将实时数据库引入管道监控系统,实时数据库系统能够提供高速、及时的实时数据服务,能够有效的集成异构监控系统,在管道监控系统运行过程中,实时记录监控数据的运行情况,通过对输油管道监控过程的关键数据(温度,压力,流量)进行实时监控分析,随时随地掌握输油管道的运行情况,及时处理输油管道中出现的问题,使管道平稳进行输油。

1 实时数据库

实时数据库是连接底层控制网络和上层管理信息系统网络连接的桥梁,是工控系统运行的核心部分,具有海量的存储数据,丰富完整的信息量等特点,其最大的优点是实时性强,可以实现最新的数据库状态、时间一致的数据值和及时处理事务,企业可以通过在工控组态软件中的实时数据库系统,进行质量监控、先进过程控制、计划调度、经营决策等,在工控组态软件中的实时数据库的结构如图1所示,可以看出,在结构上,实时数据库与传统数据库类似,最大区别在于调度和事务管理方面。

2 管道实时监控系统分析

实时数据库是管理和维护实时数据及与其相关的信息,通常包含以下功能特点:良好的数据模型,数据库组态,现场数据采集,数据检索机制,访问调度和并发控制机制,供基于优先级的数据访问,滚动存储机制,预处理机制,自动更新机制,支持不同类型的事务,补偿机制,动态汇总机制和人机界面等功能,为了能在管道实时监控系统中更好支持高速数据访问和实时应用要求,文中选用了PI(Plant Information)实时数据系统,它是由美国OSI软件公司开发的实时数据系统,在系统中,可以对集成到系统中的所有现场运行数据进行监控、挖掘、分析和存储,并能实时动态显示输油管道实时运行情况,这有利于企业管理人员及时准确地掌握输油管道运行状况和各种信息,为他们做准确的决策提供帮助,此外,其还是连接上层企业信息管理系统和输油管道数据采集设备的桥梁,基于此,根据输油管道的需求情况和PI实时数据库特点,设计的系统架构如图2所示。

3 实时数据库在管道实时监控系统中的应用

PI实时数据库提供实时数据、海量历史数据和报警服务,并通过完善的人机界面软件以及管理配置软件,完成对数据的采集、存储、查询、显示和分析的功能。

3.1 数据库的功能模块

系统中,对于经常变化的实时数据(如DO、DI、D/A、A/D值),这些数据每个采样周期都更新,采用内存缓冲区存取加快了存取速度;对于非共享型数据(如组态软件的组态参数),这些数据不需要经常更新,可以采用文件管理系统存取,减轻了系统负担;对于输油管道状态的历史数据,由于其数据量非常巨大,采用关系数据库SQL Server存取。

采用面向对象编程(OOP)技术对实时数据库进行设计,采用平衡二叉树的数据结构来组织内存实时数据,提高对实时数据库的查询、插入、删除和更新的效率,此外,将管理程序的所有功能封装成一个专用的实时数据库类,通过对这些接口函数实现对各种功能操作,如:读写数据函数,事故处理函数,报警函数,计算函数,显示链接函数,初始化函数,基本操作函数和数据采集函数,具体实时数据库类如图3所示。

3.2 实时数据库的事务调度系统

管道实时监控系统运行后,要同时进行多个事务调度处理,如DCS数据采集、越限报警、紧急事件报警、事故处理、图形刷新显示、数据传输、现场监控、数据计算处理、历史数据存取等事务活动,这些事务需要并行处理,必须对实时数据库进行事务调度,使得其同时满足各种约束条件事务请求,实现各个部分协调动作,当前常用的事务调度策略可分为三类:优先级调度算法,时间片轮算法和多级反馈队列调度算法,系统采用优先级调度算法,基于优先级的调度算法主要有如下几种:先来先服务,截止期最早最优先,可达截止期最早最优先,可达截止期最早最优先,价值密度最大最优先和价值最高最优先(HVF,highest value first),在系统中,采用价值最高最优先算法,价值最高最优先函数为V(T)=c(w1(t-ts)-w2d+w3p-w4s),其中,s为空余时间,d为事务的截止期,p为已执行时间,c为T的危险度,t为当前时间,ts为T的开始时间,w1,w2,w3,w4为加权因子。在上位机,将CPU时间按照价值最高最优先准则分配给各个事件,根据多任务调度设计的思想,把实时数据库系统中的事务划分为不同的线程,同时对每个线程设定不同的优先级,定期处理某一事件而不会在某一事件上处理时间过长,此外还设定定时策略,以完善事务调度,如图4所示。

3.3 I/O接口

I/O接口是实现上层应用软件,客户端,智能终端,实时数据库之间进行通信的关键部件,由于在现场采集设备可能是来自不同厂商的不同时期的产品,其所采用的接口种类不统一,其系统结构和通讯方式也可能不一样,为了使本实时数据库达到具有开放性接口功能,在通用接口软件框架下对IO接口进行了简化,I/O接口体系结构图如图5所示。

实时数据库共提供了两个接口模块:下层接口模块和上层接口模块,下层接口模块用于与各种智能终端设备(如智能控制设备PLC与DCS,智能总线备Profi Bus、Can Bus与Mod Bus等,PC总线PCI/ISA/USB等)通讯和交换数据;而上层接口模块用于与企业信息管理系统软件的数据通信,如:数据查询,Internet的通信等应用程序。

为了提高系统的实时性能和统一数据接口,利用Windows的DLL技术和全局内存共享技术来建立系统运行时的实时数据库,针对不同的接口方式开发不同的动态库链接的策略,通过调用动态连接库中的函数,实现不同任务间的快速通信及数据处理。

3.4 数据压缩处理技术

在管道监控系统中,从管道现场采集到的实时数据量非常大,若不对这些数据进行压缩,会浪费系统大量的存储空间,因此,有写实时必要采取数据压缩技术对这些实时数据进行压缩处理,常用数据压缩算法有杜邦矩形向后斜率法、例外报告算法和旋转门压缩算法,PI实时数据库采用的就是旋转门压缩算法,若系统接收到一个新数值,只有当上次记录数值以来的任一数值都不在阀值范围之内,才会记录前一数值。旋转门压缩算法压缩流程为:

1)记x(1)=X(1),y(1)=Y(1),初始化j=1,m=1,k1=-M,k2=+M

2)m=m+1;

3)假如m>N那么转到⑻;

4)j=j+1,x(j)=X(m),

5)假如k1

6)假如j-1≧TLM,那么转到⑺,否则转到⑻;

7)m=m-1,TL=j-2,x(1)=X(m),y(m)=Y(m),初始化j=1,k1=-M,k2=+M,记录TL,

转到(2);

8)m=m-1,TL=j-2,x(1)=X(m),y(m)=Y(m),初始化j=1,k1=-M,k2=+M,记录TL;

9)返回。

上述算法中,k1,k2分别表示上扇门及下扇门的斜率,,TLM为每段压缩的最大长度,TL为该段压缩数据的采样长度,M为数值较大的整数x(j)为每段的第i个数据点,Y(i)存放压缩后的过程变量,数组X(i)存放压缩前的过程变量,E为记录限,表示偏差的阈值参数。

4 结束语

管道实时监控系统中存在着大量的实时数据处理、存储和集成问题,仅依靠分散控制系统(DCS)和关系数据库技术并不能满足数据实时性和数据有效共享要求,实时数据库是实时技术与数据库技术相结合的产物,是DCS组态软件体系结构的关键部分,能够提供高速、及时的实时数据服务。将PI系统应用到管道实时监控系统中,其能够提供高速、及时的实时数据服务,其完善的人机界面软件以及管理配置软件完成对数据的采集、存储、查询、显示和分析的功能,使得系统在工控监控中具有着广阔的应用前景。

摘要:针对输油管道的打孔盗油现象,借助VC 6.0软件工具研究并开发了基于PI实时数据库的管道实时监控系统,首先介绍了组态软件中实时数据库的结构,接着分析了管道实时监控系统架构,最后探索了实时数据库在管道实时监控系统中应用的关键技术。

关键词:实时数据库,工业组态软件,实时监控,输油管道

参考文献

[1]实时数据库系统方案的设计与实现[J].电脑知识与技术,2009(26).

[2]于继武.基于GSM短信平台的油田输油管道监控系统的设计[J].电脑知识与技术,2008(27).

[3]余卫江.数据监控系统在海洋石油勘探开发中的应用[J].计算机与应用化学,2011(8).

[4]陈鑫.GIS的输油管道辅助设计系统的关键技术[J].油气储运,2011(12).

一种遥测数据实时压缩系统 篇8

1 航天遥测数据实时压缩的关键技术

从算法方面考虑:评价一个压缩算法的优劣有两个重要指标,即压缩去除率和压缩用时,在实时系统中对时间的要求更为严格,而在航天遥测系统这样特殊的应用场合还必须考虑可靠性因素。压缩去除率仅与算法有关,而压缩用时和可靠性因素不仅与算法相关,还与硬件实现平台密切相关[3]。

从硬件实现方面考虑:成本和开发时间是需要考虑的首要条件,由ASIC(专用集成电路)来实现压缩算法可以满足极为苛刻的时间要求和很高的可靠性要求,但开发周期太长,开发成本过大,不宜作为航天遥测这样小批量生产的实现方案;由FPGA(现场可编程门阵列)实现压缩算法也可以达到很快的压缩速度和很好的可靠性,但用硬件描述语言实现复杂的算法需要很长的开发周期;单纯用DSP(数字信号处理器)实现又很难保证数据采集、压缩和输出的实时性要求[4]。因此,由FPGA实现数据传输、由DSP实现压缩算法的FPGA+DSP结构是航天遥测数据压缩较为理想的实现方案。

2 无损压缩算法选择

2.1 压缩去除率

定义1:设压缩系统输入的数据量为Ni,压缩编码后输出数据量为No,则w=(1-No/Ni)称之为压缩去除率,以表示压缩系统的空间压缩效率。

针对不同统计特性的数据,特定的算法表现出的压缩去除率相差很大,要根据数据的统计特性和应用场合才能选出合适的算法[5]。本文选用一段已测得的火箭飞行过程中的噪声数据对算法进行比较。由于实现平台对算法的压缩去除率没有影响,因此选用易于算法实现的PC机作为实现平台。

在航天领域,对可靠性的要求尤为重要,对遥测领域代码的共识是越小的代码量具有越高的可靠性,因此本文选用ARC、LRice和LZARI三种压缩算法进行比较。

以上编码方法都围绕Shannon思想中信息量与信源分布的关系而展开,这些编码方法统称为统计编码。在Shannon框架下,除了统计编码外还有预测编码与变换编码,统称三大经典编码。后两种编码本身不会改变数据量,但是在特定用途下可以降低平均码长,再与统计编码(也称为熵编码)结合,可以得到可观的压缩效果。正是基于这种原因,可以把压缩编码分两步完成,第一步称之为预变换编码,第二步才是熵编码[6]。熵编码本身是可逆的。如果第一步的变换编码是可逆的,整个压缩就是无损压缩;但如果第一步的变换是不可逆的,那么整个压缩就会是不可逆的,就是有损压缩。预变换编码是通过去相关导致码元表示位数降低来影响压缩效果的。

压缩编码领域通常采用预变换编码中的预测编码进行去相关。线性预测编码[7](LPC)是最基本的一种预测编码,LPC根据前面n个测量值估计当前的测量样值,当前测量值用x(t)表示,预测值用表示,{ai|i=1,2,…,N}表示预测系数,N为预测阶数。其模型可以表示如下:

LPC采用已有样本的线性组合来预测下一个样本,编码数据表示为实际样本与估计量的差值:

一阶多项式预测编码就是一阶差分编码。根据参考文献[8]的研究,编码效率随着预测阶数的增高而增大,然而,二阶以上的预测编码对编码效率的改善已经很小。对于变化较平稳的数据流,采用一阶差分就可达到很高的编码效率;对于变化较大的数据流,其数据相关性本来就很小,预测编码对数据的分布不会有明显改善。显然,预测阶数越高,编码过程中的计算量就越大,在DSP中的执行时间也就越长,在火箭这种高可靠性要求的应用场合,为了甚微的压缩空间改进而占用较多的时间显然是不可取的。表1是在PC机上对不同算法的压缩去除率的比较。

从表1可以看出LZARI算法具有最好的压缩去除率,LRice在数据相关性好时(正弦波)压缩去除率较高,在数据相关性较差时(噪声)压缩去除较低,可靠性较差,经一阶差分处理后,各算法对正弦波压缩去除率改善较大,而对噪声数据的改善很小。

2.2 压缩用时

算法逻辑是决定其时间效率的根本所在,评价其执行效率可以有两种手段:一种是通过算法机理建模分析,另一种是直接通过外部数据测试。由于大部分算法的逻辑模型难以建立,通过模型进行准确、定量的比较就难以实现。在实际应用环境中,更关注一个算法的使用性能。一组既定的算法的复杂度是确定的,可以弱化其内部工作机理,直接从外部施加一定的条件进行精确测试。

对一个压缩系统而言,其压缩时间与实现平台、压缩算法和待压缩数据三者相关。实现平台从处理器结构进行分类,可以分为指令型和逻辑型两种。计算机、DSP、ARM平台都属于指令结构,而专用集成电路平台属于逻辑型结构。由于专用集成电路采用硬件电路逻辑实现,可以达到很高的压缩速度,通常可以满足实时性要求。本文只针对指令结构平台进行压缩速度分析。

经过对不同类型数据的多次压缩比较,在PC机上仿真的压缩速度大小依次是LRice>ARC>LZARI,而在DSP上的效果是ARC>LRice>LZARI。这种变化产生的根源主要是DSP处理器的并行指令执行能力使得ARC较LRice反而更快。固定数据的一阶差分预测在相同实现平台上的运行时间是一定的,因此带一阶差分预测的压缩算法用时比较同上。

考虑航天设备对运行环境、压缩比、压缩速度等方面的要求,DSP相比于PC是一种可行的算法实现平台,因而用ARC算法实现遥测数据无损压缩就更有优势,本文采用一阶差分编码改进的ARC算法对火箭遥测数据进行无损压缩。

3 数据压缩系统的实现

遥测数据采集系统的工作流程分为采集—压缩—输出3个主要步骤。本文利用FPGA+DSP架构作为硬件平台,将待压缩的6路模拟噪声信号经电压跟随后输入给A/D转换器进行量化,量化结果写入到FPGA内部FIFO数据缓冲器中。DSP通过FPGA内部FIFO半满信号读取数据,通过识别通道号把数据流分配到6个分组缓冲区,其中某一分组缓冲区满2 KB就进行一次压缩,压缩后的数据被存入缓冲器SDRAM中。当缓冲器半满时,DSP将压缩后数据串行发送至FPGA,然后FPGA根据接口协议发送给数据接收器,保证压缩数据传输的实时性。系统框图如图1所示。

由于遥测系统的各功能单元相互独立,相互通信时需要数据缓存进行协调,为此,本设计多处使用由FPGA内核构建的FIFO(先进先出)暂存器,在保证系统可靠性的同时降低了开发难度。

考虑遥测系统的整体环境,数据压缩系统采用固定格式的数据流输出压缩后数据,如果压缩数据的产生速率低于数据输出速率,数据可完整发送。由表1可以看出,在强噪声数据阶段,数据的压缩去除率很低,剩余数据量较大,无法满足数据的即时发送,产生数据积累,必须采用数据缓冲单元。数据缓冲单元容量大小如下:

其中t1、t2分别为数据积累的开始和结束时间,vi、vo分别为压缩数据的产生和发送速率。航天器实际飞行过程中,强噪声数据阶段仅为几分钟左右,其余时间段都可达到较高的数据压缩去除率。由此估算出缓冲器的容量为1 MB左右,采用容量为8 MB的SDRAM,保证数据的完整输出。

4 实验及结果分析

火箭飞行过程中的噪声数据是一种典型的航天遥测数据,火箭上的噪声在飞行过程中的大部分时间是平稳的,在小部分时间内是剧烈变化的。数据压缩系统要保证压缩用时和压缩去除率两方面都满足要求。表2是一段实测噪声数据以各种压缩算法在DSP平台上压缩效果比较。

从表2可以看出,ARC算法具有较快的压缩速度和较高的压缩去除率。加入一阶差分预测后带来的时间延迟并不是很明显,却明显改善了压缩去除率。结合各算法表现出的压缩去除率,具有一阶差分的ARC算法在航天遥测这种应用场合表现出了最佳性能。

采用FPGA+DSP结构和用一阶差分优化的ARC算法对火箭遥测数据进行无损压缩,达到了较高的压缩去除率和可靠性,减轻了遥测系统的信道传输压力,提高了数据的传输效率,是航天遥测数据压缩较为理想的实现方案。

摘要:介绍了一种遥测数据实时压缩系统的设计方案,该设计以FPGA+DSP为硬件架构,以具有一阶差分预测的ARC编码为无损压缩方案,达到了较高的压缩去除率和较快的压缩速度,适合在可靠性要求较高的遥测系统中使用。经实验验证,无损压缩系统有效地缓解了遥测系统的传输带宽压力。

关键词:遥测,数据压缩,一阶差分预测,ARC编码

参考文献

[1]王泉,齐春,罗新民,等.LZW压缩算法的改进及其参数优化分析[J].重庆邮电学院学报,2005,17(3):351-355.

[2]RIZZO F,STORER J A,CARPENTIERI B.LZ-based imagecompression[J].Information Sciences,2001(135):107-122.

[3]高艺,孙桂玲,李维祥,等.基于预测编码的无线传感器网络节点数据压缩算法研究[J].南开大学学报:自然科学版,2010,43(6):77-80.

[4]BENTLEY J,MCILROY D.Data compression with longrepeated strings[J].Information Sciences,2001(135):1-11.

[5]刘向宇,王雅哲,杨晓春,等.面向无线传感器网络的流数据压缩技术[J].计算机科学,2007,34(2):141-142.

[6]沈海峰.遥测系统提高传输容量方法探讨[J].装备指挥技术学院学报,2007,18(2):99-104.

[7]张天序,邹胜,曾永慧.基于FPGA的图像无损压缩算法的实现[J].系统工程与电子技术,2004,26(10):1340-1343.

红外相机数据高速实时存储技术 篇9

在航天航空技术领域,经常需要采集大容量高精度的红外图像信息,对于有些信息专业人员无法现场进行数据处理,只能先存储备份,然后读取分析采集到的图像数据并还原显示在计算机上。由于图像传输速度快、容量大,而Flash的存储速度一般不超过40 Mbyte/s,本文充分利用乒乓缓存的思想对高速数据流进行实时无缝缓存,避免了图像快速传输过程中的丢数现象,利用流水线技术写Flash,解决了Flash写入速度的限制。与传统的存储系统相比,该系统具有存储速度快、可靠性强、稳定性高、适用范围广等优点。

1 系统组成及设计框架

系统采用Altera公司Cyclone II系列EP2C35F484C6芯片作为主要控制核心[1],红外相机捕捉到的视频图像信号通过LVDS接口电路进入解码模块,经FPGA处理过的图像数据通过乒乓结构实时无缝缓存,最后用流水线写Flash技术将图像数据存储在NAND Flash闪存阵列。存储的图像数据在需要时可用分析软件通过FT245控制的USB 2.0接口读出并将图像显示在计算机上,系统组成框图如图1所示。

1.1 图像解码模块

本系统采用National公司差分接收芯片DS90CR216作为视频解码芯片,经LVDS接口电路解码后的信号主要有帧同步信号(vsync)、行同步信号(hsync)、像素时钟(mclk)以及8位数据,其中,像素时钟为29.5 MHz,行同步周期为64μs,高电平有效,每行有384个有效像素,帧同步周期为20 ms,高电平有效,每帧有289行有效数据,图像数据在时钟上升沿变化,因此选择2片128 kbyte的SRAM即可满足要求。解码后图像信号时序如图2所示。

1.2 数据无缝缓存设计流程

乒乓缓冲技术是FPGA设计中最常用的一种数据缓冲方法,其最大的特点是能实现实时无缝缓冲与节约缓冲区空间[2]。

本系统每秒传输50帧图像,每帧期间帧同步高电平时间约为18.5 ms,低电平时间约为1.5 ms,如果在帧同步低电平1.5 ms的时间内从SRAM中将数据转存至Flash,会产生丢数。因此,为了给数据处理单元赢得更多的处理时间[3],采用的乒乓缓冲模块工作流程为:当帧同步信号为高电平时,将经过FPGA处理过的图像数据写入SRAM1,同时地址计数器1开始递加计数,此时地址计数器的值一方面为FPGA数据处理模块提供触发参考,另一方面也为缓存空间提供了参考。当帧同步为低电平时,FPGA控制乒乓缓存逻辑切换总线开关,开始选择SRAM2为写空间,将SRAM1切换为读空间以读取缓存在SRAM1中的图像数据,此时地址计数器1开始递减计数,当SRAM1中的数据全部读出后,地址计数器1计数到0。当帧同步信号再次变高后,将图像数据写入SRAM2,地址计数器2递加计数,等待帧同步为低电平时,切换读写信号,选择SRAM2为读空间,SRAM1为写空间,开始读取SRAM2中的数据同时地址计数器2的值开始递减计数,同样当SRAM2中的数据全部读出后,地址计数器2计数到0。待帧同步又一次为高电平时,将图像数据写入SRAM1中,地址计数器1开始递加计数。如此循环切换读写空间,将缓存在2片SRAM中的数据读出并存入Flash中。乒乓操作读写时序如图3所示。

2 Flash阵列流水线存储流程

2.1 芯片简介

选用三星公司容量为1 Gbyte的闪存K9K8G08U0A,它由8 192个存储块组成,每个存储块分为64页,每页容量为2 kbyte,其外部有8个I/O引脚和6个信号管脚,而这8个I/O脚既是命令和地址的输入引脚,也是数据的输入输出端口。该闪存是一种高密度非易失性的存储器,主要特点为:1)读、写(编程)操作均以页为单位,擦除以块为单位。2)读取每页时间为20μs,页编程的典型时间是200μs,块擦除的典型时间是1.5 ms。3)页寄存器写入最低时间是50μs,页编程的最大时间是700μs,块擦除的最大时间是2 ms。由于每次进行页编程之前都需要写页地址,不难计算出写一页所需时间为250~750μs,写入的速度约2.600 0~7.812 5 Mbyte/s。实验证明,页编程的时间正是限制Flash存储速度的关键因素,因此在对其进行页编程操作时采用流水线技术来实现高速大容量Flash的存储[4]。

2.2 Flash存储设计流程

本系统所采用的流水线技术主要分为3个步骤实现:1)向Flash加载编程指令、地址以及数据;2)待加载完成之后,Flash芯片会自动执行将载入到页数据寄存器的数据写到内部存储单元的编程操作[5];3)当自动编程结束后,由FPGA下发“70h”读状态指令以检测Flash的I/O口最低位是否为“0”,如果是,表示编程成功,页计数器递加并继续对下一页编程,当页计数器从0加到63后,页计数器清0,块计数器加1,继续进行页编程操作,当块计数器递加至8 192块时,停止对Flash的页编程操作,等待上位机的读Flash指令。流水线存储的示意图如图4所示。

由于每次对Flash加载数据和地址后总是有大概200μs以上的时间花费在芯片编程上,所以可用多片1 Gbyte的Flash组成流水线工作模式:在第1片加载完成执行编程时可以加载第2片Flash,待第2片Flash编程时又加载第3片Flash,依此操作执行,实现时间的复用,缩短了Flash阵列的有效页编程时间,从而提高了写Flash的整体速度。如果工程项目要求写Flash的速度应为60 Mbyte/s,用5片Flash组成流水线操作模式,那么每片的速度应为12 Mbyte/s,经计算加载一页数据到Flash寄存器的时间大概为162.76μs,而700μs÷162.76μs≈4.3,所以采用5级本系统的流水线技术是可以满足设计要求的。

3 实验结果

本系统经多次实际存储红外相机捕捉视频图像的实验,用读数软件从Flash中将数据读取出来后再经过Matlab处理还原,验证了系统的可行性和可靠性。图5为捕捉到的一张男士挥手的红外图。

4 小结

实验结果表明,本系统具有以下优点:1)以FPGA为逻辑控制核心,采用乒乓缓存模块将红外相机下发的高速大容量数据进行缓存能避免因传输速度太快而出现数据丢帧的现象。采用流水线阵列存储,打破了传统存储方式下Flash存储速度不能超过40 Mbyte/s的束缚,实现了高速大容量存储技术的突破。2)系统占用体积小,成本低,硬件电路简单,调试方便,能完成大量视频数据的无缝缓存和实时存储。3)为高速大容量数据可靠记录、高速实时准确存储提供了有效的技术方案,并在多次实际应用中以其稳定、可靠的性能得到广泛的应用。

摘要:介绍了一种高速大容量固态存储器的组成机制和存储技术,以FPGA为逻辑控制单元,通过LVDS接口电路将红外相机采集到的图像数据经过乒乓结构实时无缝缓存,利用流水线写Flash技术提高了Flash写入的速度,可通过扩展Flash阵列来满足速度更高容量更大的存储要求。可用FT245控制的USB2.0接口读取Flash中的数据并上传至计算机,最后用分析软件可以清晰看到拍摄结果。结果表明,该系统稳定可靠地存储了高速传输的图像数据,具有较强的可行性和实用性。

关键词:现场可编程门阵列,乒乓结构,流水线,USB2.0

参考文献

[1]宋海吒,唐立军,谢新辉.基于FPGA和OV7620的图像采集及VGA显示[J].电视技术,2011,35(5):45-47.

[2]姚远,李辰.FPGA应用开发入门与典型实例:修正版[M].北京:人民邮电出版社,2010.

[3]谭树人,张茂军,徐伟.多传感器同步图像采集系统的设计[J].电视技术,2006,30(9):84-87.

[4]杨海涛,苏涛.基于FPGA的高速大容量固态存储设备设计[J].国外电子元器件,2007(5):68-72.

监控信息流实时数据同步 篇10

随着数据库技术逐步完善、成熟和发展,对数据库应用系统性能优化研究也逐步深入,优化技术和方法日趋完善和成熟,尤其在关系数据库应用方面。在这个背景下,电力调度自动化系统就成为了一个热点话题,尤其是调度监控系统。。SQL Server数据库可以提供发布 / 订阅功能 ,实现数据库服务器之间的数据同步。对实时性要求较高的操作及更新操作绑定到实时处理服务器上 , 对耗时、不敏感的操作绑定到统计分析服务器上,避免了服务器资源占用过多而导致信息延迟 , 保证了数据请求的实时处理。

文中针对系统存在效率和实时性低的问题,提出了数据库设计模式,结合发布 / 订阅技术,提出了一种基于数据库设计模式的发布订阅优化方法,可以解决不同应用系统之间的集成,使信息可以顺利进行交互传输。

1 SQL Server 实时数据库工作原理

1.1 数据库的体系结构

实时数据库把数据库分为内部、概念和外部三个级别。这三个级别组成了数据库系统的基本体系结构。外部级最接近用户,这里所说的用户可以是调度监控系统、第三方应用程序等。概念级涉及所有用户的数据定义。内部级最接近于物理设备内存和磁盘,涉及到实际的数据存储方式。数据库的三级结构是数据的三个抽象级别,它把数据的具体组织留给数据库系统管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中的表示和存储。

1.2 数据库程序设计

在SQL Server数据库中,设计数据库有以下几个步骤 :1)建立数据库的目的要明确,要广泛开展数据的收集,设计数据库最为重要的工作就是明确目的。通常情况下,需求分析也是明确数据库建立的目的,确定用户的不同需求,设计数据库相关功能,达到完善数据库的目的。2)概念模型的具体建立是按用户的观点对数据和信息建模,也称为信息模型。3)把已经设计完成的E-R图转化为数据模型,数据模型主要是用于DBMS的实现。4)实施与维护数据库,设计数据库完成设计后,维护就变为重点。

1.3 数据库工作原理

SQL Server数据库原理图,如图1所示。Master数据库保 存SQL Server中所有的数据库,如果不使用主数据库,SQLServer就不能启动。主数据库包括了用户系统登录、配置设置等信息。主数据库还有扩展存储过程,能够访问外部进程,从而能够与磁盘子系统和系统API调用等特性交互。Model是用来创建新用户数据库的模型数据库,可存储视图、用户等。创建新数据库时,新数据库会包含模型数据库里的所有对象。Tempdb在SQL Server每次重启的时候都会被重新创建,其中的对象是依据模型数据库里定义的对象被创建的。Tempdb还存有其他对象,如临时表格变量。当SQL Server被配置为复制分发服务器时, Distribution就会被添加到系统里。在默认情况下,数据库的名字就是Distribution,但名字可更改。这个数据库用来存储历史和快照、合并和事务复制等的元数据。Msdb用于保存数据库备份、SQL Agent信息、DTS程序包、SQLServer任务等信息,以及诸如日志转移这样的复制信息。

2 SQL Server 数据库发布 / 订阅技术

在应用系统中 , 通常既有对数据的实时处理 , 又有大量的查询和统计分析。对大型应用系统而言 , 统计分析通常是非常耗时的操作 , 对系统资源的消耗非常大严重时会影响对数据的实时处理。尽管采用统计分析与实时处理数据分开存储策略、临时表技术等对系统进行了优化 , 有效提高了对大数据量的实时处理性能 , 但统计分析依然要占用大量的CPU资源和内存资源。进行数据量大、运算复杂的统计分析时 , 会对系统中的实时数据请求产生很大的冲击 , 严重时也会出现请求超时或死锁现象。

2.1 SQL Server 发布和订阅的创建

首先在SQL Server数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅。发布可以发布一张表的部分数据,也可以对整张表进行发布,还可以是存储过程和视图等。在SQL Server服务器下的复制节点,会发现有本地发布和本地订阅两个节点,右击本地发布节点,选择新建发布。接着对数据库服务器进行发布设置和选择数据库中的发布对象(如数据库的表或表的部分数据),来创建发布。发布完成后,右击本地订阅节点,打开新建订阅向导对话框,对发布服务器中数据库发布的消息进行订阅,接着对数据库服务器进行订阅设置来完成订阅创建。

2.2 SQL Server 数据库应用

2.2.1 SQL Server 发布 / 订阅

SQL Server数据库提供了数据发布和订阅功能。具体做法如下 :准备几台数据库服务器,让不同服务器做实时处理业务和做统计分析业务 ;通过设置数据发布和订阅的相关参数 , 可使服务器上的数据基本保持一致,实现数据库服务器之间的数据同步。将实时性要求较高的操作以及所有对数据库的更新操作绑定到实时处理服务器上 , 将耗时、对新数据不敏感的操作绑定到统计分析服务器上。可避免因统计分析操作对服务器占用资源过多而导致的服务响应延迟 , 有效保证应用系统对数据请求的实时处理。

2.2.2 SQL Server与API调用交互

利用SQL Server数据库提供的发布 /订阅功能和API模块,就可以实现发布异地数据库。可将其应用于电力调度中心的调度监控系统中,其利用API发布数据库通信结构,如图2所示。在电力调度中心设计总实时数据库,各个站段设计实时数据库,每个站所设计子站库,总实时数据库通过适配器对各个站段进行信息流实时监控,各个站段的实时数据库通过适配器对每个站所的子站库进行信息流实时监控。这种数据库设计模式对调度监控系统的信息流进行实时数据监控,可减轻服务器信息量大而造成延迟,有效提高了系统的实时性和效率。

3 实验与分析

3.1 数据库同步实验

对SQL Server数据库进行服务器发布和订阅的创建。创建成功后进行监控信息流实时数据发布订阅传输实验。假设两个数据库表中都没有任何数据,向两个数据库hysd1和hysd2中的operecord表中插入两条数据 :

运行实验的程序代码,然后我们查看两个数据库的结果,如表1所示 :

通过实验所得的结果表明 :基于数据库设计模式,服务器上的数据基本保持一致,实现数据库服务器之间的数据同步。

4 结论

(1) 基于数据库设计模式实现了异构系统的集成和发布订阅实现监控信息流实时数据同步。当系统程序代码运行时,服务器上的数据基本保持一致,实现了服务器两个数据库之间的实时通信。进行监控信息流发布 / 订阅传输时,实现了不同数据库之间实时数据的同步,并减轻了服务器CPU的负荷率,提高了系统的实时性,对应用系统的优化具有实用价值。

摘要:实时数据同步是调度监控系统重要的性能指标。文中针对调度监控系统存在实时性低的问题,利用数据库设计模式,结合发布订阅技术,提出了一种基于数据库设计模式的发布订阅优化的新方法。通过数据库设计模式对发布/订阅模式进行监控信息流传输实验,基于数据库设计模式,实现了两个数据库之间监控信息流数据的同步,保证调度监控系统的实时性。

实时历史数据 篇11

工业实时数据库广泛采用数据压缩技术。目前,压缩算法通常采用旋转门压缩算法、基于斜率比较的旋转门压缩算法和死区限值压缩算法[3,4,5]。其中,比较流行的是旋转门压缩算法[3,4,5],该算法是通过减少存储数值的数量来实现压缩,对于过程数值的压缩率有限且不适用于数据值分布不均匀的压缩场合。在国外,PI、ESP-iSYS、Industrial SQL Server和InfoPlus.21实时数据库采用的都是旋转门压缩算法,Intellution Dynamics iHistorian同时采用旋转门和死区限值两种压缩算法[6,7]。在国内,中国科学院软件研究所开发的Agilo实时数据库系统应用于海湾智能建筑组态管理系统和中国石油华北炼油厂生产管理系统中,采用基于斜率比较的旋转门压缩算法[7]。浪潮软件公司设计和开发的移动专用实时数据库LCMD (LangChao Mobile Database) 采用基于斜率比较的旋转门压缩算法[7]。

数据压缩技术面临两个关键问题:首先,压缩算法必须能够提供较高的数据压缩率以支持实时数据库海量存储的特点;其次,实时数据库的实时记录和查询功能要求压缩算法在压缩和解压缩两个过程都必须具有较好的速度性能,尤其在解压过程中[3]。这两个问题的解决是相互矛盾的,因此,在实时数据库中应用数据压缩技术必须找到两者恰当的平衡点。

在分析旋转门压缩算法和基于斜率比较的旋转门压缩算法原理的基础上,针对钢铁企业轧钢生产过程对实时数据库中数据压缩的要求,提出了比例压缩算法和改进的基于斜率比较的旋转门压缩算法。新算法是两者的结合,提高了数据压缩率和压缩/解压缩速度和性能。

1 基于实时数据库的数据压缩算法

1.1 常规旋转门压缩算法

旋转门压缩算法通过分析当前数据点与前一个被保留的数据点所构成的压缩偏移覆盖区来决定数据的取舍。实时数据库中的数据都是基于时间序列的数据,旋转门压缩算法是一种有损压缩,通过丢弃一些数据的方法来达到减少存储容量。这些被丢弃的数据在一定误差范围内必须不影响过程历史数据的重构[7]。

在旋转门数据压缩中,系统每接收到一个新值,都会和最近存储的测量值构造出一个有两条边同x轴垂直的平行四边形。这时,如果在新值和己存储值之间存在一个值v落在平行四边形外,则存储值v,否则就继续接收新值,没有任何数据点被保存。其中,平行四边形垂直方向的边长是压缩偏移量的两倍,压缩偏移量由用户设定,每个信号点均可以有自己的压缩偏移量,图1说明了旋转门压缩算法的原理。

旋转门压缩算法实现的流程见文献[3,4,5,7],其中,“临时数据集”指前一个被保留的数据点和新的数据点之间所有的数据点,这些数据点作为临时数据保存在内存中[7]。

该算法在实际应用中存在着明显的缺点:(1)无法事先确定“临时数据集”的容量大小,如果存在大量不需要压缩的数据会造成内存的极大浪费;(2)随着“临时数据集”变大,算法中“测试临时数据集内数据是否有不在平行四边形内”这个步骤的时间花销将以几何级数的速度迅速增长,成为系统性能的瓶颈。

1.2 基于斜率比较的旋转门压缩算法

斜率比较法同临时数据集法相比,只存储斜率最大和最小的数据值,新来的数据与上一个存储数据形成的斜率如果在最大和最小斜率之间,不用进行其他测试,否则,只需测试最大斜率和最小斜率的数据是否落在己存储数据和新数据形成的平行四边形内,从而决定存储前一个点(落在平行四边形外)或者继续接收新的数据点(落在平行四边形内)。

在图2中,数据点A是最近存储的点,它同点B、C、D形成直线的斜率分别为KMN

(1) B点来到时,先把数据点B和斜率K缓存起来。

(2) C点来到时,测试B点是否落在由A和C构建的平行四边形内。因为B落在这个平行四边形内,接着比较斜率KM,因为M>K,缓存数据点C和斜率M

(3) D点来到时,测试现存斜率最大的C点是否落在由A和D构建的平行四边形内。因为C落在这个平行四边形之外,所以存储C点,同时缓存D和C、D形成的斜率P

2 改进的基于斜率比较和比例旋转门压缩算法

2.1 比例压缩算法原理

计算机中的浮点数据类型一般采用四个以上的字节来表示,其表示范围将是一个非常大的浮点区间。而在钢铁企业轧钢生产线中实际采集得到的采样值的范围则相对较小。为了减少实时数据在归档文件中所占用的空间,新算法统一将所有浮点数标度为两个字节的整数。例如用(0,0)标识采样的最小值Vmin,(255,255)可用来标识采样的最大值Vmax,(Vbase,Vscale)则用来标识位于采样范围内的某个采样数值,其中Vbase,Vscale均为一个字节表示的整型数据,Vbase为分组的基数,Vscale为经比例压缩后得到的整型数据。与应用四个字节存储一个浮点数相比,将节省一半的存储空间。

比例压缩是通过存储数据与其所在区间段的比例来对采集到的数据进行压缩的算法。公式如下:

Vscale=INT[(V-Vmin)/(Vmax-Vmin)]×(2n) (1)

其中,Vscale为压缩后的结果值;V为测量值;Vmin为测量值的下限值;Vmax为测量值的上限值;INT为取整运算;n为压缩后数据所占用的bit数,这里用一个字节对数据进行存储。

在新算法中,压缩带来的数据最大失真比例为:

S=(Vmax-Vmin)/(Vmin×(2n) ) ×100% (2)

其中S为失真百分比,n为压缩后一个数据存储所占用的bit数目。

2.2 改进的基于斜率比较旋转门压缩算法原理

基于斜率比较的旋转门压缩在判断斜率最大与最小的两个数据点是否符合压缩要求时,主要通过以下两种方式:(1)判断斜率最大与最小点到当前数据点与上一个保存数据点所构成直线的距离是否小于压缩偏差(如图3a所示),这时每个新的数据点与上一个保存数据点构成的直线都不同,所以对每个数据点都需要执行两次判断。(2)利用新的数据点和给定的斜率偏差范围构造斜率区间(如图3b所示),这时在新的数据点来临时需要计算三个斜率:

K1=(V-M)/Δt (3)

K1=kCt (4)

K2=kCt (5)

其中,V:当前测量值;M:上一个存储值;ΔC:压缩偏移;Δt:两测量值之间的时间间隔。

当新计算的K1大于原有的K1时用新值替换旧值,当新计算的K2小于原有的K2时用新值替换旧值。如果K1<K<K2则可认为斜率最大与最小的数据点均符合判断条件,即仍在新构造的平行四边形内。

改进算法是改变构造斜率区间的时间点和角度,通过斜率最大点和斜率最小点来构造符合条件的斜率区间范围。同样需要计算两个斜率K3,K4:

K3=(Vkmax-(MC))/Δt (6)

K4=(Vkmin-(MC))/Δt (7)

其中,Vkmax:斜率最大点测量值;Vkmin:斜率最小点测量值。

判断点是否在平行四边形内的改进方式如图3c所示。对于新来的数据点,仍然计算当前测量值与上一个存储数值所构成的斜率K。如果K3<K<K4,则可认为斜率最大与最小的数据点均符合判断条件。这种判断方法与原有判断方法相比主要是将区域范围的构造移动到斜率最大与最小点上,这样就只需要在每个新数据点来临时计算一次斜率,而只有当新的斜率K不在区间[K3,K4]时才需要重新设置K3或者K4,并增加一次的判断。改进算法相对原来算法在新数据来临时减少了斜率的计算次数,从而加快了算法的执行速度。

2.3 新数据压缩算法处理步骤

新数据压缩算法处理步骤如下:

(1) 首先预设斜率的压缩偏差YBL;

(2) 存储第一个数据点,在第二个数据点到来时计算两者之间的斜率,并设最大斜率Kmax和最小斜率Kmin的值都等于第一个数据点与第二个数据点之间的斜率;

(3) 利用斜率最大与最小的数据点计算斜率K3和K4(第二次及以后调用的入口);

(4) 对新的数据点,计算K并判断,如果K3<K<K4当前测量值不用存储,但同时需要判断K是否在区间[Kmin,Kmax]内,如果Kmin>K则令Kmin=K,如果Kmax<K则令Kmax=K;

(5) 如果K不在区间[K3,K4]内,则保存当前测量值前一个时刻测试的数据值;

(6) 执行式(1)进行数据压缩,并写入缓冲区;

(7) 如果当前缓冲区满,则切换缓冲区。调用后台进程(或线程)将满缓冲区数据写入磁盘;

(8) 如果有新的数据到达,则转向步骤(3);否则返回。

3 压缩算法应用与测试分析

新数据压缩算法实现的软件应用于本钢集团公司热连轧厂1700热连轧机计算机过程控制系统。测试数据取自于1700热连轧机精轧机的压下量,测试压下电流数据量分别为100点、500点、1000点、1500点、2000点情况下采用本算法所得到的压缩时间、解压时间与压缩率。

3.1 数据压缩处理过程的整体测试

对压缩处理过程的测试内容包括压缩率、压缩时间、解压时间以及解压缩的正确性。测试中所用的数据采用了不同的表示方法。第一种是随机百分量,是在一定的量程范围内(整个量程范围的1%~2%)作随机振荡产生的。轧钢生产过程中产生的实时数据大都是这种类型的,比较具有代表性。第二种是正弦波百分量,即让数据的取值按正弦波的波形有规律地变化,正弦波的周期和振幅都可以自由地选定。为了接近轧钢生产过程数据的特点,将振幅定为量程范围的40%~45%,而周期则随着数据点数的大小变化。第三种是锯齿波百分量,即让数据的取值按锯齿波的波形变化。

压缩率的测试方法:数据采集得到的浮点类型数据占四个字节,因此源文件大小F1=D1×4,D1为数据点数;而压缩后的数据值占用了2个字节,所以压缩后的文件大小为F2=D2×2,D2为压缩数据点个数;压缩率为C=1-F2/F1。

压缩时间和解压缩时间的测试方法:在测试程序中对压缩和解压缩部分做500次循环,即测试出压缩和解压缩连续进行500次所需的时间tc500和td500,得到了压缩时间tc=tc500/500和解压时间td=td500/500。

解压缩正确性的测试:在解压缩完成后,将解压缩后的数据与压缩前的数据对比,如果误差在允许范围内,则表示解压正确。

为了保证系统中其他模块的正常运行,数据压缩模块占用CPU的时间不应该超过5%。由于轧钢生产过程控制系统采集数据的周期是秒级,则在一次压缩过程中最多有50ms的时间用来进行数据的压缩。如表1所示,数据的测试结果表明,数据压缩处理过程具有较高的压缩率和较好的实时性。

3.2 新算法与旋转门压缩算法性能的比较

1700热连轧机精轧机压下电流的数据如图4a所示,应用旋转门压缩算法解压缩如图4b所示,应用基于斜率比较的旋转门压缩算法解压缩如图4c所示,应用新压缩算法对数据进行数据压缩之后解压缩如图4d所示。从图4中可以看出,在保持数据恢复效果的情况下,新算法具有较高的压缩比。

表2的内容是新压缩算法与旋转门压缩算法对随机百分量进行压缩的性能综合比较。

由测试结果可以看出,新的压缩算法优于常规的旋转门压缩算法:

(1) 压缩率提高了一倍 旋转门压缩算法对于仿真数据的压缩率在30%-40%,而新压缩算法的压缩率可以达到70%-80%。

(2) 降低压缩时间 新算法在执行时由于不用在内存中维护一个不可预测大小的临时数据集,并且在对数据是否满足旋转门压缩的判断时进行了改进,减少了判断的次数和对斜率的计算次数,因此降低了压缩时间。

(3) 解压缩时间也有改善 由于解压缩所需要的数据是常驻内存的,新的压缩算法在解压缩过程中减少了磁盘IO操作。因此,新的压缩算法也降低了解压缩时间。

4 结束语

新压缩算法可以使实时数据库的实时数据处理性能得到很大程度的优化。由于新压缩算法提供了高压缩率和快速的压缩速度,使得数据库的容量得到了大幅度增加。测试表明,采用新算法对轧钢生产过程中的实时数据,例如压力、温度等工艺参数进行压缩完全能够满足轧钢生产的实际需要。新算法压缩和解压缩过程均具有很好的快速性,能够更好地满足生产过程中对实时数据处理的要求。

摘要:在分析实时数据库中应用的旋转门压缩算法和基于斜率比较的旋转门压缩算法原理的基础上,提出了比例压缩算法和改进的基于斜率比较旋转门压缩算法。改进的算法通过改变构造斜率区间的时间点和角度,通过斜率最大点和斜率最小点来构造符合条件的斜率区间范围,以完成数据的压缩。给出了改进压缩算法的应用实例、性能的整体测试和分析,与旋转门压缩性能进行了对比分析。测试实验证明,该算法可以满足采集点不同分布情况下的数据压缩需求。

关键词:实时数据库,数据压缩算法,旋转门,斜率比较,比例压缩

参考文献

[1]孙秋懂.一个实时采集和查询的大型数据库系统的组织策略[J].计算机应用与软件,2003,20(12):28-29.

[2]刘云生,胡国玲.实时数据库系统的正确性[J].计算机应用与软件,1995,12(6):1-8.

[3]吴文传,张伯明,王鹏.一体化系统的分布式实时数据库管理系统[J].中国电力,2003,33(10):85-89.

[4]高宁波,金宏,王宏安.历史数据库实时压缩方法研究[J].计算机工程与应用,2004,28(8):167-173.

[5]康荣学,张优云,贾海波.远程试验系统中的数据压缩研究[J].小型微型计算机系统,2003,24(5):884-886.

[6]游小明,陈传波,刘升.数据压缩算法分析与改进[J].小型微型计算机系统,1999,20(8):570-573.

[7]曾玲,饶志宏.几种数据压缩算法的比较[J].通信技术,2002(9).

上一篇:损伤预测下一篇:民族历史文化资源