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