首頁 > 新聞係統 > 人機界麵 > 人機界麵技術 正文 > 論壇 返回 打印

基於Internet的電廠實時監控圖形顯示技術應用

  摘要:基於B/S體係結構開發Internet應用程序是當前的流行趨勢。介紹了基於Internet的電廠實時监控图形显示技術的實現方法。采用目前工業監控環境中的圖形動態交互技術,針對圖形刷新閃爍現象這一關鍵問題提出了不同的解決方法。最後介紹了基於ActiveX控件技術的動態圖形顯示技術的應用實例。
  關鍵詞:Internet;B/S;實時監控;圖形動態顯示;ActiveX控件

  0 前言

  隨著Internet技術的迅速發展和Web技術的日趨成熟,許多企業都建立了基於網絡平台的工業過程監控係統,實現企業信息資源的共享。特別在電力係統,隨著電廠廠級實時監控係統的日趨完善,建立基於Internet的遠程實時監控係統將成為電廠綜合自動化技術發展的必然趨勢,通過把電廠的生產數據信息以Web形式網上發布,實現對分散在各地的電廠實時遠程監控、管理和數據信息共享,優化生產,提高經濟效益等。

  但目前基於Internet的圖形顯示技術存在著許多問題,主要在三個方麵:①圖形動態顯示的實時性。在監控係統中,最關鍵的是現場設備、服務器和用戶之間的圖形數據交互,而實時數據的傳輸延遲要控製在幾秒內,否則將出現畫麵滯後;②圖形顯示過程出現刷新閃爍現象,這是動態顯示中需要解決的關鍵問題;③由於電廠安全性要求很高,因此如何保障圖形數據傳輸的安全,也是基於網絡圖形顯示技術的難點。

  為克服這些問題,在對目前的圖形交互技術進行詳細分析的基礎上,本文提出了一種基於ActiveX/DCOM技術的B/S體係結構,實現電廠遠程監控圖形動態顯示。並針對圖形顯示的關鍵問題――刷新閃爍現象,提出解決方法;然後通過實例介紹基於ActiveX控件的監控圖形顯示技術。

  1 圖形動態顯示技術

  目前實現交互式動態網頁顯示的技術有很多,從最初的CGI到現在的PHP、Java Applet、ASP和JSP等,它們作用各有利弊。

  1.1 Java Applet技術

  Java Applet技術,是用Java語言編寫的應用程序,通過將嵌入在網頁中的Java小程序下載到客戶端直接操作。這種處理方式分散係統尤其是Web服務器的處理負擔,提高了係統效率,增強了交互的實時性。但由於Applet要在瀏覽器端運行,增加了本地開銷,不符合Web開發中“瘦客戶”的要求。

  1.2 ASP(Active Server Pages)技術

  ASP技術是Web服務器和數據庫服務器的集成技術,是微軟公司推出的服務器腳本編寫環境,結合HTML網頁、Script語言和ActiveX控件,與數據庫綁定,創建動態、交互的服務器應用程序[1]。ASP最大的優點是所有的程序都在服務器端執行,包括所有嵌在HTML網頁中的腳本程序,服務器僅將執行的結果返回給客戶,這樣就減輕了客戶端瀏覽器的負擔,大大提高了交互的速度。但ASP的不足是它隻能在Windows係列的環境下運行。圖1為ASP的動態顯示模型。

 
  圖1  基於ASP的動態顯示模型

  1.3 JSP(Java Server Pages)技術

  JSP技術是基於Java Servlet以及整個Java體係的Web開發技術[2]。可以用XML標識來設計和格式化最終頁麵,生成內容的邏輯被封裝在標識tag和Java Beans組件中,與腳本程序綁定,然後將JSP編譯成Java Servlet在服務器端運行來實現動態顯示。JSP的優點是所有腳本均在服務器端執行,實現內容的生成和顯示分離;可重用且跨平台的組件JavaBeans或EJB;而且JSP的腳本在首次執行時被編譯成為Servlet,並有Java虛擬機執行,以後執行都不需編譯,執行效率高。但JSP隻能通過JDBC或JDBC-ODBC橋接訪問數據庫,效率低。

  通過以上圖形顯示技術的對比,可以得出這幾種圖形顯示技術的比較結果,如表1所示。

  表1  幾種圖形顯示技術比較


  2 基於Internet的圖形顯示係統結構

  通過以上圖形顯示技術的分析比較,采用ASP技術,利用其ActiveX/DCOM組件技術支持,可以很好的實現電廠遠程實時監控圖形動態顯示的要求。在B/S體係結構的基礎上[3],我們設計了一種新型B/S模式的基於Internet的遠程監控圖形動態顯係統,如圖2所示。

 


  客戶通過瀏覽器登錄到Web服務器,Web服務器對用戶身份驗證後,根據客戶權限把客戶可以瀏覽的網頁顯示在客戶端,並把網頁中嵌入的ActiveX控件下載並注冊到客戶端;嵌套的組件根據網頁參數設置通過代理機向應用服務器提出數據請求,應用服務器接受用戶請求,通過SQL等方式向數據庫服務器提出數據處理請求;數據庫接受應用服務器的請求,實現對數據庫的操作,並把實時數據或圖形結果提交客戶端。

  這種體係結構的優點在於:①充分發揮B/S 模式的優勢,保持瘦客戶端的優點;②將服務器劃分為Web服務器和應用服務器兩部分。應用服務器采用Active/DCOM組件技術實現B/S結構中的應用邏輯部分,解決了動態顯示的實時性問題,同時達到封裝源代碼、保護知識產權的目的;③通過代理機實現圖形數據的中轉傳輸,保障應用服務器的安全性。代理機位於防火牆與應用服務器之間,當用戶請求數據時,代理機接受請求,並休眠與外網連接線程,然後把請求傳給內網應用服務器;當數據結果返回時,關閉與內網連接,啟動傳輸線程,把數據結果傳給用戶。在傳輸過程中,電廠內外網不直接通信,保障了電廠網絡係統的安全。

  3 圖形顯示自動刷新技術

  在連續動態顯示過程中, 當屏幕由一個場景變化為另一個場景時, 須首先將原先的背景擦除, 然後將新的圖形繪製到屏幕上, 但顯示背景不斷擦除以及繪製圖形所用時間較長, 導致屏幕出現不連續[4],即刷新閃爍現象。為此我們在此提出幾種解決途徑。

  3.1 Web網頁自動刷新技術

  在Web網頁中自動更新顯示,可在Web網頁設計中使用META語句來實現。META語句放置在HTML或ASP代碼的頭部,如網頁每隔5秒刷新一次,可以通過以下META語句來實現:

  <HEAD><META HTTP-EQUIV=“REFRESH” CONTENT=“5” URL="http://202".206.210.146/Trendshow1.ocx> </HEAD>

  刷新一次,整個文件重新執行一次到數據庫的連接,把數據庫中相應的圖形數據的變動反映給客戶端

。這種方法簡單,適用於以隻讀方式向客戶端提供數據,其刷新頻率不宜過快,否則當相應的數據變化較快或比較多時可能出現屏幕顯示不連續,即閃爍現象,不利於數據的監測。因此,本方法適用於數據實時性不強或變化比較緩慢的條件下實現數據的實時顯示。

  3.2 基於Java程序的更新數據

  監控電廠生產過程的相關數據,要將實時數據和實時趨勢曲線顯示在監控畫麵上。可以采用Java Applet小程序直接與Web服務器相連獲取實時數據庫中實時數據,然後利用Java程序自身的多線程和繪圖優勢來實現圖形數據的自動刷新。為了將背景畫麵和與實時數據相關的圖形、數字區分開,通常采用雙緩存技術把背景畫麵載入,在Java小程序的Paint()函數中編寫與實時數據相關的圖形、數據的顯示代碼。在Java小程序的線程Run()函數中利用DAO等實現對數據庫的查詢,Java小程序線程的休眠時間由Sleep()函數決定。每次線程運行時,對數據庫重新查詢得到新的數據,並使得小程序重畫,這樣就把動態的圖形數據反映給客戶。Java小程序執行速度快,刷新頻率較快,適合實時圖形數據的讀取和顯示。

  3.3 圖形畫麵刷新無閃爍

  利用ActiveX組件技術實現遠程監控的圖形動態顯示,可以徹底解決動態顯示時自動刷新出現的閃爍現象。一般來說,解決刷新閃爍現象的方法有兩個方麵:一是避免反複設置背景監控畫麵和清屏;二是避免直接在屏幕上重畫。

  為此,采用雙緩衝技術來解決刷新閃爍,即利用ActiveX控件在客戶端建立內存緩衝區,把原來直接在屏幕上的繪圖操作全部改在緩衝區裏繪製,最後再將緩存區中繪製好的圖形一次性畫到屏幕上。對於一般實時性不強的畫麵,刷新周期設置低點,可以解決刷新閃爍現象;對於實時性較強的圖形數據,通過這種方法也基本能消除刷新閃爍。

  首先利用組態軟件把監控背景畫麵和各種圖元繪製好,存放在應用服務器中;其次,通過ActiveX控件中的CDataPathProperty類異步下載圖形元件,緩存到客戶端中,供控件調用。ActiveX控件中實現繪圖的部分代碼如下:

  {……

  //將位圖句柄調入緩衝區

  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 應用實例

  對於電廠遠程監控係統,不僅要訪問實時數據信息,而且還要將實時數據直觀地顯示在客戶端屏幕上。為此,我們采用Visio 2000來進行畫麵組態,把組態的畫麵供ActiveX控件調用,其中用Visual C++來設計ActiveX控件[5]。

  下麵是係統中的機組運行分析曲線控件"Trendlineshow1.ocx",其屬性如下所示:Host:運行服務代理的主機名或IP地址;Graphics:圖形文件的URL;AutoRefresh:是否自動刷新;RefreshTime:刷新周期,缺省為5s;AutoSize:決定是否根據圖形大小自動改變控件大小,缺省為真。

  控件的工作過程如下:(1)利用CDataPathProperty類異步下載圖形文件,自動緩存在本地機器中,需要時則直接從緩衝區中讀取,加快了執行速度;(2)利用CSocket類與服務代理建立TCP連接;(3)根據刷新周期啟動定時器;(4)處理定時器消息(WM-TIMER),根據圖形文件中實時元件的定義向服務代理請求數據,並刷新圖形數據顯示。

  其ASP網頁部分代碼如下:

  <H2 align="center">#4機組運行分析趨勢曲線</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>

  這裏,網頁代碼中提供了OCX的ClassID和文件的URL。客戶端瀏覽時,會在本地注冊表中查詢該OCX的ClassID,如果本地沒有該的控件,或其版本不是最新時,瀏覽器會自動按照CodeBase指定的路徑從服務器下載控件並安裝注冊到本地機器上。客戶端用IE瀏覽時,其安全級別設置為擁有合法代碼簽名的ActiveX控件下載。

  5 結論

  基於Internet的電廠遠程實時監控係統,采用B/S體係結構,利用ASP技術的ActiveX/DCOM組件支持,很好地實現了係統遠程監控和圖形數據的動態顯示和自動刷新。而且ActiveX技術對於實現業務邏輯封裝、提高軟件的可重用性和可維護性、開發高效和安全的圖形顯示係統具有積極的意義,是現代電廠遠程監控技術的發展方向。

  參考文獻:
  [1] 陳冠宇,熊偉.基於ASP的圖形動態顯示技術[J].微機發展,2004.07,49-51.
  [2] 孫文波,盧建軍.基於Web的遠程監控技術及比較[J].西安科技大學學報.2002.02.
  [3] 李玉奇,劉旺開.基於B/S結構下分布式控製係統的實時監控[J].微計算機信息,2004,20(2),53-55.
  [4] 周震,虞鶴鬆.工業監控環境下Web頁麵實時數據的自動更新[J].計算機應用.2001.11.
  [5] 宇鵬,王曉峰等.Visual C++實踐與提高-ActiveX篇[M].北京: 中國鐵道出版社.2001.


http://www.autooo.net/autooo/renjijiemian/jishu/2008-01-10/44937.html