基于Internet的電廠(chǎng)實(shí)時(shí)監控圖形顯示技術(shù)應用
摘要:基于B/S體系結構開(kāi)發(fā)Internet應用程序是當前的流行趨勢。介紹了基于Internet的電廠(chǎng)實(shí)時(shí)監控圖形顯示技術(shù)的實(shí)現方法。采用目前工業(yè)監控環(huán)境中的圖形動(dòng)態(tài)交互技術(shù),針對圖形刷新閃爍現象這一關(guān)鍵問(wèn)題提出了不同的解決方法。最后介紹了基于ActiveX控件技術(shù)的動(dòng)態(tài)圖形顯示技術(shù)的應用實(shí)例。
關(guān)鍵詞:Internet;B/S;實(shí)時(shí)監控;圖形動(dòng)態(tài)顯示;ActiveX控件
0 前言
隨著(zhù)Internet技術(shù)的迅速發(fā)展和Web技術(shù)的日趨成熟,許多企業(yè)都建立了基于網(wǎng)絡(luò )平臺的工業(yè)過(guò)程監控系統,實(shí)現企業(yè)信息資源的共享。特別在電力系統,隨著(zhù)電廠(chǎng)廠(chǎng)級實(shí)時(shí)監控系統的日趨完善,建立基于Internet的遠程實(shí)時(shí)監控系統將成為電廠(chǎng)綜合自動(dòng)化技術(shù)發(fā)展的必然趨勢,通過(guò)把電廠(chǎng)的生產(chǎn)數據信息以Web形式網(wǎng)上發(fā)布,實(shí)現對分散在各地的電廠(chǎng)實(shí)時(shí)遠程監控、管理和數據信息共享,優(yōu)化生產(chǎn),提高經(jīng)濟效益等。
但目前基于Internet的圖形顯示技術(shù)存在著(zhù)許多問(wèn)題,主要在三個(gè)方面:①圖形動(dòng)態(tài)顯示的實(shí)時(shí)性。在監控系統中,最關(guān)鍵的是現場(chǎng)設備、服務(wù)器和用戶(hù)之間的圖形數據交互,而實(shí)時(shí)數據的傳輸延遲要控制在幾秒內,否則將出現畫(huà)面滯后;②圖形顯示過(guò)程出現刷新閃爍現象,這是動(dòng)態(tài)顯示中需要解決的關(guān)鍵問(wèn)題;③由于電廠(chǎng)安全性要求很高,因此如何保障圖形數據傳輸的安全,也是基于網(wǎng)絡(luò )圖形顯示技術(shù)的難點(diǎn)。
為克服這些問(wèn)題,在對目前的圖形交互技術(shù)進(jìn)行詳細分析的基礎上,本文提出了一種基于A(yíng)ctiveX/DCOM技術(shù)的B/S體系結構,實(shí)現電廠(chǎng)遠程監控圖形動(dòng)態(tài)顯示。并針對圖形顯示的關(guān)鍵問(wèn)題――刷新閃爍現象,提出解決方法;然后通過(guò)實(shí)例介紹基于A(yíng)ctiveX控件的監控圖形顯示技術(shù)。
1 圖形動(dòng)態(tài)顯示技術(shù)
目前實(shí)現交互式動(dòng)態(tài)網(wǎng)頁(yè)顯示的技術(shù)有很多,從最初的CGI到現在的PHP、Java Applet、ASP和JSP等,它們作用各有利弊。
1.1 Java Applet技術(shù)
Java Applet技術(shù),是用Java語(yǔ)言編寫(xiě)的應用程序,通過(guò)將嵌入在網(wǎng)頁(yè)中的Java小程序下載到客戶(hù)端直接操作。這種處理方式分散系統尤其是Web服務(wù)器的處理負擔,提高了系統效率,增強了交互的實(shí)時(shí)性。但由于A(yíng)pplet要在瀏覽器端運行,增加了本地開(kāi)銷(xiāo),不符合Web開(kāi)發(fā)中“瘦客戶(hù)”的要求。
1.2 ASP(Active Server Pages)技術(shù)
ASP技術(shù)是Web服務(wù)器和數據庫服務(wù)器的集成技術(shù),是微軟公司推出的服務(wù)器腳本編寫(xiě)環(huán)境,結合HTML網(wǎng)頁(yè)、Script語(yǔ)言和ActiveX控件,與數據庫綁定,創(chuàng )建動(dòng)態(tài)、交互的服務(wù)器應用程序[1]。ASP最大的優(yōu)點(diǎn)是所有的程序都在服務(wù)器端執行,包括所有嵌在HTML網(wǎng)頁(yè)中的腳本程序,服務(wù)器僅將執行的結果返回給客戶(hù),這樣就減輕了客戶(hù)端瀏覽器的負擔,大大提高了交互的速度。但ASP的不足是它只能在Windows系列的環(huán)境下運行。圖1為ASP的動(dòng)態(tài)顯示模型。
圖1 基于A(yíng)SP的動(dòng)態(tài)顯示模型
1.3 JSP(Java Server Pages)技術(shù)
JSP技術(shù)是基于Java Servlet以及整個(gè)Java體系的Web開(kāi)發(fā)技術(shù)[2]??梢杂肵ML標識來(lái)設計和格式化最終頁(yè)面,生成內容的邏輯被封裝在標識tag和Java Beans組件中,與腳本程序綁定,然后將JSP編譯成Java Servlet在服務(wù)器端運行來(lái)實(shí)現動(dòng)態(tài)顯示。JSP的優(yōu)點(diǎn)是所有腳本均在服務(wù)器端執行,實(shí)現內容的生成和顯示分離;可重用且跨平臺的組件JavaBeans或EJB;而且JSP的腳本在首次執行時(shí)被編譯成為Servlet,并有Java虛擬機執行,以后執行都不需編譯,執行效率高。但JSP只能通過(guò)JDBC或JDBC-ODBC橋接訪(fǎng)問(wèn)數據庫,效率低。
通過(guò)以上圖形顯示技術(shù)的對比,可以得出這幾種圖形顯示技術(shù)的比較結果,如表1所示。
表1 幾種圖形顯示技術(shù)比較
2 基于Internet的圖形顯示系統結構
通過(guò)以上圖形顯示技術(shù)的分析比較,采用ASP技術(shù),利用其ActiveX/DCOM組件技術(shù)支持,可以很好的實(shí)現電廠(chǎng)遠程實(shí)時(shí)監控圖形動(dòng)態(tài)顯示的要求。在B/S體系結構的基礎上[3],我們設計了一種新型B/S模式的基于Internet的遠程監控圖形動(dòng)態(tài)顯系統,如圖2所示。
客戶(hù)通過(guò)瀏覽器登錄到Web服務(wù)器,Web服務(wù)器對用戶(hù)身份驗證后,根據客戶(hù)權限把客戶(hù)可以瀏覽的網(wǎng)頁(yè)顯示在客戶(hù)端,并把網(wǎng)頁(yè)中嵌入的ActiveX控件下載并注冊到客戶(hù)端;嵌套的組件根據網(wǎng)頁(yè)參數設置通過(guò)代理機向應用服務(wù)器提出數據請求,應用服務(wù)器接受用戶(hù)請求,通過(guò)SQL等方式向數據庫服務(wù)器提出數據處理請求;數據庫接受應用服務(wù)器的請求,實(shí)現對數據庫的操作,并把實(shí)時(shí)數據或圖形結果提交客戶(hù)端。
這種體系結構的優(yōu)點(diǎn)在于:①充分發(fā)揮B/S 模式的優(yōu)勢,保持瘦客戶(hù)端的優(yōu)點(diǎn);②將服務(wù)器劃分為Web服務(wù)器和應用服務(wù)器兩部分。應用服務(wù)器采用Active/DCOM組件技術(shù)實(shí)現B/S結構中的應用邏輯部分,解決了動(dòng)態(tài)顯示的實(shí)時(shí)性問(wèn)題,同時(shí)達到封裝源代碼、保護知識產(chǎn)權的目的;③通過(guò)代理機實(shí)現圖形數據的中轉傳輸,保障應用服務(wù)器的安全性。代理機位于防火墻與應用服務(wù)器之間,當用戶(hù)請求數據時(shí),代理機接受請求,并休眠與外網(wǎng)連接線(xiàn)程,然后把請求傳給內網(wǎng)應用服務(wù)器;當數據結果返回時(shí),關(guān)閉與內網(wǎng)連接,啟動(dòng)傳輸線(xiàn)程,把數據結果傳給用戶(hù)。在傳輸過(guò)程中,電廠(chǎng)內外網(wǎng)不直接通信,保障了電廠(chǎng)網(wǎng)絡(luò )系統的安全。
3 圖形顯示自動(dòng)刷新技術(shù)
在連續動(dòng)態(tài)顯示過(guò)程中, 當屏幕由一個(gè)場(chǎng)景變化為另一個(gè)場(chǎng)景時(shí), 須首先將原先的背景擦除, 然后將新的圖形繪制到屏幕上, 但顯示背景不斷擦除以及繪制圖形所用時(shí)間較長(cháng), 導致屏幕出現不連續[4],即刷新閃爍現象。為此我們在此提出幾種解決途徑。
3.1 Web網(wǎng)頁(yè)自動(dòng)刷新技術(shù)
在Web網(wǎng)頁(yè)中自動(dòng)更新顯示,可在Web網(wǎng)頁(yè)設計中使用META語(yǔ)句來(lái)實(shí)現。META語(yǔ)句放置在HTML或ASP代碼的頭部,如網(wǎng)頁(yè)每隔5秒刷新一次,可以通過(guò)以下META語(yǔ)句來(lái)實(shí)現:
HEAD>META HTTP-EQUIV=“REFRESH” CONTENT=“5” URL=http://202.206.210.146/Trendshow1.ocx> /HEAD>
刷新一次,整個(gè)文件重新執行一次到數據庫的連接,把數據庫中相應的圖形數據的變動(dòng)反映給客戶(hù)端。這種方法簡(jiǎn)單,適用于以只讀方式向客戶(hù)端提供數據,其刷新頻率不宜過(guò)快,否則當相應的數據變化較快或比較多時(shí)可能出現屏幕顯示不連續,即閃爍現象,不利于數據的監測。因此,本方法適用于數據實(shí)時(shí)性不強或變化比較緩慢的條件下實(shí)現數據的實(shí)時(shí)顯示。
3.2 基于Java程序的更新數據
監控電廠(chǎng)生產(chǎn)過(guò)程的相關(guān)數據,要將實(shí)時(shí)數據和實(shí)時(shí)趨勢曲線(xiàn)顯示在監控畫(huà)面上??梢圆捎肑ava Applet小程序直接與Web服務(wù)器相連獲取實(shí)時(shí)數據庫中實(shí)時(shí)數據,然后利用Java程序自身的多線(xiàn)程和繪圖優(yōu)勢來(lái)實(shí)現圖形數據的自動(dòng)刷新。為了將背景畫(huà)面和與實(shí)時(shí)數據相關(guān)的圖形、數字區分開(kāi),通常采用雙緩存技術(shù)把背景畫(huà)面載入,在Java小程序的Paint()函數中編寫(xiě)與實(shí)時(shí)數據相關(guān)的圖形、數據的顯示代碼。在Java小程序的線(xiàn)程Run()函數中利用DAO等實(shí)現對數據庫的查詢(xún),Java小程序線(xiàn)程的休眠時(shí)間由Sleep()函數決定。每次線(xiàn)程運行時(shí),對數據庫重新查詢(xún)得到新的數據,并使得小程序重畫(huà),這樣就把動(dòng)態(tài)的圖形數據反映給客戶(hù)。Java小程序執行速度快,刷新頻率較快,適合實(shí)時(shí)圖形數據的讀取和顯示。
3.3 圖形畫(huà)面刷新無(wú)閃爍
利用ActiveX組件技術(shù)實(shí)現遠程監控的圖形動(dòng)態(tài)顯示,可以徹底解決動(dòng)態(tài)顯示時(shí)自動(dòng)刷新出現的閃爍現象。一般來(lái)說(shuō),解決刷新閃爍現象的方法有兩個(gè)方面:一是避免反復設置背景監控畫(huà)面和清屏;二是避免直接在屏幕上重畫(huà)。
為此,采用雙緩沖技術(shù)來(lái)解決刷新閃爍,即利用ActiveX控件在客戶(hù)端建立內存緩沖區,把原來(lái)直接在屏幕上的繪圖操作全部改在緩沖區里繪制,最后再將緩存區中繪制好的圖形一次性畫(huà)到屏幕上。對于一般實(shí)時(shí)性不強的畫(huà)面,刷新周期設置低點(diǎn),可以解決刷新閃爍現象;對于實(shí)時(shí)性較強的圖形數據,通過(guò)這種方法也基本能消除刷新閃爍。
首先利用組態(tài)軟件把監控背景畫(huà)面和各種圖元繪制好,存放在應用服務(wù)器中;其次,通過(guò)ActiveX控件中的CDataPathProperty類(lèi)異步下載圖形元件,緩存到客戶(hù)端中,供控件調用。ActiveX控件中實(shí)現繪圖的部分代碼如下:
{……
//將位圖句柄調入緩沖區
CBitmap*pOldBitmap=m_pdcMemory->SelectObject(m_pBitmap);
m_pdcMemory-> SelectClipRgn(NULL);
m_pdcMemory->IntersectClipRect(rectUpdate);
……
//用位圖填充指定的圖形區域
m_pdcMemory->PatBlt(rectUpdate.left,rectUpdate.top, rectUpdate.Width(), rectUpdate. Height(),PATCOPY);
//將指向緩沖區的指針傳遞給繪圖函數
OnDraw (m_pdcMemory);
//將緩沖區中的繪好的圖形復制到屏幕上
dc.BitBlt(rectUpdate.left,rectUpdate.top,rectUpdate.Width(),rectUpdate.Height(),m_pdcMemory,rectUpdate.left,rectUpdate.top,SRCCOPY); ……}
4 應用實(shí)例
對于電廠(chǎng)遠程監控系統,不僅要訪(fǎng)問(wèn)實(shí)時(shí)數據信息,而且還要將實(shí)時(shí)數據直觀(guān)地顯示在客戶(hù)端屏幕上。為此,我們采用Visio 2000來(lái)進(jìn)行畫(huà)面組態(tài),把組態(tài)的畫(huà)面供ActiveX控件調用,其中用Visual C++來(lái)設計ActiveX控件[5]。
下面是系統中的機組運行分析曲線(xiàn)控件"Trendlineshow1.ocx",其屬性如下所示:Host:運行服務(wù)代理的主機名或IP地址;Graphics:圖形文件的URL;AutoRefresh:是否自動(dòng)刷新;RefreshTime:刷新周期,缺省為5s;AutoSize:決定是否根據圖形大小自動(dòng)改變控件大小,缺省為真。
控件的工作過(guò)程如下:(1)利用CDataPathProperty類(lèi)異步下載圖形文件,自動(dòng)緩存在本地機器中,需要時(shí)則直接從緩沖區中讀取,加快了執行速度;(2)利用CSocket類(lèi)與服務(wù)代理建立TCP連接;(3)根據刷新周期啟動(dòng)定時(shí)器;(4)處理定時(shí)器消息(WM-TIMER),根據圖形文件中實(shí)時(shí)元件的定義向服務(wù)代理請求數據,并刷新圖形數據顯示。
其ASP網(wǎng)頁(yè)部分代碼如下:
H2 align=center>#4機組運行分析趨勢曲線(xiàn)/H2>
OBJECT id=trendlineshow1 style="Z-INDEX:100;LEFT:-2px;POSITION:absolute;TOP:45px" codeBase=http://10.1.32.222/ocx/show1.ocx classid="clsid:1A2D46F5-434C-42A1-1A9E7B9A2B8B">
PARAM NAME="_ExtentX" VALUE="2312"> PARAM NAME="_ExtentY" VALUE="1132">
PARAM NAME="SQLServerName" VALUE="websvr"> PARAM NAME="UID"VALUE="RMDSUser">
PARAM NAME="PWD" VALUE=""> PARAMNAME="DataBaseName" VALUE="rmdsdb">/OBJECT>
這里,網(wǎng)頁(yè)代碼中提供了OCX的ClassID和文件的URL??蛻?hù)端瀏覽時(shí),會(huì )在本地注冊表中查詢(xún)該OCX的ClassID,如果本地沒(méi)有該的控件,或其版本不是最新時(shí),瀏覽器會(huì )自動(dòng)按照CodeBase指定的路徑從服務(wù)器下載控件并安裝注冊到本地機器上??蛻?hù)端用IE瀏覽時(shí),其安全級別設置為擁有合法代碼簽名的ActiveX控件下載。
5 結論
基于Internet的電廠(chǎng)遠程實(shí)時(shí)監控系統,采用B/S體系結構,利用ASP技術(shù)的ActiveX/DCOM組件支持,很好地實(shí)現了系統遠程監控和圖形數據的動(dòng)態(tài)顯示和自動(dòng)刷新。而且ActiveX技術(shù)對于實(shí)現業(yè)務(wù)邏輯封裝、提高軟件的可重用性和可維護性、開(kāi)發(fā)高效和安全的圖形顯示系統具有積極的意義,是現代電廠(chǎng)遠程監控技術(shù)的發(fā)展方向。
參考文獻:
[1] 陳冠宇,熊偉.基于A(yíng)SP的圖形動(dòng)態(tài)顯示技術(shù)[J].微機發(fā)展,2004.07,49-51.
[2] 孫文波,盧建軍.基于Web的遠程監控技術(shù)及比較[J].西安科技大學(xué)學(xué)報.2002.02.
[3] 李玉奇,劉旺開(kāi).基于B/S結構下分布式控制系統的實(shí)時(shí)監控[J].微計算機信息,2004,20(2),53-55.
[4] 周震,虞鶴松.工業(yè)監控環(huán)境下Web頁(yè)面實(shí)時(shí)數據的自動(dòng)更新[J].計算機應用.2001.11.
[5] 宇鵬,王曉峰等.Visual C++實(shí)踐與提高-ActiveX篇[M].北京: 中國鐵道出版社.2001.
評論