《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 一種嵌入式WEB服務(wù)器的設(shè)計與實現(xiàn)

一種嵌入式WEB服務(wù)器的設(shè)計與實現(xiàn)

2008-07-30
作者:黃天戍 劉 洋

??? 摘 要: 介紹了一種嵌入式WEB服務(wù)器的設(shè)計與實現(xiàn),,實現(xiàn)了以太網(wǎng)與CAN總線網(wǎng)絡(luò)的直接互連,使用戶可以使用PC機通過Internet進行遠程訪問和控制Web服務(wù)器,, 從而能夠?qū)⒐I(yè)現(xiàn)場測控層監(jiān)測設(shè)備得到的數(shù)據(jù)方便快捷地送到異地的管理監(jiān)控層,。
??? 關(guān)鍵詞: WEB服務(wù)器? 以太網(wǎng)? CAN總線

?

??? 在企業(yè)自動化的工業(yè)現(xiàn)場,下層車間的監(jiān)測設(shè)備之間都是采用現(xiàn)場總線相互連接,,而企業(yè)的管理層和生產(chǎn)監(jiān)控層都是連于以太網(wǎng)的PC,,甚至是位于異地的連于互連網(wǎng)上的PC。為了使工業(yè)現(xiàn)場的現(xiàn)場總線上的設(shè)備和管理監(jiān)控層之間的PC能夠通信,,同時改善故障檢測和設(shè)備維護的遠程訪問能力,,筆者在CAN總線網(wǎng)與以太網(wǎng)的互連系統(tǒng)中設(shè)計了一個嵌入式WEB服務(wù)器。
1 嵌入式WEB服務(wù)器硬件設(shè)計
??? 通常嵌入式系統(tǒng)硬件包括微控制器" title="微控制器">微控制器,、存儲器及外設(shè)器件和I/O端口等,其核心是嵌入式微控制器,。為適應(yīng)上網(wǎng)需求,,嵌入式微控制器不僅要具有傳統(tǒng)的控制功能,還要具有與因特網(wǎng)連接的功能,。而Ubicom公司的SX52芯片能比較容易實現(xiàn)TCP/IP" title="TCP/IP">TCP/IP協(xié)議,,選擇它作為微控制器。關(guān)于傳輸媒質(zhì),,采用最常用的連接模式即通過以太網(wǎng)連接Internet,,利用網(wǎng)絡(luò)接口控制器RTL8019AS實現(xiàn)數(shù)據(jù)鏈路層協(xié)議。RTL8019AS采用臺灣Realtek公司生產(chǎn)的RTL8019AS芯片,。
??? 嵌入式WEB服務(wù)器硬件結(jié)構(gòu)框圖如圖1所示,。

?


??? 嵌入式WEB服務(wù)器用SX52微控制器作為處理器,以太網(wǎng)驅(qū)動芯片RTL8019AS經(jīng)耦合隔離濾波器HR61101G和RJ45接口接入以太網(wǎng),,配有RS232和CAN總線兩個擴展接口,,可以將具有RS232接口的設(shè)備或采用CAN總線協(xié)議通信的設(shè)備連到以太網(wǎng)上。RS232接口采用MAX232CPE芯片,,CAN總線控制器采用Philips公司的SJA1000芯片,,CAN收發(fā)器采用Philips公司的PCA82C250。
??? 數(shù)據(jù)的流向為:請求和控制信息從局域網(wǎng)中來,,通過RJ45送到RTL8019AS,,RTL8019AS負責(zé)將以太網(wǎng)幀的首部和尾部信息剝離,將處理后的數(shù)據(jù)包送入SX52的TCP/IP協(xié)議棧" title="協(xié)議棧">協(xié)議棧,,由協(xié)議棧對數(shù)據(jù)包進行解析,,得到原始的請求和控制信息,。請求和控制信息再經(jīng)過SJA1000進行CAN協(xié)議格式的數(shù)據(jù)封裝,再與現(xiàn)場的CAN總線設(shè)備進行通信,。請求和控制的回復(fù)信息到局域網(wǎng)的過程正好相反,。
??? 在嵌入式WEB服務(wù)器的硬件設(shè)計中,在確保通信功能順利實現(xiàn)的同時,,充分利用了SX52芯片I/O口靈活配置的特點,,最大程度地節(jié)約了微控制器SX52的硬件資源。
??? 圖2為WEB服務(wù)器主要芯片連接電路簡圖,,結(jié)合本圖詳細分析系統(tǒng)硬件設(shè)計,。

?


1.1 RTL8019AS驅(qū)動程序?qū)崿F(xiàn)
??? RTL8019AS是臺灣Realtek公司制造的一種高集成度的全雙工10Mbps以太網(wǎng)控制芯片,實現(xiàn)了基于Ethernet協(xié)議的MAC層的全部功能,,內(nèi)置16KB的SRAM,、雙DMA通道和FIFO完成數(shù)據(jù)包的接收和發(fā)送功能。在網(wǎng)關(guān)設(shè)計中,,使用跳線模式(JP置為高)來硬配置RTL8019AS為8位模式,;使用了RTL8019的低五位地址線A0~A4以及低8位數(shù)據(jù)線D0~D7。為滿足RTL8019AS的ISA時序,,RTL8019AS高端地址A5~A19須設(shè)置為0X300,。SX52的B口的B0~B4腳作為地址線連接RTL8019AS的低5位地址線,B5~B7作為控制線分別連接讀寫時序控制腳IORB,、IOWB,、IOCHRDY;C口作為數(shù)據(jù)線連接RTL8019AS的低8位數(shù)據(jù)線,;A口保留,,用作日后擴展。設(shè)計中采用AT24C64這樣一個8KB的 EEPROM來保存WEB服務(wù)器的配置信息,,如網(wǎng)關(guān)IP地址,、MAC地址和SJA1000的ID網(wǎng)絡(luò)標示符、網(wǎng)絡(luò)掩碼AMR和總線定時(BTR0,、BTR1)等,。這樣就能夠靈活方便地修改網(wǎng)關(guān)參數(shù),適應(yīng)不同環(huán)境,,同時也考慮到以后的擴展,。
??? 要實現(xiàn)嵌入式WEB服務(wù)器接入以太網(wǎng),就要對RTL8019AS進行編程,,完成以太網(wǎng)幀的數(shù)據(jù)收發(fā),,相當于實現(xiàn)PC機中網(wǎng)卡的驅(qū)動程序功能。首先要對RTL8019AS進行復(fù)位,,并將其設(shè)置為跳線模式,;然后對RTL8019AS的工作參數(shù)進行設(shè)置,,以使其開始工作;接下來讀寫RTL8019AS的RAM以完成數(shù)據(jù)包的接收和發(fā)送,。程序流程如圖3所示,。

?


1.2 TCP/IP協(xié)議棧的實現(xiàn)
??? 并不是所有的協(xié)議在嵌入式WEB服務(wù)器中都要實現(xiàn),應(yīng)根據(jù)項目要求有選擇地加以實現(xiàn),。以太網(wǎng)數(shù)據(jù)的傳輸采用MAC地址來識別,,而ARP協(xié)議提供IP地址和數(shù)據(jù)鏈路層使用的MAC地址之間的轉(zhuǎn)換功能,為了保證系統(tǒng)在以太網(wǎng)的通信,,首先要實現(xiàn)ARP協(xié)議,;由于嵌入式WEB服務(wù)器要能在Internet上通信,在網(wǎng)絡(luò)層一定要實現(xiàn)IP協(xié)議,,還要實現(xiàn)能報告數(shù)據(jù)傳送差錯等情況的ICMP協(xié)議,;在應(yīng)用層,主要實現(xiàn)遠端主機通過瀏覽器的訪問控制方式,,所以要實現(xiàn)HTTP協(xié)議,。而HTTP協(xié)議是基于TCP協(xié)議實現(xiàn)傳輸?shù)模由蟃CP協(xié)議是面向可靠的數(shù)據(jù)流的傳輸,,基于應(yīng)用的需要和對可靠性的要求,,在傳輸層采用TCP協(xié)議,并對TCP協(xié)議進行簡化處理,,主要針對HTTP協(xié)議開發(fā)TCP協(xié)議。
??? 由于嵌入式系統(tǒng)的資源有限,,因此將TCP/IP協(xié)議最大幅度精簡,,以提高程序的運行速度,減少在SX52存儲器中占用的空間,。TCP/IP協(xié)議棧主流程圖如圖4所示,。精簡協(xié)議主要遵循以下兩個原則:
??? (1)協(xié)議內(nèi)容精簡
??? 嵌入式WEB服務(wù)器的實現(xiàn)需要ARP、IP,、TCP,、ICMP等網(wǎng)絡(luò)協(xié)議的支持,每一個完整協(xié)議都很龐大,,在存儲容量并不大的SX52上全部實現(xiàn)是不現(xiàn)實的,。應(yīng)該在保證實現(xiàn)網(wǎng)絡(luò)通信基本功能的前提下盡可能地精簡協(xié)議,確定出協(xié)議的哪一部分是必需的,,哪一部分可以省略,,以滿足系統(tǒng)要求。
??? (2)協(xié)議接口層次明確
??? TCP/IP協(xié)議分布在鏈路層,、網(wǎng)絡(luò)層,、傳輸層和應(yīng)用層上,,是分層實現(xiàn)的,每一層只負責(zé)處理通信過程中的一部分問題,,其它層不能實現(xiàn)其功能,。采用模塊化的設(shè)計思路,如果需要修改哪個協(xié)議,,只需修改相應(yīng)模塊的功能,,其它模塊不用改動。協(xié)議分層簡化了程序的設(shè)計和調(diào)試,,每層的協(xié)議相互獨立,,使協(xié)議的開發(fā)更高效。在網(wǎng)絡(luò)系統(tǒng)中,,按照分層的思想,,從網(wǎng)絡(luò)最底層開始每一層都為高層提供服務(wù),明確層間接口對軟件開發(fā)十分重要,。

?


2 嵌入式WEB服務(wù)器應(yīng)用程序的實現(xiàn)
??? Brower/Server(簡稱B/S" title="B/S">B/S)模式已經(jīng)成為流行的開發(fā)模式,,課題中的嵌入式WEB服務(wù)器要實現(xiàn)的功能主要是現(xiàn)場實時數(shù)據(jù)發(fā)布功能。 B/S訪問模式是WEB Server和Browser之間的直接訪問,??蛻艉头?wù)器間的中間節(jié)點不對HTTP請求及響應(yīng)做任何操作,只需在客戶端" title="客戶端">客戶端采用如IE這樣的瀏覽器對服務(wù)器上的數(shù)據(jù)進行瀏覽,,不用開發(fā)客戶端程序,。采用B/S結(jié)構(gòu)具有如下優(yōu)勢:
??? ·具有分布性特點,可以隨時隨地進行業(yè)務(wù)處理,;
??? ·系統(tǒng)維護或升級只在服務(wù)器端,,對客戶端無須進行改動,只需要改變服務(wù)器端網(wǎng)頁,,即可實現(xiàn)所有用戶的同步更新,,易于維護和升級;
??? ·開發(fā)簡單,,共享性強,。
??? B/S訪問模式只需對服務(wù)器端程序進行開發(fā)。在服務(wù)器端形成動態(tài)網(wǎng)頁最常用的工具有ASP和JSP,。由于采用的嵌入式芯片SX52只有4KB存儲容量,,在SX52中既實現(xiàn)TCP/IP協(xié)議棧,又實現(xiàn)ASP和JSP的功能是很困難的,。所以可以采用字節(jié)傳輸方式針對SX52用匯編語言編程實現(xiàn)動態(tài)網(wǎng)頁,。
??? Java applet能夠被傳送到瀏覽器并且在瀏覽器所在的本地機上運行。本設(shè)計正是利用了這一特性改進了傳統(tǒng)的B/S模式設(shè)計出的應(yīng)用程序,,Java applet對于管理和處理動態(tài)數(shù)據(jù)也是一種行之有效的技術(shù),。Java applet能實時表示從輪詢得到的更新信息,,利用這個特性顯示實時數(shù)據(jù)。所以程序客戶端采用Java applet設(shè)計實現(xiàn),。
??? 嵌入式WEB服務(wù)器接入以太網(wǎng)時,,在程序中設(shè)置了自身的IP地址和MAC地址,可以與局域網(wǎng)上任一臺微機通信,。服務(wù)器端主要實現(xiàn)兩部分功能:利用HTTP協(xié)議實現(xiàn)網(wǎng)頁瀏覽功能和利用套接字編程實現(xiàn)與客戶端applet通信的功能,。服務(wù)器程序用SX52的匯編語言實現(xiàn)。
??? 在WEB服務(wù)器中實現(xiàn)HTTP協(xié)議才能實現(xiàn)網(wǎng)頁文件的瀏覽,。方案中將WEB服務(wù)器上擴展的EEPROM與SX52相連,,用來存儲要瀏覽的WEB文件,EEPROM里的WEB內(nèi)容采用原始數(shù)據(jù)的形式存儲,,沒有進行封裝和編碼,。文本內(nèi)容以ASCII碼形式存儲,圖像內(nèi)容以二進制數(shù)據(jù)形式存儲,。
參考文獻
1 王衛(wèi)兵. 計算機網(wǎng)絡(luò)接口技術(shù). 北京:機械工業(yè)出版社,,1995第一版
2 李 明.嵌入式互聯(lián)網(wǎng)絡(luò)接口的設(shè)計與開發(fā).工業(yè)控制計算機,2002,;15(8):P41
3 Radia Perlman著,, 高傳善譯. 網(wǎng)絡(luò)互連:網(wǎng)橋、路由器,、交換機和互連協(xié)議.北京:機械工業(yè)出版社,,2001
4 William Stalling著, 王 海,, 張 娟譯. 數(shù)據(jù)與計算機通信.北京:電子工業(yè)出版社,,2000.第六版

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。