李鵬,廖曉波
(西南科技大學制造過程測試技術教育部重點實驗室,四川綿陽 621010)
隨著計算機網絡技術的飛速發展和普及應用,給網絡實驗教學帶來很大的發展空間,使得基于網絡的實驗教學成為可能。然后實驗設備的通信接口千差萬別,如何將設備進行網絡互聯共享,成為一個亟待解決的重要問題。遠程實驗平臺的基本框圖如圖1 所示。其總體結構分為3 層:上層是用戶層,用戶通過上位機軟件對下位機的設備進行操作;中間是網絡層,進行數據的轉換傳送;下層是設備層,接收上層用戶的操作數據進行實驗操作。其中處于通信層的通信網關通過網絡接受實驗者的控制和實驗數據,將該數據以各種近距離的通信方式發送給相應的實驗設備。

圖1 遠程過程控制實驗平臺網絡拓撲圖
將嵌入式系統和Internet 連接起來實現遠距離數據交換和控制的本質是嵌入式系統本身能夠實現TCP/IP 通信協議。實現該方案總體上有兩種方法[1-2]:第一種方法是直接在嵌入式平臺上實現TCP/IP,使之直接連接上Internet,這種方法通過軟件來構建TCP/IP 等以太網協議,軟件設計復雜,工作量大,且該方案需要耗費很多的系統內存和系統MCU 的計算時間。第二類方案是直接由硬件來實現TCP/IP 協議,MCU 只需要通過一定的通信方式將數據發送給該以太網硬件設備,由該硬件設備完成以太網數據的轉發,該方案結構簡單,需要存儲內存和占用CPU的時間少。
文中采用STM32 32 位ARM 處理器[3]來設計該通信網關,該處理器具有速度快、容量大、性能穩定、在線調試方便等優點,W5100 是WIZNETT 公司推出的最先的固件網絡芯片[4],該芯片集成了10/100 Mb/s 以太網控制器,最高傳輸速度為25 Mb/s,硬件化了TCP/IP 協議、以太網MAC 和PHY三種功能于一體。
以太網通信網關主要功能是完成數據協議的轉換,它將以太網發送的數據通過工業485 總線或者短距離無線通信方式發送給設備控制端[5]。其中485 通信模塊是通過UART 連接485 芯片轉換成485 總線數據,無線傳輸模塊是通過藍牙串口模塊進行數據交換,其主要的結構框圖如圖2 所示,主要由以太網模塊、485 總線接口、短距離無線通信接口幾部分組成。

圖2 嵌入式網關的結構框圖
W5100 芯片是一款多功能的單片網絡接口芯片,其內部集成了10/100 Mb/s 以太網控制器,可支持自動應帶(全雙工/半雙工模式),主要用于高集成、高穩定、高性能和低成本的嵌入式系統。它支持以太網介質傳輸層(MAC)和物理層(PHY),其硬件TCP/IP 協議可以支持TCP、UDP、ICMP、IGMP、IPV4、ARP、PPPoE 和IGMP。支持4 個獨立的端口通信,其內部具有16 kB 字節的發送和接收緩沖區。其和MCU 的接口有SPI 接口和總線接口[6]。圖3 為W5100 和STM32103 采用SPI 接口的接口電路圖。

圖3 W5100 電路接口原理圖
由于當前很多設備都配置有 UART 串口,STM32103 自身共有3 個串口,一個作為485 總線的擴展,一個作為串口藍牙模塊的接口。為了實現網關對更多的串口設備數據收發控制,利用SMT32 的串口0 對串口進行了擴展,設計中采用串口擴展芯片GM8123。GM8123 可以將一個全雙工的標準串口擴展成3 個標準串口,并能通過外部引腳控制串口,擴展模式為單通道工作模式和多通道工作模式,即可以指定一個子串口和母串口以相同的波特率單一地工作,也可以讓所有子串口在母串口波特率基礎上分頻同時工作[7]。網關串口擴展接口圖見圖4。

圖4 網關串口擴展接口原理圖
在UCOSII 操作系統下,根據系統任務需求,系統主要建立了8 個進程,其依次為:串口數據發送進程、W5100socket0~socket3 四個進程、鍵盤處理進程、LCD 顯示進程、空閑進程。其中串口接收處理任務和W5100 接收處理任務相對緊急,因此其優先級最高,其次是串口數據發送任務和W5100 發送任務優先級高,剩余的任務優先級相對較低。
在UCOSII 操作系統下,由于STM32103 自身共有3 個串口,再加上擴展的串口,一共串口個數可以達到5 個,然而W5100 一共有4 個SOCKET,這樣一共可以建立4 個獨立的以太網到串口的獨立通道。在系統設計過程中,在系統內存中分配了4 串口的緩沖區rcvuartbuf,用來接收串口收到的數據,系統設計了4 個信號量,Rcvuartsem1-Rcvuartsem4。具體流程如圖5 所示。

圖5 多串口中斷處理流程圖
在串口數據發送任務中,由于串口是互斥設備,因此每次請求數據發送前需申請占用,請求UartSem;如果請求到,則申請消息郵箱;如果申請到,說明系統需要利用串口來發送數據,然后打開信箱內容,根據內容判斷要將哪個緩沖區的數據發往哪個子串口;然后根據GM8123 設置其地址引腳,將數據發往不同的子串口。其具體流程圖如下:串口接收處理數據任務主要是接收串口設備發送的數據,然后將數據轉化成SOCKET 發送出去,其流程圖如圖6 所示。

圖6 串口發送任務流程圖
W5100 共有4 個SOCKET,內部一共有16 kB 的緩沖區,在其工作之前必須先對其進行地址設置、內存分配等操作;同時,W5100 每個SOCKET 可以有兩種模式,TCP 和UDP,根據系統應用要求,可以設置SOCKET 的操作模式;同時W5100 可以設置是客戶端模式還是服務器模式[8],在此設計為服務器模式。在系統初始化之后,需要進行SOCKET 的設置。其初始化流程圖如圖7 所示。

圖7 W5100 初始化流程圖
其中配置發送和接收緩沖區大小可以根據串口連接設備發送和接收數據的大小進行配置,以滿足應用要求。
W5100 的每個SOCKET 接收數據完成之后,將解包后的數據放入接收緩沖區之后,產生中斷,系統根據W5100 的狀態寄存器查看,可以查出是哪個SOCKET 接收到了數據。接收數據的處理流程圖如圖8 所示。

圖8 W5100 中斷處理流程圖
W5100 接收數據處理任務流程圖見圖9。

圖9 W5100 接收數據處理任務流程圖
W5100 發送數據流程圖見圖10。

圖10 W5100 發送數據流程圖
針對遠程實驗平臺中數據信息轉換的問題,設計了一種可以進行網絡數據和串口數據轉換的網關。從硬件和軟件兩個方面對通信網關進行設計,重點介紹了在嵌入式操作系統UCOSII 下網絡數據和串口數據的轉換。該設計在相關設計中具有一定的借鑒意義。
[1]李成.基于嵌入式平臺的無線家庭網關設計[D].武漢:武漢理工大學,2009.
[2]鄭景遠.多協議網關的設計與實現[D].西安:西安電子科技大學,2010.
[3]王曉寅.基于實時系統的STM32 網絡應用[D].上海:華東師范大學,2011.
[4]楊春勇,牛磊,路杰,等.環境監測網絡中的ZigBee 網關服務器[J].大地測量與地球動力學,2011,31(2):156-159.
[5]謝東.基于ARM 的嵌入式遠程測控系統網關的設計[J].現代電子技術,2006(13):85 -88.
[6]蔡皓,馮仁劍,萬江文.具有多種通信方式的無線傳感器網絡網關[J].傳感器技術學報.2008,21(1):169 -173.
[7]劉通良,周建勇,潘仕彬,等.實現基于TCP/IP 的多串口轉換網關[J].單片機與嵌入式系統應用,2006(3):73 -75.
[8]蔣峰.W5100 在遠程溫度采集系統中的應用[J].化工自動化及儀表,2011(2):214 -217.
[9]李春林,程健.基于ARM 和nRF2401 的嵌入式無線網絡測控平臺[J].自動化儀表,2007,28(8):8 -15.