摘要:介紹了一種嵌入式WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn),實(shí)現(xiàn)了以太網(wǎng)與CAN總線網(wǎng)絡(luò)的直接互連,使用戶可以使用PC機(jī)通過(guò)Internet進(jìn)行遠(yuǎn)程訪問(wèn)和控制Web服務(wù)器,從而能夠?qū)?a href="http://www.1cnz.cn/v/" target="_blank">工業(yè)現(xiàn)場(chǎng)測(cè)控層監(jiān)測(cè)設(shè)備得到的數(shù)據(jù)方便快捷地送到異地的管理監(jiān)控層。
在企業(yè)自動(dòng)化的工業(yè)現(xiàn)場(chǎng),下層車間的監(jiān)測(cè)設(shè)備之間都是采用現(xiàn)場(chǎng)總線相互連接,而企業(yè)的管理層和生產(chǎn)監(jiān)控層都是連于以太網(wǎng)的PC,甚至是位于異地的連于互連網(wǎng)上的PC。為了使工業(yè)現(xiàn)場(chǎng)的現(xiàn)場(chǎng)總線上的設(shè)備和管理監(jiān)控層之間的PC能夠通信,同時(shí)改善故障檢測(cè)和設(shè)備維護(hù)的遠(yuǎn)程訪問(wèn)能力,筆者在CAN總線網(wǎng)與以太網(wǎng)的互連系統(tǒng)中設(shè)計(jì)了一個(gè)嵌入式WEB服務(wù)器。
1 嵌入式WEB服務(wù)器硬件設(shè)計(jì)
通常嵌入式系統(tǒng)硬件包括微控制器、存儲(chǔ)器及外設(shè)器件和I/O端口等,其核心是嵌入式微控制器。為適應(yīng)上網(wǎng)需求,嵌入式微控制器不僅要具有傳統(tǒng)的控制功能,還要具有與因特網(wǎng)連接的功能。而Ubicom公司的SX52芯片能比較容易實(shí)現(xiàn)TCP/IP協(xié)議,選擇它作為微控制器。關(guān)于傳輸媒質(zhì),采用最常用的連接模式即通過(guò)以太網(wǎng)連接Internet,利用網(wǎng)絡(luò)接口控制器RTL8019AS實(shí)現(xiàn)數(shù)據(jù)鏈路層協(xié)議。RTL8019AS采用***Realtek公司生產(chǎn)的RTL8019AS芯片。
嵌入式WEB服務(wù)器硬件結(jié)構(gòu)框圖如圖1所示。
嵌入式WEB服務(wù)器用SX52微控制器作為處理器,以太網(wǎng)驅(qū)動(dòng)芯片RTL8019AS經(jīng)耦合隔離濾波器HR61101G和RJ45接口接入以太網(wǎng),配有RS232和CAN總線兩個(gè)擴(kuò)展接口,可以將具有RS232接口的設(shè)備或采用CAN總線協(xié)議通信的設(shè)備連到以太網(wǎng)上。RS232接口采用MAX232CPE芯片,CAN總線控制器采用Philips公司的SJAl000芯片,CAN收發(fā)器采用Philips公司的PCA82C250。
圖1
數(shù)據(jù)的流向?yàn)椋赫?qǐng)求和控制信息從局域網(wǎng)中來(lái),通過(guò)nJ45送到RTL8019AS,RTL8019AS負(fù)責(zé)將以太網(wǎng)幀的首部和尾部信息剝離,將處理后的數(shù)據(jù)包送入SX52的TCP/IP協(xié)議棧,由協(xié)議棧對(duì)數(shù)據(jù)包進(jìn)行解析,得到原始的請(qǐng)求和控制信息。請(qǐng)求和控制信息再經(jīng)過(guò)SJAl000進(jìn)行CAN協(xié)議格式的數(shù)據(jù)封裝,再與現(xiàn)場(chǎng)的CAN總線設(shè)備進(jìn)行通信。請(qǐng)求和控制的回復(fù)信息到局域網(wǎng)的過(guò)程正好相反。
在嵌入式WEB服務(wù)器的硬件設(shè)計(jì)中,在確保通信功能順利實(shí)現(xiàn)的同時(shí),充分利用了SX52芯片I/O口靈活配置的特點(diǎn),最大程度地節(jié)約了微控制器SX52的硬件資源。
圖2為WEB服務(wù)器主要芯片連接電路簡(jiǎn)圖,結(jié)合本圖詳細(xì)分析系統(tǒng)硬件設(shè)計(jì)。
1.1 RTL8019AS驅(qū)動(dòng)程序?qū)崿F(xiàn)
RTLS019AS是***Realtek公司制造的一種高集成度的全雙工10Mbps以太網(wǎng)控制芯片,實(shí)現(xiàn)了基于Ethernet協(xié)議的MAC層的全部功能,內(nèi)置16KB的SRAM、雙DMA通道和FIFO完成數(shù)據(jù)包的接收和發(fā)送功能。在網(wǎng)關(guān)設(shè)計(jì)中,使用跳線模式(JP置為高)來(lái)硬配置RTLS019AS為8位模式;使用了RTL8019的低五位地址線A0~A4以及低8位數(shù)據(jù)線D0~D7。為滿足RTL8019AS的ISA時(shí)序,RTL8019AS高端地址A5~A19須設(shè)置為0X300。SX52的B口的B0~B4腳作為地址線連接RTL8019AS的低5位地址線,B5~B7作為控制線分別連接讀寫時(shí)序控制腳IORB、IOWB、IOCHRDY;C口作為數(shù)據(jù)線連接RTLS019AS的低8位數(shù)據(jù)線;A口保留,用作日后擴(kuò)展。設(shè)計(jì)中采用AT24C64這樣一個(gè)8KB的EEPROM來(lái)保存WEB服務(wù)器的配置信息,如網(wǎng)關(guān)IP地址、MAC地址和SJAl000的ID網(wǎng)絡(luò)標(biāo)示符、網(wǎng)絡(luò)掩碼AMR和總線定時(shí)(BTR0、BTR1)等。這樣就能夠靈活方便地修改網(wǎng)關(guān)參數(shù),適應(yīng)不同環(huán)境,同時(shí)也考慮到以后的擴(kuò)展。
圖2
要實(shí)現(xiàn)嵌入式WEB服務(wù)器接入以太網(wǎng),就要對(duì)RTL8019AS進(jìn)行編程,完成以太網(wǎng)幀的數(shù)據(jù)收發(fā),相當(dāng)于實(shí)現(xiàn)PC機(jī)中網(wǎng)卡的驅(qū)動(dòng)程序功能。首先要對(duì)RTL8019AS進(jìn)行復(fù)位,并將其設(shè)置為跳線模式;然后對(duì)RTL8019AS的工作參數(shù)進(jìn)行設(shè)置,以使其開始工作;接下來(lái)讀寫RTL8019AS的RAM以完成數(shù)據(jù)包的接收和發(fā)送。程序流程如圖3所示。
1.2 TCP/IP協(xié)議棧的實(shí)現(xiàn)
并不是所有的協(xié)議在嵌入式WEB服務(wù)器中都要實(shí)現(xiàn),應(yīng)根據(jù)項(xiàng)目要求有選擇地加以實(shí)現(xiàn)。以太網(wǎng)數(shù)據(jù)的傳輸采用MAC地址來(lái)識(shí)別,而ARP協(xié)議提供IP地址和數(shù)據(jù)鏈路層使用的MAC地址之間的轉(zhuǎn)換功能,為了保證系統(tǒng)在以太網(wǎng)的通信,首先要實(shí)現(xiàn)ARP協(xié)議;由于嵌入式WEB服務(wù)器要能在Internet上通信,在網(wǎng)絡(luò)層一定要實(shí)現(xiàn)IP協(xié)議,還要實(shí)現(xiàn)能報(bào)告數(shù)據(jù)傳送差錯(cuò)等情況的ICMP協(xié)議;在應(yīng)用層,主要實(shí)現(xiàn)遠(yuǎn)端主機(jī)通過(guò)瀏覽器的訪問(wèn)控制方式,所以要實(shí)現(xiàn)HTTP協(xié)議。而HTTP協(xié)議是基于TCP協(xié)議實(shí)現(xiàn)傳輸?shù)模由蟃CP協(xié)議是面向可靠的數(shù)據(jù)流的傳輸,基于應(yīng)用的需要和對(duì)可靠性的要求,在傳輸層采用TCP協(xié)議,并對(duì)TCP協(xié)議進(jìn)行簡(jiǎn)化處理,主要針對(duì)HTTP協(xié)議開發(fā)TCP協(xié)議。
由于嵌入式系統(tǒng)的資源有限,因此將TCP/IP協(xié)議最大幅度精簡(jiǎn),以提高程序的運(yùn)行速度,減少在SX52存儲(chǔ)器中占用的空間。TCP/IP協(xié)議棧主流程圖如圖4所示。
精簡(jiǎn)協(xié)議主要遵循以下兩個(gè)原則:
(1)協(xié)議內(nèi)容精簡(jiǎn)
嵌入式WEB服務(wù)器的實(shí)現(xiàn)需要ARP、IP、TCP、ICMP等網(wǎng)絡(luò)協(xié)議的支持,每一個(gè)完整協(xié)議都很龐大,在存儲(chǔ)容量并不大的SX52上全部實(shí)現(xiàn)是不現(xiàn)實(shí)的。應(yīng)該在保證實(shí)現(xiàn)網(wǎng)絡(luò)通信基本功能的前提下盡可能地精簡(jiǎn)協(xié)議,確定出協(xié)議的哪一部分是必需的,哪一部分可以省略,以滿足系統(tǒng)要求。
(2)協(xié)議接口層次明確
TCP/IP協(xié)議分布在鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層上,是分層實(shí)現(xiàn)的,每一層只負(fù)責(zé)處理通信過(guò)程中的一部分問(wèn)題,其它層不能實(shí)現(xiàn)其功能。采用模塊化的設(shè)計(jì)思路,如果需要修改哪個(gè)協(xié)議,只需修改相應(yīng)模塊的功能,其它模塊不用改動(dòng)。協(xié)議分層簡(jiǎn)化了程序的設(shè)計(jì)和調(diào)試,每層的協(xié)議相互獨(dú)立,使協(xié)議的開發(fā)更高效。在網(wǎng)絡(luò)系統(tǒng)中,按照分層的思想,從網(wǎng)絡(luò)最底層開始每一層都為高層提供服務(wù),明確層間接口對(duì)軟件開發(fā)十分重要。
2 嵌入式WEB服務(wù)器應(yīng)用程序的實(shí)現(xiàn)
Brower/Server(簡(jiǎn)稱B/S)模式已經(jīng)成為流行的開發(fā)模式,課題中的嵌入式WEB服務(wù)器要實(shí)現(xiàn)的功能主要是現(xiàn)場(chǎng)實(shí)時(shí)數(shù)據(jù)發(fā)布功能。B/S訪問(wèn)模式是WEBServer和Browser之間的直接訪問(wèn)。客戶和服務(wù)器間的中間節(jié)點(diǎn)不對(duì)HTTP請(qǐng)求及響應(yīng)做任何操作,只需在客戶端采用如IE這樣的瀏覽器對(duì)服務(wù)器上的數(shù)據(jù)進(jìn)行瀏覽,不用開發(fā)客戶端程序。采用B/S結(jié)構(gòu)具有如下優(yōu)勢(shì):
·具有分布性特點(diǎn),可以隨時(shí)隨地進(jìn)行業(yè)務(wù)處理;
·系統(tǒng)維護(hù)或升級(jí)只在服務(wù)器端,對(duì)客戶端無(wú)須進(jìn)行改動(dòng),只需要改變服務(wù)器端網(wǎng)頁(yè),即可實(shí)現(xiàn)所有用戶的同步更新,易于維護(hù)和升級(jí);
·開發(fā)簡(jiǎn)單,共享性強(qiáng)。
圖4
B/S訪問(wèn)模式只需對(duì)服務(wù)器端程序進(jìn)行開發(fā)。在服務(wù)器端形成動(dòng)態(tài)網(wǎng)頁(yè)最常用的工具有ASP和JSP。由于采用的嵌入式芯片SX52只有4KB存儲(chǔ)容量,在SX52中既實(shí)現(xiàn)TCP/IP協(xié)議棧,又實(shí)現(xiàn)ASP和JSP的功能是很困難的。所以可以采用字節(jié)傳輸方式針對(duì)SX52用匯編語(yǔ)言編程實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)。
Java applet能夠被傳送到瀏覽器并且在瀏覽器所在的本地機(jī)上運(yùn)行。本設(shè)計(jì)正是利用了這一特性改進(jìn)了傳統(tǒng)的B/S模式設(shè)計(jì)出的應(yīng)用程序,Java applet對(duì)于管理和處理動(dòng)態(tài)數(shù)據(jù)也是一種行之有效的技術(shù)。Java applet能實(shí)時(shí)表示從輪詢得到的更新信息,利用這個(gè)特性顯示實(shí)時(shí)數(shù)據(jù)。所以程序客戶端采用Java applet設(shè)計(jì)實(shí)現(xiàn)。
嵌入式WEB服務(wù)器接入以太網(wǎng)時(shí),在程序中設(shè)置了自身的IP地址和MAC地址,可以與局域網(wǎng)上任一臺(tái)微機(jī)通信。服務(wù)器端主要實(shí)現(xiàn)兩部分功能:利用HTTP協(xié)議實(shí)現(xiàn)網(wǎng)頁(yè)瀏覽功能和利用套接字編程實(shí)現(xiàn)與客戶端applet通信的功能。服務(wù)器程序用SX52的匯編語(yǔ)言實(shí)現(xiàn)。
在WEB服務(wù)器中實(shí)現(xiàn)HTTP協(xié)議才能實(shí)現(xiàn)網(wǎng)頁(yè)文件的瀏覽。方案中將WEB服務(wù)器上擴(kuò)展的EEPROM與SX52相連,用來(lái)存儲(chǔ)要瀏覽的WEB文件,EEPROM里的WEB內(nèi)容采用原始數(shù)據(jù)的形式存儲(chǔ),沒(méi)有進(jìn)行封裝和編碼。文本內(nèi)容以ASCⅡ碼形式存儲(chǔ),圖像內(nèi)容以二進(jìn)制數(shù)據(jù)形式存儲(chǔ)。
相關(guān)推薦
評(píng)論
查看更多