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