黄国兵,姚佳鑫,贾荣兴,王 茜
1(西安工程大学 计算机科学学院,西安 710048)
2(国网陕西省电力公司 榆林供电公司,榆林 719000)
随着物联网技术和云计算技术的快速发展,工业企业的在线监控系统也不断引入新的技术手段,实现系统升级以扩展功能和提高系统性能.发电厂汽轮机振动信号在线监测系统在发电厂进行振动信号监测,再由专业的振动信号专家诊断中心进行振动故障的远方分析,因此需要实现振动信号到诊断中心的数据转储[1].为了实现这一任务,在诊断中心部署服务器系统,并注册专门网址,通过公共IP 网络实现信息传输.这一方案的主要问题是IP 地址资源紧缺,一个诊断中心要对几十座甚至上百座发电厂的振动信号进行检测,只能分时对存在故障的电厂进行分析,严重影响了工作效率.为了实现振动信息故障诊断系统在线运行的目的,采用目前流行的云数据库技术对其进行软件维护升级,实现发电厂当地传感与数据采集小主站和诊断中心主系统的振动信息转储,解决振动信息转储不畅的问题.云数据库技术以其高可用性、较低的使用成本、易用性等特征,在企业数据库信息管理方面得到了广泛应用[2-4].随着云计算技术的涌现和推广应用,云存储技术已经进入人们的日常生活,如云广电、云闪付等[5,6].这为振动信号的转储给出了新的思路.为了实现项目软件升级,主要在原系统的基础之上,重新构建当地监控小主站的转储子系统,并保证信息转储的整体性、及时性和安全性,从而达成振动信息转储性能保证的目的.
汽轮机振动信号在线监测系统由振动信号监测终端、当地监控小主站、公共数据传输网络、专家诊断中心主系统4 部分组成,当地监控小主站负责收集监测终端采集的数据,并储存于本地SQL Server 数据库中[7],同时,小主站定时与诊断中心数据库系统连接,将储存的信息转储到诊断中心数据库系统,供专家诊断分析使用,如图1所示.
图1 汽轮机振动信号在线监测系统连接图
图1所示的系统中,由于受IP 地址网络资源的限制,发电厂当地小主站与诊断中心数据库系统通信一直是该系统运行的瓶颈.
汽轮机振动信号检测系统需要存储的信息主要包括3 类数据:(1)瞬态数据.从100 r/min 开始存储数据,转速每变化△rpm存储一组数据,直至转速达到3000 r/min.(2)稳态数据.转速稳定在3000 r/min 时开始存储数据,每△t存储一组数据.(3)报警和危机数据.无论在瞬态,还是在稳态过程,当振动量超过ALARM-1 定值时,启动告警超限存储,包括振动储波形和频谱数据.以当前振动数据为基准,振动量变化超过△c时,再次启动超限存储,依此类推.当振动量超过ALARM-2 时,启动危机越限存储,规则与告警越限相同.可见数据库中有3 类数据,用3 张表来存储,数据信息均可看作一组字节流.数据库表的格式如表1所示.
表1 振动信息数据库表定义
表1中,信息类别字段区分了3 张不同的数据库表.3 类数据表的格式一致,只是数据信息的长度、内容和格式不一样,为了提高数据存储的效率,转储时,仍按3 张表分别转储.
由1.2 节所述,需要转储的振动信息都保存在数据信息字段中.根据项目需求,振动信息按组保存,每组32 个周期的采样信号,每个周期采样32 次,即1024 字节.其次,开停机过程中,汽轮机转速每变化20 r/min采样1 组数据,数据信息的大小由开停机的时间长度确定;稳态运行时每4 s 采样1 组数据,每分钟15 组数据.第三,故障告警时,保存事故追忆信息,事故前后各90 组数据,共计180 组数据.信息转储时,启停机瞬态数据和稳态数据每1 分钟转储1 次,故障告警时,告警记录插入发送.考虑到云数据库的存储容量,抛在云端的瞬态和稳态数据最多存放24 小时,过期删除.故障告警数据(即事件信息)保存最新20 个事件,即3600组数据,超出部分自动删除.由此可见,瞬态和稳态数据的信息字段长度一般为15 K 字节,故障告警数据的信息字段长度为180 K 字节.
采用云数据库技术实现信息转储时,可以从根本上解决因IP 资源不够、公共网络信息传输速度慢造成的通信不畅的问题.这是因为云数据库上的信息分布保存,云计算的并行处理能力强大,与云端的网络通信的通信效率高.
云数据库的类型包括关系型数据库和非关系型数据库两种[8],结合项目具体应用需求,选择非关系型数据库来实现本应用的功能.本项目需要转储的信息为表1所示的3 张振动信息表,信息之间的关系简单,且关系型数据库租用价格也远高于非关系型.在非关系型数据库中,选择了云数据库MongoDB 版[9,10].MongoDB基于高可靠存储引擎技术设计,满足本应用的需求.
信息转储的关键在于振动信息的完整性和可追溯性[11],防止网络通信终端或转储任务软件异常造成信息漏传.为此,数据转储任务需要自动检测本地和云端数据库表的同步状态,来决定下一步所需要开展的转储业务.数据转储业务包括正常信息转储和信息追补两种,在二者信息同步时正常转储,否则对不同步的信息进行追补,以达到信息转储完整性的目的.为此,需要在云端创建一张信息转储的进度表,与本地系统信息生成的状态表进行比对,实现信息转储的同步.此外,支持诊断中心系统下达的人工召唤命令,允许诊断中心人工召唤指定开始时间和结束时间的任何一张表的数据信息.进度表包括电厂编号、机组编号、业务类型、信息表类型、已完成的信息转储时间点等字段;召唤命令表包括电厂编号、机组编号、信息表类型、命令下达时间、开始时间和结束时间.进度表中,信息表类型表征瞬态、稳态和事件3 种信息,这3 种信息各自独立进行上传,其中事件信息为插入上传;业务类型字段用于区分周期转储、追补信息和人工召唤.转储任务则根据这两张表的内容进行转储业务调度,并对这两张表进行更新维护,如图2所示.
为了实现信息转储的有序进行,应用软件创建了一个专门的转储线程实现图2所示的业务.转储线程依据进度表按时序调度振动信息上传业务.如果召唤命令表中有命令需要处理,则在进度表中插入人工召唤业务的记录;如果有故障告警信息,则插入传送;如果检测到有信息漏传的情况,则在进度表中添加追补业务的记录.进度表中的人工召唤业务和追补业务一旦完成,进度表中对应的记录自动删除.周期业务每30 s上传一次,与先前软件的上传周期一致.为了提高转储业务的效率,转储线程每次完成一个时间点需要上传的所有信息,例如:瞬态、稳态和事件3 种信息在同一时间点都有信息上传的需求,则连续完成所有需要上传的信息.周期业务每30 s 根据时间是否到达启动一次上传,而人工召唤和追补信息的业务需要连续上传,因此线程每0.5 s 启动一次,检查是否有非周期性业务,如果有,则进行一个时间点信息的上传.每次操作完成都进行一次进度表操作,确保转储业务的连续性.
图2所示的转储线程中,为了防止因当地监控系统运行异常造成信息流程失步,进度表保存在云端数据库中,转储软件运行时本地内存保存该进度表的拷贝,每次操作完成之后都进行进度表核实.
图2 振动信息转储线程的流程框图
转储软件负责与云数据库通信的维护,软件设计一个状态变量显示与云数据库的通信状态,一旦上传失败,云访问状态黄色降级显示,连续10 次通信失败,则生成云数据库访问失败的告警事件,并红色显示;其间如果信息上传成功,则自动恢复云访问状态正常的绿色显示.这样转储软件既能监视云数据库访问的状态,也不会因为偶尔的访问失败而产生太多的无用日志信息,造成系统维护人员的视觉疲劳.
为了实现基于云数据库的技术转储,振动信息专家诊断中心部署了集团客户VPDN 业务网络,可以高速访问云数据库,各发电厂则部署了专门的4G 路由器,从而实现了发电厂和诊断中心的4G LTE 通信网络[12],以保证云数据库的访问速度.
基于4G LTE 的路由器上行速度可达50 M,下行速度可达100 M[13],而厂站端下主站周期上传的业务为15K 字节/分钟,故障告警时有180 K 字节的数据信息需要插入传送,约1.44 M 位,网络通信不存在瓶颈.并且云数据库的并行处理能力强大,访问效率高[14,15],数据库访问延迟小,可满足振动信息转储的及时性需求.
在软件编程调试中,能发现基于4G LTE 通信网络和云数据库访问的速度很快,不存在信息转储不及时的问题.由此可见,基于云数据库技术的数据转储完全能保证振动信息在线监测系统网络数据传输的及时性.
根据项目技术规范书,采用公共网络资源进行信息转储需进行安全加密.在先前所实现的系统中,振动信息字段进行了最简单的加/解密处理,即加/减0x33的处理方法,只是让网络监听者不能直接阅读振动信息的内容.尽管云数据库的信息安全等级很高[16],但是信息转储的用户也不希望把自己的生产信息明码存放在其中.考虑到转储信息需要进行加密处理,加密算法也不能过于复杂,复杂的加解密算法会影响信息转储的效率.经过权衡选择,最后选用了QQ 文件传输的TEA(Tiny Encryption Algorithm)算法[17].TEA 是一种对称的分组密码算法,其明文和密文的长度为64 位,私有密钥的长度为128 位,采用黄金分割率delta调节每轮迭代的加密计算,抗差分分析能力强,安全性好[18].而且TEA 的计算复杂度低,适用于信息转储时的加/解密要求.
根据TEA 算法的原理[18],设sum为0,delta为0x9E3779B9,加密算法公式为式(1)~式(3):
相应地,解密算法的公式为式(4)~式(6):
式(1)~式(6)中,k0~k3为128 位密钥,式(2)~式(3)中V0~V1的初值为待加密的64 位数据,式(4)~式(5)中V0~V1的初值为待解密的64 位数据.
由于振动信息字段的长度以KB 为单位,也不一定是8 字节的整数倍,这里选用文献[17]中的填充算法和交织算法实现全字段的加/解密处理.软件实现时,设计好TEA 算法类,并实现加密和解密交织函数接口,调用这两个函数即可对振动信息字段的加密和解密处理.由于表1中其它字段要用于信息检索,对信息安全无影响,因此这些字段不作加密处理.
振动信号转储系统的MongoDB 云数据库采用了ReplicaSet+Sharding 集群部署方式.根据应用的需要,云数据库中已经统一创建了数据库和数据集合表,这里只需要对指定库表中的记录进行访问,即可实现振动信息记录的传输.根据云数据库MongoDB 的数据手册,使用了其中query、update 和delete 等命令函数实现数据库记录的访问.其中update 实现记录按key 值插入和更新,query 用于信息查询,delete 用于删除已执行完成的人工召唤命令.结合数据手册和应用案例[19],将接口访问命令封装成专门的MongoDB 接口类,实现具体的访问操作.
在完成项目软件设计编程之后,在实验室对所设计软件的功能和性能指标进行了测试和验证.
(1)测试环境.采用一台PC 服务器运行图1所示的当地监控系统软件,并使用该软件把现场运行时产生的数据模拟汽轮机运行,形成数据源.该PC 服务器采用电信宽带接入公网,与租用的百度云MongoDB 版云数据库通信,进行信息转储.利用项目组其它成员开发的诊断中心服务器振动信息下载软件,检查云中数据信息记录是否正确,并模拟下达人工召唤命令.
(2)测试内容.检查转储软件能否正确完成周期上传、追补上传和人工召唤上传的业务.
(3)测试方法和过程.①模拟软件连续运行3 天,在72 小时内模拟3 次开停机,300 次振动事件,按时序生成瞬态、稳态和事件3 种信息;②转储软件随模拟软件并列运行,每天检测一次上传信息是否正确、完整.③中断网络连接或转储软件退出一段时间后再启动运行,检测转储软件是否自动产生追补业务,并完成漏传信息的追补上传.④模拟下达人工数据召唤,检测转储软件是否产生人工上传业务,并将人工召唤的信息上传.⑤观测主界面自动刷新显示的进度表,观测转储软件运行的状态是否和预期一致.
(4)测试结果.①转储软件72 小时运行,模拟生成的数据都正确传至云数据库中;②软件运行过程中,如果发生数据信息漏传的问题,能够自动将漏传的信息追补至云数据库中;③软件能正确执行上位系统下达的召唤命令,将指定的信息上传至云数据库中;④软件运行过程中主界面显示的进度状态与预期一致.
检测结果表明,所设计的转储软件的各项功能和性能指标都满足技术规范书的要求,项目研究和产品开发达到了预期目的.
针对一款振动信号在线监测系统数据采集子系统信息上传不畅的问题,采用云数据库技术实现了振动信息从发电厂当地监测系统到诊断中心数据信息转储的业务.使用非关系型云数据库实现信息迁移转储,在不破坏现有架构的基础上替换原系统应用软件中的数据转储子系统.为保证基于云数据库技术解决方案中振动信息转储的性能,主要从3 个方面进行了专门考量:(1)为了确保信息转储的完整性,软件设计了转储线程自动调度周期上传、漏传追补和人工召唤3 种业务的运行,将储存在当地监控系统中的瞬态、稳态和事件3 种振动信息完整地上传至云数据库中;(2)针对振动信息转储的及时性,从信息转储的容量和为实现信息转储部署的通信网络两个方面进行了分析,表明系统升级后信息转储的及时性能得到保证;(3)为了保障振动信息转储的安全性,采用TEA 算法对振动信息字段进行了加密处理.实验室测试的结果表明,基于与数据库技术的振动信息迁移转储功能正确,振动信息转储的完整性、及时性和安全性3 个性能指标也得到了有效保证.下一步将在发电厂当地监测小主站中部署所设计的软件,并在现场运行的过程中进一步完善.