采用DS80C410串口至以太網(wǎng)接口轉(zhuǎn)換器設(shè)計(jì)方案
概述:介紹了一種基于高性能51內(nèi)核網(wǎng)絡(luò)微控制器的串口至以太網(wǎng)接口轉(zhuǎn)換器的設(shè)計(jì)方案,采用網(wǎng)絡(luò)單片機(jī)DS80C410,利用集成的MAC通過(guò)以太網(wǎng)收發(fā)器與以太網(wǎng)相連,借助TINI SDK軟件開(kāi)發(fā)包通過(guò)Java編程實(shí)現(xiàn)串口和以太網(wǎng)之間的數(shù)據(jù)通訊。串口至以太網(wǎng)接口轉(zhuǎn)換器使得帶有RS232/422/485通訊接口的設(shè)備和以太網(wǎng)服務(wù)器進(jìn)行數(shù)據(jù)流傳輸,通過(guò)以太網(wǎng)服務(wù)器對(duì)串口設(shè)備進(jìn)行實(shí)時(shí)監(jiān)控。
1? 引言
互聯(lián)網(wǎng)硬件和軟件的迅猛發(fā)展,使得各種電氣設(shè)備、儀器儀表以及生產(chǎn)過(guò)程中的數(shù)據(jù)采集與控制設(shè)備逐漸走向網(wǎng)絡(luò)化。計(jì)算機(jī)技術(shù)、測(cè)控技術(shù)、網(wǎng)絡(luò)與通訊技術(shù)不斷發(fā)展與融合是一個(gè)必然的趨勢(shì)。目前以太網(wǎng)已經(jīng)廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò),成為互聯(lián)網(wǎng)鏈接不可缺少的部分,另外以太網(wǎng)一般都基于TCP/IP協(xié)議,使得整個(gè)網(wǎng)絡(luò)只有一種互聯(lián)通訊協(xié)議,滿足控制系統(tǒng)各個(gè)層次的要求,而且易于和Internet實(shí)現(xiàn)無(wú)縫連接?,F(xiàn)今大多數(shù)現(xiàn)場(chǎng)設(shè)備通過(guò)串口與外界通訊,甚至串口是它們與外界通訊的唯一通道,串口設(shè)備的廣泛使用以及對(duì)設(shè)備上網(wǎng)能力的不斷需求,使得如何實(shí)現(xiàn)串口到以太網(wǎng)的轉(zhuǎn)換顯得尤為重要。DS80C410利用集成的MAC通過(guò)物理層器件與以太網(wǎng)相連,借助TINI SDK軟件開(kāi)發(fā)包可以輕松實(shí)現(xiàn)串口至以太網(wǎng)的接口轉(zhuǎn)換。
2? 系統(tǒng)硬件
2.1? DS80C410簡(jiǎn)介
DS80C410是與8051兼容的高度集成的網(wǎng)絡(luò)微控制器。它內(nèi)置一個(gè)10/100bps的以太網(wǎng)MAC,3個(gè)串行端口,1個(gè)CAN2.0B控制器,一個(gè)1-Wire控制器和64個(gè)I/O口,具有64K字節(jié)內(nèi)部SRAM,用于存儲(chǔ)用戶應(yīng)用和網(wǎng)絡(luò)堆棧。為了便于訪問(wèn)網(wǎng)絡(luò),在ROM中提供了一個(gè)完整的、可被應(yīng)用訪問(wèn)的TCP / IP 協(xié)議棧, 支持IPv4 和IPv6, 可執(zhí)行UDP, TCP, DHCP, ICMP和IGMP,協(xié)議棧支持32個(gè)TCP連接而且可以通過(guò)以太網(wǎng)MAC以5Mbps的速度發(fā)送數(shù)據(jù)。最高達(dá)75MHz的系統(tǒng)時(shí)鐘頻率使最短指令周期僅有54ns。為了加快微控制器和內(nèi)存之間的數(shù)據(jù)傳輸, ROM包含固件用DHCP連接TFTP來(lái)實(shí)現(xiàn)以太網(wǎng)的網(wǎng)絡(luò)啟動(dòng)。
DS80C410內(nèi)部集成了10/1000Mbps的以太網(wǎng)控制器(MAC),它支持使用以太網(wǎng)/IEEE802.3協(xié)議的物理設(shè)備。它通過(guò)一個(gè)介質(zhì)無(wú)關(guān)接口(MII)提供了接收、發(fā)送和流控制機(jī)制。MII包含了一個(gè)串行管理總線,它可以用來(lái)設(shè)置外部物理設(shè)備。MII可以設(shè)置為半雙工和全雙工模式,速率可以是10Mbps和100Mbps,也可以設(shè)置成支持1OMbps的ENDEC操作模式。以太網(wǎng)控制模塊如圖1所示:
緩沖控制單元(BCU):是所有DS80C410以太網(wǎng)操作的中央控制器,通過(guò)一系列特殊功能寄存器控制CPU與以太網(wǎng)控制模塊的讀/寫(xiě)操作。
命令/狀態(tài)寄存器(CSR):旨在控制與檢測(cè)以太網(wǎng)操作過(guò)程。
介質(zhì)無(wú)關(guān)接口(MII):包括兩個(gè)基本模塊,即MII I/O模塊和MII管理模塊。MII I/O模塊提供獨(dú)立的發(fā)送和接收數(shù)據(jù)路徑和物理層網(wǎng)絡(luò)狀態(tài)信號(hào)輸入,MII管理模塊執(zhí)行2線串行通訊總線便于訪問(wèn)物理層寄存器。
地址檢測(cè)模塊(Address Check):監(jiān)控所有輸入數(shù)據(jù)包的目的地址,根據(jù)CPU配置的過(guò)濾標(biāo)準(zhǔn)決定是轉(zhuǎn)發(fā)還是丟棄。地址檢測(cè)結(jié)果和幀類型信號(hào)位一起由BCU存入數(shù)據(jù)包接收狀態(tài)字中。
發(fā)送/接收緩沖寄存器(Tx/Rx):DS80C410用8KB內(nèi)部SRAM作為發(fā)送/接收數(shù)據(jù)包的緩沖寄存器,CPU可用MOVX指令訪問(wèn)數(shù)據(jù)存儲(chǔ)器,BCU也可以訪問(wèn)SRAM,在需要存儲(chǔ)或找回以太網(wǎng)數(shù)據(jù)包信息時(shí)可自動(dòng)讀/寫(xiě)緩沖寄存器。
電源管理模塊(Power Management):可以通過(guò)CPU設(shè)定為休眠模式,在不處理以太網(wǎng)通信時(shí)以便節(jié)省電源[1]。
2.2? LXT972ALC簡(jiǎn)介
?? LXT972ALC是一個(gè)遵守快速以太網(wǎng)協(xié)議的接口收發(fā)芯片,支持10/100MAC的標(biāo)準(zhǔn)MII,它是物理層設(shè)備,完成參考模型中以IEEE802.3標(biāo)準(zhǔn)定義的物理編碼子層、物理媒體附加層和物理媒體獨(dú)立子層的功能。LXT972ALC設(shè)備實(shí)現(xiàn)了標(biāo)準(zhǔn)IEEE802.3定義的MII提供了從MAC到LXT972ALC數(shù)據(jù)傳輸?shù)莫?dú)立通道。每一個(gè)通道都有各自的時(shí)鐘、數(shù)據(jù)總線和控制信號(hào)[3]。MAC每一次發(fā)送都使用先導(dǎo)模式,當(dāng)LXT972ALC檢測(cè)到先導(dǎo)符時(shí),它發(fā)送一個(gè)幀開(kāi)始符,然后進(jìn)行編碼和發(fā)送數(shù)據(jù)包的剩余部分,包含包數(shù)據(jù)和CRC。當(dāng)包結(jié)束時(shí),LXT972ALC發(fā)送包結(jié)束分解符,然后轉(zhuǎn)為發(fā)送空閑標(biāo)識(shí)符。
2.3? 轉(zhuǎn)換器的硬件連接
基于DS80C410串口至以太網(wǎng)接口轉(zhuǎn)換器的硬件連接如圖2所示。
串口采用MAX202實(shí)現(xiàn)TTL電平到RS232電平的轉(zhuǎn)換,通過(guò)RS232標(biāo)準(zhǔn)接口(DB9)接入外部串口設(shè)備。以太網(wǎng)收發(fā)器的輸出經(jīng)過(guò)網(wǎng)絡(luò)變壓器的隔離接入RJ45通過(guò)5類雙絞線電纜連接10/100BASE-T以太網(wǎng)。
3???軟件部分
DS80C410 MCU內(nèi)部64KB的ROM程序中包含完全符合工業(yè)標(biāo)準(zhǔn)的完整的TCP/IP IPv4/v6 協(xié)議棧,搶占式調(diào)度程序和可以裝載應(yīng)用程序的網(wǎng)絡(luò)引導(dǎo)程序、串口引導(dǎo)裝載程序。系統(tǒng)啟動(dòng)時(shí),ROM對(duì)單片機(jī)的串口0進(jìn)行初始化,微控制器通過(guò)串口0和開(kāi)發(fā)主機(jī)通信,向Flash寫(xiě)入程序。應(yīng)用程序使用Java來(lái)開(kāi)發(fā),借助軟件開(kāi)發(fā)工具包TINI SDK在開(kāi)發(fā)主機(jī)上完成,TINI SDK將DS80C410中的硬件部分虛擬成Java的類,通過(guò)調(diào)用相關(guān)的方法實(shí)現(xiàn)對(duì)硬件的操作。TINI SDK提供了Java程序的運(yùn)行環(huán)境,在主機(jī)上開(kāi)發(fā)Java應(yīng)用程序經(jīng)過(guò)轉(zhuǎn)換,即可在目標(biāo)系統(tǒng)上運(yùn)行。以串口設(shè)備到以太網(wǎng)服務(wù)器數(shù)據(jù)流傳輸程序?yàn)槔ù诘揭蕴W(wǎng)主線程、維持線程,串口發(fā)送、串口接收子線程。各流程圖分別如圖3 、4、5、6所示:?????
串口到以太網(wǎng)的主程序包括串口參數(shù)、流控制模式的設(shè)定,串口輸入輸出流的初始化,流量計(jì)數(shù)器的設(shè)定和初始化,接收超時(shí)、接收門(mén)限的設(shè)定(接收門(mén)限為緩沖容量長(zhǎng)度,接收超時(shí)設(shè)為100ms),連接網(wǎng)絡(luò)服務(wù)器,創(chuàng)建并啟動(dòng)串口接收和發(fā)送子線程,啟動(dòng)維持線程。維持線程用于周期(周期為1分鐘)更新和統(tǒng)計(jì)接收和發(fā)送的數(shù)據(jù)流量。串口接收以太網(wǎng)數(shù)據(jù)是通過(guò)網(wǎng)絡(luò)接口從網(wǎng)絡(luò)結(jié)點(diǎn)上獲取數(shù)據(jù)并送至以太網(wǎng)緩沖區(qū),再通過(guò)串口將數(shù)據(jù)流發(fā)送到串口設(shè)備。串口向以太網(wǎng)發(fā)送數(shù)據(jù)是把有效數(shù)據(jù)讀到串口接收緩沖區(qū),通過(guò)向網(wǎng)絡(luò)緩沖區(qū)寫(xiě)數(shù)據(jù)把串口數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)結(jié)點(diǎn)(或服務(wù)器),并且對(duì)這兩個(gè)進(jìn)程進(jìn)行監(jiān)視,并確認(rèn)是否出現(xiàn)異常(網(wǎng)絡(luò)連接關(guān)斷或流量計(jì)數(shù)器異常)。
Java編程要點(diǎn):申明串口到以太網(wǎng)擴(kuò)展線程類,申明內(nèi)部串口類及相應(yīng)的輸入輸出流對(duì)象,內(nèi)部網(wǎng)絡(luò)接口類及相應(yīng)的輸入輸出流對(duì)象。輸入流對(duì)象就是可以從其獲得連續(xù)字節(jié)的對(duì)象,輸出流對(duì)象就是可向其輸入一系列字節(jié)的對(duì)象。在串口接收子線程中,將網(wǎng)絡(luò)數(shù)據(jù)寫(xiě)到串口是通過(guò)調(diào)用串口輸出流的寫(xiě)方法,將以太網(wǎng)緩沖器中接收到的數(shù)據(jù)發(fā)送到串口,具體為:spout.write(ethbuf,0,count) ,spout為串口輸出流對(duì)象,write()為寫(xiě)方法作用是將數(shù)組ethbuf中count個(gè)字節(jié)寫(xiě)入串口輸出流中,參數(shù)ethbuf為長(zhǎng)度為1024的數(shù)組,參數(shù)0表示從數(shù)組的0處開(kāi)始發(fā)送,參數(shù)count為以太網(wǎng)緩沖器中接收到的數(shù)據(jù)長(zhǎng)度。類似的,在串口發(fā)送子線程中,將串口數(shù)據(jù)發(fā)到網(wǎng)絡(luò)服務(wù)器是通過(guò)網(wǎng)絡(luò)輸出流的寫(xiě)方法,將串口輸入緩沖器中的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)服務(wù)器,具體為:sout.write(serbuf,0,count),sout為網(wǎng)絡(luò)接口輸出流對(duì)象,參數(shù)count為串口接收緩沖區(qū)中接收到的數(shù)據(jù)長(zhǎng)度,其余同上不再細(xì)說(shuō)。
4? 結(jié)論
本文作者創(chuàng)新點(diǎn):采用嵌入式以太網(wǎng)控制器,節(jié)省了外圍器件,硬件電路設(shè)計(jì)相對(duì)簡(jiǎn)單,系統(tǒng)開(kāi)發(fā)周期較短,開(kāi)發(fā)成本相對(duì)較低;數(shù)據(jù)通信采用面向?qū)ο蟮腏ava語(yǔ)言,采用多線程技術(shù),提高CPU工作效率;設(shè)計(jì)網(wǎng)絡(luò)化的測(cè)量和控制裝置?;贒S80C410串口至以太網(wǎng)接口轉(zhuǎn)換器可以實(shí)現(xiàn)串口設(shè)備和以太網(wǎng)服務(wù)器的數(shù)據(jù)流傳輸,通過(guò)以太網(wǎng)服務(wù)器對(duì)串口設(shè)備進(jìn)行監(jiān)控。串口設(shè)備和以太網(wǎng)的連接有助于提高數(shù)據(jù)傳輸效率,克服串行通訊本身傳輸速度慢,傳輸距離短的限制。目前廣泛用于廠站自動(dòng)化的大量國(guó)內(nèi)外保護(hù)測(cè)量設(shè)備都只有RS232/422/485通訊接口,串口設(shè)備通過(guò)外部轉(zhuǎn)換增加上網(wǎng)能力可能更符合實(shí)際要求,這就使得串口到以太網(wǎng)轉(zhuǎn)換器的實(shí)現(xiàn)具有現(xiàn)實(shí)性和應(yīng)用可能性。
評(píng)論
查看更多