摘要:本文設計并實現(xiàn)一種可以將基于TCP/IP協(xié)議的計算機網(wǎng)絡設備,與基于CAN總線協(xié)議的底層現(xiàn)場網(wǎng)絡連通的嵌入式Web服務器。 關鍵詞:嵌入式Web服務器 嵌入式Internet TCP/IP協(xié)議 CAN總線 引言 嵌入式系統(tǒng)指被嵌入到各種產(chǎn)品或工程應用中的,以微處理器或微控制器為核心的軟硬件系統(tǒng)。嵌入式系統(tǒng)與Internet技術相結合,形成的嵌入式Internet技術是近幾年隨著計算機網(wǎng)絡技術的普及而發(fā)展起來的一項新興技術。它通過現(xiàn)有嵌入式系統(tǒng),增加因特網(wǎng)接入能力來擴展其功能,創(chuàng)造性地提出以低價位單片機作為微處理器,使嵌入式設備而非PC系統(tǒng)直接接入Internet。在本文中,采用Ubicom公司的SX52單片機外接以太網(wǎng)控制芯片RTL8019AS實現(xiàn)嵌入式Web服務器硬件結構和軟件功能。傳統(tǒng)的基于DCS結構工控系統(tǒng)向嵌入式Web結構轉(zhuǎn)移,可有效降低成本,這是因為沒有必要開發(fā)專有的GUI,還可以方便最終用戶,并改善故障檢測和設備維護的遠程訪問能力。 通常嵌入式系統(tǒng)硬件包括微控制器、存儲器外設器件和I/O端口等,其核心是嵌入式微控制器。為適應上網(wǎng)需求,嵌入式微控制器不僅要能執(zhí)行傳統(tǒng)的控制功能,還要能執(zhí)行與連接因特網(wǎng)相關的功能,而Ubicom公司的SX52芯片能比較容易地實現(xiàn)TCP/IP協(xié)議,所以我們選擇它作為微控制器。 實現(xiàn)嵌入式設備接入Internet,從原則上來講最關鍵的就是要實現(xiàn)TCP/IP協(xié)議,還有一人關鍵的問題就是傳輸信息媒質(zhì)的選擇。我們采用最常用的連接模式,即通過以太網(wǎng)連接Internet,利用網(wǎng)絡接口控制器來實現(xiàn)數(shù)據(jù)鏈路層協(xié)議。嵌入式系統(tǒng)應用最廣泛的網(wǎng)絡驅(qū)動芯片就是NE2000兼容系列網(wǎng)絡芯片,它具有接口方便、驅(qū)動簡單、占用資源少等優(yōu)點,特別適合嵌入式系統(tǒng)。我們選用其中性能較了,供貨比較穩(wěn)定的RTL8019AS芯片。嵌入式Web服務器硬件結構框圖如圖1所示。 嵌入式Web服務器用SX52微控制器作為處理器,以太網(wǎng)驅(qū)動芯片RTL8019AS經(jīng)耦合隔離濾波器HR61101G和RJ45接口接入以太網(wǎng),配有RS232和CAN總線兩個擴展接口,可以將具有RS232接口的設備或采用CAN總線協(xié)議通信的設備連到以太網(wǎng)上。RS232接口采用MAX232CPE芯片,CAN總線控制器采用Philips公司的SJA1000芯片,CAN收發(fā)器則采用了Philips公司的PCA82C250。 數(shù)據(jù)的流向為:請求和控制信息從局域網(wǎng)中來,通過RJ45送到RTL8019AS,RTL8019AS負責將以太網(wǎng)幀的首部和尾部信息剝離,將處理后的數(shù)據(jù)包送入SX52的TCP/IP協(xié)議棧,由協(xié)議棧對數(shù)據(jù)報進行解析,得到原始的請求和控制信息。請求和控制信息再經(jīng)過SJA1000進行CAN協(xié)議格式的數(shù)據(jù)封裝,再和現(xiàn)場的CAN總線設備進行通信。請求和控制的回復領先局域網(wǎng)的過程與上面正好相反。圖2為Web服務器主要芯片連接電路簡圖。 SX52有5個I/O口,共40個引腳。在設計中,利用SX52的C口的RC0~RC7連接RTL8019AS的數(shù)據(jù)口SD0~SD7;SX52的B口兼顧選址和讀寫控制功能,在開發(fā)中用它與RTL8019AS的地址及讀寫控制引腳連接。在確保通信功能順利實現(xiàn)的同時,充分利用了SX52芯片I/O口靈活配置的特點,最大程序地節(jié)約了微控制器SX52的硬件資源。 RTL8019AS可以兼容8位和16位操作。圖2中IOCS16是16位I/O的選擇腳。當RTL8019AS上電復位的時候,如果這個腳為低電平,RTL8019AS將選擇8位模式;如果這個腳為高電平,RTL8019AS將選擇16位的模式。由于SX52是8位的數(shù)據(jù)總線,因此要用8位總線模式(每次讀入或?qū)懭?個字節(jié),只需8根數(shù)據(jù)線SD0~SD7),所以將這個腳接地。 RTL8019AS有3種工作方式:第一種為跳線方式,芯片的I/O和中斷由跳線決定;第二種即插即用方式,由軟件進行自動配置;第三種為免跳線方式,芯片的I/O和中斷由外接的93C46里的內(nèi)容決定。常用網(wǎng)卡上的RTL8019AS一般只支持第二種和第三種方式。在嵌入式應用的場合,為降低成本,同時又減少連線,不使用93C46。本設計中使用第一種方式,此時JP引腳接高電平。 AUI引腳決定使用AUI還是BNC接口。高電平時使用AUI接口,低電平時使用BNC接口,支持8線雙絞線或同軸電纜。本設計中采用雙絞線為通信介質(zhì),將該引腳接地。 RTL8019AS使用引腳TPIN+、TPIN-、TPOUT+和TPOUT-連接耦合隔離濾波器HR61101G,利用RJ45插頭實現(xiàn)與以太網(wǎng)的連接。 SJA1000是獨立的CAN通信控制器,支持CAN2.0B協(xié)議,其工作頻率為6~24MHz。它的AD0~AD7為地址數(shù)據(jù)復用線,與SX52的D口RD0~RD7相連。當遠端用戶通過Web服務器查詢現(xiàn)場的CAN總線數(shù)據(jù)時,SJA1000負責將現(xiàn)場控制單元的CAN總線數(shù)據(jù)解析,發(fā)送到SX52,再傳到網(wǎng)上。 PCA82C250是CAN協(xié)議控制和物理總線的接口,它對總線提供發(fā)送能力,并對CAN控制器提供接收能力,它支持1Mbps速度。為保證SX52與SJA1000協(xié)同工作,在硬件設計中們將兩個芯片共同一個硬件復位線,確保SX52與SJA1000硬件同步復位。 AT24C256是I2C總線的EEPROM,通??梢杂脕泶鎯τ脩舻囊恍┰O置,比如IP地址、網(wǎng)關等。在本設計用它存儲靜態(tài)網(wǎng)頁。SCL接SX52的RA4腳,SDA接SX52的RA5腳。 MAX232CPE完成232電平與TTL電平轉(zhuǎn)換,提供一個本地接口,為調(diào)試和維護提供方便。TXD接SX52的RA5腳。 MAX232CPE完成232電平與TTL電平轉(zhuǎn)換,提供一個本地接口,為調(diào)試和維護提供方便。TXD接SX52的RA2腳,RXD接SX52的RA3腳,RS-RXD和RS-TXD是RS232電平,為標準串口電平。數(shù)據(jù)可以從串口輸入到單片機SX52,SX52再把數(shù)據(jù)送到RTL8019AS傳出去。 2 嵌入式Web服務器軟件設計與實現(xiàn) 2.1 以太網(wǎng)接口驅(qū)動程序的實現(xiàn) 要將嵌入式Web服務器接入以太網(wǎng),就要對RTL8019AS進行編程,完成以太網(wǎng)幀的數(shù)據(jù)收發(fā),相當于實現(xiàn)PC機中網(wǎng)卡的驅(qū)動程序功能。以太網(wǎng)控制器驅(qū)動程序用于設置RTL8019AS的工作狀態(tài)和工作方式,分配收發(fā)數(shù)據(jù)的緩沖區(qū),通過對地址及數(shù)據(jù)口的讀寫來完成以太網(wǎng)幀的接收與發(fā)送。首先要對RTL8019AS進行復位,并將其設置為跳線模式;然后對RTL8019AS的工作參數(shù)進行設置,以使其開始工作;接下來就讀寫RTL8019AS的RAM以完成數(shù)據(jù)包的接收和發(fā)送。程序流程如圖3所示。 2.2 嵌入式Web服務器TCP/IP協(xié)議棧的實現(xiàn) TCP/IP協(xié)議棧是SX虛擬外設的一個重要實現(xiàn),是基于SX處理器的應用系統(tǒng)與Internet實現(xiàn)互聯(lián)的基礎。通過這些協(xié)議棧,可以更加方便地開發(fā)基于Internet的嵌入式應用系統(tǒng)。 以太網(wǎng)數(shù)據(jù)的傳輸是采用MAC地址來識別的,而ARP協(xié)議提供IP地址和數(shù)據(jù)鏈路層使用MAC地址之間的轉(zhuǎn)換功能。為了保證系統(tǒng)在太網(wǎng)的通信,首先要實現(xiàn)ARP協(xié)議。由于嵌入式Web服務器要能在Internet上通信,在網(wǎng)絡層一定要實現(xiàn)IP協(xié)議,還要實現(xiàn)能報告數(shù)據(jù)傳送差錯等情況的ICMP協(xié)議。在應用層,主要實現(xiàn)遠端主機通過瀏覽器的訪問控制方式,所以要實現(xiàn)HTTP協(xié)議;而HTTP協(xié)議是基于TCP協(xié)議實現(xiàn)傳輸?shù)模由蟃CP協(xié)議是面向可靠的數(shù)據(jù)流的傳輸,基于應用的需要對可靠性的要求,在傳輸層采用TCP協(xié)議,并對TCP協(xié)議進行了簡化處理,主要針對HTTP協(xié)議開發(fā)TCP協(xié)議。 圖4為TCP/IP協(xié)議棧主流程圖。系統(tǒng)初始化后,進入主程序循環(huán)部分。主程序循環(huán)包括兩大部分:對接收到的以太網(wǎng)數(shù)據(jù)幀進行解包和對欲發(fā)送的數(shù)據(jù)進行封裝并發(fā)送。對接收到的以太網(wǎng)數(shù)據(jù)幀進行解包,供應用程序使用;對欲發(fā)送的數(shù)據(jù)進行打包,將數(shù)據(jù)以以太網(wǎng)數(shù)據(jù)幀的格式發(fā)送出去,使采用TCP/IP協(xié)議的以太網(wǎng)內(nèi)所有計算機能收到此數(shù)據(jù)幀。 工業(yè)現(xiàn)場數(shù)據(jù)經(jīng)嵌入式Web服務器上傳到以太網(wǎng)才能被用戶利用,因此網(wǎng)絡用戶和Web服務器之間通信程序的開發(fā)也是本課題中很重要的一部分。課題中嵌入式Web服務器實現(xiàn)的功能主要是現(xiàn)場實時數(shù)據(jù)發(fā)布功能。實時數(shù)據(jù)包括溫度、設備運行狀態(tài)信息、通信狀態(tài)信息、時鐘信息等。嵌入式Web服務器將實時數(shù)據(jù)以網(wǎng)頁形式發(fā)布到Internet上,遠方客戶通過接入Internet瀏覽該服務器發(fā)布的工業(yè)現(xiàn)場實時信息。本設計采用Brower/Server(簡稱B/S)開發(fā)模式。用這種方式開發(fā)嵌入式Web服務器應用程序具有很多優(yōu)點。比如降低客戶端的要求,方便客戶端的分布使用,客戶端的開發(fā)和維護費用降低等。但是因為SX單片機的資源有限,在用單片機搭建的服務器上編程實現(xiàn)實時動態(tài)數(shù)據(jù)的瀏覽任務較重。在服務器端運行程序,速度也受到限制,加上網(wǎng)頁界面或程序結構的單方面調(diào)整都將導致整個系統(tǒng)全盤修改,系統(tǒng)的靈活性與可擴展性差。在設計中,如果僅僅采用B/S訪問方式,其功能是難以完全完成的。針對應用傳統(tǒng)B/S模式開發(fā)Web服務器應用軟件的弊端,提出了改進方案。 為克服傳B/S訪問模式的弊端,做了以下兩點改進。 ①采用套接字編程,實現(xiàn)部分服務器程序在客戶端運行,在客戶端瀏覽器實現(xiàn)動態(tài)網(wǎng)頁顯示實時數(shù)據(jù)。在改進方案中,實現(xiàn)動態(tài)數(shù)據(jù)的實時瀏覽采用了Java applet技術。 ②不再將HTML語言寫入匯編程序,在瀏覽器端解板成網(wǎng)頁,而是利用嵌入式Web服務器擴展的EEPROM24C256與SX52相連,用來存儲要瀏覽的Web文件。當瀏覽器與Web服務器交互時,利用HTTP協(xié)議通過統(tǒng)一資源定位器URL來確定Web服務器應該為瀏覽器提供哪些資源。 這種改進方案在訪問模式上還是通過瀏覽器訪問嵌入式Web服務器,在通信模式上卻利用了C/S(Client/Server)模式,其于套接字來編程,即所謂的B/S和C/S相結合模式。圖5為B/S和C/S結合模式的原理。 通過B/S方式訪問Web服務器上的靜態(tài)網(wǎng)頁,在個網(wǎng)頁中嵌有Java applet文件??蛻舳说腎E瀏覽器瀏覽這個網(wǎng)頁時,會把網(wǎng)頁中標識的Java applet源程序下載到客戶端執(zhí)行。在Java applet源程序中,創(chuàng)建了一個套接字來完成與服務器的通信(前提是在Web服務器上同時運行一個相應的服務器監(jiān)聽程序),主要是獲取實時數(shù)據(jù),用于在瀏覽器中顯示。事實上,Java applet中的Socket通信是一個典型的C/S訪問方式。 通過這種B/S和C/S相結合的訪問方式,能夠很好的實現(xiàn)實時數(shù)據(jù)的動態(tài)瀏覽。特別是這種實現(xiàn)方式秉承了B/S和C/S兩者的優(yōu)點,具有很大的靈活性。 以下是服務器與客戶端applet通信具體實現(xiàn)過程。 ①創(chuàng)建Socket。用tcbLocalPortMSB和tcbLocalPortLSB設置服務器監(jiān)聽端口號,具體設為8080;用myIP3~0設置服務器IP址,具體設為192.168.1.111。 ②將服務器設為Listen監(jiān)聽狀態(tài),等待接收客戶端連接。用TCP API函數(shù)建立被動連接代碼如下: TCPAppInit Bank TCB_BANK Mov tcbLocalPortLSB,#APPLET_PORT_LSB;設置TCP服務端口 Mov tcbLocalPortMSB,#APPLET_PORT_MSB Jmp @TCPAppPassiveOpen;跳轉(zhuǎn)到TCP被動連接程序,進行端口偵聽 _TCPAppPassiveOpen _bank TCP_BANK mov tcpState,#TCP_ST_LISTEN clr tcpUnAckMSB clr tcpUnAckLSB retp ③當TCP的狀態(tài)為established時,雙方連接建立,可以開始傳輸數(shù)據(jù)。此時產(chǎn)生新的套接字,用來管理遠端客戶機服務,原來的端口繼續(xù)用來監(jiān)聽。 ④數(shù)據(jù)傳輸包括數(shù)據(jù)接收和數(shù)據(jù)發(fā)送的兩問好。接收數(shù)據(jù)時,用TCPAppRxBytes()函數(shù)獲得接收到的數(shù)據(jù)字節(jié)數(shù),根據(jù)得到的字節(jié)數(shù)多次調(diào)用TCPAppRxData()函數(shù)接收數(shù)據(jù),在全部數(shù)據(jù)接收完畢后可以在TCPAppRxDone()函數(shù)中做相應的處理。發(fā)送數(shù)據(jù)時,首先調(diào)用函數(shù)TCPAppTxBHytes()設置要發(fā)送數(shù)據(jù)的字節(jié)數(shù),根據(jù)此字節(jié)數(shù)調(diào)用TCPAppTxData()函數(shù)發(fā)送數(shù)據(jù),全部數(shù)據(jù)發(fā)送完畢后調(diào)用TCPAppTxDone()函數(shù)確認。其中采集的動態(tài)數(shù)據(jù)保存在變量globTemp3中。 ⑤當TCP狀態(tài)為closed時,服務器關閉連接,不再發(fā)送和接收數(shù)據(jù)。程序具體實現(xiàn)時,設定客戶端和服務器端連接建立后,服務器端即向客戶端發(fā)送數(shù)據(jù)。 3 結論 本文所設計的嵌入式Web服務器,采用改進的Web應用程序開發(fā)模式,用Java applet實現(xiàn)客戶端程序,不用在客戶端應用程序,方便用戶使用;能取代傳統(tǒng)的工控機和接口卡,實現(xiàn)現(xiàn)場設備數(shù)據(jù)直接上網(wǎng),小巧輕便,成本低。 該Web服務器不僅可以廣泛應用于工業(yè)控制領域,實現(xiàn)小型工業(yè)監(jiān)測系統(tǒng)網(wǎng)絡化,還可以實現(xiàn)智能儀器、智能園區(qū)、環(huán)境工程、植物工廠、工業(yè)制冷等方面的應用。 |
- CAN總(6951)
- 務器設計(5592)
相關推薦
一種嵌入式Web服務器的設計方案

嵌入式WEB服務器常見的有哪些
嵌入式WEB服務器的相關資料分享
嵌入式Web服務器BOA怎么在ARM9上移植?
嵌入式Web服務器Embedthis Appweb 4.2.0相關資料下載
嵌入式Web服務器為什么不使用jetty
嵌入式Web服務器的設計與實現(xiàn)
嵌入式web服務器的設計資料,絕對實用
嵌入式FTP服務器能實現(xiàn)什么功能?
嵌入式linux部署boa服務器的相關資料分享
嵌入式在小型網(wǎng)絡視頻服務器中有什么應用?
Jetty可以作為一個嵌入式的Web服務器嗎
Jupiter處理器在嵌入式網(wǎng)關中有哪些應用?
S3C2440是如何去移植嵌入式Web服務器的
Tomcat服務器簡介
為什么要使用嵌入式服務器?
什么是Boa服務器
介紹嵌入式Web服務器的工作原理
關于FPGA的can總線嵌入式設計
在嵌入式設備中所使用的web服務器主要有哪些
基于嵌入式Web服務器的智能家居系統(tǒng)設計
基于ARM和Linux的嵌入式Web服務器的構建及應用
基于Android的嵌入式Web服務器該怎么設計?
基于H264的嵌入式視頻服務器的設計
基于Jupiter處理器的嵌入式網(wǎng)關平臺有什么功能?
基于Linux的WEB服務器增加了哪些功能?
基于ZigBee無線組網(wǎng)技術和嵌入式Web服務器
大佬都在看的嵌入式linux開發(fā)板web服務器Boa移植筆記
如何去構筑可現(xiàn)場控制的嵌入式Web服務器?
如何實現(xiàn)嵌入式Web服務器的設計?
如何實現(xiàn)對嵌入式WEB服務器系統(tǒng)的控制設計
如何移植web服務器呢
如何配置嵌入式服務器
實現(xiàn)嵌入式Web服務器設計的方法
尋找!嵌入式linux利用web端服務器升級
工業(yè)嵌入式移動應用與服務器應用的區(qū)別
常見的嵌入式web服務器有哪些
怎么實現(xiàn)基于嵌入式WEB的視頻服務器的設計?
移植Boa(web服務器)到嵌入式Linux系統(tǒng)
移植Boa(web服務器)到嵌入式Linux系統(tǒng)
請問一下遠程測控中嵌入式Web服務器的FPGA的實現(xiàn)方法
請問怎樣去設計一種嵌入式Web服務器系統(tǒng)?
采用嵌入式處理器PXA270與ARM-Linux相結合的Web服務器構建
采用GR47和MCU實現(xiàn)無線嵌入式Web Server
基于ARM的嵌入式uClinux系統(tǒng)設計與Web服務器應用的

基于ARMLinux新型嵌入式Web服務器設計

嵌入式Web 服務器的分析與研究

CAN 總線的嵌入式Web 服務器設計

嵌入式Web服務器Boa的移植及其應用

基于SOPC的嵌入式Web服務器設計與實現(xiàn)

嵌入式WEB服務器及遠程測控應用方案V0.1

嵌入式Web服務器的設計與研究

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


基于Linux的WEB服務器的設計與實現(xiàn)


嵌入式Web服務器的實現(xiàn)及其CGI應用

基于Android的嵌入式Web服務器設計

基于嵌入式系統(tǒng)的Web服務器建立設計


嵌入式Web服務器BOA移植與測試設計概述


基于ARM的嵌入式Web服務器的設計方案

學習Spring Boot 嵌入式服務器

嵌入式web服務器

嵌入式設備web服務器比較

嵌入式web服務器系統(tǒng)設計,嵌入式Web服務器的設計與實現(xiàn)

嵌入式web服務器系統(tǒng)設計,基于-ARM簡單嵌入式WEB服務器系統(tǒng)設計.doc

嵌入式web服務器系統(tǒng),嵌入式Web服務器的設計與實現(xiàn)

常見的嵌入式WEB服務器介紹

評論