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