摘要:介紹了一種嵌入式WEB服務器的設計與實現,實現了以太網與CAN總線網絡的直接互連,使用戶可以使用PC機通過Internet進行遠程訪問和控制Web服務器,從而能夠將工業現場測控層監測設備得到的數據方便快捷地送到異地的管理監控層。
在企業自動化的工業現場,下層車間的監測設備之間都是采用現場總線相互連接,而企業的管理層和生產監控層都是連于以太網的PC,甚至是位于異地的連于互連網上的PC。為了使工業現場的現場總線上的設備和管理監控層之間的PC能夠通信,同時改善故障檢測和設備維護的遠程訪問能力,筆者在CAN總線網與以太網的互連系統中設計了一個嵌入式WEB服務器。
1 嵌入式WEB服務器硬件設計
通常嵌入式系統硬件包括微控制器、存儲器及外設器件和I/O端口等,其核心是嵌入式微控制器。為適應上網需求,嵌入式微控制器不僅要具有傳統的控制功能,還要具有與因特網連接的功能。而Ubicom公司的SX52芯片能比較容易實現TCP/IP協議,選擇它作為微控制器。關于傳輸媒質,采用最常用的連接模式即通過以太網連接Internet,利用網絡接口控制器RTL8019AS實現數據鏈路層協議。RTL8019AS采用***Realtek公司生產的RTL8019AS芯片。
嵌入式WEB服務器硬件結構框圖如圖1所示。
嵌入式WEB服務器用SX52微控制器作為處理器,以太網驅動芯片RTL8019AS經耦合隔離濾波器HR61101G和RJ45接口接入以太網,配有RS232和CAN總線兩個擴展接口,可以將具有RS232接口的設備或采用CAN總線協議通信的設備連到以太網上。RS232接口采用MAX232CPE芯片,CAN總線控制器采用Philips公司的SJAl000芯片,CAN收發器采用Philips公司的PCA82C250。
圖1
數據的流向為:請求和控制信息從局域網中來,通過nJ45送到RTL8019AS,RTL8019AS負責將以太網幀的首部和尾部信息剝離,將處理后的數據包送入SX52的TCP/IP協議棧,由協議棧對數據包進行解析,得到原始的請求和控制信息。請求和控制信息再經過SJAl000進行CAN協議格式的數據封裝,再與現場的CAN總線設備進行通信。請求和控制的回復信息到局域網的過程正好相反。
在嵌入式WEB服務器的硬件設計中,在確保通信功能順利實現的同時,充分利用了SX52芯片I/O口靈活配置的特點,最大程度地節約了微控制器SX52的硬件資源。
圖2為WEB服務器主要芯片連接電路簡圖,結合本圖詳細分析系統硬件設計。
1.1 RTL8019AS驅動程序實現
RTLS019AS是***Realtek公司制造的一種高集成度的全雙工10Mbps以太網控制芯片,實現了基于Ethernet協議的MAC層的全部功能,內置16KB的SRAM、雙DMA通道和FIFO完成數據包的接收和發送功能。在網關設計中,使用跳線模式(JP置為高)來硬配置RTLS019AS為8位模式;使用了RTL8019的低五位地址線A0~A4以及低8位數據線D0~D7。為滿足RTL8019AS的ISA時序,RTL8019AS高端地址A5~A19須設置為0X300。SX52的B口的B0~B4腳作為地址線連接RTL8019AS的低5位地址線,B5~B7作為控制線分別連接讀寫時序控制腳IORB、IOWB、IOCHRDY;C口作為數據線連接RTLS019AS的低8位數據線;A口保留,用作日后擴展。設計中采用AT24C64這樣一個8KB的EEPROM來保存WEB服務器的配置信息,如網關IP地址、MAC地址和SJAl000的ID網絡標示符、網絡掩碼AMR和總線定時(BTR0、BTR1)等。這樣就能夠靈活方便地修改網關參數,適應不同環境,同時也考慮到以后的擴展。
圖2
要實現嵌入式WEB服務器接入以太網,就要對RTL8019AS進行編程,完成以太網幀的數據收發,相當于實現PC機中網卡的驅動程序功能。首先要對RTL8019AS進行復位,并將其設置為跳線模式;然后對RTL8019AS的工作參數進行設置,以使其開始工作;接下來讀寫RTL8019AS的RAM以完成數據包的接收和發送。程序流程如圖3所示。
1.2 TCP/IP協議棧的實現
并不是所有的協議在嵌入式WEB服務器中都要實現,應根據項目要求有選擇地加以實現。以太網數據的傳輸采用MAC地址來識別,而ARP協議提供IP地址和數據鏈路層使用的MAC地址之間的轉換功能,為了保證系統在以太網的通信,首先要實現ARP協議;由于嵌入式WEB服務器要能在Internet上通信,在網絡層一定要實現IP協議,還要實現能報告數據傳送差錯等情況的ICMP協議;在應用層,主要實現遠端主機通過瀏覽器的訪問控制方式,所以要實現HTTP協議。而HTTP協議是基于TCP協議實現傳輸的,加上TCP協議是面向可靠的數據流的傳輸,基于應用的需要和對可靠性的要求,在傳輸層采用TCP協議,并對TCP協議進行簡化處理,主要針對HTTP協議開發TCP協議。
由于嵌入式系統的資源有限,因此將TCP/IP協議最大幅度精簡,以提高程序的運行速度,減少在SX52存儲器中占用的空間。TCP/IP協議棧主流程圖如圖4所示。
精簡協議主要遵循以下兩個原則:
(1)協議內容精簡
嵌入式WEB服務器的實現需要ARP、IP、TCP、ICMP等網絡協議的支持,每一個完整協議都很龐大,在存儲容量并不大的SX52上全部實現是不現實的。應該在保證實現網絡通信基本功能的前提下盡可能地精簡協議,確定出協議的哪一部分是必需的,哪一部分可以省略,以滿足系統要求。
(2)協議接口層次明確
TCP/IP協議分布在鏈路層、網絡層、傳輸層和應用層上,是分層實現的,每一層只負責處理通信過程中的一部分問題,其它層不能實現其功能。采用模塊化的設計思路,如果需要修改哪個協議,只需修改相應模塊的功能,其它模塊不用改動。協議分層簡化了程序的設計和調試,每層的協議相互獨立,使協議的開發更高效。在網絡系統中,按照分層的思想,從網絡最底層開始每一層都為高層提供服務,明確層間接口對軟件開發十分重要。
2 嵌入式WEB服務器應用程序的實現
Brower/Server(簡稱B/S)模式已經成為流行的開發模式,課題中的嵌入式WEB服務器要實現的功能主要是現場實時數據發布功能。B/S訪問模式是WEBServer和Browser之間的直接訪問。客戶和服務器間的中間節點不對HTTP請求及響應做任何操作,只需在客戶端采用如IE這樣的瀏覽器對服務器上的數據進行瀏覽,不用開發客戶端程序。采用B/S結構具有如下優勢:
·具有分布性特點,可以隨時隨地進行業務處理;
·系統維護或升級只在服務器端,對客戶端無須進行改動,只需要改變服務器端網頁,即可實現所有用戶的同步更新,易于維護和升級;
·開發簡單,共享性強。
圖4
B/S訪問模式只需對服務器端程序進行開發。在服務器端形成動態網頁最常用的工具有ASP和JSP。由于采用的嵌入式芯片SX52只有4KB存儲容量,在SX52中既實現TCP/IP協議棧,又實現ASP和JSP的功能是很困難的。所以可以采用字節傳輸方式針對SX52用匯編語言編程實現動態網頁。
Java applet能夠被傳送到瀏覽器并且在瀏覽器所在的本地機上運行。本設計正是利用了這一特性改進了傳統的B/S模式設計出的應用程序,Java applet對于管理和處理動態數據也是一種行之有效的技術。Java applet能實時表示從輪詢得到的更新信息,利用這個特性顯示實時數據。所以程序客戶端采用Java applet設計實現。
嵌入式WEB服務器接入以太網時,在程序中設置了自身的IP地址和MAC地址,可以與局域網上任一臺微機通信。服務器端主要實現兩部分功能:利用HTTP協議實現網頁瀏覽功能和利用套接字編程實現與客戶端applet通信的功能。服務器程序用SX52的匯編語言實現。
在WEB服務器中實現HTTP協議才能實現網頁文件的瀏覽。方案中將WEB服務器上擴展的EEPROM與SX52相連,用來存儲要瀏覽的WEB文件,EEPROM里的WEB內容采用原始數據的形式存儲,沒有進行封裝和編碼。文本內容以ASCⅡ碼形式存儲,圖像內容以二進制數據形式存儲。
相關推薦
一種嵌入式Web服務器的設計方案
![](https://skin.elecfans.com/images/2021-soft/eye.png)
實現嵌入式Web服務器設計的方法
嵌入式WEB服務器常見的有哪些
嵌入式WEB服務器的相關資料分享
嵌入式Web服務器BOA怎么在ARM9上移植?
嵌入式Web服務器Embedthis Appweb 4.2.0相關資料下載
嵌入式Web服務器為什么不使用jetty
嵌入式Web服務器的設計與實現
嵌入式web服務器的設計資料,絕對實用
嵌入式FTP服務器能實現什么功能?
Jetty可以作為一個嵌入式的Web服務器嗎
Jupiter處理器在嵌入式網關中有哪些應用?
S3C2440是如何去移植嵌入式Web服務器的
為什么要使用嵌入式服務器?
介紹嵌入式Web服務器的工作原理
在嵌入式設備中所使用的web服務器主要有哪些
在uIP協議棧實現基于AJAX和CGI的動態Web服務器
基于嵌入式Web服務器的智能家居系統設計
基于ARM和Linux的嵌入式Web服務器的構建及應用
基于Android的嵌入式Web服務器該怎么設計?
基于Jupiter處理器的嵌入式網關平臺有什么功能?
基于Linux的WEB服務器增加了哪些功能?
基于ZigBee無線組網技術和嵌入式Web服務器
如何實現嵌入式Web服務器的設計?
如何實現對嵌入式WEB服務器系統的控制設計
如何使用Apache FtpServer實現嵌入式FTP服務器
如何移植web服務器呢
如何配置嵌入式服務器
尋找!嵌入式linux利用web端服務器升級
常見的嵌入式web服務器有哪些
怎樣去設計一種基于Linux的嵌入式網絡攝像機呢
移植Boa(web服務器)到嵌入式Linux系統
移植Boa(web服務器)到嵌入式Linux系統
請問一下遠程測控中嵌入式Web服務器的FPGA的實現方法
請問怎樣去設計一種嵌入式Web服務器系統?
采用嵌入式處理器PXA270與ARM-Linux相結合的Web服務器構建
采用GR47和MCU實現無線嵌入式Web Server
基于ARMLinux新型嵌入式Web服務器設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
嵌入式Web 服務器的分析與研究
![](https://skin.elecfans.com/images/2021-soft/load.png)
CAN 總線的嵌入式Web 服務器設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
嵌入式WEB服務器中TCP/IP協議棧的設計與實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于ARM的嵌入式Web服務器的研究與實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于SOPC的嵌入式Web服務器設計與實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
嵌入式Web服務器的設計與研究
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于Linux的WEB服務器的設計與實現
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A5/4B/wKgZomUMN8WAEMMYAAA95og0_3U960.jpg)
嵌入式Web服務器的實現及其CGI應用
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于Android的嵌入式Web服務器設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
嵌入式Web服務器BOA移植與測試設計概述
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/AC/19/pIYBAF273eyAes1SAABph6lkNqM392.png)
嵌入式web服務器
![](https://skin.elecfans.com/images/2021-soft/load.png)
嵌入式web服務器系統設計,嵌入式Web服務器的設計與實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
嵌入式web服務器系統設計,基于-ARM簡單嵌入式WEB服務器系統設計.doc
![](https://skin.elecfans.com/images/2021-soft/load.png)
嵌入式web服務器系統,嵌入式Web服務器的設計與實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
評論