宁鹏
(中国石油化工股份有限公司 茂名分公司,广东 茂名 525011)
随着“中国制造2025”的全面推进,现场智能仪表在石油化工等工业领域的广泛应用,管理好现场智能仪表是保障流程安全平稳运行的关键。目前,国内应用较为广泛的设备管理系统主要有Emerson的AMS软件[1]、浙江中控的SAMS软件[2]及IDM软件[3]等。现有的设备管理系统大多关注当前仪表状态,未将仪表的数据充分利用起来,未能较好地满足对仪表预测性维护的功能。为提升某石化公司当前现场仪表管理的效率,核心在于管理和利用好现场仪表的数据。本文对现场仪表管理系统的功能及数据特点进行梳理,采用多数据库融合的方式设计现场智能仪表管理系统软件。
一个可广泛应用的现场智能仪表管理系统,应具备智能性、可靠性、准确性、经济性及预测性的特点[4]。一方面,管理系统需准确提供设备基本信息,包括厂商、型号、所在装置等,帮助用户管理企业设备资产;另一方面,系统需实现与仪表的实时通信,提供设备运行状态,帮助用户掌握设备动态以减少现场巡检成本。此外,通过对设备数据的综合分析,系统需及时发现设备故障或对设备状态进行预判,帮助用户提前做好维护计划,保障现场生产的安全性与高效性。基于上述要求,现场智能仪表管理系统主要功能包括设备组态管理、设备运维管理和设备事件管理,现场智能仪表管理系统功能架构如图1所示。
图1 现场智能仪表管理系统功能架构示意
1)设备组态管理。设备组态管理是对设备基本组态、报警配置、DD文件、参数配置等数据的管理。基本组态是设备的基本属性,包括: 身份码、厂商、类型、版本、物理地址、所属装置、位号等。该类数据的准确性是保障现场设备资产准确性的基础,也是表征设备的重要标识,因此是不可缺失的。在现场智能仪表不发生替换的情况下,该类数据应是固定的。报警配置包括: 各类型仪表的报警名称、报警等级、报警建议、报警过滤设置等。一般在智能仪表正式上线前会先配置各类仪表的报警,投入使用后可根据现场实际情况进行调整,该类数据变化较小,相对稳定。DD文件、参数配置是现场智能仪表管理的重要内容,通过对DD文件解析才可获取智能仪表的基本参数信息,包括智能仪表的参数列表、获取参数的命令等重要信息。因此,该类数据是设备组态管理的核心之一,且越完整系统功能越完善。同样,该类数据相对较为固定,发生变化的机会较少。
2)设备运维管理。设备运维管理涉及的数据包括: 从仪表采集到的实时报警、实时参数、多变量等运行状态数据和经过二次分析的KPI报表和状态诊断、预测结果等数据。运行数据表征着设备的工作状态,可通过该数据了解设备及整个现场回路的情形,因此是设备管理中的关键数据。当对某台智能仪表监测时,需不断更新仪表的实时参数,因此数据采集频率较高,约3 s采集1个参数,部分运行数据,如温度、压力等变化较为频繁,也有部分数据如单位等相对固定。KPI报表、故障诊断与预测分析结果等不仅需要基于设备的当前运行状态,往往也需要大量设备的历史运行数据,因此除实时数据外还需存储其历史数据。为支持可视化展示,还需统计实时数据,分别记录每10 min,每1 h,每天等不同时段的平均值、偏差等统计数据。以一个1×103点的装置为例估计设备运行数据量,每3 s采集1组数据,采集30 d则数据量达到8.64×105条,且每条数据带有时间戳,数据量较为庞大。
3)设备事件管理。设备事件管理是对仪表操作情况的记录,如报警的确认、消除,对参数的备份,对智能仪表的标定管理,智能仪表上下线等事件的记录。记录的内容包含: 时间、智能仪表基本信息、事件描述等。其中,报警事件、上下线发生略频繁,按日或月为单位记;其他事件发生频率相对较低,如标定与备份发生频率是季度或年度。以一个1×103点的装置为例估算设备事件数据量,平均每个点位每个月记录3个事件,则30 d的数据量为3×103条。
根据系统功能及所需数据特点,设备组态、设备事件多为非浮点型数据,数据内容较为稳定,数据量较小,数据插入和读取操作频率也相对较低,因此对数据库存储容量与操作性能需求整体较低,适宜采用传统的关系型数据库进行管理。设备运行状态数据多为浮点型,具有时序特征,对于点数较多的装置数据量会非常庞大。此外,还需基于数据分析智能仪表健康度,或将数据提供给上层仪控平台或第三方系统。因此,现场智能仪表管理系统对运行数据的存储和运行性能都提出了较高要求。
1)运行数据存储容量需求。例如: 1个1×103点装置1个月产生的运行数据至少约为1×106条,将这些数据分别写入传统关系型数据库PostgreSQL与时序数据库InfluxDB进行测试,观察数据所在文件目录占用硬盘大小。对于时序数据库,写入数据格式为1个timestamp字段,1个字符串字段作为tag,4个float字段作为field。为达到同样测试条件,PostgreSQL中对tag字段和timestamp字段需建立索引。采用时序数据库存储数据时,对计算机空间的占用约为传统关系型数据库的3%,总体来说,时序数据库对数据的压缩率远大于关系型数据库。对于点数较小的装置,采用如PostgreSQL的关系型数据库,也能满足存储需求。但随着现场装置的不断扩容与参数采集性能的增强,运行数据量将会呈指数型增加,此时关系型数据库将难以支撑系统的数据存储需求,且随着数据量增大,其访问成本、备份和恢复难度也会增加。为使系统更具可靠性和可扩展性,时序数据库可更好地满足数据存储的需求。InfluxDB与PostgreSQL存储性能比较: 时序数据库InfluxDB的数据存储容量需求为66 M,关系型数据库PostgreSQL的数据存储容量需求约为2G。
2)运行数据访问性能需求。现场智能仪表管理系统需支持对现场仪表历史运行状态的回放,以每条数据3 s的频率,查看1台仪表过去1 d的参数变化趋势,需一次性获取2.88×104条数据。访问的同时,数据库也需统计和写入实时数据。系统应支持一次性获取上万条甚至几十万条数据,且需保证并发读写的时效性,这对数据库的快速访问提出较高要求。关系型数据库借助分区和索引提高访问效率,但当数据库容量较大时,访问效率也会大幅降低。时序数据库基于时序数据特点,对写入、存储、查询等流程进行优化,具有高并发写入、低查询延时、高查询并发的特点。相比之下,时序数据库可更好达到数据访问性能的要求。
2.1.1基于PostgreSQL管理业务数据
PostgreSQL是一个功能非常强大的、开源的对象-关系型数据库管理系统(RDBMS),选用该系统管理智能仪表的基本属性与业务数据。将智能仪表的基本属性,包括设备唯一ID、物理地址、基本属性存储于同一张表中,其他表中的数据可用设备ID作为标签,需要更多信息时可根据该ID去查询。需要存储的其他业务数据表有组态数据表、报警事件表、DD文件解析表、操作日志表、报警配置表、参数配置表、用户管理表等。
2.1.2基于InfluxDB管理智能仪表运行时序数据
时序数据是按时间顺序记录的数据,在存储于数据库时具有以下特点: 数据量巨大;读写频繁;几乎不修改与单个删除;数据具有冷热性,即越新的数据越具有价值;不关注数据本身,更关注数据变化趋势。现场智能仪表的运行数据,如多变量、关键参数等,均符合时序数据的特点。时序数据库是为时序数据优化设计的数据库,当前,主流的时序数据库有InfluxDB,OpenTSDB,Promethus等。InfluxDB是由InfluxData公司开发的开源时序数据库,被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。张世贤等[5]基于InfluxDB搭建监控设备通用运维管理平台;王博远等[6]基于InfluxDB搭建长输供热系统的监控平台;刘金[7]利用InfluxDB存储与分析大规模集群状态数据。在最新的DB-ENGINES给出的时序数据库排名中,InfluxDB高居第一,该管理系统选用InfluxDB作为管理运行数据的数据库。
以多变量数据为例介绍基于InfluxDB管理智能仪表运行数据。InfluxDB中的表称为Measurement,以tag为标签,其中timestamp为默认标签,field为数据值。对智能仪表多变量数据表的设计见表1所列,时间戳和仪表ID为标签,4个多变量为数据值存储。InfluxDB可对数据库设计不同存储策略和连续查询,自动清除过期数据,提高数据库利用率,多变量存储策略和连续查询设计见表2所列。
表1 智能仪表多变量数据
表2 智能仪表多变量数据连续查询策略和存储策略
2.1.3基于Redis建立智能仪表实例模型
Redis是一种开源的、高性能的基于键值的缓存与存储系统,可提供5种数据类型来适应不同场景下的缓存与存储要求。查看智能仪表当前参数与状态是管理系统的重要功能之一,因此管理好智能仪表实时数据是保障系统性能的重要内容之一。本文选用Redis作为智能仪表实时数据的缓存数据库,采用hash数据结构来存储智能仪表数据,建立起智能仪表的实例模型。设备实例模型存储结构见表3所列,以设备ID为整个表的唯一标识,找到对应的智能仪表实例,根据业务需求将数据内容分为实时参数、多变量、OPC参数和报警数据,根据每类数据的名称找到对应的业务数据。
表3 设备实例模型存储结构(hash)
根据对该石化公司现场智能仪表管理系统数据特征及数据库应用需求分析,设计了以PostgreSQL,InfluxDB,Redis多数据库融合为基础的现场智能仪表管理系统,其整体架构如图2所示。驱动集群与DCS控制器通信,采集现场智能仪表的数据并推送给数据管理服务。数据管理服务对驱动返回的数据包进行解析、分类、整合,并将数据存储于对应的数据库。在InfluxDB中存储了智能仪表运行的时序数据,PostgreSQL中存储了智能仪表的组态数据与事件数据,在Redis中以智能仪表为对象存储了智能仪表参数当前的最新值。根据功能设计各应用服务,如资产管理服务、诊断服务、在线参数服务、报警服务等。各应用服务可根据自身业务需求从对应的数据库中获取或写入数据,如资产管理服务可从PostgreSQL中获取智能仪表组态信息;在线参数服务可从Redis中读取智能仪表当前的参数值;诊断服务可从InfluxDB中读取智能仪表多变量的时序数据。应用服务可根据前端请求内容将数据处理后返回给前端,也可根据前端下发的内容将数据写入数据库。
图2 现场智能仪表管理系统架构示意
目前,该系统已开发完成并在该石化公司现场部分装置投用,运行状况良好。其中,智能仪表信息管理的界面,可查看智能仪表的基础信息和报警事件记录;智能仪表的诊断界面,可查看智能仪表当前报警状态及多变量变化趋势;智能仪表在线参数界面,可查看智能仪表参数的实时值,对参数进行监测。
本文梳理了现场智能仪表管理系统功能及数据特点,并对数据库应用进行需求分析,设计了基于多数据库融合的现场智能仪表管理系统。基于PostgreSQL管理业务数据,基于InfluxDB管理运行时序数据,基于Redis管理智能仪表实时数据,解决了数据量大而繁杂、数据读取频繁时的数据库性能瓶颈。系统目前运行稳定,且具有较好的可扩展性,未来基于该系统可进一步挖掘智能仪表效益,帮助企业实现安全、低碳、高效生产的目标。