摘要:為將Internet低廉地延伸到各種嵌入式系統(tǒng),實(shí)現(xiàn)基于Internet的遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程控制等,該文研究了將嵌入式系統(tǒng)與Web技術(shù)相結(jié)合,在無操作系統(tǒng)單片機(jī)環(huán)境下嵌入式Web服務(wù)器的開發(fā),詳細(xì)介紹了基于PIC18FXXX單片機(jī)以及ENC28J60以太網(wǎng)控制器的嵌入式Web服務(wù)器系統(tǒng)的設(shè)計(jì),包括其硬件構(gòu)成及軟件設(shè)計(jì)。
關(guān)鍵詞:嵌入式Web服務(wù)器;通用網(wǎng)關(guān)接口(CGI);單片機(jī);太網(wǎng)控制器
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)26-7551-02
二十一世紀(jì)無疑是一個信息時代。一方面,迅速發(fā)展的Web技術(shù)給Internet應(yīng)用提供了一個很好的發(fā)展方向。當(dāng)今的許多應(yīng)用都是基于Web技術(shù)的, 如電子商務(wù)、視頻會議、遠(yuǎn)程醫(yī)療診斷等。另一方面,嵌入式系統(tǒng)也己經(jīng)成熟起來并得到了最為廣泛的工業(yè)應(yīng)用。在一些工業(yè)和汽車應(yīng)用中,為了實(shí)現(xiàn)多個測控節(jié)點(diǎn)之間的信息交流,利用CAN(Controller Area Network)[1]、PROFIBUS、RS-485等總線將多個測控節(jié)點(diǎn)進(jìn)行組網(wǎng),但這種網(wǎng)絡(luò)的有效通信范圍比較有限,所能實(shí)現(xiàn)的功能也比較有限。
如果嵌入式系統(tǒng)能夠與Web技術(shù)結(jié)合起來[2],則可以方便、低廉地將Internet延伸到各種嵌入式系統(tǒng),并實(shí)現(xiàn)基于 Internet的遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程控制、自動報警等功能。也就是說,只要設(shè)備接入了Internet,我們就可以在世界上的任何地方十分方便地控制、操縱那些配備有微型Web 服務(wù)器的設(shè)備。
本文我們在對Web服務(wù)器技術(shù)、HTTP(HyperText Transfer Protocol)、CGI和ENC28J60以太網(wǎng)控制器進(jìn)行分析的基礎(chǔ)上,將TCP/IP[3]等網(wǎng)絡(luò)協(xié)議嵌入單片機(jī)系統(tǒng),使單片機(jī)系統(tǒng)能夠完成Web服務(wù)器的基本功能,并實(shí)現(xiàn)了系統(tǒng)的硬件及軟件設(shè)計(jì)[4]。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)采用PIC18F458單片機(jī)控制,由以太網(wǎng)接口電路、網(wǎng)頁存儲器電路、電源電路、復(fù)位電路、看門狗電路組成,另外還有用于現(xiàn)場測控的輔助電路:CAN接口電路、信號調(diào)理電路、模擬和開關(guān)量輸出電路等組成,由于PIC18F458單片機(jī)內(nèi)部包含有11位的A/D轉(zhuǎn)換以及CAN通訊模塊等功能模塊[5],所以大大簡化了電路的設(shè)計(jì)。嵌入式Web服務(wù)器以太網(wǎng)接口電路如圖1所示。
ENC28J60[6]是Microchip Technology(美國微芯科技公司)推出的28引腳獨(dú)立以太網(wǎng)控制器,符合IEEE 802.3,內(nèi)置10Mbps以太網(wǎng)物理層器件(PHY)及媒介接入控制器(MAC),可按業(yè)界標(biāo)準(zhǔn)的以太網(wǎng)協(xié)議可靠地收發(fā)信息包數(shù)。同時,內(nèi)部包含可編程8KB雙端口SRAM緩沖器,以高效的方式進(jìn)行信息包的存儲、檢索和修改,以減輕主控單片機(jī)的內(nèi)存負(fù)荷。
ENC28J60通過SPI(串行外圍芯片接口)與PIC18F458單片機(jī)進(jìn)行數(shù)據(jù)交換,簡化了電路的設(shè)計(jì)。
由于ENC28J60是一個工作電壓為3.3V 的器件。當(dāng)PIC18F458單片機(jī)(運(yùn)行電壓為5V)與ENC28J60連接時,一方面,由于ENC28J60的SPI接口的CS,SCK和SI輸入以及RESET引腳都可以承受5V的電壓,所以不需進(jìn)行任何處理就可連接。另一方面,由于ENC28J60 3.3V CMOS 輸出驅(qū)動單片機(jī)端口時,它很可能不符合規(guī)范要求,此時需要一個單向電平轉(zhuǎn)換器,才可接至PIC18F458單片機(jī)。
2 系統(tǒng)軟件設(shè)計(jì)
程序采用C18[7]和匯編語言混合編程,包括系統(tǒng)初始化、TCP/IP協(xié)議棧、TCP/IP協(xié)議棧管理、Web服務(wù)、CGI處理函數(shù)、系統(tǒng)功能處理(數(shù)據(jù)采集和控制、CAN通訊處理)等模塊程序。其中系統(tǒng)初始化程序主要完成PIC18FXXX單片機(jī)端口功能的初始化。系統(tǒng)工作流程如圖2所示。
2.1 TCP/IP協(xié)議棧
由于該嵌入式Web服務(wù)器硬件結(jié)構(gòu)簡單,硬件資源,特別是系統(tǒng)程序存儲空間容量有限,所以我們在該系統(tǒng)中采用了精簡TCP/IP協(xié)議棧[7]。系統(tǒng)在應(yīng)用層實(shí)現(xiàn)了HTTP協(xié)議(超文本傳輸協(xié)議),在傳輸層采用TCP協(xié)議,在網(wǎng)絡(luò)層實(shí)現(xiàn)IP協(xié)議,同時,還實(shí)現(xiàn)能報告數(shù)據(jù)傳送差錯等情況的ICMP協(xié)議。以太網(wǎng)數(shù)據(jù)的傳輸采用MAC地址來識別,而ARP協(xié)議提供IP地址和數(shù)據(jù)鏈路層使用的MAC地址之間的轉(zhuǎn)換功能,為了保證系統(tǒng)在以太網(wǎng)的通信,實(shí)現(xiàn)了ARP協(xié)議。
2.2 TCP/IP協(xié)議棧管理程序
由于TCP/IP協(xié)議分布在鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層上,是分層實(shí)現(xiàn)的,每一層只負(fù)責(zé)處理通信過程中的一部分問題,其它層不能實(shí)現(xiàn)其功能。我們進(jìn)行TCP/IP協(xié)議棧程序設(shè)計(jì)時,根據(jù)協(xié)議分層的思路采用模塊化的程序設(shè)計(jì)方法。為了在接收數(shù)據(jù)包后能根據(jù)數(shù)據(jù)包的類型(ICMP、TCP、UDP等)作出相應(yīng)的處理。我們設(shè)計(jì)了協(xié)議棧管理程序。當(dāng)接收到正確的以太網(wǎng)幀后,根據(jù)以太網(wǎng)幀的數(shù)據(jù)類型將接收的數(shù)據(jù)送至相應(yīng)的模塊程序進(jìn)一步處理。
2.3 Web服務(wù)程序
監(jiān)聽端口80來自遠(yuǎn)程測控端的請求,建立TCP連接。查詢與TCP連接相關(guān)聯(lián)的本地套接字,根據(jù)遠(yuǎn)程測控端的HTTP請求作出相應(yīng)的處理(讀取24LC256中的網(wǎng)頁數(shù)據(jù)、調(diào)用CGI處理函數(shù)),并將生成的網(wǎng)頁數(shù)據(jù)通過本地套接字發(fā)送至遠(yuǎn)程測控端。通訊完成后關(guān)閉套接字,斷開本次TCP連接。
2.4 CGI處理
本系統(tǒng)采用了CGI(公用網(wǎng)關(guān)接口) 來實(shí)現(xiàn)動態(tài)Web技術(shù)。Web服務(wù)器通過調(diào)用CGI程序?qū)崿F(xiàn)和瀏覽器的交互,也就是CGI程序接受瀏覽器發(fā)送給Web服務(wù)器的信息,進(jìn)行相應(yīng)處理,并將響應(yīng)結(jié)果回送給Web服務(wù)器及瀏覽器。
由于嵌入式Web服務(wù)器的一般應(yīng)用于專門的控制系統(tǒng),只需提供系統(tǒng)與用戶的簡單交互(用戶設(shè)定系統(tǒng)運(yùn)行參數(shù),系統(tǒng)將運(yùn)行的結(jié)果傳送至用戶端,進(jìn)行顯示,數(shù)據(jù)庫管理等操作),無需完全實(shí)現(xiàn)標(biāo)準(zhǔn)Web服務(wù)器提供的功能。因此,在本系統(tǒng)中CGI在Web服務(wù)器內(nèi)部作為函數(shù)處理,并通過兩個函數(shù)來完成CGI的相關(guān)工作。HTTPExecCmd 函數(shù)接受瀏覽器發(fā)送給WEB服務(wù)器的信息,并根據(jù)用戶發(fā)送的信息,調(diào)用相應(yīng)的函數(shù)進(jìn)行參數(shù)設(shè)置和控制執(zhí)行部件。HTTPGetVar 函數(shù)將現(xiàn)場采集的數(shù)據(jù)傳送到瀏覽器。當(dāng)網(wǎng)頁中存在變量需要用現(xiàn)場采集的數(shù)據(jù)代換時,Web服務(wù)程序則調(diào)用該函數(shù),用現(xiàn)場采集的數(shù)據(jù)替代網(wǎng)頁中的變量,從而將現(xiàn)場采集的數(shù)據(jù)傳送到遠(yuǎn)程測控端瀏覽器。
3 工程應(yīng)用
系統(tǒng)已應(yīng)用與多機(jī)房集中溫控,利用室內(nèi)與室外環(huán)境溫差降低室內(nèi)溫度,最大限度的達(dá)到節(jié)能的目的。圖3進(jìn)行系統(tǒng)運(yùn)行參數(shù)設(shè)置,圖4顯示現(xiàn)場溫度和各風(fēng)機(jī)和空調(diào)的運(yùn)行狀況,并進(jìn)行風(fēng)機(jī)和空調(diào)的遠(yuǎn)程手動控制。該系統(tǒng)經(jīng)現(xiàn)場安裝調(diào)試后投入運(yùn)行,使用效果良好,各項(xiàng)性能指標(biāo)均達(dá)到用戶要求。
4 結(jié)束語
利用PIC18FXXX單片機(jī)以及ENC28J60以太網(wǎng)控制器在不需要使用PC機(jī)的情況下接入互聯(lián)網(wǎng)。由于該系統(tǒng)可以滿足一般測控系統(tǒng)的要求,而且它的成本低、體積小,它可以作為一個模塊,直接嵌入到遠(yuǎn)程診斷/警報系統(tǒng)(家電、生產(chǎn)機(jī)械、POS終端、電源及服務(wù)器/網(wǎng)絡(luò))、保安(物業(yè)監(jiān)控、消防和安全系統(tǒng)、保安小鍵盤、門禁及指紋識別系統(tǒng))及遙感/傳動器(工業(yè)控制及自動化、燈光控制及室內(nèi)環(huán)境控制),這必將大大促進(jìn)以太網(wǎng)測控系統(tǒng)、信息家電等自動控制設(shè)備的發(fā)展。
參考文獻(xiàn):
[1] 李正軍.現(xiàn)場總線與工業(yè)以太網(wǎng)及其應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:人民郵電出版社,2006:270-371.
[2] 李農(nóng).因特網(wǎng)技術(shù)在嵌入式系統(tǒng)中的應(yīng)用[J].測控技術(shù),2000,19(4):15-16.
[3] Stevens W R.TCP/IP詳解 卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2000:81-230.
[4] 劉和平.PIC18FXXX單片機(jī)程序設(shè)計(jì)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2003:60-210.
[5] Microchip.PIC18FXX8 Data Sheet[Microchip Data Sheet][Z].2003:21-310.
[6] Microchip.ENC28J60 Data Sheet[Microchip Data Sheet][Z].2004:5-102.
[7] Microchip.MPLAB C18 C COMPILER LIBRARIES[Microchip Data Sheet][Z].2003:32-289.