新聞中心

        EEPW首頁(yè) > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 基于Internet的電廠實(shí)時(shí)監(jiān)控圖形顯示技術(shù)應(yīng)用

        基于Internet的電廠實(shí)時(shí)監(jiān)控圖形顯示技術(shù)應(yīng)用

        作者: 時(shí)間:2007-06-04 來(lái)源:網(wǎng)絡(luò) 收藏

        摘要:B/S體系結(jié)構(gòu)開(kāi)發(fā)應(yīng)用程序是當(dāng)前的流行趨勢(shì)。介紹了技術(shù)的實(shí)現(xiàn)方法。采用目前工業(yè)環(huán)境中的動(dòng)態(tài)交互技術(shù),針對(duì)刷新閃爍現(xiàn)象這一關(guān)鍵問(wèn)題提出了不同的解決方法。最后介紹了ActiveX控件技術(shù)的動(dòng)態(tài)圖形技術(shù)的應(yīng)用實(shí)例。
        關(guān)鍵詞:;B/S;;圖形動(dòng)態(tài);ActiveX控件

        0 前言

        隨著Internet技術(shù)的迅速發(fā)展和Web技術(shù)的日趨成熟,許多企業(yè)都建立了基于網(wǎng)絡(luò)平臺(tái)的工業(yè)過(guò)程監(jiān)控系統(tǒng),實(shí)現(xiàn)企業(yè)信息資源的共享。特別在電力系統(tǒng),隨著廠級(jí)監(jiān)控系統(tǒng)的日趨完善,建立基于Internet的遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng)將成為綜合自動(dòng)化技術(shù)發(fā)展的必然趨勢(shì),通過(guò)把電廠的生產(chǎn)數(shù)據(jù)信息以Web形式網(wǎng)上發(fā)布,實(shí)現(xiàn)對(duì)分散在各地的電廠實(shí)時(shí)遠(yuǎn)程監(jiān)控、管理和數(shù)據(jù)信息共享,優(yōu)化生產(chǎn),提高經(jīng)濟(jì)效益等。

        但目前基于Internet的圖形顯示技術(shù)存在著許多問(wèn)題,主要在三個(gè)方面:①圖形動(dòng)態(tài)顯示的實(shí)時(shí)性。在監(jiān)控系統(tǒng)中,最關(guān)鍵的是現(xiàn)場(chǎng)設(shè)備、服務(wù)器和用戶(hù)之間的圖形數(shù)據(jù)交互,而實(shí)時(shí)數(shù)據(jù)的傳輸延遲要控制在幾秒內(nèi),否則將出現(xiàn)畫(huà)面滯后;②圖形顯示過(guò)程出現(xiàn)刷新閃爍現(xiàn)象,這是動(dòng)態(tài)顯示中需要解決的關(guān)鍵問(wèn)題;③由于電廠安全性要求很高,因此如何保障圖形數(shù)據(jù)傳輸?shù)陌踩彩腔诰W(wǎng)絡(luò)圖形顯示技術(shù)的難點(diǎn)。

        為克服這些問(wèn)題,在對(duì)目前的圖形交互技術(shù)進(jìn)行詳細(xì)分析的基礎(chǔ)上,本文提出了一種基于ActiveX/DCOM技術(shù)的B/S體系結(jié)構(gòu),實(shí)現(xiàn)電廠遠(yuǎn)程監(jiān)控圖形動(dòng)態(tài)顯示。并針對(duì)圖形顯示的關(guān)鍵問(wèn)題――刷新閃爍現(xiàn)象,提出解決方法;然后通過(guò)實(shí)例介紹基于ActiveX控件的監(jiān)控圖形顯示技術(shù)。

        1 圖形動(dòng)態(tài)顯示技術(shù)

        目前實(shí)現(xiàn)交互式動(dòng)態(tài)網(wǎng)頁(yè)顯示的技術(shù)有很多,從最初的CGI到現(xiàn)在的PHP、Java Applet、ASP和JSP等,它們作用各有利弊。

        1.1 Java Applet技術(shù)

        Java Applet技術(shù),是用Java語(yǔ)言編寫(xiě)的應(yīng)用程序,通過(guò)將嵌入在網(wǎng)頁(yè)中的Java小程序下載到客戶(hù)端直接操作。這種處理方式分散系統(tǒng)尤其是Web服務(wù)器的處理負(fù)擔(dān),提高了系統(tǒng)效率,增強(qiáng)了交互的實(shí)時(shí)性。但由于Applet要在瀏覽器端運(yùn)行,增加了本地開(kāi)銷(xiāo),不符合Web開(kāi)發(fā)中“瘦客戶(hù)”的要求。

        1.2 ASP(Active Server Pages)技術(shù)

        ASP技術(shù)是Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的集成技術(shù),是微軟公司推出的服務(wù)器腳本編寫(xiě)環(huán)境,結(jié)合HTML網(wǎng)頁(yè)、Script語(yǔ)言和ActiveX控件,與數(shù)據(jù)庫(kù)綁定,創(chuàng)建動(dòng)態(tài)、交互的服務(wù)器應(yīng)用程序[1]。ASP最大的優(yōu)點(diǎn)是所有的程序都在服務(wù)器端執(zhí)行,包括所有嵌在HTML網(wǎng)頁(yè)中的腳本程序,服務(wù)器僅將執(zhí)行的結(jié)果返回給客戶(hù),這樣就減輕了客戶(hù)端瀏覽器的負(fù)擔(dān),大大提高了交互的速度。但ASP的不足是它只能在Windows系列的環(huán)境下運(yùn)行。圖1為ASP的動(dòng)態(tài)顯示模型。

        圖1 基于ASP的動(dòng)態(tài)顯示模型

        1.3 JSP(Java Server Pages)技術(shù)

        JSP技術(shù)是基于Java Servlet以及整個(gè)Java體系的Web開(kāi)發(fā)技術(shù)[2]。可以用XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面,生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)tag和Java Beans組件中,與腳本程序綁定,然后將JSP編譯成Java Servlet在服務(wù)器端運(yùn)行來(lái)實(shí)現(xiàn)動(dòng)態(tài)顯示。JSP的優(yōu)點(diǎn)是所有腳本均在服務(wù)器端執(zhí)行,實(shí)現(xiàn)內(nèi)容的生成和顯示分離;可重用且跨平臺(tái)的組件JavaBeans或EJB;而且JSP的腳本在首次執(zhí)行時(shí)被編譯成為Servlet,并有Java虛擬機(jī)執(zhí)行,以后執(zhí)行都不需編譯,執(zhí)行效率高。但JSP只能通過(guò)JDBC或JDBC-ODBC橋接訪問(wèn)數(shù)據(jù)庫(kù),效率低。

        通過(guò)以上圖形顯示技術(shù)的對(duì)比,可以得出這幾種圖形顯示技術(shù)的比較結(jié)果,如表1所示。

        表1 幾種圖形顯示技術(shù)比較

        2 基于Internet的圖形顯示系統(tǒng)結(jié)構(gòu)

        通過(guò)以上圖形顯示技術(shù)的分析比較,采用ASP技術(shù),利用其ActiveX/DCOM組件技術(shù)支持,可以很好的實(shí)現(xiàn)電廠遠(yuǎn)程實(shí)時(shí)監(jiān)控圖形動(dòng)態(tài)顯示的要求。在B/S體系結(jié)構(gòu)的基礎(chǔ)上[3],我們?cè)O(shè)計(jì)了一種新型B/S模式的基于Internet的遠(yuǎn)程監(jiān)控圖形動(dòng)態(tài)顯系統(tǒng),如圖2所示。

        客戶(hù)通過(guò)瀏覽器登錄到Web服務(wù)器,Web服務(wù)器對(duì)用戶(hù)身份驗(yàn)證后,根據(jù)客戶(hù)權(quán)限把客戶(hù)可以瀏覽的網(wǎng)頁(yè)顯示在客戶(hù)端,并把網(wǎng)頁(yè)中嵌入的ActiveX控件下載并注冊(cè)到客戶(hù)端;嵌套的組件根據(jù)網(wǎng)頁(yè)參數(shù)設(shè)置通過(guò)代理機(jī)向應(yīng)用服務(wù)器提出數(shù)據(jù)請(qǐng)求,應(yīng)用服務(wù)器接受用戶(hù)請(qǐng)求,通過(guò)SQL等方式向數(shù)據(jù)庫(kù)服務(wù)器提出數(shù)據(jù)處理請(qǐng)求;數(shù)據(jù)庫(kù)接受應(yīng)用服務(wù)器的請(qǐng)求,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,并把實(shí)時(shí)數(shù)據(jù)或圖形結(jié)果提交客戶(hù)端。

        這種體系結(jié)構(gòu)的優(yōu)點(diǎn)在于:①充分發(fā)揮B/S 模式的優(yōu)勢(shì),保持瘦客戶(hù)端的優(yōu)點(diǎn);②將服務(wù)器劃分為Web服務(wù)器和應(yīng)用服務(wù)器兩部分。應(yīng)用服務(wù)器采用Active/DCOM組件技術(shù)實(shí)現(xiàn)B/S結(jié)構(gòu)中的應(yīng)用邏輯部分,解決了動(dòng)態(tài)顯示的實(shí)時(shí)性問(wèn)題,同時(shí)達(dá)到封裝源代碼、保護(hù)知識(shí)產(chǎn)權(quán)的目的;③通過(guò)代理機(jī)實(shí)現(xiàn)圖形數(shù)據(jù)的中轉(zhuǎn)傳輸,保障應(yīng)用服務(wù)器的安全性。代理機(jī)位于防火墻與應(yīng)用服務(wù)器之間,當(dāng)用戶(hù)請(qǐng)求數(shù)據(jù)時(shí),代理機(jī)接受請(qǐng)求,并休眠與外網(wǎng)連接線程,然后把請(qǐng)求傳給內(nèi)網(wǎng)應(yīng)用服務(wù)器;當(dāng)數(shù)據(jù)結(jié)果返回時(shí),關(guān)閉與內(nèi)網(wǎng)連接,啟動(dòng)傳輸線程,把數(shù)據(jù)結(jié)果傳給用戶(hù)。在傳輸過(guò)程中,電廠內(nèi)外網(wǎng)不直接通信,保障了電廠網(wǎng)絡(luò)系統(tǒng)的安全。

        3 圖形顯示自動(dòng)刷新技術(shù)

        在連續(xù)動(dòng)態(tài)顯示過(guò)程中, 當(dāng)屏幕由一個(gè)場(chǎng)景變化為另一個(gè)場(chǎng)景時(shí), 須首先將原先的背景擦除, 然后將新的圖形繪制到屏幕上, 但顯示背景不斷擦除以及繪制圖形所用時(shí)間較長(zhǎng), 導(dǎo)致屏幕出現(xiàn)不連續(xù)[4],即刷新閃爍現(xiàn)象。為此我們?cè)诖颂岢鰩追N解決途徑。

        3.1 Web網(wǎng)頁(yè)自動(dòng)刷新技術(shù)

        在Web網(wǎng)頁(yè)中自動(dòng)更新顯示,可在Web網(wǎng)頁(yè)設(shè)計(jì)中使用META語(yǔ)句來(lái)實(shí)現(xiàn)。META語(yǔ)句放置在HTML或ASP代碼的頭部,如網(wǎng)頁(yè)每隔5秒刷新一次,可以通過(guò)以下META語(yǔ)句來(lái)實(shí)現(xiàn):

        HEAD>META HTTP-EQUIV=“REFRESH” CONTENT=“5” URL=http://202.206.210.146/Trendshow1.ocx> /HEAD>

        刷新一次,整個(gè)文件重新執(zhí)行一次到數(shù)據(jù)庫(kù)的連接,把數(shù)據(jù)庫(kù)中相應(yīng)的圖形數(shù)據(jù)的變動(dòng)反映給客戶(hù)端。這種方法簡(jiǎn)單,適用于以只讀方式向客戶(hù)端提供數(shù)據(jù),其刷新頻率不宜過(guò)快,否則當(dāng)相應(yīng)的數(shù)據(jù)變化較快或比較多時(shí)可能出現(xiàn)屏幕顯示不連續(xù),即閃爍現(xiàn)象,不利于數(shù)據(jù)的監(jiān)測(cè)。因此,本方法適用于數(shù)據(jù)實(shí)時(shí)性不強(qiáng)或變化比較緩慢的條件下實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)顯示。

        3.2 基于Java程序的更新數(shù)據(jù)

        監(jiān)控電廠生產(chǎn)過(guò)程的相關(guān)數(shù)據(jù),要將實(shí)時(shí)數(shù)據(jù)和實(shí)時(shí)趨勢(shì)曲線顯示在監(jiān)控畫(huà)面上。可以采用Java Applet小程序直接與Web服務(wù)器相連獲取實(shí)時(shí)數(shù)據(jù)庫(kù)中實(shí)時(shí)數(shù)據(jù),然后利用Java程序自身的多線程和繪圖優(yōu)勢(shì)來(lái)實(shí)現(xiàn)圖形數(shù)據(jù)的自動(dòng)刷新。為了將背景畫(huà)面和與實(shí)時(shí)數(shù)據(jù)相關(guān)的圖形、數(shù)字區(qū)分開(kāi),通常采用雙緩存技術(shù)把背景畫(huà)面載入,在Java小程序的Paint()函數(shù)中編寫(xiě)與實(shí)時(shí)數(shù)據(jù)相關(guān)的圖形、數(shù)據(jù)的顯示代碼。在Java小程序的線程Run()函數(shù)中利用DAO等實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢(xún),Java小程序線程的休眠時(shí)間由Sleep()函數(shù)決定。每次線程運(yùn)行時(shí),對(duì)數(shù)據(jù)庫(kù)重新查詢(xún)得到新的數(shù)據(jù),并使得小程序重畫(huà),這樣就把動(dòng)態(tài)的圖形數(shù)據(jù)反映給客戶(hù)。Java小程序執(zhí)行速度快,刷新頻率較快,適合實(shí)時(shí)圖形數(shù)據(jù)的讀取和顯示。

        3.3 圖形畫(huà)面刷新無(wú)閃爍

        利用ActiveX組件技術(shù)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的圖形動(dòng)態(tài)顯示,可以徹底解決動(dòng)態(tài)顯示時(shí)自動(dòng)刷新出現(xiàn)的閃爍現(xiàn)象。一般來(lái)說(shuō),解決刷新閃爍現(xiàn)象的方法有兩個(gè)方面:一是避免反復(fù)設(shè)置背景監(jiān)控畫(huà)面和清屏;二是避免直接在屏幕上重畫(huà)。

        為此,采用雙緩沖技術(shù)來(lái)解決刷新閃爍,即利用ActiveX控件在客戶(hù)端建立內(nèi)存緩沖區(qū),把原來(lái)直接在屏幕上的繪圖操作全部改在緩沖區(qū)里繪制,最后再將緩存區(qū)中繪制好的圖形一次性畫(huà)到屏幕上。對(duì)于一般實(shí)時(shí)性不強(qiáng)的畫(huà)面,刷新周期設(shè)置低點(diǎn),可以解決刷新閃爍現(xiàn)象;對(duì)于實(shí)時(shí)性較強(qiáng)的圖形數(shù)據(jù),通過(guò)這種方法也基本能消除刷新閃爍。

        首先利用組態(tài)軟件把監(jiān)控背景畫(huà)面和各種圖元繪制好,存放在應(yīng)用服務(wù)器中;其次,通過(guò)ActiveX控件中的CDataPathProperty類(lèi)異步下載圖形元件,緩存到客戶(hù)端中,供控件調(diào)用。ActiveX控件中實(shí)現(xiàn)繪圖的部分代碼如下:

        {……

        //將位圖句柄調(diào)入緩沖區(qū)

        CBitmap*pOldBitmap=m_pdcMemory->SelectObject(m_pBitmap);

        m_pdcMemory-> SelectClipRgn(NULL);

        m_pdcMemory->IntersectClipRect(rectUpdate);

        ……

        //用位圖填充指定的圖形區(qū)域

        m_pdcMemory->PatBlt(rectUpdate.left,rectUpdate.top, rectUpdate.Width(), rectUpdate. Height(),PATCOPY);

        //將指向緩沖區(qū)的指針傳遞給繪圖函數(shù)

        OnDraw (m_pdcMemory);

        //將緩沖區(qū)中的繪好的圖形復(fù)制到屏幕上

        dc.BitBlt(rectUpdate.left,rectUpdate.top,rectUpdate.Width(),rectUpdate.Height(),m_pdcMemory,rectUpdate.left,rectUpdate.top,SRCCOPY); ……}

        4 應(yīng)用實(shí)例

        對(duì)于電廠遠(yuǎn)程監(jiān)控系統(tǒng),不僅要訪問(wèn)實(shí)時(shí)數(shù)據(jù)信息,而且還要將實(shí)時(shí)數(shù)據(jù)直觀地顯示在客戶(hù)端屏幕上。為此,我們采用Visio 2000來(lái)進(jìn)行畫(huà)面組態(tài),把組態(tài)的畫(huà)面供ActiveX控件調(diào)用,其中用Visual C++來(lái)設(shè)計(jì)ActiveX控件[5]

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

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

        其ASP網(wǎng)頁(yè)部分代碼如下:

        H2 align=center>#4機(jī)組運(yùn)行分析趨勢(shì)曲線/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ì)在本地注冊(cè)表中查詢(xún)?cè)揙CX的ClassID,如果本地沒(méi)有該的控件,或其版本不是最新時(shí),瀏覽器會(huì)自動(dòng)按照CodeBase指定的路徑從服務(wù)器下載控件并安裝注冊(cè)到本地機(jī)器上。客戶(hù)端用IE瀏覽時(shí),其安全級(jí)別設(shè)置為擁有合法代碼簽名的ActiveX控件下載。

        5 結(jié)論

        基于Internet的電廠遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng),采用B/S體系結(jié)構(gòu),利用ASP技術(shù)的ActiveX/DCOM組件支持,很好地實(shí)現(xiàn)了系統(tǒng)遠(yuǎn)程監(jiān)控和圖形數(shù)據(jù)的動(dòng)態(tài)顯示和自動(dòng)刷新。而且ActiveX技術(shù)對(duì)于實(shí)現(xiàn)業(yè)務(wù)邏輯封裝、提高軟件的可重用性和可維護(hù)性、開(kāi)發(fā)高效和安全的圖形顯示系統(tǒng)具有積極的意義,是現(xiàn)代電廠遠(yuǎn)程監(jiān)控技術(shù)的發(fā)展方向。

        參考文獻(xiàn):
        [1] 陳冠宇,熊偉.基于ASP的圖形動(dòng)態(tài)顯示技術(shù)[J].微機(jī)發(fā)展,2004.07,49-51.
        [2] 孫文波,盧建軍.基于Web的遠(yuǎn)程監(jiān)控技術(shù)及比較[J].西安科技大學(xué)學(xué)報(bào).2002.02.
        [3] 李玉奇,劉旺開(kāi).基于B/S結(jié)構(gòu)下分布式控制系統(tǒng)的實(shí)時(shí)監(jiān)控[J].微計(jì)算機(jī)信息,2004,20(2),53-55.
        [4] 周震,虞鶴松.工業(yè)監(jiān)控環(huán)境下Web頁(yè)面實(shí)時(shí)數(shù)據(jù)的自動(dòng)更新[J].計(jì)算機(jī)應(yīng)用.2001.11.
        [5] 宇鵬,王曉峰等.Visual C++實(shí)踐與提高-ActiveX篇[M].北京: 中國(guó)鐵道出版社.2001.



        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 从化市| 忻州市| 漯河市| 繁昌县| 巴彦县| 紫云| 张家界市| 饶阳县| 若尔盖县| 长治县| 宣化县| 平定县| 克拉玛依市| 厦门市| 金乡县| 耒阳市| 新泰市| 乐陵市| 河津市| 称多县| 应城市| 新蔡县| 曲阜市| 石景山区| 德格县| 鞍山市| 开远市| 肇州县| 遵义市| 肥乡县| 清丰县| 莫力| 阿城市| 平乐县| 泽库县| 舟山市| 扶沟县| 瑞昌市| 宁海县| 建平县| 白沙|