闫 伟,白 清,谷 行,王 东,王 宇,靳宝全,2*
(1.太原理工大学新型传感器与智能控制教育部与山西省重点实验室,太原 030024; 2.煤与煤层气共采国家重点实验室,山西 晋城 048012)
布里渊光时域反射BOTDR(Brillouin Optical Time Domain Reflectometry)应变检测技术是一种基于光纤布里渊散射信号与应变的线性关系,采取单模光纤作为应变信息的传感与传输的介质,从而实现在全光纤长度上应变检测的技术[1-2]。该技术具有单端探测,长距离在线监测等优点,故成为研究热点并在结构健康检测等领域得到了广泛应用[3-4]。
目前布里渊分布式光纤应变检测系统应用最广泛的数据处理方式是利用上位机系统进行数据处理,由于传感器产生的数据量庞大、上位机自身计算能力和存储空间的限制,因此降低了应变检测系统的整体性能,且研发集数据采集处理、显示、云存储以及异常报警查询功能于一体的分布式光纤应变监测系统及技术路线寥寥无几[5]。因此,研究基于云数据处理的分布式光纤应变远程监测系统集成方案,设计研发一套数据高效实时处理的云数据监测系统,进而提升系统的整体性能具有非常重要的意义[6]。
针对以上问题,本文在原有分布式光纤应变检测实验平台的基础上设计了一种基于云数据处理的分布式光纤应变远程监测系统,依据BOTDR应变检测技术,通过原理验证及系统集成完成模块设计[7-8]。在MFC(Microsoft Foundation Classes,微软基础类库)应变检测软件中借助ActiveX数据对象ADO(ActiveX Data Objects)数据库访问技术和多线程机制实现对云数据库的访问和数据的高效传输,通过基于ORACLE设计的数据库系统来实现对云数据的实时处理和存储[9]。
本监测系统选择客户端/服务器(Client/Server)模式进行系统架构,分为上位机客户端和云端服务器数据库。C/S的系统架构模式是由客户端和服务器构成,该模式充分发挥了两终端计算机的数据处理性能,因此具有强大的数据操纵和事务处理能力[10]。其整体方案如图1所示。
图1 系统整体方案设计图
上位机系统的应变检测依据BOTDR应变检测技术,采用微波外差相干探测法实现对布里渊信号的检测,最终实现了数据的采集[11-12]。本应变检测系统空间分辨率为1 m,为提高系统测量精度,采用250 MSa/s的数据高速采集卡对采集信号进行了 10 000 次的实时累加平均,使应变测量精度达到±50 με。若将系统的应变灵敏度定义为传感光纤不施加应变时系统可检测到的最小应变,因此本系统应变灵敏度为 25 με。
上位机客户端程序通过ADO接口编写数据库访问接口程序来实现应用程序级的数据库访问,使用多线程同步互斥机制实现与数据库的高并发数据交互。在此基础上,ADO通过对象连接与嵌入OLE DB(Object Link and embed)系统级数据库驱动与云数据库进行数据交互。上位机客户端位于地面监控中心,与埋设在地下管道表面的光缆连接,用于实时采集和解调光纤中的布里渊后向散射信号,具有详细参数设置、应变信息解调显示以及应变数据云存储等功能。
为充分挖掘客户端与服务器的运算处理性能,系统将部分数据处理和数据存储的工作迁移至远程云服务器完成。在云服务器搭建ORACLE数据库存储上位机计算产生的数据,通过OLE DB系统级数据库接口将数据存入云数据库中,并完成进一步的处理,实现实时报警数据的筛选、应变报警阈值的设定、数据合并、数据批量绑定传输、历史数据存储等功能。
分布式光纤铺设于地下管道表面用来检测埋地管线的应力危害,当埋地管道的某一位置发生裂缝或弯曲时,铺设管道表面的分布式光纤随之产生相应的应力变化,光纤中返回的布里渊后向散射信号随之发生频移变化。针对系统采集与处理的海量数据[11],首先通过上位机软件的计算进行预处理,解调出基本的应变信息进行可视化显示。
ADO数据库访问编程接口是由微软公司推出的一种以ActiveX技术为基础的基于通用对象模型(COM)的数据库访问技术,它是一组基于OLE DB系统级数据库接口的高级应用程序接口[13]。ADO数据传输的流程图如图2所示。要使用ADO编程接口,首先要在MFC程序中引用ADO类型库并初始化环境。在接口的设计与实现中使用Connection对象连接数据库,使用Recordset记录集对象获取数据库的数据表记录数据,使用Command对象调用关键数据处理的存储过程,从而完成数据分析与处理的流程。最后在OLE DB系统级数据库接口与Oracle提供的驱动程序的匹配下,通过RDS(Remote Data Service)远程数据服务实现MFC程序与云数据库的远程数据交互。
图2 ADO数据传输流程图
ADO是一个支持多线程的应用程序接口,当客户端出现大量并发的数据请求时,仍然可以保持云服务器稳定的运行效率。因此在大数据量采集和高速数据传输的需求下,上位机客户端使用多线程机制来实现对数据库的并行访问。
在MFC程序主进程中建立数据读取、数据写入和数据函数调用三个子线程。为使三个子线程的数据传输达到同步,利用多线程同步互斥的机制为三个子线程分别建立多线程同步信号锁,通过控制三个同步信号锁的建立和释放实现数据同步;同时为三个子线程共同访问的数据临界区添加临界区互斥锁,避免三个线程在操作同一数据时出现死锁的现象导致程序卡死,最终保证了各子线程中数据交互的唯一性和安全性,初步实现了MFC程序与云端数据库多线程、安全、并发、高效的数据传输。MFC多线程访问云数据库流程图如图3所示。
图3 MFC多线程访问云数据库流程图
针对原分布式光纤应变检测系统无法实现远程监控的问题,基于ORACLE设计了云数据库实现对系统数据的云处理。ORACLE数据库系统是美国甲骨文公司发布的目前最流行的一种关系型数据库[14]。本监测系统中产生的数据量庞大,且需要保证大数据量的实时传输,因此数据库对数据的实时处理和分析过程较为复杂。本数据库系统设计中主要涉及需求分析、数据库结构设计以及关键数据处理流程设计等过程[14]。
本系统处理的数据关系较为简单,但数据量庞大,实时性要求较高,因此使用结构化分析方法(Structured Analysis)及自顶向下逐层分解的思想设计了数据流图。数据流图不同于传统的流程图和框图,它是从数据传输和处理加工的角度,以图形为描述方式来描述数据在系统中的流动和处理的数据库描述工具[15]。通过数据流图的设计,可以清晰的明确数据在系统内部的逻辑流向和逻辑变换过程,为后续数据处理存储过程的设计提供思路[15]。数据流图如图4。
图4 数据库数据流图
由图4可知,本远程数据库系统含有四个数据实体,它们分别是实时应变信息、历史应变信息、实时异常信息和应变阈值信息,对这四个数据实体进行深入分析,以及进一步深入分析得出各数据实体的属性及实体之间的数据关系,从而完成数据库概念模型的设计。通过设计的数据库概念结构模型,可以设计出数据的存储结构(即数据表结构),解决数据的存储问题。实体关系图(E-R图)是一种描述现实世界的概念模型,它主要包含实体、属性、联系三大元素,其中矩形框代表实体,菱形代表实体之间的关系,椭圆框代表实体所拥有的属性[15]。设计的数据库系统E-R图如图5所示,由图5可知数据库中需要建立实时数据表、历史信息记录表、阈值表以及异常应变报警表。
图5 数据库实体关系图
在Oracle数据库中,数据的处理和分析是通过一系列的触发器、存储过程以及事务处理来完成的。根据图4的数据流图深入分析设计得出关键数据处理的流程图。关键数据处理流程图如图6所示,由图6可知需要建立三个存储过程来完成关键数据的处理,它们分别是数据合并、数据批量绑定以及序列重置。
图6 关键数据处理流程图
数据合并存储过程用来将实时数据表中的多条记录通过大字段数据合并成一条记录并将其存入历史表中完成存储。该存储过程在触发器中执行,当云数据库系统检测到新的实时数据存入并完成数据刷新后,该存储过程将被触发执行。为存储合并后的超长字符串数据,采用字符型大型对象CLOB(Character Large Object)数据类型对其进行存储,该数据类型可存储单字节字符数据,其字段容量大,最多可存储 4 Gbyte 的数据,非常适用于大数据量的处理和存储[16]。在使用CLOB类型之前,首先声明CLOB对象变量,向目标表中插入一条空记录,即插入的记录中CLOB类型的变量没有数据,然后将CLOB字段与声明的CLOB变量进行绑定,并以读写的方式打开该对象变量。与此同时,从源表中获取数据将合并后的超长字符串传递给声明的CLOB变量,再将CLOB变量指向的超长字符串传递给目标表的对应字段中,最后关闭CLOB对象,完成数据合并和超长字符串的插入[14]。数据合并存储过程流程如图7所示。
图7 数据合并存储过程流程图
数据批量绑定存储过程通过MFC客户端程序的ADO编程接口调用SQL命令来执行。传统的命令循环传递的方式数据存储速率缓慢,效率低下,无法实现系统的实时性要求。为解决这一问题,本系统使用批量绑定技术,将异常记录进行提取并以时间递减的方式排列;建立一个存储数据的数组,将实时数据表的关键字段与建立的数组绑定。当实时数据表中存在异常记录时,通过筛选数据和批量绑定方法存入数组后,执行并发插入命令将大批量数据高效并发的插入到异常应变报警表中。最终实现在实时数据表更新数据之前将异常应变报警表中的数据存入异常应变报警表中。数据批量绑定存储过程流程图如图8所示。
图8 数据批量绑定存储过程流程图
序列重置存储过程用来重置历史信息记录表中S_ID字段递增用到的序列。为清除历史信息记录表中因各种原因插入错误的数据,防止客户端程序在访问云数据库时发生错误,在数据库中设计了一个存储过程和一个触发器来实现错误数据的自动清除与序列的自动重置,其中存储过程在触发器中触发执行。当历史信息记录表中错误数据过多时,数据库管理员将会对该表执行删除或清空操作,该操作将引发触发器的自动执行,实现表序列的重置,从而使得新插入的数据记录保持正确的顺序。序列重置存储过程流程图如图9。
图9 序列重置存储过程流程图
基于安全与数据加密的因素,本远程监测系统根据设计的系统方案通过组建专线内网实现了上位机客户端与云数据库的数据传输。在上位机配置数据库连接环境,MFC程序中设计编写MFC数据库访问接口模块并完成代码封装;在云服务器配置数据库环境,分配IP地址搭建设计完成的数据库系统,并完成单用户数据访问终端的部署。最终完成了云数据库的搭建和上位机客户端的部署,初步实现了单用户模式下基于云数据处理的分布式光纤应变远程监测系统。
在此基础上测试了系统在长时间连续传感状态下,上位机与云数据库数据交互与实时监测数据的性能。通过对云数据库系统连续1 h的运行性能监控,可以看到系统运行进程主要分为CPU、System I/O及Commit三部分,其中CPU处理事务的平均活动会话数基本保持在0.04,System I/O事务的平均活动会话数约占0.02,事务提交的平均活动会话数约占0.02,CPU Wait时间可以忽略不计,证明数据传输过程中未发生异常等待事件,初步证明该数据库系统的数据处理稳定性较好。远程数据库系统连续运行性能监控如图10所示。
图10 远程数据库系统连续运行性能监控
通过对系统单个数据块读取等待时间的连续1 h运行监控,可以看到等待时间稳定在4 ms内,从系统的整体运行状态来看是可以忽略不计的,证明该数据库系统的数据实时性较好。数据库系统单个数据块读取等待时间如图11所示。
图11 数据库系统单个数据块读取等待时间
图12 云数据库应变实时表数据可视化监测显示
同时,在上位机应变检测程序与云数据库正常运行状态下进行1.5 km光纤的拉伸应变模拟实验,拉伸光纤布里渊频移为10.725 GHz,采用微波本地振荡器以5 MHz的扫频间隔对其进行频率扫描,从而得出光纤沿线所有的布里渊频移,最终得出光纤沿线的应变变化。通过对1.5 km光纤的末端1 430 m处施加拉伸应变来模拟异常应变。使用数据库管理工具对云数据库应变实时表中的数据可视化处理得到光纤沿线应变分布。由图12可知在1 429 m到1 430 m之间存在异常应变,应变峰值为866.94 με。
综上所述,系统在1 h连续监测状态下运行稳定,有良好的实时性,验证了在连续传感状态下,系统达到了上位机与云数据库之间数据并发和实时监测的数据交互速度。初步实现了集云数据处理、存储、显示于一体的分布式光纤应变远程监测系统。
本文基于ORACLE设计搭建了单用户模式下的分布式光纤应变远程监测系统的云数据库系统,基于ADO数据库访问技术完成了云数据库访问接口的设计与封装。本远程监测系统将位于现场光缆中的实时数据传输到位于地面监控中心的上位机客户端中,实现了初步的数据处理和显示,地面监控中心通过ADO接口及其RDS远程数据服务将实时应变数据传输到云服务器中,实现了云数据处理和存储的功能。通过系统性能测试和实践结果表明,该系统可在单用户模式下实现实时的应变监测、异常数据云处理和存储功能,数据信息获取方便,简化后续网络监测的实现,有效的解决了数字化管理系统中大数据量的数据处理和存储问题。