以ARM7為核心的嵌入式工控網(wǎng)絡(luò)設(shè)計(jì)
3 嵌入式工控Web服務(wù)器的實(shí)現(xiàn)
3.1 嵌入式Web服務(wù)器的基本實(shí)現(xiàn)
嵌入式Web服務(wù)器可基于Socket套接字來(lái)開發(fā),它主要由初始化模塊、監(jiān)聽模塊、請(qǐng)求解析模塊、腳本引擎模塊、輸出模塊和命令模塊等組成,各模塊之間的關(guān)系如圖4所示。
μClinux下主要有三個(gè)Web服務(wù)器:httpd、thttpd和Boa。其中httpd是最簡(jiǎn)單的一個(gè)Web服務(wù)器,它的功能最弱,不支持認(rèn)證,不支持CGI。thttpd和Boa都支持認(rèn)證、CGI等。功能都比較齊全。其中boa是一個(gè)單任務(wù)的http服務(wù)器,源代碼開放,性能比較高,占用系統(tǒng)資源也比較少。boa服務(wù)器在接收到請(qǐng)求時(shí),不啟動(dòng)多個(gè)服務(wù)器進(jìn)程處理多個(gè)請(qǐng)求,而在一個(gè)進(jìn)程內(nèi)處理所有服務(wù)請(qǐng)求。為了實(shí)現(xiàn)動(dòng)態(tài)Web技術(shù),可選擇實(shí)現(xiàn)一個(gè)支持CGI的、非常適合于嵌入式系統(tǒng)的Boa WebServer。然后再通過(guò)CGI用C語(yǔ)言進(jìn)行編程,就可以實(shí)現(xiàn)動(dòng)態(tài)WEB。
3.2 boa Web Server的移置
boa是一個(gè)單任務(wù)的http服務(wù)器,源代碼開放、性能高。目前,μC1inux的代碼中已經(jīng)包含boa的源代碼。在μClinux下實(shí)現(xiàn)Boa時(shí),需要對(duì)Boa做一些配置和修改。boa服務(wù)器的核心文件主要有boa.conf和mime.types,本設(shè)計(jì)主要通過(guò)對(duì)boa.conf和mime.types文件進(jìn)行修改來(lái)實(shí)現(xiàn)。
3.3 編譯內(nèi)核
配置過(guò)程完成后,便可重新編譯內(nèi)核。編譯時(shí)先選中Boa選項(xiàng),并把編譯好的內(nèi)核下載到開發(fā)板,再啟動(dòng)μClinux,完成IP配置,啟動(dòng)BoaWeb Server,然后就可以通過(guò)IE訪問(wèn)你的網(wǎng)頁(yè)了。如果想啟動(dòng)μClinux時(shí)自動(dòng)啟動(dòng)Boa Web Server,則可修改rc文件,并進(jìn)入/μClinux-ams ung/ven-dors/Samsung/S3C44BOX目錄,再在運(yùn)行腳本rc中增加如下兩行:
“ifconfig eth0 192.168.1.10
boa-c/home/”
修改后,重新編譯內(nèi)核,再下載到目標(biāo)系統(tǒng)運(yùn)行。這樣,運(yùn)行μClinux后,不需要配置就可以直接通過(guò)IE來(lái)訪問(wèn)網(wǎng)頁(yè)了。
3.4 μClinux下的CGI監(jiān)控技術(shù)
通過(guò)CGI(通用網(wǎng)關(guān)接口)可為Web服務(wù)器提供一個(gè)執(zhí)行外部程序的通道,這種服務(wù)端技術(shù)可使瀏覽器和服務(wù)器之間具有交互性。CGI程序?qū)儆谕獠砍绦颍枰幾g成可執(zhí)行文件才能在服務(wù)端運(yùn)行。瀏覽器可將用戶輸入的數(shù)據(jù)送到Web服務(wù)器,Web服務(wù)器再將數(shù)據(jù)用STDIN送給CGI程序。在執(zhí)行CGI程序后,還會(huì)訪問(wèn)存儲(chǔ)數(shù)據(jù)的一些文檔,最后使用STDOUT輸出HTML形式的結(jié)構(gòu)文件,再經(jīng)Web服務(wù)器送回瀏覽器,即可顯示給用戶。
若CGI程序是本地程序,也需要編譯成可執(zhí)行文件,以便在被CGI調(diào)用時(shí)運(yùn)行。Web服務(wù)器將用戶數(shù)據(jù)傳輸給CGI程序,并重定向CGI程序的輸出到Web頁(yè),這樣,CGI程序在處理時(shí),再將數(shù)據(jù)封裝成HTML形式發(fā)送到輸出,從而在客戶端看到對(duì)應(yīng)的Web頁(yè)。
訪問(wèn)者可通過(guò)CGI程序遠(yuǎn)程控制數(shù)碼管(模擬工業(yè)現(xiàn)場(chǎng)的控制),并顯示相應(yīng)的數(shù)字。在CGI程序的編寫中,每個(gè)程序的大致框架都比較類同,其CGI程序流程如圖5所示,它主要是遵循HTTP協(xié)議的通訊。也包括對(duì)輸入輸出的讀寫和控制。
3.5 嵌入式工業(yè)監(jiān)控系統(tǒng)的應(yīng)用
基于Internet的遠(yuǎn)程監(jiān)控有代理方案和嵌入式方案兩種實(shí)現(xiàn)方案。兩種實(shí)現(xiàn)方案均采用三層B/S體系結(jié)構(gòu),即表示層、應(yīng)用邏輯層和數(shù)據(jù)層。三層B/S體系結(jié)構(gòu)可避免兩層體系結(jié)構(gòu)中客戶端程序單獨(dú)實(shí)現(xiàn)應(yīng)用邏輯而產(chǎn)生的冗余;應(yīng)用邏輯可在應(yīng)用邏輯層上而不是在客戶層上實(shí)現(xiàn)。由于表示層與應(yīng)用邏輯相分離,因而降低了網(wǎng)絡(luò)傳送的信息量,使系統(tǒng)具有更高的可伸縮性、可維護(hù)性和靈活性。本文討論的嵌入式方案的基本結(jié)構(gòu)如圖6所示。
4 結(jié)束語(yǔ)
本文推出的方案對(duì)每臺(tái)現(xiàn)場(chǎng)設(shè)備均配有微型嵌入式Web服務(wù)器,可負(fù)責(zé)對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)轉(zhuǎn)發(fā)以及與監(jiān)控主機(jī)進(jìn)行數(shù)據(jù)的交互。該方案的優(yōu)點(diǎn)是實(shí)時(shí)性強(qiáng)、可靠性高、現(xiàn)場(chǎng)設(shè)備的數(shù)量不受限制等。
評(píng)論