任偉建 江 聲 霍鳳財 姜淑環 楊 迪
(東北石油大學電氣信息工程學院1,黑龍江 大慶 163318;大慶油田有限責任公司第二采油廠2,黑龍江 大慶 163414)
?
OPC技術在油田分布式共享系統中的應用
任偉建1江聲1霍鳳財1姜淑環2楊迪2
(東北石油大學電氣信息工程學院1,黑龍江 大慶163318;大慶油田有限責任公司第二采油廠2,黑龍江 大慶163414)
為了解決油田聯合站內不同廠商監控組態軟件之間的通信問題,采用OPC接口技術,設計了油田數據分布式共享系統,實現了相互獨立的各聯合站數據采集系統之間的通信以及網絡客戶端油田聯合站數據的分布式共享。實際應用表明,該系統能夠實時獲取數據源的動態數據和歷史數據,捕捉控制過程中的各種報警和事件,具有一定的推廣價值。
油田聯合站數據共享OPC中間服務器Socket數據監控組態軟件分布式動態緩存
Dynamic cache
目前,隨著工業生產規模的不斷發展,在工業自動化領域中,設備數據的采集監控的重要性日益凸顯。在石油行業,油田聯合站數量眾多,地域分布廣泛。由于生產數據的采集與監控相互獨立,且在很大程度上依賴組態軟件,在應用過程中產生了一系列問題:用戶的訪問數量受到限制,相互獨立系統結構本身的封閉性會排斥與其他系統的資源充分共享[1]。
近年來,在工業過程控制領域出現了用于過程控制的對象連接嵌入(object linking and embedding for process control,OPC)技術[2],它以OLE/COM、DCOM技術為基礎,是在已經存在的數據采集技術的基礎上提出的解決方案[3-4]。OPC技術支持分布式應用和異構環境下應用程序之間的軟件無縫集成和互操作,使客戶軟件能夠訪問任意數據源,為不同類型的服務器和客戶端搭建橋梁,確保數據源能夠提取數據并將其統一傳輸到應用程序[5-6]。
本文以OPC技術為基礎,闡述了油田數據分布式共享系統方案的構建方法,重點討論了OPC客戶端在數據采集系統無縫集成中的實現過程,并介紹了分布式共享系統實現過程中所應用的關鍵技術。
本文設計的基于OPC數據規范技術的油田數據分布式共享系統(以下簡稱為油田數據分布式共享系統),主要包括五個部分:瀏覽器、Web服務器、OPC客戶端、OPC服務器以及底層設備,系統的整體架構如圖1所示。Web服務器包括可視化展示網絡和互聯網信息服務(internet information service,IIS)這兩部分。

圖1 系統整體架構圖Fig.1 Overall system architecture
本系統是基于.NET平臺開發的,采用的開發工具為Visual Studio 2010,使用C#編程語言。系統采用的關鍵技術如下。
2.1OPC中間數據服務技術
傳統的油田數據采集系統雖然實現了數據的采集和顯示,但是系統在很大程度上仍依賴組態軟件。不同廠家的組態軟件各自獨立,很難實現數據的共享。本文采用OPC中間數據服務技術突破了這種局限,拓展了生產數據的應用范圍。
通過引入OPC規范,建立通信規則框架信息庫并采用有效的實時處理策略,設計、開發了具有較強通用性和面向過程數據通信的OPC客戶端。OPC規范包括OPC服務器和OPC客戶端兩部分。從功能上看,OPC服務器作為數據源,它本身擁有數據,或可從各種設備、系統、控制器得到數據;OPC客戶端則可在應用的過程中采集OPC服務器數據。
2.1.1OPC服務器
OPC服務器的構建一般有兩種方式:①開發人員按照要求自定義創建;②各OPC服務器廠商包括組態軟件提供的模塊化的OPC Server。本文以紫金橋監控組態軟件的RealInfo OpcServer 2.0作為OPC服務器,獲取油田聯合站數據,并向中間服務器(OPC客戶端)提供數據。OPC服務器分為服務器 (server) 、組(group) 、數據項 (item)[7]這三層,三者之間的關系如圖2所示。

圖2 OPC服務器組織結構關系圖Fig.2 Relationship of OPC server organization structure
OPC服務器支持兩種訪問接口:自定義標準接口和OLE自動化標準接口。自定義接口是一組COM接口,主要用于C++語言的應用程序開發;自動化接口是一組OLE接口,它提供了自動配置和存取過程控制數據的接口,主要用于VB、Delphi、C#和其他基于腳本編程語言的應用程序的開發[8]。任何OPC服務器都必須提供自定義接口,但是自動化接口是可選擇的。同其他主流OPC服務器一樣,RealInfo OPCServer 2.0提供了自動化接口。
2.1.2OPC客戶端程序設計
OPC基金會的opcdaauto.dll動態鏈接庫作為自動化接口的組件,提供了用于訪問OPC服務器的對象、屬性和方法。本文在引入此動態鏈接庫的基礎上,以基于Visual C#語言的Windows Form開發OPC客戶端作為系統的一部分,更易于實現其與整個軟件結合和升級。遵循OPC標準開發的OPC客戶端能實現與眾多聯合站OPC服務器的互聯和數據采集,應用方便。
應用自動化接口開發OPC客戶端,首先要定義全局變量。本文分別定義服務器、組和數據項如下:
①OPCServer RealServer;
②OPCGroups RealGroups;
③OPCGroup RealGroup;
④OPCItems RealItems;
⑤OPCItem RealItem。
定義完成的全局變量可應用于在窗體的任何方法和函數。需要強調的是,變量類型應該指定為對象型。在本文中,采用子函數OPCServersList的方式來實現本地和遠程服務器的搜尋,并將搜尋的OPCServer名稱以列表的方式提供給OPC客戶端, OPCServer對象會根據選中的遠程OPC服務器的名稱和IP調用Connect函數來完成連接。只有當OPCServer狀態為OPCRunning,即RealServer.ServerState== (int)OPCServerState.OPCRunning時,才表示連接成功。在連接成功以后,需要建立OPC組,并添加OPC項,以完成數據傳輸。
①添加OPC組。為客戶提供了一種組織數據的方法,每個組中都可以定義一個或多個OPC項[9]:RealGroup= RealServer.OPCGroups.Add(“group”)。添加組以后可自定義組的屬性,也可采用默認設置。
②添加OPC 項。OPC項要在對服務器進行訪問前添加。由于本文訪問的站庫點位數量比較多,如果采用逐個添加的方式會增加開發的難度和操作的繁瑣度。本文通過XML文件的形式,動態添加各聯合站需要監控的點位,不僅解決了不斷添加OPC項的重復工作,而且當OPC項需要變動的時候,無需改動程序即可按照用戶的需求進行定制。
③異步讀取。采用異步讀取,將分布在不同網絡節點中的聯合站采集系統的實時數據庫中點位過程值集成到中間服務器;將歷史數據儲存在數據庫中,實時數據緩存在OPC客戶端所在微機的內存中。每個標簽的數據結構包括三個成員變量,分別是數據值(value)、品質(quality)和時間戳(time stamp)[10]。
2.2優化動態緩存與SOCKET通信技術
OPC客戶端實現了從OPC服務器提取數據。為簡化流程,各種類型數據往往全部轉存入關系型數據庫,這就導致了用戶訪問動態數據需要經歷以下過程。首先,Web服務器會將用戶的不同請求分配給應用軟件的不同模塊;其次,根據應用軟件的運算和處理,決定從數據庫中提取什么類型的數據;最后,從數據庫中提取數據,將數據按照定義的格式組合成需要的類型并顯示。因此,數據訪問時間冗長,訪問速度緩慢,增加了Web服務器的負載。所以,如何優化訪問速度、減輕服務器的負載成為設計關鍵。
本文為解決這種狀況,在用戶和Web服務器之間采用了一種優化的Socket通信技術和動態緩存技術,能加快用戶訪問的速度,以減少訪問實時數據的延遲時間;同時在峰值負載下,該技術能緩解客戶端沖擊帶來的負載。
2.2.1優化動態緩存技術
動態緩存的設計包括緩存內容存放的過程和緩存對象配置文件的建立。傳統的內存緩存往往存在資源冗余、資源管理雜亂以及效率低下等問題。本文提出一種改進型的動態緩沖池技術,可實現線程間的大數據量通信。通過為通信線程申請一整塊內存空間來存放數據,并在OPC客戶端建立可定制大小的對象數組,以預先讀取進行緩存的方式,實現動態內容的緩存。這種方式在管理緩沖池的時候,可動態地增減對象數組的數量和大小,使緩沖池所占用的內存按需變動。
從OPC服務器采集的實時數據會將每條記錄生成對象存放在動態緩沖數組中,對象數組會根據記錄的長短動態地設定存儲大小,以避免內存的浪費。同時,考慮到實時數據的頻繁更新,為確保用戶查看到最新數據,本文設計了一種周期性觸發和事件觸發相結合的觸發策略。當所采集對象的數據變化超過一定范圍時,OPC服務器會觸發DataChange事件,對緩沖池進行數據的更新。緩沖池作為一塊內存空間,其大小不是無限制的。當緩沖池中存儲的內容超出所設定的范圍,緩沖池會自動溢出過時記錄,保證了內存的負載。
緩存對象配置文件采用可擴展標記語言XML存儲機制。XML作為新興的面向互聯網的標記語言,定義了應用程序間訪問站庫點位數據的結構,并且這種結構的描述不是基于二進制,而是一種相對簡單、能夠通過任意編輯器讀寫的文本。基于這種機制,可以制定緩存對象數據的采集規范,并通過DOM或SAX接口同應用程序相連,以限定動態緩存的對象范圍。動態緩存應用流程圖如圖3所示。

圖3 動態緩存應用流程圖Fig.3 Application process of dynamic cache
2.2.2優化Socket多線程技術
Socket是應用程序與網絡之間的標準接口,主要分為三類:流式套接字、數據報套接字和原始數據報套接字。其中,流式套接字作為一種面向連接的套接字,針對面向連接的TCP服務應用[11],適用于局域網內的大數據傳輸,且傳輸穩定性強。
本文基于.NET平臺開發油田OPC分布式共享可視化展示網站,并將網站通過IIS發布在與中間服務器同一節點的Web服務器上,為用戶查看生產數據提供Web支持。當用戶向Web服務器發送請求時,采用Socket通信技術建立連接。首先,在連接雙方即Web服務器和客戶端分別建立套接字;其次,建立套接字以后的Web服務器與客戶端經過“三次握手”實現連接。因為聯合站庫點位相互獨立,它們的變化不具有同步性,所以用戶瀏覽器頁面所監控的站庫點位數據如果采用易于實現的全局刷新的方式建立Socket通信是沒有意義的。Socket通信流程圖如圖4所示。

圖4 Socket通信流程圖Fig.4 Flowchart of socket communication
本文采用了一種異步的Java Script和XML(AJAX)異步刷新和定時器綜合應用的方式,定時向Web服務器發出請求。Web服務器會在所建立的Socket連接的基礎上啟動多個線程訪問緩沖池,無需等待便可并發執行數據采集任務;同時,在客戶端,采用JavaScript處理來自Web服務器的響應。這使得在Web服務器和瀏覽器之間交換的數據大量減少,響應更快。同時,很多處理工作可以在發出請求的客戶端機器上完成,減少了Web服務器的處理時間。更重要的是,AJAX能在不刷新整個頁面的前提下維護數據,這使得Web服務器能夠更為迅捷地回應用戶動作,避免了對未改變的數據的重復性操作。
本文通過分析聯合站工業生產基本流程,結合過程數據傳輸標準——OPC規范技術,研究并開發了暫存油田數據的中間服務器,實現了實時數據庫與中間服務器之間的無差別共享;油田OPC分布式共享可視化展示網站利用.NET服務器、優化的動態緩存和Socket數據通信等技術,實現了現場數據的網絡客戶端展示。整套系統可實時、準確地獲取最新的現場數據,從而安全、可靠地對現場設備進行控制。
[1] 潘大勝.分布式異構資源庫共享機制研究[J].吉林師范大學學報(自然科學版),2012,11(4):131-133.
[2] 蔡明章,李昊,甘洋,等.基于OPC-DA服務器的應用研究與設計[J].云南大學學報,2014,36(S1):12-16.
[3] 王大鵬,蘇孝國,王濤.基于C#語言的工業計算機與57-1200的OPC通訊[J].自動化與儀器儀表,2014,34(11):147-150.
[4] 鮑坤,孫學華.OPC在數據交互系統中的應用[J].自動化儀表,2012,33(10):17-19.
[5] 王杰,高昆侖,王萬召.基于OPC通信技術的火電廠DCS后臺控制[J].電力自動化設備,2013,33(4):142-144.
[6] 蘇磊,李茜,湯偉.OPC數據訪問客戶端的研究與實現[J].計算機工程,2010,36(11):80-82.
[7] 曹紅萍,江山,鄒玉兵,等.Net平臺的OPC DA客戶端開發[J].自動化儀表,2012,33(9):45-48.
[8] 顧亮,饒豐等,寇東升.OPC技術結合.NET架構在系統集成項目中的應用[J].制造業自動化,2006,28(7):74-77.
[9] 戚中奎,林果園,孫統風.OPC數據訪問服務器的研究與實現[J].計算機工程與設計,2011,32(4):1517-1520.
[10]趙春玲.NET平臺下開發三層架構WinForm應用程序簡介[J].信息技術與信息化,2010,4(9):33-35.
[11]歐軍,吳清秀,裴云,等.基于socket的網絡通信技術研究[J].網絡安全技術與應用,2011,11(7):19-21.
Application of the OPC Technology in Distributed Sharing System of Oilfield
In order to solve the communication issue between monitoring configuration software of different vendors in oilfield united station,the oilfield distributed data sharing system is designed by using OPC interfacing technology.The communication among data acquisition systems of mutually independent united stations and the distributed data sharing of oilfield stations in network clients are realized.Practical application shows that the system can acquire dynamic data and historical data of data sources in real time,capture all kinds of alarms and events in the process of control,and has a certain popularization value.
Oilfield united stationData sharingOPCIntermediate serverSocketData monitoringConfiguration softwareDistributed
任偉建(1963—),女,2006年畢業于大慶石油學院油氣儲運工程專業,獲博士學位,教授;主要從事復雜系統的建模與控制方向的研究。
TH86;TP274+.2
ADOI:10.16086/j.cnki.issn 1000-0380.201610002
國家自然科學基金資助項目(編號:61374127);
黑龍江省博士后科研啟動資金基金資助項目(編號:LBH-Q12143)。
修改稿收到日期:2016-02-21。