閆 偉,白 清,谷 行,王 東,王 宇,靳寶全,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遠程數據服務將實時應變數據傳輸到云服務器中,實現了云數據處理和存儲的功能。通過系統性能測試和實踐結果表明,該系統可在單用戶模式下實現實時的應變監測、異常數據云處理和存儲功能,數據信息獲取方便,簡化后續網絡監測的實現,有效的解決了數字化管理系統中大數據量的數據處理和存儲問題。