劉教敏,徐勝旗 ,沈 奇
(1.江西銅業集團銀山礦業有限責任公司,江西 德興 334299;2.深圳市德傳技術有限公司,廣東 深圳 518063)
尾礦庫是礦山企業重大危險源之一,尾礦庫安全監控一刻也不能放松[1]。通過尾礦庫安全管理系統對尾礦庫浸潤線、降雨量、壩體位移、庫水位等數據及時采集、分析與處理,為風險預警方案及災害應對措施的制定提供依據,有利于提高尾礦庫安全監測和管理水平,確保尾礦庫安全運行。江銅集團銀山礦業有限責任公司楓樹嶺尾礦庫在線監測系統利用最新的物聯網技術[2],實現了數據無線采集和自動存儲、預警顯示推送、網絡分發、安全評價等功能。由于尾礦庫在線監測系統遠離選礦廠集控中心,導致系統數據穩定性差,不能滿足安全生產和應急管理的需要,因此尾礦庫在線監測系統的數據集中監測顯得愈發重要。要實現數據集中監測,尾礦庫在線監測系統的監測數據需要與中控DCS系統進行數據融合共享,實現選礦廠集控中心全面監測尾礦庫運行狀態。為此,本文探討了尾礦庫安全監測系統與中控DCS系統進行通信融合、數據共享的方法,以實現數據集中監控。
江銅集團銀山礦業公司楓樹嶺尾礦庫在線監測系統當前監測設置表面位移監測點3個、浸潤線監測點12個、水位監測點1個、干灘長度監測點1個、內部位移監測點2個點(孔)、降雨量監測點1個,共計20個在線監測點,硬件組態圖如圖1。其中儀表采集數據方式如下:

圖1 硬件組態圖
①庫水位、干灘長度監測:使用超聲波液位計+研華4117模塊采集庫水位模擬量數據;雨量監測:使用脈沖型翻斗式雨量計+研華4150模塊采集雨量數據。以上兩種方法采集的數據,通過串口服務器連接至監測站中心機房核心交換機上。
②浸潤線、內部位移監測:使用基康數采儀采集振弦式滲壓計頻率信號和標準毫安信號,通過算法換算成浸潤線高度數據和內部位移數據,采用BGKMCUOverTCP協議與監測站通訊。
③表面位移監測:采用中海達GPS全球定位系統,將衛星定位實時數據與基準站數據對比,直接解算至數據庫。
本系統在線監測系統所有監測儀表數據采用RS-485串行總線標準,服務器端通過北京礦冶研究總院開發的BGRIMM BMS-Source一體化數據采集軟件統一配置,數據庫為SQL Sever2008。BMSSource軟件采集的數據和中間運算數據存儲在本地數據庫BGRIMMDB上。表面位移的數據由中海達GPS解算軟件把解算結果存儲在本地數據庫HiMonitorDB表上。兩個數據庫數據通過編寫代碼交叉引用。
江銅集團銀山礦業公司選礦廠中控DCS系統上位機采用美國羅克韋爾公司的產品FactoryTalk View Site Edition, FactoryTalk View Site Edition軟件是專為自動化過程或機器監視以及管理控制而設計的[3],其 內 嵌Visual Basic For Application(VBA)為自定義及擴展軟件功能提供了完整開發環境[4]。VBA提供了基于ActiveX數據對象庫(ADO)強大的數據庫交互功能,VBA 訪問實時數據庫方法簡單、靈活[5]。
經分析,由于兩個數據庫中所需要數據分布在不同表中,為了方便DCS系統ADO訪問數據庫,采用PHP語言設計腳本程序定時取數至同一個表中。DCS上位機系統通過編寫程序對遠程數據庫進行查詢,并關聯交換數據至DCS系統的數據庫內,實現數據融合交換。數據流示意圖如圖2所示。

圖2 數據流示意圖
由于BMS-Source采集軟件采集的數據以不同的格式存放在不同的表中,為了提取需要的數據,采用PHP語言編寫腳本。
為了準確記錄提取腳本時間和便于后期維護,建立提取數據日志,代碼如下:
public function index() {
import(′@.ORG.Mlog′);
$log = new Mlog(′./Log/′, ′request_record′); //新建一個日志記錄集
$log->mwrite(sprintf("%s... ", date(′Y-m-d H:i:s′))); }// 寫入日志,記錄腳本執行時間。
查詢從表tdm_monitor_point中查詢最新數據(依次是:庫水位、干灘高程、浸潤線1~21、內部位移15~18、降雨量),將數據依次存入$d數組中,寫入 V1 ~ V19主要代碼:

從表tdm_deform_surface中查詢表面位移最新數據,將表面位移數據存入$d數組中,寫入V20~ V31。


系統定時執行PHP腳本文件,完成了2個數據的查詢工作,等待下一個事件觸發。清空表中上一次查詢數據,定時提取最新一條數據至tdm_monitor_latest_value表中,使其保持最新數據,表中的數據刷新時間可以自行設定。代碼如下:
M(′tdm_monitor_latest_value′)->where(′1=1′)->delete(); // 清空表
M(′tdm_monitor_latest_value′)->add($d); // $d中已經包含V1~V31個最新數據,將數據寫入表tdm_monitor_latest_value中。
根據數據定義,V1:庫水位;V2:干灘高程;V3~V14:1#~21#浸潤線;V15~V18:1#~4#內部位移;V19:降雨量;V20~V22:1#表面位移X/Y/Z;V23~V25:2#表面位移X/Y/Z;V26~V28:3#表面位移X/Y/Z;V29~V31:4#表面位移X/Y/Z。提取的效果,如圖3所示。

圖3 數據提取效果圖
由于楓樹嶺尾礦在線監測系統為實時運行,不便于在數據庫中直接做實驗。本文以在實驗室服務器建立一個本地數據庫BGRIMMDB的方式進行仿真實驗,建立laster-value數據表,并通過SQL數據庫管理軟件強制寫入V1~V6的變量數據,通過編寫VBA腳本建立數據庫鏈接,實現數據查詢、變量關聯交換,實時將數據庫數據寫入上位機軟件FactoryTalk View SE中,具體步驟如下:
要在FactoryTalk View SE中獲取數據庫數據,首先在上位機建立內部標簽通過VBA腳本完成數據的關聯交換,如圖4所示。在VBA中要使用FactoryTalk View SE中的標簽,首先建立標簽組對象TagG roup,然后利用標簽組對象的Add方法將具體標簽加入標簽組對象,再利用標簽組對象的Itam屬性將所加點賦予一個標簽對象,利用標簽對象的Vaue屬性進行標簽值的操作[6]。變量聲明代碼如下:

圖4 建立內部標簽

通過ADO數據訪問,與遠程數據庫建立鏈接,查詢結果存儲在Recordset中。設定對象OtagG為創建標簽組,循環執行查詢數據并與OtagG對象關聯,使OtagG對象數據處于最新狀態。關聯具體代碼如下:



FactoryTalk View SE客戶端在切換頁面時,VBA腳本程序自動執行,上述循環程序可以完成自動刷新數據操作。通過FactoryTalk View SE的內部數據存儲功能,可以實現趨勢圖和歷史數據分析,實時把尾礦庫在線安全監測系統與FactoryTalk View SE系統完整融合。利用現有的FactoryTalk View Point軟件遠程發布到公司局域網進行Web實時訪問。事例運行效果圖如圖5。

圖5 運行效果圖
本文以尾礦庫安全監測系統為例,利用DCS系統上位機FactoryTalk View SE支持VBA編程的功能,通過系統數據結構分析、編寫代碼,實現了數據庫定時提取、上位機數據交換融合的效果。實驗結果表明,通過VBA腳本訪問SQL數據庫,與上位機數據標簽組建立關聯,實時提取SQL數據庫數據至DCS系統的方法切實可行,為礦山大數據平臺實現數據融合提供一種思路,具有廣闊的應用前景。