當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]CAN總線的嵌入式Web服務(wù)器設(shè)計

摘要:本文設(shè)計并實現(xiàn)一種可以將基于TCP/IP協(xié)議的計算機網(wǎng)絡(luò)設(shè)備,與基于CAN總線協(xié)議的底層現(xiàn)場網(wǎng)絡(luò)連通的嵌入式Web服務(wù)器。

    關(guān)鍵詞:嵌入式Web服務(wù)器 嵌入式Internet TCP/IP協(xié)議 CAN總線

引言

嵌入式系統(tǒng)指被嵌入到各種產(chǎn)品或工程應(yīng)用中的,以微處理器或微控制器為核心的軟硬件系統(tǒng)。嵌入式系統(tǒng)與Internet技術(shù)相結(jié)合,形成的嵌入式Internet技術(shù)是近幾年隨著計算機網(wǎng)絡(luò)技術(shù)的普及而發(fā)展起來的一項新興技術(shù)。它通過現(xiàn)有嵌入式系統(tǒng),增加因特網(wǎng)接入能力來擴展其功能,創(chuàng)造性地提出以低價位單片機作為微處理器,使嵌入式設(shè)備而非PC系統(tǒng)直接接入Internet。在本文中,采用Ubicom公司的SX52單片機外接以太網(wǎng)控制芯片RTL8019AS實現(xiàn)嵌入式Web服務(wù)器硬件結(jié)構(gòu)和軟件功能。傳統(tǒng)的基于DCS結(jié)構(gòu)工控系統(tǒng)向嵌入式Web結(jié)構(gòu)轉(zhuǎn)移,可有效降低成本,這是因為沒有必要開發(fā)專有的GUI,還可以方便最終用戶,并改善故障檢測和設(shè)備維護的遠程訪問能力。

圖1

1 嵌入式Web服務(wù)器硬件設(shè)計與實現(xiàn)

通常嵌入式系統(tǒng)硬件包括微控制器、存儲器外設(shè)器件和I/O端口等,其核心是嵌入式微控制器。為適應(yīng)上網(wǎng)需求,嵌入式微控制器不僅要能執(zhí)行傳統(tǒng)的控制功能,還要能執(zhí)行與連接因特網(wǎng)相關(guān)的功能,而Ubicom公司的SX52芯片能比較容易地實現(xiàn)TCP/IP協(xié)議,所以我們選擇它作為微控制器。

實現(xiàn)嵌入式設(shè)備接入Internet,從原則上來講最關(guān)鍵的就是要實現(xiàn)TCP/IP協(xié)議,還有一人關(guān)鍵的問題就是傳輸信息媒質(zhì)的選擇。我們采用最常用的連接模式,即通過以太網(wǎng)連接Internet,利用網(wǎng)絡(luò)接口控制器來實現(xiàn)數(shù)據(jù)鏈路層協(xié)議。嵌入式系統(tǒng)應(yīng)用最廣泛的網(wǎng)絡(luò)驅(qū)動芯片就是NE2000兼容系列網(wǎng)絡(luò)芯片,它具有接口方便、驅(qū)動簡單、占用資源少等優(yōu)點,特別適合嵌入式系統(tǒng)。我們選用其中性能較了,供貨比較穩(wě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負責將以太網(wǎng)幀的首部和尾部信息剝離,將處理后的數(shù)據(jù)包送入SX52的TCP/IP協(xié)議棧,由協(xié)議棧對數(shù)據(jù)報進行解析,得到原始的請求和控制信息。請求和控制信息再經(jīng)過SJA1000進行CAN協(xié)議格式的數(shù)據(jù)封裝,再和現(xiàn)場的CAN總線設(shè)備進行通信。請求和控制的回復(fù)領(lǐng)先局域網(wǎng)的過程與上面正好相反。圖2為Web服務(wù)器主要芯片連接電路簡圖。

SX52有5個I/O口,共40個引腳。在設(shè)計中,利用SX52的C口的RC0~RC7連接RTL8019AS的數(shù)據(jù)口SD0~SD7;SX52的B口兼顧選址和讀寫控制功能,在開發(fā)中用它與RTL8019AS的地址及讀寫控制引腳連接。在確保通信功能順利實現(xiàn)的同時,充分利用了SX52芯片I/O口靈活配置的特點,最大程序地節(jié)約了微控制器SX52的硬件資源。

圖2

    RTL8019AS基地址選擇引腳IOS0~IOS3接地,此時I/O基地址為300H,即0011 00000 000,所以地址線SA9、SA8接+5V。因為寄存器地址偏移量為00H~1FH共32個,對應(yīng)地址從300H到31FH,所以只需將地址線SA0~SA4接SX52的RB0~RB4,其余地址線接地即可。芯片IORB、IOWB引腳為讀寫信號線,接SX52的RB6、RB5讀寫控制引腳。

RTL8019AS可以兼容8位和16位操作。圖2中IOCS16是16位I/O的選擇腳。當RTL8019AS上電復(fù)位的時候,如果這個腳為低電平,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一般只支持第二種和第三種方式。在嵌入式應(yīng)用的場合,為降低成本,同時又減少連線,不使用93C46。本設(shè)計中使用第一種方式,此時JP引腳接高電平。

AUI引腳決定使用AUI還是BNC接口。高電平時使用AUI接口,低電平時使用BNC接口,支持8線雙絞線或同軸電纜。本設(shè)計中采用雙絞線為通信介質(zhì),將該引腳接地。

RTL8019AS使用引腳TPIN+、TPIN-、TPOUT+和TPOUT-連接耦合隔離濾波器HR61101G,利用RJ45插頭實現(xiàn)與以太網(wǎng)的連接。

SJA1000是獨立的CAN通信控制器,支持CAN2.0B協(xié)議,其工作頻率為6~24MHz。它的AD0~AD7為地址數(shù)據(jù)復(fù)用線,與SX52的D口RD0~RD7相連。當遠端用戶通過Web服務(wù)器查詢現(xiàn)場的CAN總線數(shù)據(jù)時,SJA1000負責將現(xiàn)場控制單元的CAN總線數(shù)據(jù)解析,發(fā)送到SX52,再傳到網(wǎng)上。

PCA82C250是CAN協(xié)議控制和物理總線的接口,它對總線提供發(fā)送能力,并對CAN控制器提供接收能力,它支持1Mbps速度。為保證SX52與SJA1000協(xié)同工作,在硬件設(shè)計中們將兩個芯片共同一個硬件復(fù)位線,確保SX52與SJA1000硬件同步復(fù)位。

AT24C256是I2C總線的EEPROM,通常可以用來存儲用戶的一些設(shè)置,比如IP地址、網(wǎng)關(guān)等。在本設(shè)計用它存儲靜態(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服務(wù)器軟件設(shè)計與實現(xiàn)

2.1 以太網(wǎng)接口驅(qū)動程序的實現(xiàn)

要將嵌入式Web服務(wù)器接入以太網(wǎng),就要對RTL8019AS進行編程,完成以太網(wǎng)幀的數(shù)據(jù)收發(fā),相當于實現(xiàn)PC機中網(wǎng)卡的驅(qū)動程序功能。以太網(wǎng)控制器驅(qū)動程序用于設(shè)置RTL8019AS的工作狀態(tài)和工作方式,分配收發(fā)數(shù)據(jù)的緩沖區(qū),通過對地址及數(shù)據(jù)口的讀寫來完成以太網(wǎng)幀的接收與發(fā)送。首先要對RTL8019AS進行復(fù)位,并將其設(shè)置為跳線模式;然后對RTL8019AS的工作參數(shù)進行設(shè)置,以使其開始工作;接下來就讀寫RTL8019AS的RAM以完成數(shù)據(jù)包的接收和發(fā)送。程序流程如圖3所示。

2.2 嵌入式Web服務(wù)器TCP/IP協(xié)議棧的實現(xiàn)

TCP/IP協(xié)議棧是SX虛擬外設(shè)的一個重要實現(xiàn),是基于SX處理器的應(yīng)用系統(tǒng)與Internet實現(xiàn)互聯(lián)的基礎(chǔ)。通過這些協(xié)議棧,可以更加方便地開發(fā)基于Internet的嵌入式應(yīng)用系統(tǒng)。

以太網(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ù)?,加上TCP協(xié)議是面向可靠的數(shù)據(jù)流的傳輸,基于應(yīng)用的需要對可靠性的要求,在傳輸層采用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ù)幀進行解包,供應(yīng)用程序使用;對欲發(fā)送的數(shù)據(jù)進行打包,將數(shù)據(jù)以以太網(wǎng)數(shù)據(jù)幀的格式發(fā)送出去,使采用TCP/IP協(xié)議的以太網(wǎng)內(nèi)所有計算機能收到此數(shù)據(jù)幀。

圖4

    2.3 嵌入式Web服務(wù)器應(yīng)用程序的實現(xiàn)

工業(yè)現(xiàn)場數(shù)據(jù)經(jīng)嵌入式Web服務(wù)器上傳到以太網(wǎng)才能被用戶利用,因此網(wǎng)絡(luò)用戶和Web服務(wù)器之間通信程序的開發(fā)也是本課題中很重要的一部分。課題中嵌入式Web服務(wù)器實現(xiàn)的功能主要是現(xiàn)場實時數(shù)據(jù)發(fā)布功能。實時數(shù)據(jù)包括溫度、設(shè)備運行狀態(tài)信息、通信狀態(tài)信息、時鐘信息等。嵌入式Web服務(wù)器將實時數(shù)據(jù)以網(wǎng)頁形式發(fā)布到Internet上,遠方客戶通過接入Internet瀏覽該服務(wù)器發(fā)布的工業(yè)現(xiàn)場實時信息。本設(shè)計采用Brower/Server(簡稱B/S)開發(fā)模式。用這種方式開發(fā)嵌入式Web服務(wù)器應(yīng)用程序具有很多優(yōu)點。比如降低客戶端的要求,方便客戶端的分布使用,客戶端的開發(fā)和維護費用降低等。但是因為SX單片機的資源有限,在用單片機搭建的服務(wù)器上編程實現(xiàn)實時動態(tài)數(shù)據(jù)的瀏覽任務(wù)較重。在服務(wù)器端運行程序,速度也受到限制,加上網(wǎng)頁界面或程序結(jié)構(gòu)的單方面調(diào)整都將導(dǎo)致整個系統(tǒng)全盤修改,系統(tǒng)的靈活性與可擴展性差。在設(shè)計中,如果僅僅采用B/S訪問方式,其功能是難以完全完成的。針對應(yīng)用傳統(tǒng)B/S模式開發(fā)Web服務(wù)器應(yīng)用軟件的弊端,提出了改進方案。

為克服傳B/S訪問模式的弊端,做了以下兩點改進。

①采用套接字編程,實現(xiàn)部分服務(wù)器程序在客戶端運行,在客戶端瀏覽器實現(xiàn)動態(tài)網(wǎng)頁顯示實時數(shù)據(jù)。在改進方案中,實現(xiàn)動態(tài)數(shù)據(jù)的實時瀏覽采用了Java applet技術(shù)。

②不再將HTML語言寫入?yún)R編程序,在瀏覽器端解板成網(wǎng)頁,而是利用嵌入式Web服務(wù)器擴展的EEPROM24C256與SX52相連,用來存儲要瀏覽的Web文件。當瀏覽器與Web服務(wù)器交互時,利用HTTP協(xié)議通過統(tǒng)一資源定位器URL來確定Web服務(wù)器應(yīng)該為瀏覽器提供哪些資源。

這種改進方案在訪問模式上還是通過瀏覽器訪問嵌入式Web服務(wù)器,在通信模式上卻利用了C/S(Client/Server)模式,其于套接字來編程,即所謂的B/S和C/S相結(jié)合模式。圖5為B/S和C/S結(jié)合模式的原理。

通過B/S方式訪問Web服務(wù)器上的靜態(tài)網(wǎng)頁,在個網(wǎng)頁中嵌有Java applet文件。客戶端的IE瀏覽器瀏覽這個網(wǎng)頁時,會把網(wǎng)頁中標識的Java applet源程序下載到客戶端執(zhí)行。在Java applet源程序中,創(chuàng)建了一個套接字來完成與服務(wù)器的通信(前提是在Web服務(wù)器上同時運行一個相應(yīng)的服務(wù)器監(jiān)聽程序),主要是獲取實時數(shù)據(jù),用于在瀏覽器中顯示。事實上,Java applet中的Socket通信是一個典型的C/S訪問方式。

通過這種B/S和C/S相結(jié)合的訪問方式,能夠很好的實現(xiàn)實時數(shù)據(jù)的動態(tài)瀏覽。特別是這種實現(xiàn)方式秉承了B/S和C/S兩者的優(yōu)點,具有很大的靈活性。

以下是服務(wù)器與客戶端applet通信具體實現(xiàn)過程。

①創(chuàng)建Socket。用tcbLocalPortMSB和tcbLocalPortLSB設(shè)置服務(wù)器監(jiān)聽端口號,具體設(shè)為8080;用myIP3~0設(shè)置服務(wù)器IP址,具體設(shè)為192.168.1.111。

②將服務(wù)器設(shè)為Listen監(jiān)聽狀態(tài),等待接收客戶端連接。用TCP API函數(shù)建立被動連接代碼如下:

TCPAppInit

Bank TCB_BANK

Mov tcbLocalPortLSB,#APPLET_PORT_LSB;設(shè)置TCP服務(wù)端口

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)生新的套接字,用來管理遠端客戶機服務(wù),原來的端口繼續(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ù)中做相應(yīng)的處理。發(fā)送數(shù)據(jù)時,首先調(diào)用函數(shù)TCPAppTxBHytes()設(shè)置要發(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時,服務(wù)器關(guān)閉連接,不再發(fā)送和接收數(shù)據(jù)。程序具體實現(xiàn)時,設(shè)定客戶端和服務(wù)器端連接建立后,服務(wù)器端即向客戶端發(fā)送數(shù)據(jù)。

3 結(jié)論

本文所設(shè)計的嵌入式Web服務(wù)器,采用改進的Web應(yīng)用程序開發(fā)模式,用Java applet實現(xiàn)客戶端程序,不用在客戶端應(yīng)用程序,方便用戶使用;能取代傳統(tǒng)的工控機和接口卡,實現(xiàn)現(xiàn)場設(shè)備數(shù)據(jù)直接上網(wǎng),小巧輕便,成本低。

該Web服務(wù)器不僅可以廣泛應(yīng)用于工業(yè)控制領(lǐng)域,實現(xiàn)小型工業(yè)監(jiān)測系統(tǒng)網(wǎng)絡(luò)化,還可以實現(xiàn)智能儀器、智能園區(qū)、環(huán)境工程、植物工廠、工業(yè)制冷等方面的應(yīng)用。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉