基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng)及數(shù)據(jù)交互方法
【專利摘要】本發(fā)明涉及一種基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng),它包括RDS服務器、若干RDS客戶端,每個RDS客戶端一端連接有鉆井行業(yè)所涉及設備,另一端通過局域網(wǎng)與RDS服務器相連接,RDS服務器在內(nèi)存數(shù)據(jù)庫中創(chuàng)建用于記錄設備與設備信號的數(shù)據(jù)模型,RDS服務器接收RDS客戶端發(fā)送的數(shù)據(jù),并將數(shù)據(jù)儲存于RDS服務器內(nèi)存數(shù)據(jù)庫中,當其他設備通過RDS客戶端請求讀取數(shù)據(jù)時,RDS服務器從內(nèi)存數(shù)據(jù)庫中查詢并讀取數(shù)據(jù)最新值,并將該數(shù)據(jù)發(fā)送至需要的RDS客戶端;且設備可在RDS服務器上訂閱所需的共享數(shù)據(jù),當被訂閱的數(shù)據(jù)變化后,所述RDS服務器將數(shù)據(jù)最新值推送至訂閱該數(shù)據(jù)的RDS客戶端,使相應設備得到數(shù)據(jù)最新值。本發(fā)明數(shù)據(jù)服務系統(tǒng)可實現(xiàn)高效實時通信,支持多種設備接入,且多設備可共享數(shù)據(jù),為設備長時間穩(wěn)定運行和鉆井行業(yè)的安全生產(chǎn)提供保證。
【專利說明】基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng)及數(shù)據(jù)交互方法
[0001]
【技術領域】
[0002]本發(fā)明涉及一種數(shù)據(jù)處理及共享系統(tǒng)與方法,尤其是基于鉆井行業(yè)數(shù)據(jù)服務系統(tǒng)及方法。
【背景技術】
[0003]在鉆井培訓、監(jiān)控、遠程控制和數(shù)據(jù)記錄的應用背景下,工業(yè)界需要一種技術使設備與設備之間共享數(shù)據(jù)。設備包括:鉆井設備、智能鉆井控制座椅、手柄、PC、手持移動設備(如智能手機)、平板電腦(如iPad)、傳感器(如距離,溫度傳感器)、監(jiān)控攝像頭、關系數(shù)據(jù)庫、實時數(shù)據(jù)庫、遠程Web服務器等。
[0004]現(xiàn)有技術中也有多種數(shù)據(jù)處理技術,但是其各有優(yōu)缺點,簡要列舉說明如下:
1、微軟 Windows Communicat1n Foundat1n (WCF)
該項技術可滿足實時通信的要求,但用戶需設計并測試合適的網(wǎng)絡拓撲結構。并且該項技術無法滿足支持多設備的要求。WCF僅支持預裝.NET的Windows平臺,無法支持部分非Windows平臺設備(如1S設備)。
[0005]且該技術對數(shù)據(jù)共享的支持不完善。主要原因是該技術要求設備共享預設的數(shù)據(jù)定義(如XML Scheme或數(shù)據(jù)定義API),以使共享雙方能夠解析共享數(shù)據(jù)。該要求導致如下兩種限制:1)當某設備更新數(shù)據(jù)定義時,其余接入系統(tǒng)的設備必須也重新定義相應數(shù)據(jù)格式;2)對于未知的新設備,使用者常無法預先設定數(shù)據(jù)格式。在工業(yè)化應用中,不斷出現(xiàn)的新設備使投資者必須不斷升級系統(tǒng)以應對新需求,后果則是系統(tǒng)升級繁瑣代價高昂。
[0006]2、高性能關系數(shù)據(jù)庫
高性能關系數(shù)據(jù)庫(如Oracle TimesTen, Microsoft SQLServer 2014等)部分解決了數(shù)據(jù)共享的難題。數(shù)據(jù)庫通過SQL或編程接口,可以支持多種基本數(shù)據(jù)類型。利用關系數(shù)據(jù)庫的數(shù)據(jù)建模,我們也可解決共享數(shù)據(jù)定義的難點。并且高性能數(shù)據(jù)庫可將數(shù)據(jù)臨時存放于內(nèi)存中,解決了不同客戶端高速讀取和寫入的問題。
[0007]但是,高性能數(shù)據(jù)庫不提供設備接入支持。不同設備能否接入數(shù)據(jù)庫,取決于設備的運行平臺能否支持數(shù)據(jù)庫連接協(xié)議(如ODBC協(xié)議)。因此,該方案無法滿足支持多設備的要求。
[0008]高性能數(shù)據(jù)庫也沒有解決實時通信的難點。實時數(shù)據(jù)通信取決于客戶端與數(shù)據(jù)庫的通信方式。而且高性能數(shù)據(jù)庫無法在數(shù)據(jù)更新后,實時通知客戶端領取最新數(shù)據(jù)。因此,數(shù)據(jù)庫的實時數(shù)據(jù)共享常以客戶端輪詢數(shù)據(jù)庫的形式完成。此項方案在多設備條件下非常低效,常為整個系統(tǒng)性能的瓶頸,無法滿足業(yè)界對實時性能的要求。
[0009]3、工業(yè)級實時數(shù)據(jù)庫系統(tǒng)
工業(yè)級實時數(shù)據(jù)庫(如OSISoft The PI system)可以實時采集,處理,分析數(shù)據(jù)。類似系統(tǒng)能夠滿足實時通信的要求。設備的各種信號能夠實時的送入系統(tǒng)。并且工業(yè)級的實時數(shù)據(jù)庫可支持多種設備接入。例如OSISoft The PI system提供上百種工業(yè)標準的接口,以接入各種設備。
[0010]但是,實時數(shù)據(jù)庫無法滿足多設備共享數(shù)據(jù)的要求。實時數(shù)據(jù)庫不支持某一設備實時讀取或推送原始數(shù)據(jù)至其他設備。這是由于實時數(shù)據(jù)庫的應用定位不同導致。實時數(shù)據(jù)庫的用途是采集并對實時數(shù)據(jù)加工處理分析,而不是實時共享原始數(shù)據(jù)。
[0011]基于鉆井行業(yè)對安全生產(chǎn)的要求,設備之間的通信和數(shù)據(jù)共享必須實時,高效,長時間穩(wěn)定的進行,因此迫切需要一款創(chuàng)新的數(shù)據(jù)服務系統(tǒng)。
【發(fā)明內(nèi)容】
[0012]本發(fā)明目的是為了克服現(xiàn)有技術的不足而提供一種高效、實時、支持多種設備接入并適用于鉆井行業(yè)的數(shù)據(jù)服務系統(tǒng)及數(shù)據(jù)交互方法。
[0013]為達到上述目的,本發(fā)明所采用的技術方案為:一種基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng),其特征在于:它包括RDS服務器、若干RDS客戶端,每個所述的RDS客戶端一端連接有鉆井行業(yè)所涉及設備,另一端通過局域網(wǎng)與所述的RDS服務器相連接,所述的RDS服務器內(nèi)存中創(chuàng)建有用于記錄RDS系統(tǒng)狀態(tài)(即設備,設備信號,及二者關系)的數(shù)據(jù)模型,所述的數(shù)據(jù)模型包括RDS客戶端元數(shù)據(jù)、設備數(shù)據(jù)單元的元數(shù)據(jù)、RDS客戶端與數(shù)據(jù)單元關系描述的元數(shù)據(jù)、RDS客戶端與數(shù)據(jù)單元訂閱配置的元數(shù)據(jù),每個所述的RDS客戶端有唯一的身份識別碼,所述的RDS客戶端與設備數(shù)據(jù)單元的關系描述為多對多,即任意一個RDS客戶端可以操作和訂閱一個至多個數(shù)據(jù)單元,并且任意一個數(shù)據(jù)單元可被一個至多個RDS客戶端操作和訂閱,所述的RDS服務器接收某一 RDS客戶端發(fā)送的數(shù)據(jù),并將數(shù)據(jù)存儲于其內(nèi)存數(shù)據(jù)庫中,當其他RDS客戶端請求讀取數(shù)據(jù)時,所述的RDS服務器從內(nèi)存數(shù)據(jù)庫中查詢并讀取數(shù)據(jù)最新值,并將該數(shù)據(jù)發(fā)送至需要的RDS客戶端;且設備可在所述RDS服務器上訂閱所需的共享數(shù)據(jù),當被訂閱的數(shù)據(jù)變化后,所述RDS服務器將數(shù)據(jù)最新值推送至訂閱該數(shù)據(jù)的RDS客戶端。
[0014]進一步地,所述的RDS客戶端元數(shù)據(jù)記錄每個RDS客戶端設備名稱、通信方式、網(wǎng)絡狀態(tài)、數(shù)據(jù)統(tǒng)計等信息;所述的數(shù)據(jù)單元的元數(shù)據(jù)記錄每個數(shù)據(jù)單元的類型、名稱、狀態(tài)、數(shù)據(jù)統(tǒng)計等信息;所述的RDS客戶端與數(shù)據(jù)單元關系描述包含每一個RDS客戶端對某數(shù)據(jù)單元的是讀取或是寫入以及當該RDS客戶端讀取或寫入該數(shù)據(jù)單元時如何轉換數(shù)據(jù)格式;所述的RDS客戶端與數(shù)據(jù)單元訂閱配置定義了每一個RDS客戶端對某數(shù)據(jù)單元的數(shù)據(jù)流質(zhì)量控制規(guī)則。
[0015]進一步地,所述的RDS客戶端與不同的設備相連接,其通信方式也相應不同。
[0016]進一步地,當所述的設備為關系數(shù)據(jù)庫時,所述RDS客戶端與設備的連接方式基于ODBC,JDBC,AD0.NET ;當所述設備為OSISoft the PI system,所述RDS客戶端與設備的連接方式為PI提供的API接口 ;當所述設備為鉆井控制系統(tǒng),所述RDS客戶端與設備的通訊方式基于WinAC協(xié)議,OPC協(xié)議。所述的RDS客戶端與鉆井設備通信方式不局限于以上所述。
[0017]進一步地,所述的RDS服務器與RDS客戶端的傳輸數(shù)據(jù)采用信號包,每個信號包由控制幀和載荷幀組成。利用控制幀,所述RDS服務器或RDS客戶端可以識別信號包所屬發(fā)送端。
[0018]本發(fā)明還提供一種基于鉆井行業(yè)的實時數(shù)據(jù)服務系統(tǒng)的數(shù)據(jù)交互方法,其包括RDS客戶端寫數(shù)據(jù)至RDS服務器、RDS服務器推送數(shù)據(jù)更新至相關RDS客戶端、RDS客戶端訂閱數(shù)據(jù)、RDS客戶端主動讀取數(shù)據(jù)、RDS服務器與某一 RDS客戶端協(xié)調(diào)二者連接狀態(tài);
所述的RDS客戶端寫數(shù)據(jù)至RDS服務器步驟依次為:所述的RDS客戶端在本地生成數(shù)據(jù)單元描述信息,將所述的描述信息以信號包方式發(fā)送至所述的RDS服務器,所述的RDS服務器讀取描述信息并查詢服務器內(nèi)存數(shù)據(jù)庫中是否有該數(shù)據(jù),如無該數(shù)據(jù)單元,所述的RDS服務器在內(nèi)存數(shù)據(jù)庫中創(chuàng)建并保存該數(shù)據(jù),同時,所述的RDS服務器以信號包方式發(fā)送控制信號至相應RDS客戶端,告知操作結果;
所述的RDS服務器推送數(shù)據(jù)更新至相關RDS客戶端步驟依次為:在寫數(shù)據(jù)之后,所述的RDS服務器在內(nèi)存數(shù)據(jù)庫中查詢訂閱該數(shù)據(jù)單元的客戶端目錄,若查詢到一個或多個客戶端,所述RDS服務器在本地生成數(shù)據(jù)單元描述信息,并將此數(shù)據(jù)單元以信號包方式發(fā)送至查詢得到的所有客戶端;若沒有查詢到任何客戶端,RDS服務器結束此任務;
所述RDS客戶端訂閱數(shù)據(jù)的步驟依次為:對于需要訂閱的一個或多個數(shù)據(jù)單元,RDS客戶端在本地一一生成數(shù)據(jù)單元描述信息,并封裝為請求訂閱數(shù)據(jù)包,以信號包方式發(fā)送給RDS服務器,所述RDS服務器讀取數(shù)據(jù)包,在內(nèi)存數(shù)據(jù)庫中修改并保存RDS客戶端與數(shù)據(jù)單元的訂閱關系并以信號包方式發(fā)送控制信號至RDS客戶端,告知操作結果;
所述RDS客戶端主動讀取數(shù)據(jù)步驟依次為:所述RDS客戶端在本地生成數(shù)據(jù)單元描述信息并將描述信息以信號包方式發(fā)送至所述RDS服務器,所述RDS服務器讀取描述信息并查詢服務器內(nèi)存數(shù)據(jù)庫中是否有該數(shù)據(jù),如無該數(shù)據(jù)單元,RDS服務器以信號包方式發(fā)送代表“未知數(shù)據(jù)”的控制信號至客戶端,如存在該數(shù)據(jù)單元,RDS服務器讀取值并將該值以信號包方式發(fā)送回對應RDS客戶端。
[0019]進一步地,還包括故障在線檢測,步驟包括:每個所述RDS客戶端定期以信號包方式發(fā)送一心跳控制信號至所述RDS服務器,如所述RDS服務器超時未接收到RDS客戶端發(fā)送的心跳控制信號,RDS服務器假定該RDS客戶端斷開鏈接。
[0020]進一步地,所述RDS服務器根據(jù)心跳控制信號查詢內(nèi)存數(shù)據(jù)庫中是否存在該客戶端信息,如有該客戶端信息,RDS服務器以信號包方式發(fā)送控制信號響應至RDS客戶端;如未查詢到該客戶端,啟動RDS客戶端身份識別步驟,如RDS客戶端超時未收到服務端的響應信號,RDS客戶端假定與RDS服務端斷開連接。
[0021]進一步地,不同的RDS客戶端描述同一數(shù)據(jù)的格式不同,所述的RDS服務器對同一數(shù)據(jù)的格式自適應轉換以保證不同設備得到正確的格式。
[0022]進一步地,對每一個數(shù)據(jù)單元,所述的RDS客戶端可設置接收數(shù)據(jù)單元更新時的流量控制規(guī)則。
[0023]進一步地,當所述的RDS客戶端首次連接至RDS服務端,或RDS客戶端超時脫線、或者RDS客戶端與RDS服務端在身份識別過程中出錯,所述的RDS服務端要求重新識別RDS客戶端
由于上述技術方案運用,本發(fā)明與現(xiàn)有技術相比具有下列優(yōu)點:本發(fā)明RDS服務器利用內(nèi)存中的數(shù)據(jù)模型能高效的查詢和保存設備客戶端、設備數(shù)據(jù)、以及設備客戶端和設備數(shù)據(jù)二者之間的關系,確保不同設備正確并高效的交換數(shù)據(jù)。利用狀態(tài)轉換管理,RDS服務器與客戶端能協(xié)調(diào)連接狀態(tài),確保長時間穩(wěn)定交換數(shù)據(jù)。RDS服務器接收RDS客戶端發(fā)送的數(shù)據(jù),并將數(shù)據(jù)存儲于服務器內(nèi)存數(shù)據(jù)庫中,存儲速度快,達到高速存取數(shù)據(jù)的目的。當客戶端請求讀取數(shù)據(jù)時,RDS服務器從內(nèi)存數(shù)據(jù)庫中讀取數(shù)據(jù)最新值,并將該數(shù)據(jù)發(fā)送至客戶端。利用RDS服務器的訂閱功能,當被訂閱的數(shù)據(jù)變化后,RDS服務器會將數(shù)據(jù)最新值推送至訂閱該數(shù)據(jù)的客戶端,使設備能實時獲得所需數(shù)據(jù)的更新。本發(fā)明支持多種設備接入,實現(xiàn)實時多設備數(shù)據(jù)共享,從而滿足了鉆井行業(yè)對設備的安全高效運行要求。
[0024]
【專利附圖】
【附圖說明】
[0025]附圖1為本發(fā)明基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng)架構圖;
附圖2為本發(fā)明RDS服務器內(nèi)存元數(shù)據(jù)模型圖;
附圖3為本發(fā)明RDS服務器和客戶端狀態(tài)圖。
【具體實施方式】
[0026]下面結合附圖對本發(fā)明具體實施進一步說明:
如圖1所示,RDS系統(tǒng)由兩類組件構成:RDS服務器和若干RDS客戶端。每個RDS客戶端連接一設備,包括鉆井設備、智能鉆井控制座椅、手柄、PC、手持移動設備(如智能手機)、平板電腦(如iPad)、傳感器(如距離,溫度傳感器)、監(jiān)控攝像頭、關系數(shù)據(jù)庫、實時數(shù)據(jù)庫、遠程Web服務器等。每個RDS客戶端通過局域網(wǎng)連接至RDS服務器。
[0027]RDS 客戶端提供編程接口(Applicat1n Programming Interface),以支持Windows, 1S, Linux 等平臺。
[0028]針對不同的設備,RDS客戶端連接設備的通訊方式會有不同。如設備為常見的關系數(shù)據(jù)庫,RDS客戶端與設備的連接方式可能基于ODBC、JDBC、AD0.NET等。如設備為OSISoftthe PI system,RDS客戶端與設備的連接方式為PI提供的API接口。如設備為鉆井設備,RDS客戶端與設備的通訊方式可能基于WinAC協(xié)議,OPC協(xié)議等。
[0029]RDS服務器內(nèi)存有元數(shù)據(jù)模型,如圖2所示,其包括:
1)RDSClient——RDS客戶端元數(shù)據(jù)。其記錄客戶端設備名稱、通信方式(如IP地址、端口等)、網(wǎng)絡狀態(tài)、數(shù)據(jù)統(tǒng)計信息等;
2)Variable——數(shù)據(jù)單元的元數(shù)據(jù)。其描述該數(shù)據(jù)單元類型、名稱、狀態(tài)、數(shù)據(jù)統(tǒng)計信息等;
3Contributing——RDS客戶端與數(shù)據(jù)單元的關系描述。包括描述RDS客戶端對某數(shù)據(jù)的操作類型,讀取或是寫入;RDS客戶端讀取或寫入某數(shù)據(jù)單元時如何轉換數(shù)據(jù)格式。
[0030]4) Subscribing——RDS客戶端與數(shù)據(jù)單元的訂閱配置。該項定義了數(shù)據(jù)流質(zhì)量控制的規(guī)則。
[0031]其中,RDS客戶端(RDS Client)與數(shù)據(jù)單元(Variable)的關系描述進一步包括: 當主動讀取或寫入時(由Contributing描述)。RDS客戶端與數(shù)據(jù)單元的關系為多對多。即任意一個客戶端可以操作一個至多個數(shù)據(jù)單元,并且任意一個數(shù)據(jù)單元可被一個至多個RDS客戶端操作;
當被動推送更新(由Subscribing描述)。RDS客戶端與數(shù)據(jù)單元的關系為多對多。即任意一個客戶端可以訂閱一個至多個數(shù)據(jù)單元,并且任意一個數(shù)據(jù)單元可被推送至一個至多個RDS客戶端。
[0032]本發(fā)明中,服務器與客戶端使用信號包交流。每一個RDS信號包由兩個幀組成:控制幀和載荷幀。
[0033]控制幀封裝客戶端或服務器端身份識別碼和RDS控制信號,以描述該信號包的用途??刂茙瑸橐粋€字節(jié)。
[0034]根據(jù)不同的控制巾貞,載荷巾貞會封裝相應數(shù)據(jù)。例如:控制巾貞為ReplyPortSubscribe時,載荷幀封裝了描述RDS客戶端數(shù)據(jù)端口和IP地址的數(shù)據(jù)。載荷幀字節(jié)數(shù)最小為0,最大為載荷的字節(jié)數(shù)。有部分控制信號(如Heartbeat)不攜帶有效載荷數(shù)據(jù),因此載荷的字節(jié)數(shù)為O。
[0035]同時,在服務器內(nèi)存數(shù)據(jù)模型中,系統(tǒng)需要能夠準確的識別RDS客戶端身份。每一個RDS客戶端有唯一的身份識別碼(ID)。
[0036]上面對本發(fā)明實時數(shù)據(jù)服務系統(tǒng)架構進行了說明,下面對其數(shù)據(jù)交互的方法進一步介紹:(一)RDS客戶端寫數(shù)據(jù)至RDS服務器
步驟1:RDS客戶端在本地生成數(shù)據(jù)單元(Variable)描述信息,包括:名稱、類型、值; 步驟2 =RDS客戶端將步驟I的描述信息以信號包方式發(fā)送至RDS服務器;
步驟3:RDS服務器讀取描述信息,查詢服務器內(nèi)存數(shù)據(jù)庫中是否有該數(shù)據(jù)。如無該數(shù)據(jù)單元,RDS服務器在內(nèi)存數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)數(shù)據(jù);
步驟4 =RDS服務器在內(nèi)存數(shù)據(jù)庫中保存該數(shù)據(jù);
步驟5 =RDS服務器以信號包方式發(fā)送控制信號至RDS客戶端,告知操作結果。
[0037](二)RDS服務器推送數(shù)據(jù)更新至相關RDS客戶端推送更新只會發(fā)生在寫數(shù)據(jù)之后。
[0038]步驟6:RDS服務器在內(nèi)存數(shù)據(jù)庫中查詢訂閱該數(shù)據(jù)單元(Variable)的客戶端目錄。該數(shù)據(jù)單元在步驟I中已由RDS客戶端提供;
步驟7a:如在步驟6中查詢到一個或多個客戶端,RDS服務器在本地生成數(shù)據(jù)單元(Variable)描述信息,包括:名稱,類型,值。并將此數(shù)據(jù)單元以信號包方式發(fā)送至步驟6中查詢得到的所有客戶端;
步驟7b:如在步驟6中沒有查詢到任何客戶端,RDS服務器結束此任務。
[0039](三)RDS客戶端訂閱數(shù)據(jù)
步驟1:對于需要訂閱的一個或多個數(shù)據(jù)單元(Variable),RDS客戶端在本地為它們
--生成數(shù)據(jù)單元(Variable)描述信息,包括名稱;
步驟2 =RDS客戶端將步驟I中生成的若干描述組成列表,并封裝為請求訂閱數(shù)據(jù)包; 步驟3 =RDS客戶端將步驟3中的數(shù)據(jù)包以信號包方式發(fā)送給RDS服務器;
步驟4:RDS服務器讀取數(shù)據(jù)包,在內(nèi)存數(shù)據(jù)庫中修改并保存RDS客戶端與數(shù)據(jù)單元的訂閱關系;
步驟5 =RDS服務器以信號包方式發(fā)送控制信號至RDS客戶端,告知操作結果。
[0040](四)RDS客戶端主動讀取數(shù)據(jù)
步驟1:RDS客戶端在本地生成數(shù)據(jù)單元(Variable)描述信息,只包括名稱;
步驟2 =RDS客戶端將步驟I的描述信息以信號包方式發(fā)送至RDS服務器
步驟3a:RDS服務器讀取描述信息,查詢內(nèi)存數(shù)據(jù)庫中是否有該數(shù)據(jù)。如無該數(shù)據(jù)單元,RDS服務器以信號包方式發(fā)送代表“未知數(shù)據(jù)”的控制信號至客戶端;
步驟3b:RDS服務器讀取描述信息,查詢內(nèi)存數(shù)據(jù)庫中是否有該數(shù)據(jù)。如存在該數(shù)據(jù)單元,RDS服務器讀取數(shù)據(jù)值,并將數(shù)據(jù)值以信號包方式發(fā)送至客戶端。
[0041]在鉆井應用中,準確在線的狀態(tài)有助于提高操作人員對設備的安全處理。例如,在鉆井過程中,壓力傳感器可能離線并造成系統(tǒng)感知壓力無變化,這種情形需要及時通知操作人員該離線故障以避免壓力過高引起的井噴。因此,本發(fā)明還包括RDS客戶端以固定間隔發(fā)送心跳信號以檢測在線狀況。具體步驟如下:
步驟1:RDS客戶端以信號包方式發(fā)送Heartbeat控制信號至RDS服務器;
步驟2:RDS服務器查詢內(nèi)存數(shù)據(jù)庫中是否存在該客戶端信息;
步驟3a:根據(jù)步驟2結果。如查詢到該客戶端信息,RDS服務器以信號包方式發(fā)送控制信號響應;
步驟3b:根據(jù)步驟2結果,如未能查詢到該客戶端,RDS服務器以信號包方式發(fā)送相應控制信號至客戶端啟動RDS客戶端身份識別步驟;
如步驟I超時沒有啟動,RDS服務器假定該客戶端連接斷開。
[0042]如在步驟I之后,RDS客戶端超時未收到服務端的響應信號,RDS客戶端將假定與服務端連接斷開。
[0043]當RDS客戶端首次連接至服務端或者客戶端超時脫線或者客戶端與服務端在身份識別過程中出錯中的任一情況時,RDS服務端會要求重新識別客戶端。
[0044]上述對RDS服務器與RDS客戶端交互的各個過程步驟進行了說明,在這些過程中,RDS服務器與RDS客戶端的連接狀態(tài)會發(fā)生相應變化,這些狀態(tài)的變化是根據(jù)當前所處狀態(tài)和RDS控制信號實現(xiàn);通過連接狀態(tài)的轉變,RDS服務器和RDS客戶端可了解對方狀態(tài)信息,如RDS客戶端狀態(tài)(如在線或離線)、RDS服務器與該RDS客戶端當前連接狀態(tài)、網(wǎng)絡狀態(tài)等,方便RDS服務器對流量控制。例如,當RDS客戶端離線時,RDS服務器不會將最新數(shù)據(jù)推送至該客戶端,以節(jié)約系統(tǒng)資源與網(wǎng)絡資源。
[0045]為保障長時間穩(wěn)定運行,RDS服務器與RDS客戶端需協(xié)調(diào)連接狀態(tài)。圖3所示的為RDS服務器與一個RDS客戶端的連接狀態(tài)是如何根據(jù)當前狀態(tài)與控制信號轉換的。圓圈內(nèi)數(shù)字代表RDS服務器及該客戶端所在的狀態(tài),藍色剪頭連線上指令為RDS服務器發(fā)送至RDS客戶端的控制信號,黑色剪頭連線上的指令為RDS客戶端發(fā)送至RDS服務器的控制信號,具體控制信號包括:
Heartbeat:心跳信號;Who:請求RDS客戶端元數(shù)據(jù)信號;ReplyClientMeta:RDS客戶端元數(shù)據(jù)響應信號;RequestPortSubscribe:請求訂閱數(shù)據(jù)端口信號;ReplyPortSubscribe:訂閱數(shù)據(jù)端口響應信號;AccessVariable:請求主動讀取或寫入數(shù)據(jù)單元信號Subscribe:請求訂閱數(shù)據(jù)更新信號;0K:操作成功。
[0046]如果RDS系統(tǒng)在狀態(tài)4時,RDS客戶端只能主動讀取數(shù)據(jù)無法獲得數(shù)據(jù)的實時更新。RDS系統(tǒng)在狀態(tài)9時,RDS客戶端可主動讀取數(shù)據(jù),也可被動獲得數(shù)據(jù)推送更新。在任意狀態(tài)時,如控制信號相應時間大于TTL (Time To Live)值,系統(tǒng)狀態(tài)變?yōu)榻K止狀態(tài),即系統(tǒng)假設RDS客戶端與RDS服務器無法連接。
[0047]本發(fā)明實時數(shù)據(jù)服務系統(tǒng),實現(xiàn)了如下技術效果:
1、多設備數(shù)據(jù)共享 a、多個設備能夠讀取或更新同一個數(shù)據(jù)。例如:在鉆井建模時,多個程序模塊需要對同一參量更改。該參量又會被控制系統(tǒng)讀取;
b、當數(shù)據(jù)更新時,多設備能選擇獲得實時更新。例如:在鉆井平臺環(huán)境中,工程師會安裝多種傳感器(如距離傳感器,熱敏探測頭等)。傳感器的數(shù)據(jù)更新時,系統(tǒng)需要將最新的數(shù)據(jù)傳送給相關設備。比如,當距離傳感器探測到設備間距變化時,該最新“距離”數(shù)據(jù)需要實時傳送給相關設備以保證設備無碰撞,確保油井安全生產(chǎn);并且,對“距離”數(shù)據(jù)無讀取要求的設備不會獲得更新。
[0048]C、不同設備所支持的數(shù)據(jù)格式不同。在不影響既有系統(tǒng)運行的前提下,能夠支持新設備的數(shù)據(jù)格式。
[0049]2、支持多種設備接入
a、不同設備的運行平臺不同,系統(tǒng)能提供多平臺支持;
b、不同設備利用相應接口,接入系統(tǒng)。
[0050]3、高效實時通信
a、設備接入或斷開系統(tǒng),不會影響既有設備通信與運行;
b、系統(tǒng)共享數(shù)據(jù)的總平均響應時間不高于10毫秒。該時間為一設備利用RDS客戶端發(fā)送數(shù)據(jù)到RDS服務器,并且RDS服務器將該數(shù)據(jù)轉發(fā)至另一設備的總時間間隔。
[0051]上述實施例只為說明本發(fā)明的技術構思及特點,其目的在于讓熟悉此項技術的人士能夠了解本發(fā)明的內(nèi)容并據(jù)以實施,并不能以此限制本發(fā)明的保護范圍。凡根據(jù)本發(fā)明精神實質(zhì)所作的等效變化或修飾,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。
【權利要求】
1.一種基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng),其特征在于:它包括RDS服務器、若干RDS客戶端,每個所述的RDS客戶端一端連接有鉆井行業(yè)所涉及設備,另一端通過局域網(wǎng)與所述的RDS服務器相連接,所述的RDS服務器內(nèi)存數(shù)據(jù)庫中創(chuàng)建RDS系統(tǒng)狀態(tài)的數(shù)據(jù)模型以管理設備與設備信號,所述的數(shù)據(jù)模型包括:RDS客戶端元數(shù)據(jù)、設備數(shù)據(jù)單元的元數(shù)據(jù)、RDS客戶端與數(shù)據(jù)單元關系描述的元數(shù)據(jù)、RDS客戶端與數(shù)據(jù)單元訂閱配置的元數(shù)據(jù);所述的元數(shù)據(jù)關系模型包括:RDS客戶端與設備數(shù)據(jù)單元的關系描述為多對多,即任意一個RDS客戶端可以操作/訂閱一個至多個數(shù)據(jù)單元,并且任意一個數(shù)據(jù)單元可被一個至多個RDS客戶端操作/訂閱,所述的RDS服務器接收某一 RDS客戶端發(fā)送的數(shù)據(jù),并將數(shù)據(jù)儲存于內(nèi)存中,當其他RDS客戶端請求讀取數(shù)據(jù)時,所述的RDS服務器從內(nèi)存數(shù)據(jù)庫中查詢并讀取數(shù)據(jù)最新值,并將該數(shù)據(jù)發(fā)送至需要的RDS客戶端;且設備可在所述RDS服務器上訂閱所需的共享數(shù)據(jù),當被訂閱的數(shù)據(jù)變化后,所述RDS服務器將數(shù)據(jù)最新值推送至訂閱該數(shù)據(jù)的RDS客戶端,使相應設備獲得該最新值。
2.根據(jù)權利要求1所述的基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng),其特征在于:所述的RDS客戶端元數(shù)據(jù)記錄有每個RDS客戶端設備名稱、通信方式、網(wǎng)絡狀態(tài)、數(shù)據(jù)統(tǒng)計等信息;所述的數(shù)據(jù)單元的元數(shù)據(jù)記錄有每個數(shù)據(jù)單元的類型、名稱、狀態(tài)、數(shù)據(jù)統(tǒng)計等信息;所述的RDS客戶端與數(shù)據(jù)單元關系描述包含每一個RDS客戶端對某數(shù)據(jù)單元的操作是讀取還是寫入以及當該RDS客戶端讀取或寫入該數(shù)據(jù)單元時如何轉換數(shù)據(jù)格式;所述的RDS客戶端與數(shù)據(jù)單元訂閱配置定義了每一個RDS客戶端如何對某數(shù)據(jù)單元運用數(shù)據(jù)流質(zhì)量控制。
3.根據(jù)權利要求1所述的基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng),其特征在于:所述的RDS客戶端與不同的設備相連接,其通信方式也相應不同。
4.根據(jù)權利要求3所述的基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng),其特征在于:當所述的設備為關系數(shù)據(jù)庫時,所述RDS客戶端與設備的連接方式基于ODBC,JDBC,AD0.NET ;當所述設備為OSISoft the PI system,所述RDS客戶端與設備的連接方式為PI提供的API接口 ;當所述設備為鉆井控制系統(tǒng),所述RDS客戶端與設備的通訊方式基于WinAC協(xié)議,OPC協(xié)議。
5.根據(jù)權利要求1所述的基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng),其特征在于:所述的RDS服務器與RDS客戶端的傳輸數(shù)據(jù)采用信號包,每個信號包由控制幀和載荷幀組成,根據(jù)控制幀,可識別該信號包所屬發(fā)送端。
6.根據(jù)權利要求1至5所述的任一種基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng)中數(shù)據(jù)交互的方法,其包括RDS客戶端寫數(shù)據(jù)至RDS服務器、RDS服務器推送數(shù)據(jù)更新至相關RDS客戶端、RDS客戶端訂閱數(shù)據(jù)、RDS客戶端主動讀取數(shù)據(jù); 所述的RDS客戶端寫數(shù)據(jù)至RDS服務器步驟依次為:所述的RDS客戶端在本地生成數(shù)據(jù)單元描述信息,將所述的描述信息以信號包方式發(fā)送至所述的RDS服務器,所述的RDS服務器讀取描述信息并查詢服務器內(nèi)存數(shù)據(jù)庫中是否有該數(shù)據(jù)單元,如無該數(shù)據(jù)單元,所述的RDS服務器在內(nèi)存中創(chuàng)建并保存該數(shù)據(jù)單元,同時,所述的RDS服務器以信號包方式發(fā)送控制信號至相應RDS客戶端,告知操作結果; 所述的RDS服務器推送數(shù)據(jù)更新至相關RDS客戶端步驟依次為:在寫數(shù)據(jù)之后,所述的RDS服務器查詢訂閱該數(shù)據(jù)單元的客戶端目錄,若查詢到一個或多個客戶端,所述RDS服務器在本地生成數(shù)據(jù)單元描述信息,并將此數(shù)據(jù)單元以信號包方式發(fā)送至查詢得到的所有客戶端;若沒有查詢到任何客戶端,RDS服務器結束此任務; 所述RDS客戶端訂閱數(shù)據(jù)的步驟依次為:對于需要訂閱的一個或多個數(shù)據(jù)單元,RDS客戶端在本地一一生成數(shù)據(jù)單元描述信息,并封裝為請求訂閱數(shù)據(jù)包并以信號包方式發(fā)送給RDS服務器,所述RDS服務器讀取數(shù)據(jù)包,在內(nèi)存數(shù)據(jù)庫中修改并保存RDS客戶端與數(shù)據(jù)單元的訂閱關系并以信號包方式發(fā)送控制信號至RDS客戶端,告知操作結果; 所述RDS客戶端主動讀取數(shù)據(jù)步驟依次為:所述RDS客戶端在本地生成數(shù)據(jù)單元描述信息并將描述信息以信號包方式發(fā)送至所述RDS服務器,所述RDS服務器讀取描述信息并查詢服務器內(nèi)存數(shù)據(jù)庫中是否有該數(shù)據(jù),如無該數(shù)據(jù)單元,RDS服務器以信號包方式發(fā)送代表“未知數(shù)據(jù)”的控制信號至客戶端,如存在該數(shù)據(jù)單元,RDS服務器讀取值并將數(shù)據(jù)值以信號包方式發(fā)送回對應RDS客戶端。
7.根據(jù)權利要求6所述的實時數(shù)據(jù)服務系統(tǒng)中數(shù)據(jù)交互的方法,其特征在于:還包括故障在線檢測,步驟包括:每個所述RDS客戶端以信號包方式定期發(fā)送一心跳控制信號至所述RDS服務器,如果所述RDS服務器超時未接收到某RDS客戶端的心跳控制信號,RDS服務器假定該RDS客戶端斷開;如果所述RDS服務器收到某RDS客戶端心跳信號,則RDS服務器根據(jù)該控制信號查詢內(nèi)存數(shù)據(jù)庫中是否存在該客戶端信息,如未查詢到該客戶端,RDS服務器啟動RDS客戶端身份識別步驟,如存在該客戶端,RDS服務器發(fā)送控制信號響應至該客戶端;如RDS客戶端超時未收到服務端的響應信號,RDS客戶端假定與RDS服務端斷開連接。
8.根據(jù)權利要求5所述的基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng)中數(shù)據(jù)交互的方法,其特征在于:不同的RDS客戶端描述同一數(shù)據(jù)的格式不同,所述的RDS服務器對同一數(shù)據(jù)的格式自適應轉換以保證不同設備得到正確的格式。
9.根據(jù)權利要求5所述的基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng)中數(shù)據(jù)交互的方法,其特征在于:所述的RDS客戶端對每一個數(shù)據(jù)設置接收數(shù)據(jù)更新時的流量控制規(guī)則。
10.根據(jù)權利要求5所述的基于鉆井行業(yè)實時數(shù)據(jù)服務系統(tǒng)中數(shù)據(jù)交互的方法,其特征在于:當所述的RDS客戶端首次連接至RDS服務端或RDS客戶端超時脫線、或者RDS客戶端與RDS服務端在身份識別過程中出錯,所述的RDS服務端要求重新識別RDS客戶端。
【文檔編號】H04L29/08GK104270432SQ201410486622
【公開日】2015年1月7日 申請日期:2014年9月22日 優(yōu)先權日:2014年9月22日
【發(fā)明者】隋丹, 付洋 申請人:蘇州耐克斯特能源開采技術有限公司, 隋丹