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