劉勝娃,曹湘華
(中國石油川慶鉆探工程有限公司長慶鉆井總公司,陜西 西安 710021)
隨著物聯(lián)網(wǎng)技術(shù)[1]的發(fā)展,鉆井作業(yè)過程中的實時數(shù)據(jù)采集和智能處理技術(shù)得到了進一步的發(fā)展,成為鉆井企業(yè)的迅速發(fā)展的新動力。石油鉆井公司通過引進新的傳感器技術(shù)[2]和數(shù)據(jù)采集、傳輸?shù)燃夹g(shù),提高了鉆井作業(yè)數(shù)據(jù)采集、傳輸和存儲的智能化和自動化水平。通過數(shù)據(jù)處理、校驗等操作后將實時采集到的數(shù)據(jù)利用作業(yè)現(xiàn)場的網(wǎng)絡(luò)技術(shù)集中遠(yuǎn)傳到數(shù)據(jù)控制中心進行數(shù)據(jù)存儲及應(yīng)用,以用于實時有效地分析各種不同鉆井作業(yè)情況,極大地提高了鉆井作業(yè)的實時決策水平以及鉆井作業(yè)效率。
網(wǎng)絡(luò)通信是將計算機信息技術(shù)與通信技術(shù)結(jié)合應(yīng)用[3],在聯(lián)網(wǎng)的情況下實現(xiàn)不同PC之間數(shù)據(jù)的傳輸。鑒于石油公司數(shù)據(jù)的保密性,需要設(shè)計一款功能特定、安全性高的并發(fā)遠(yuǎn)程系統(tǒng)供企業(yè)內(nèi)部使用。
為了實現(xiàn)實時數(shù)據(jù)遠(yuǎn)傳及多線程收發(fā),本文以石油鉆井現(xiàn)場作業(yè)數(shù)據(jù)遠(yuǎn)傳為目的,采用socket的網(wǎng)絡(luò)通信技術(shù)[4]與C#多線程編程技術(shù)[5]設(shè)計并實現(xiàn)數(shù)據(jù)的壓縮、解壓、加解密、編解碼、校驗與遠(yuǎn)程功能C/S模式架構(gòu)的系統(tǒng)。該方法既能滿足數(shù)據(jù)的實時傳輸需求,也能滿足加密校驗等功能要求。
軟件系統(tǒng)的基本架構(gòu)由井場端與數(shù)據(jù)中心服務(wù)器端組成,實現(xiàn)井場客戶端實時讀取鉆井儀表控制系統(tǒng)寫入本地數(shù)據(jù)庫中的數(shù)據(jù),并進行傳輸協(xié)議WITS[6]的封裝、壓縮[7]、加密[8]、校驗[9]以及數(shù)據(jù)與心跳的發(fā)送。在數(shù)據(jù)中心服務(wù)器端完成數(shù)據(jù)的校驗、解密、解壓與WITS協(xié)議的解析,以及數(shù)據(jù)的動態(tài)存儲。如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
井場客戶端界面如圖2所示??蛻舳艘远嗑€程方式實時讀取本地MySql數(shù)據(jù)庫中的以Blob類型存儲的數(shù)據(jù),其中隊號、井號、井ID與軌跡ID可通過配置文件進行配置,或通過界面方式進行輸入;同時具有斷線自動重新連接的獨立線程,其核心代碼如下:
圖2 井場客戶端用戶界面
根據(jù)鉆井現(xiàn)場作業(yè)參數(shù)與使用需求,設(shè)計了相關(guān)讀取數(shù)據(jù)庫中流數(shù)據(jù)的結(jié)構(gòu)體解析、WITS的封裝、壓縮、加密、校驗。以下為具體編寫步驟:
數(shù)據(jù)中心服務(wù)端界面如圖3所示.
圖3 數(shù)據(jù)中心服務(wù)端用戶界面
系統(tǒng)服務(wù)端根據(jù)發(fā)送數(shù)據(jù),設(shè)計數(shù)據(jù)的讀取、拼接、校驗、解密、解壓、WITS協(xié)議解析、數(shù)據(jù)存儲與實時讀取顯示控制。以下為具體編寫步驟:teamNo varchar(128) DEFAULT NULL, dataTime datetime DEFAULT NULL, “weightRange float DEFAULT NULL,weightZero float DEFAULT NULL, weightAngle float DEFAULT NULL, pressureRange float DEFAULT NULL, inc float DEFAULT NULL, az float DEFAULT NULL, gtf float DEFAULT NULL, mtf float DEFAULT NULL, “c1 float DEFAULT NULL, c2 float DEFAULT NULL, c35 float DEFAULT NULL, c64 float DEFAULT NULL, c65 float DEFAULT NULL,PRIMARY KEY (id)) DEFAULT CHARSET=utf8”;
string sql = “insert into data (wellId,trackId, wellNo, teamNo, dataTime, weightRange,weightZero, weightAngle, pressureRange,inc,az,gtf,mtf,c1,c2,c35,c64,c65) VALUES (@wellId, @trackId,@wellNo, @teamNo, @dataTime, @weightRange, @weightZero, @weightAngle,
@pressureRange, @inc,@az,@gtf,@mtf,@c1,@c2,@c35,@c64,@c65)”;
……………
步驟7:以啟動定時器的方式查詢數(shù)據(jù)表,并進行繪圖展示。
本文根據(jù)鉆井現(xiàn)場儀器數(shù)據(jù)遠(yuǎn)傳實際需求,設(shè)計并實現(xiàn)鉆井作業(yè)數(shù)據(jù)的實時遠(yuǎn)傳系統(tǒng)的客戶端與服務(wù)端,利用WITS協(xié)議、GZip、DES、CRC32算法對數(shù)據(jù)進行協(xié)議封裝、壓縮、加密、校驗,并以多線程方式進行數(shù)據(jù)的接收發(fā)送。經(jīng)現(xiàn)場井場與數(shù)據(jù)中心內(nèi)網(wǎng)測試,驗證了此系統(tǒng)的實時性與加密等功能要求,對于數(shù)字油田的發(fā)展具有重要意義。