嵌入式遠程B/S模式監(jiān)控系統(tǒng)設計與研究
摘要:針對現有遠程監(jiān)控系統(tǒng)設計方案存在的不足,論文結合嵌入式 web技術和 Applet技術提出了一套通用的遠程 B/S模式監(jiān)控系統(tǒng)實施方案。首先,論文分析了系統(tǒng)的體系結構和工作流程;然后詳細介紹了嵌入式 web服務器層中的協(xié)議轉換和參數信息存儲模塊的具體實現方法;昀后闡述了嵌入式環(huán)境下利用 Java Applet技術開發(fā)遠程監(jiān)控網頁的優(yōu)勢,介紹了監(jiān)控網頁的具體實現過程和發(fā)布步驟。
引言
構建遠程監(jiān)控系統(tǒng)能夠有效地解決因監(jiān)控設備分散而引起的集中管理困難的問題。目前設計遠程監(jiān)控系統(tǒng)主要采取以下方案 [1-3]。
(1)將嵌入 TCP/IP協(xié)議的單片微處理器提升為具有采集、存儲、網絡通信等功能于一體的嵌入式 web服務器,然后在此基礎上開發(fā)遠程監(jiān)控系統(tǒng),這種方案具有涉及硬件少、開發(fā)成本低等優(yōu)點,但是開發(fā)過程復雜,后期功能擴展、升級困難。
(2)采用基于 PC機+網卡+采集卡的模式構建遠程監(jiān)控系統(tǒng),這種方法開發(fā)成本高、在遠距離、多點監(jiān)控系統(tǒng)中實現困難。
(3)將 PC機作為整個遠程控制系統(tǒng)中連接數據采集網絡和遠程監(jiān)控上層網絡的中間層,由它負責設備狀態(tài)參數的接收和網絡轉發(fā)。在此基礎上可構建 C/S或 B/S兩種模式的遠程控制系統(tǒng)。這種方案具有開發(fā)工具成熟、開發(fā)周期短等優(yōu)點,但是存在開發(fā)成本高,系統(tǒng)穩(wěn)定性和可靠性差等問題。另外采用 C/S模式,遠程監(jiān)控端一般通過 socket套接口方式和 PC主控制器通信。這種開發(fā)模式,每個遠程 PC機需要安裝特定終端監(jiān)控軟件,后期維護工作量較大。
(4)用嵌入式 web服務器替代第 3種方法中的 PC機,實現 B/S模式的遠程設備狀態(tài)監(jiān)控。這種方案具有開發(fā)成本低、后期維護升級方便、系統(tǒng)穩(wěn)定性、可靠性高等優(yōu)點,是現有遠程控制實現方案中較優(yōu)的一種。但目前針對這一方案開展的研究工作存在幾點不足:首先,給出的整體控制方案結合某一具體應用太緊密,沒有從共性點出發(fā)探討嵌入式遠程 B/S監(jiān)控系統(tǒng)的體系結構以及需解決的核心問題;其次,主要采用 CGI編程實現了參數信息在瀏覽器端的表格形式顯示,但在復雜工業(yè)現場監(jiān)控畫面展示、參數動態(tài)曲線顯示等方面明顯存在不足;昀后,對設備狀態(tài)參數的存儲也考慮較少。
本文針對以上問題,探討了基于嵌入式web和 Java Applet技術構建遠程 B/S監(jiān)控系統(tǒng)的通用設計框架,并對實現所涉及到的核心問題進行了介紹。
體系結構及工作流程
嵌入式遠程 B/S模式監(jiān)控系統(tǒng)劃分為三個層次:現場數據采集層、嵌入式 web服務器層和遠程參數監(jiān)控層?,F場數據采集層是整個遠程監(jiān)控系統(tǒng)的基礎,負責采集各種參數(如溫度、濕度、流量等),并通過不同總線將其傳給嵌入式 web服務器。遠程參數監(jiān)控層即遠程任意聯(lián)網的 PC機,它處于系統(tǒng)昀上層。嵌入式 web服務器位于現場數據采集層和遠程參數監(jiān)控層之間,是整個系統(tǒng)的核心節(jié)點。它一方面和底層的各種采集裝置通信,完成參數信息的接收、處理、存儲任務;另一方面與遠程客戶 PC機通信,并按照 TCP/IP協(xié)議格式與客戶端 Applet程序進行數據交互 [3]。具體的體系結構如圖 1所示。
該系統(tǒng)的工作流程:1)底層采集設備將各種參數按照不同的總線標準 (如 RS232/485總線)傳輸到嵌入式 web服務器。2)嵌入式 web服務器的參數接收模塊以輪詢方式定時接收和解析以不同現場總線傳送上來的參數信息,并根據系統(tǒng)需求調用存儲模塊加以存儲。3)用戶在瀏覽器訪問內嵌 Applet的監(jiān)控網頁。4)該 Applet從嵌入式服務器端下載到客戶瀏覽器端。5)瀏覽器端 Applet向參數轉發(fā)服務模塊發(fā)送數據訪問請求。6)參數轉發(fā)服務模塊根據用戶請求將參數信息反饋給瀏覽器端Applet。7)Applet基于獲取的參數信息進行動態(tài)監(jiān)控畫面的顯示。
關鍵技術
嵌入式 web服務器是整個遠程監(jiān)控系統(tǒng)的核心節(jié)點,限于篇幅本文只重點探討嵌入式web服務器層實現過程中涉及到的一些關鍵技術。
3.1 協(xié)議轉換
嵌入式 web服務器在整個遠程監(jiān)控系統(tǒng)中扮演協(xié)議轉換器的角色,它將不同的參數協(xié)議包格式統(tǒng)一轉換成 TCP/IP協(xié)議包格式,為在 WWW平臺上實現所有參數信息的統(tǒng)一呈現提供了可能。
本系統(tǒng)中協(xié)議轉換功能主要通過參數接收進程和參數轉發(fā)服務進程共同協(xié)助完成[4]。參數接收進程主要負責和底層采集設備建立連接。該進程首先讀取系統(tǒng)配置文件,并獲取各采集點的采集周期、傳輸協(xié)議格式等配置信息;然后根據配置信息創(chuàng)建多個線程分別接收、解析和處理底層各采集裝置上傳的參數協(xié)議包,昀后將參數信息寫入共享內存區(qū)域即可。參數信息的存儲則由存取進程具體完成。參數轉發(fā)服務進程作為以太網通信中的服務端,主要負責與上層監(jiān)控程序 Applet進行數據交互。該進程在特定端口*到遠程監(jiān)控客戶端的訪問請求后,首先創(chuàng)建專門的線程與之建立連接,然后各線程通過訪問共享內存區(qū)域或嵌入式數據庫獲取用戶所需的參數信息,并以 TCP/IP協(xié)議格式轉發(fā)給對應的遠程客戶端。這兩個進程同步、并行執(zhí)行,有效保證了系統(tǒng)的實時性要求。
3.2 環(huán)境參數信息的兩級存儲
嵌入式遠程監(jiān)控系統(tǒng)的參數存儲可采用以下幾種方案[5,6]:1)沿用傳統(tǒng)監(jiān)控系統(tǒng)存儲方案,增設一個工業(yè)級數據庫服務器來專門負責參數信息的存儲和管理。該方法雖然可以采用大型關系型數據庫方便地實現數據的海量存儲,但由于數據庫采用引擎驅動,嵌入式 web服務器和遠端數據庫服務器之間頻繁的數據交互會影響系統(tǒng)的實時響應能力;另外,如果信息采集點較多、采集周期短,緩慢而頻繁的遠程數據庫讀寫操作也會使實時數據因為寫失敗而丟失,影響系統(tǒng)的正常運行。2)以文件系統(tǒng)形式存儲參數信息,這種方式存儲效率低、安全性不高。3)采用嵌入式數據庫對數據進行存儲和管理。嵌入式數據庫體積小,能在資源受限的嵌入式環(huán)境使用;另外它是程序驅動式,用戶請求和數據服務在同一個進程內進行,避免了進程間通信造成的額外消耗。但是當數據采集層的采集頻率高時,嵌入式數據庫中的數據會急劇膨脹,如果不對數據做轉存處理,數據庫的存取性能將逐漸下降。
結合第1、3種方法,本文提出了參數信息兩級存儲方案。一級存儲實施策略:接收進程將采集裝置傳送的協(xié)議數據解析后首先存放到共享內存區(qū),然后在特定條件下(如共享內存區(qū)存儲容量達到閥值,存儲周期到等)啟動存儲進程,并由其將內存區(qū)中的數據批量存儲到嵌入式 web服務器的內部數據庫。一級存儲實施前,應該根據采集點數、采集周期、采集數據類型等信息大致估算常用信息的存儲容量,并在此基礎上適當擴展嵌入式系統(tǒng)存儲器,移植合適的嵌入式數據庫。另外,可考慮將參數信息按照采集地點或采集時間分別存儲在數據庫不同的參數信息表中,這樣可以減少因讀寫沖突引起的存取延遲,保證系統(tǒng)的實時響應能力。二級歸檔存儲實施策略:首先在歸檔條件符合的情況下,將需要歸檔的信息從嵌入式數據庫中導出到預定義的緩存區(qū)內;然后啟動歸檔進程并通過 FTP將數據上傳給遠程數據庫服務器。歸檔存儲的存儲模式有手動歸檔、定時歸檔、條件歸檔等。
3.3 動態(tài)監(jiān)控網頁開發(fā)技術
CGI技術是目前嵌入式環(huán)境下開發(fā)動態(tài) web的主要技術之一,通過 CGI編程能方便地實現瀏覽器與嵌入式 web服務器之間的動態(tài)數據交互。但是,它在數據的圖形化展示方面的能力不強,開發(fā)較為復雜的監(jiān)控頁面難度較大。
Java是具有穩(wěn)定、安全、跨平臺、可移植等諸多優(yōu)點的面向對象程序設計語言。Java程序分為兩類即Java Application和Java Applet,其中應用在www上的Java Applet程序為非獨立運行程序,要嵌入在web頁面并由客戶端Web瀏覽器內部的Java虛擬機解釋執(zhí)行 [7]。嵌入式開發(fā)環(huán)境下,建議使用Applet技術開發(fā)上層動態(tài)監(jiān)控頁面,該方法具有如下優(yōu)點:
1) Java提供的Swing(用戶界面組件)、多線程、事件處理機制等技術,能幫助開發(fā)人員方便、快捷地設計出具有交互性強、界面友好等特點的動態(tài)web頁面。
2)Java Applet只和web服務器進行數據交互,數據的圖形化展示則是在客戶端完成。與CGI在服務器端生成圖形文件,然后將圖形文件傳至客戶端瀏覽器這種方式相比,采用Java Applet可減輕服務器負擔,減少網絡流量。
3)Java語言具有平臺獨立性,而這一特性是實現跨平臺數據網絡發(fā)布所必須的。 Java Applet監(jiān)控程序主要完成兩個任務:1)與參數轉發(fā)服務進程進行動態(tài)數據交互;
2)利用Swing(用戶界面組件)、事件處理機制等技術進行動態(tài)數據的圖形化呈現。一般來說這兩個任務需要并行執(zhí)行,因此在實現過程中會采用Java線程技術將它們分別作為Applet線程同步執(zhí)行,并利用Java提供的內建機制解決兩個線程共同訪問共享資源時出現的相互沖突問題。另外為了防止控制界面動態(tài)刷新時出現閃爍現象,動態(tài)數據的圖形化顯示可采用“雙緩沖”技術,即先在內存中把待顯示的圖形繪制好,然后,一次性地將內存中的圖形覆蓋到屏幕顯示區(qū)。由于內存訪問的速度非???,人眼基本感覺不到,從而可克服屏幕閃爍現象[7]。
在嵌入式環(huán)境下,發(fā)布內嵌 Applet的動態(tài)監(jiān)控網頁可采取以下步驟:1)根據監(jiān)控需求在宿主機上開發(fā) Java Applet動態(tài)監(jiān)控程序;2)設計 HTML監(jiān)控頁面并通過<Applet></Applet>標簽對將 Applet程序嵌入其中;3)將 HTML網頁和Applet編譯后生成的字節(jié)碼文件一起下載到目標機(即本系統(tǒng)的嵌入式 web服務器)的虛擬目錄下;4)當用戶通過瀏覽器訪問該監(jiān)控網頁時,內嵌在該網頁的 Java Applet字節(jié)碼文件就會從嵌入式 web服務端下載到客戶端并由瀏覽器端的 Java虛擬機解釋執(zhí)行。
4 結束語
本文探討的遠程監(jiān)控系統(tǒng)以嵌入式 web服務器作為核心節(jié)點,將現場數據采集層上傳的多種總線協(xié)議數據格式轉換成 TCP/IP格式并在Internet上進行了統(tǒng)一呈現,實現了參數采集底層網絡與上層監(jiān)控網絡的無縫鏈接。
創(chuàng)新點:1)給出了一套通用、可行的遠程 B/S模式監(jiān)控系統(tǒng)實施方案,對相關工程技術人員結合自己實際的工程需求,開發(fā)特定領域的遠程監(jiān)控系統(tǒng)具有一定的指導和借鑒意義。
2)提出了在嵌入式環(huán)境下采用 Applet技術開發(fā)上層動態(tài)監(jiān)控頁面的新思路,較好地解決了監(jiān)控系統(tǒng)參數數據在瀏覽器端的實時刷新和動態(tài)圖形描繪問題。
lele





