霍鳳財 任偉建 高 維 高 妍 江 聲
(1.東北石油大學(xué)電氣信息工程學(xué)院,黑龍江 大慶 163318;2.中國石油大慶油田有限責任公司采氣分公司,黑龍江 大慶 163514;3.中國石油大慶油田有限責任公司儲運銷售分公司,黑龍江 大慶 163453)
OPC(OLE for Process Control)是工業(yè)界最先進的資料交換標準[1]。基于OPC規(guī)范,通過建立通信規(guī)則框架信息庫并采用有效的實時處理策略,設(shè)計開發(fā)具有較強通用性、面向過程數(shù)據(jù)通信的OPC中間數(shù)據(jù)服務(wù)技術(shù)[2]。通過該數(shù)據(jù)服務(wù)技術(shù),可以實時、準確地獲得最新的生產(chǎn)現(xiàn)場數(shù)據(jù),安全、可靠地對現(xiàn)場設(shè)備進行控制[3,4]。鑒于以上原因,有必要將油田生產(chǎn)現(xiàn)場實時數(shù)據(jù)庫與企業(yè)管理數(shù)據(jù)庫進行無縫整合,形成統(tǒng)一的生產(chǎn)數(shù)據(jù)庫平臺,這是油田信息化建設(shè)的發(fā)展趨勢。
油田OPC規(guī)范的實時數(shù)據(jù)共享技術(shù)的研究是在油田站庫實時數(shù)據(jù)采集與應(yīng)用系統(tǒng)的基礎(chǔ)上進行的,雖然站庫實時數(shù)據(jù)采集與應(yīng)用系統(tǒng)實現(xiàn)了實時數(shù)據(jù)的提取和顯示,但是該系統(tǒng)是在組態(tài)軟件的基礎(chǔ)上開發(fā)的,若要在其他應(yīng)用系統(tǒng)顯示或提取實時數(shù)據(jù)庫中的數(shù)據(jù)就很難做到。在這種狀況下,為了擴展實時數(shù)據(jù)的應(yīng)用范圍和廣度,將OPC實時數(shù)據(jù)接口程序封裝成動態(tài)鏈接庫,實現(xiàn)第三方軟件的接口應(yīng)用,油田OPC規(guī)范的實時數(shù)據(jù)共享的關(guān)鍵技術(shù)研究應(yīng)運而生,本技術(shù)的研究可實現(xiàn)大量用戶訪問實時數(shù)據(jù)庫,保證實時數(shù)據(jù)的準確性和穩(wěn)定性。
應(yīng)用OPC規(guī)范解析技術(shù)對實時數(shù)據(jù)庫的歷史數(shù)據(jù)和訪問方式進行分別處理。由于實時數(shù)據(jù)需要及時更新,對實時數(shù)據(jù)庫的訪問次數(shù)較多,因此在中間服務(wù)器上采用預(yù)先讀取進行緩存的方式,對實時數(shù)據(jù)庫訪問的壓力在時間上均勻分開,減少集中訪問造成實時數(shù)據(jù)庫過大的壓力。
圖1所示為OPC技術(shù)開發(fā)架構(gòu),其中利用通信協(xié)議和API函數(shù)讀取數(shù)據(jù)是將實時數(shù)據(jù)庫中的信息讀取到中間服務(wù)器中去,利用通信協(xié)議和IP配置獲取數(shù)據(jù)是將XML中的點位表信息獲取到中間服務(wù)器緩存中,從而傳輸?shù)娇蛻舳诉M行顯示。

圖1 OPC技術(shù)開發(fā)架構(gòu)
結(jié)合油田OPC規(guī)范實時數(shù)據(jù)的特點,并按照生產(chǎn)過程中實時數(shù)據(jù)獲取的流程進行整理,總結(jié)出如圖2所示的技術(shù)解決流程。按照該流程逐步解決每部分的關(guān)鍵點,從而完成具有OPC規(guī)范的實時數(shù)據(jù)共享技術(shù)的研究。

圖2 技術(shù)解決流程
目前讀取油田OPC規(guī)范的實時數(shù)據(jù)有兩種形式,一種是利用API函數(shù)直接從實時數(shù)據(jù)庫中讀取數(shù)據(jù);另一種是通過OPC讀取實時數(shù)據(jù)。利用API函數(shù)直接從實時數(shù)據(jù)庫讀取數(shù)據(jù),通過OCX封裝的API函數(shù)同步讀寫站庫實時數(shù)據(jù)庫中滿足OPC規(guī)范的實時數(shù)據(jù),而通過OPC讀取實時數(shù)據(jù)是利用現(xiàn)有的OPC接口完成數(shù)據(jù)的傳輸,主要包括OPC客戶端和OPC服務(wù)器。筆者應(yīng)用的實時數(shù)據(jù)庫由于沒有OPC,只有符合OPC規(guī)范的實時數(shù)據(jù),因此實時數(shù)據(jù)庫的讀取主要采用API函數(shù)對符合OPC規(guī)范的數(shù)據(jù)進行讀取,分析規(guī)范,完成數(shù)據(jù)訪問,具體步驟為:
a. 實時數(shù)據(jù)訪問控件OCX。OCX控件在系統(tǒng)啟動時自動加載到運行環(huán)境中,接口可以訪問。主要接口包括實時數(shù)據(jù)、歷史數(shù)據(jù)和報警數(shù)據(jù)接口的讀取。
b. 實時數(shù)據(jù)讀取處理方法。實時數(shù)據(jù)讀取的頻率較高,對服務(wù)器造成很大的壓力,所以采用預(yù)先讀取然后內(nèi)存緩存的方式進行處理。
c. 客戶端與服務(wù)端的數(shù)據(jù)交互。
線程是程序中一個單一的順序控制流程,在單個程序中同時運行多個線程完成不同的工作,稱為多線程。使用線程可以把占據(jù)時間長的程序中的任務(wù)放到后臺去處理,程序的運行速度可以加快。在一些等待的任務(wù)實現(xiàn)上如文件讀寫及網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程比較實用。在這種情況下可以釋放一些珍貴的資源如內(nèi)存等。圖3就是多線程技術(shù)應(yīng)用于中間數(shù)據(jù)服務(wù)器,利用多線程技術(shù)在同一個中間服務(wù)器中,從實時數(shù)據(jù)庫中同時獲取不同類型的數(shù)據(jù)。不同的訪問客戶端采用多線程響應(yīng),提高讀取速度。每個客戶端通過IP和端口登錄服務(wù)器,服務(wù)器進行相關(guān)的認證后,啟動數(shù)據(jù)線程為該客戶端進行服務(wù)。

圖3 多線程訪問技術(shù)應(yīng)用在中間數(shù)據(jù)服務(wù)器
緩存技術(shù)的關(guān)鍵是設(shè)置緩存依賴項,也就是保證當緩存失效時盡可能立刻清除緩存。由于實時數(shù)據(jù)是不斷更新且無規(guī)律的,因此緩存這些動態(tài)數(shù)據(jù)就需要動態(tài)緩存技術(shù)。動態(tài)緩存技術(shù)實現(xiàn)的關(guān)鍵點是實時獲取變化的數(shù)據(jù),但不是全部獲取,而是只獲取單位時間內(nèi)的動態(tài)數(shù)據(jù),這樣不斷地更新單位時間內(nèi)的數(shù)據(jù),就做到了部分動態(tài)數(shù)據(jù)的緩存,這樣在客戶端發(fā)出實時數(shù)據(jù)請求時,直接將這個單位時間內(nèi)的數(shù)據(jù)發(fā)送給客戶端,就實現(xiàn)了動態(tài)數(shù)據(jù)的實時提取。
異常實時監(jiān)控主要是針對多個檢測點實時數(shù)據(jù)的超限報警監(jiān)控,如罐液位高于高限液位、低于低限液位、壓力溫度超過限值以及流量大于高限小于低限等。對于罐液位而言,每個罐都有液位傳感器監(jiān)控液位,當出現(xiàn)超限情況,就會報警,將超限的時間、位置、檢測點名稱、報警類型、當前超限值及限值等信息全都存儲進入實時數(shù)據(jù)庫。為了提取這些報警信息,運用數(shù)據(jù)異常實時監(jiān)控技術(shù),中間數(shù)據(jù)庫獲取實時數(shù)據(jù)庫中的報警數(shù)據(jù),并緩存到中間數(shù)據(jù)庫。客戶端則通過Socket通信,向中間數(shù)據(jù)庫發(fā)送報警信息的請求,中間數(shù)據(jù)庫接收到請求就會根據(jù)請求條件將符合條件的報警信息以字符串流形式發(fā)送給客戶端,這樣客戶端將獲取的報警信息字符串分割提取,再存儲進入Table表格中,這樣就實現(xiàn)了以報表的形式顯示的報警信息。對于壓力、溫度及流量等類型的監(jiān)控數(shù)據(jù),監(jiān)控和警報都與罐液位相似,通過實時監(jiān)控,將出現(xiàn)報警監(jiān)控點的相關(guān)數(shù)據(jù)信息存儲進入實時數(shù)據(jù)庫,客戶端通過中間數(shù)據(jù)庫獲取對應(yīng)的超限報警數(shù)據(jù)。圖4為通過異常監(jiān)控,提取某聯(lián)合站各個監(jiān)控點的實時數(shù)據(jù),若出現(xiàn)超限報警,便提取該報警點的說明、位置、類型、時間、數(shù)值及限值等,并以報表的形式呈現(xiàn)。

圖4 實時數(shù)的提取匯總
在客戶端中利用AJAX異步刷新和定時器綜合應(yīng)用的方式定時向中間服務(wù)器發(fā)送數(shù)據(jù)請求并獲取數(shù)據(jù)。應(yīng)用AJAX異步刷新向中間服務(wù)器發(fā)送并提取所請求的數(shù)據(jù),使用SOAP或其他一些基于XML的Web Service接口,并在客戶端采用JavaScript處理來自服務(wù)器的響應(yīng)。因此在中間服務(wù)器和瀏覽器之間數(shù)據(jù)交換量大大減少,響應(yīng)速度大大提升。圖5是針對實時數(shù)據(jù)進行不同方式的呈現(xiàn),并能實現(xiàn)數(shù)據(jù)的動態(tài)加載和實時更新。

圖5 實時數(shù)據(jù)的呈現(xiàn)
油田OPC規(guī)范的實時數(shù)據(jù)共享技術(shù)研究的完成,將充分利用信息資源為生產(chǎn)服務(wù),實現(xiàn)客戶端實時準確獲取生產(chǎn)數(shù)據(jù),提高實時數(shù)據(jù)的共享能力,減少傳統(tǒng)實時數(shù)據(jù)獲取的復(fù)雜性和滯后性,使生產(chǎn)單位和信息匯總部門能及時獲取實時生產(chǎn)數(shù)據(jù),方便對數(shù)據(jù)進行匯總上報。該技術(shù)的研究在增加了訪問用戶數(shù)量的同時,還保證了實時數(shù)據(jù)庫和中間數(shù)據(jù)庫的穩(wěn)定性,確保處理數(shù)據(jù)請求速率的提升。