《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設計應用 > 基于LwIP的海洋數(shù)據(jù)采集與傳輸系統(tǒng)
基于LwIP的海洋數(shù)據(jù)采集與傳輸系統(tǒng)
來源:電子技術(shù)應用2012年第8期
王 暉,周巧娣,章雪挺,盛慶華
杭州電子科技大學 電子信息學院,浙江 杭州310018
摘要: 針對海洋數(shù)據(jù)采集系統(tǒng)中串行數(shù)據(jù)傳輸能力不能滿足海洋環(huán)境實時監(jiān)測需求的現(xiàn)狀,設計并實現(xiàn)了一種傳輸速率較高的以太網(wǎng)數(shù)據(jù)傳輸系統(tǒng)。系統(tǒng)以STM32F207VGT6處理器為核心,選擇輕量級的LwIP作為以太網(wǎng)協(xié)議棧,將LwIP TCP/IP協(xié)議棧移植到STM32F207VGT6上,在應用層實現(xiàn)了一個網(wǎng)絡、串口數(shù)據(jù)雙向傳輸?shù)臄?shù)據(jù)傳輸系統(tǒng)。經(jīng)測試,其傳輸速率優(yōu)于同條件下RS232、RS485、CAN總線的傳輸速度,滿足了設計要求。
中圖分類號: TP274+.2
文獻標識碼: A
文章編號: 0258-7998(2012)08-0026-04
A marine data collection and transmission system based on LwIP
Wang Hui,Zhou Qiaodi,Zhang Xueting,Sheng Qinghua
Electronic Information College,Hangzhou Dianzi University, Hangzhou 310018,China
Abstract: Due to the status quo that serial data transmission capacity can not meet the demand of marine environment real-time detection in the marine data acquisition system,this paper designs and implements a faster Ethernet data transmission system, which mainly consists of STM32F207VGT6 processor and a lightweight LwIP as protocol stack. By means of transplanting LwIP protocol stack into processer, it implements a two-way data transmission system between serial data and Ethernet data in application layer. The test shows that transfer rate with this method is superior to RS232、RS485、CAN bus in the same condition,which meets the design requirements.
Key words : data collection;LwIP;TCP/IP;data transmission

    以海底觀測節(jié)點為載體的海洋數(shù)據(jù)采集與傳輸系統(tǒng),可以實現(xiàn)海平面以下水環(huán)境監(jiān)測數(shù)據(jù)的實時、自動獲取,它由各個傳感器、CPU控制器、數(shù)據(jù)傳輸接口以及水上遠程監(jiān)測平臺組成,可為海洋的探索和監(jiān)測提供豐富的信息和資料。從我國開始研制海洋數(shù)據(jù)采集與監(jiān)測系統(tǒng)至今,先后采用了多種數(shù)據(jù)傳輸方式[1],包括RS232、RS485、CAN總線等,各個傳輸方式各有利弊。RS232支持全雙工通信,雖然是眾多設備的直接連接渠道,但傳輸速率慢、抗干擾能力差、傳輸距離短;RS485只支持半雙工通信,抗噪聲干擾性好,傳輸距離較RS232遠,但傳輸速率慢;CAN總線只支持半雙工通信,通信距離遠,抗干擾能力強,但傳輸速率仍有限制[2]。根據(jù)數(shù)據(jù)采集及傳輸系統(tǒng)對數(shù)據(jù)傳輸速率的要求,本文利用LwIP作為以太網(wǎng)協(xié)議棧,完成LwIP TCP/IP協(xié)議棧在STM32F207VGT6的移植;考慮到以太網(wǎng)支持全雙工通信,同時利用以太網(wǎng)中的UDP傳輸方式實現(xiàn)各類傳感器開啟、采集間隔的控制以及對采集數(shù)據(jù)的實時監(jiān)測,大幅度提高了系統(tǒng)遠程的可控性及實時性。

1 系統(tǒng)工作原理
    海洋數(shù)據(jù)采集與傳輸系統(tǒng)的整體結(jié)構(gòu)如圖1所示。其中數(shù)據(jù)采集板是本系統(tǒng)設計和實現(xiàn)的主要組成部分,本文主要闡述由傳感器、數(shù)據(jù)采集板和用戶遠程檢測終端組成的海洋數(shù)據(jù)采集與傳輸系統(tǒng)。它主要完成對傳感器采集到的數(shù)據(jù)進行存儲和傳輸以及對傳感器進行實時監(jiān)測,其目的是提高傳感器水下工作時長、提供外部電源供電引腳、方便進行長期觀測。


    海洋數(shù)據(jù)采集與傳輸系統(tǒng)工作原理為:當水下傳感器采集到數(shù)據(jù)時,即刻通過串口傳遞至數(shù)據(jù)采集板,采集板收到數(shù)據(jù)請求信號,立即執(zhí)行SD卡數(shù)據(jù)存儲操作,并通過以太網(wǎng)對數(shù)據(jù)進行接收,在UDP傳輸方式下通過網(wǎng)線將數(shù)據(jù)傳遞至用戶遠程計算機終端。數(shù)據(jù)接收完畢后,水下傳感器繼續(xù)執(zhí)行數(shù)據(jù)的采集。與此同時,遠程計算機終端通過網(wǎng)絡發(fā)送控制命令,信號經(jīng)網(wǎng)絡傳輸至采集板CPU,CPU進行命令解析,針對不同的解析結(jié)果對傳感器發(fā)送相應控制命令,實現(xiàn)對傳感器開啟、采集間隔設置的實時控制。
    CTD傳感器1~傳感器5是一般的RS232接口傳感器,而耦合傳感器1、2、3屬于感應耦合自容式傳感器,若要連入電路,需要加入調(diào)制解調(diào)模塊。兩種傳感器除了都能以RS232形式輸出數(shù)據(jù)外,也可進行自容式存儲。
2 系統(tǒng)硬件
    目前,實現(xiàn)傳感器串行數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)交換的方式主要有3種:(1)使用專用的網(wǎng)絡處理芯片;(2)使用高檔嵌入式系統(tǒng)處理;(3)使用單片機和網(wǎng)絡控制芯片。通過比較可以發(fā)現(xiàn):第(1)種成本較高,且用戶需要重新設計接口;第(2)種成本也較高,且如果僅用于通信接口,芯片資源則不能充分利用;相比較而言,通過從成本和使用場合考慮,第(3)種方法成本低,實現(xiàn)比較容易,并且可以根據(jù)實際需要進行功能擴展,只是軟件編程工作量比較大。因此本文采用第三種方法來實現(xiàn)。
    本系統(tǒng)中主控板微處理器選用ST公司基于Cortex-M3內(nèi)核的32 bit微處理器STM32F207,其主頻達120 MHz,專用于網(wǎng)絡型嵌入式設備中。STM32F207具有豐富的串口資源、4路USART通道、2路UART通道。其中USART1和USART6最高波特率支持7.5 Mb/s,其他接口最高支持3.75 Mb/s,不僅支持調(diào)制解調(diào)模塊、傳感器的物理連接,而且對于數(shù)據(jù)的傳輸也提供了較高的傳輸速率,可以有效縮短傳感器通過串口下載歷史數(shù)據(jù)的時間。
    以太網(wǎng)收發(fā)芯片選用美國National公司的10/100 M以太網(wǎng)物理層收發(fā)芯片DP83848C,該芯片遵循Ethernet II和IEEE802.3u標準,同時支持MII、RMII、SNI三種數(shù)據(jù)連接方式,內(nèi)部還集成了數(shù)據(jù)收發(fā)及濾波功能。在全雙工模式下,可以同時實現(xiàn)發(fā)送和接收,理論上最高速度能達到100 Mb/s,本文對其配置為100 Mb/s。采集板簡要框圖如圖2所示。

    如圖2所示,微控制器與以太網(wǎng)收發(fā)芯片間采用了RMII模式[3]。這種方式在保持物理層器件現(xiàn)有特性的前提下減少了PHY的連接引腳,在保持IEEE802.3規(guī)范中所有特性的同時,降低了系統(tǒng)設計的成本。
3 系統(tǒng)軟件設計
    本系統(tǒng)軟件設計包括兩部分:水下采集板傳感器數(shù)據(jù)采集、傳輸程序和遠程用戶界面實時監(jiān)測程序。其中,采集板程序均在KEIL Uvision4下編譯、測試,遠程監(jiān)測程序在Visual Studio 2008下編譯、測試。
3.1 TCP/IP協(xié)議棧——LwIP 移植
    LwIP是瑞士計算機科學院的Adam Dunkles等人開發(fā)的用于嵌入式系統(tǒng)的開放源碼TCP/IP協(xié)議棧,其在保持TCP主要功能的基礎上減少對RAM的占用,一般只需要幾十字節(jié)的RAM和40 KB左右的ROM就可運行,使LwIP適合在中低端的嵌入式系統(tǒng)中應用。
    嵌入式TCP/IP協(xié)議棧有兩種普遍的實現(xiàn)方式:一種是將協(xié)議簇中的每個協(xié)議作為一個單獨的進程,并指定進程之間的通信點。其優(yōu)點在于結(jié)構(gòu)清晰,代碼易懂,占用系統(tǒng)資源較少,且方便調(diào)試;另一種方式是將協(xié)議棧駐留在操作系統(tǒng)內(nèi)核中,應用程序通過系統(tǒng)調(diào)用與協(xié)議棧通信。該方式對系統(tǒng)RAM、ROM資源占用較高,且不能很好地支持MDK[4]環(huán)境下的斷點調(diào)試。故本文選擇第一種方式。
3.2 STM32F207采集板程序設計

 


    主程序設計可以分為以下4個步驟:
    (1)系統(tǒng)初始化
    上電后,對系統(tǒng)時鐘、LwIP協(xié)議棧、RTC實時時鐘、通用I/O口初始化配置。
    (2)串口配置和通信
    在STM32中,struct USART_InitTypeDef中包括了串口的波特率、字符位數(shù)和奇偶校驗等重要屬性,在設置好該結(jié)構(gòu)體后,調(diào)用串口USART_Init使串口屬性生效。配置好串口后,用USART_DMACmd函數(shù)配置串口以DMA直接內(nèi)存訪問,當有傳感器數(shù)據(jù)到達串口的緩沖區(qū)時,直接存儲至DMA指定緩沖區(qū)中,同時,當數(shù)據(jù)到達最大長度時,執(zhí)行數(shù)據(jù)傳出、SD卡存儲并清空緩沖區(qū)。
    (3)遠程端命令偵聽
    在LwIP中,struct udp_pcb包括了以太網(wǎng)數(shù)據(jù)最小傳輸單元的類型、IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、當前端口號、目的端口號等重要屬性,在創(chuàng)建好udp_pcb之后,調(diào)用udp API操作函數(shù)udp_bind使指定的udp數(shù)據(jù)單元屬性生效。對于以太網(wǎng)數(shù)據(jù)的讀寫,設置以太網(wǎng)讀寫超時是非常重要的,LwIP_Periodic_Handle函數(shù)提供了這樣的功能。配置好udp后,用udp_recv函數(shù)打開數(shù)據(jù)接收回調(diào)函數(shù),通過回調(diào)函數(shù)體中第二個參數(shù)創(chuàng)建監(jiān)聽線程。在監(jiān)聽中無線程阻塞,當接收到遠程數(shù)據(jù)報時,用udp_send寫數(shù)據(jù)。遠程控制端對水下采集板的監(jiān)測是在監(jiān)聽線程udp_echoserver_receive_callback中完成的,接著,將接收到的命令反饋至CPU,CPU根據(jù)不同的命令,決定是否開啟傳感器。
    (4)數(shù)據(jù)幀整合
    根據(jù)傳感器的不同,將采集到的數(shù)據(jù)幀進行排序、整合,按照固定順序整合成特定幀格式,最后通過以太網(wǎng)發(fā)送至遠程監(jiān)測端。采集板程序流程如圖3所示。

3.3 遠程用戶監(jiān)測程序設計
    遠程用戶控制端主要實現(xiàn)對水下采集板采集到的數(shù)據(jù)和傳感器工作狀態(tài)的實時監(jiān)測??刂贫送ㄟ^查找IP地址的形式對連接在用戶局域網(wǎng)內(nèi)的設備進行搜索,經(jīng)過濾,找出設備,與水下采集板建立虛擬鏈接。然后以UDP面向無連接的通信方式[5]通過以太網(wǎng)接口向采集板發(fā)送傳感器開啟命令。待發(fā)送完畢后,每隔1 s時間,控制端間歇性地通過以太網(wǎng)向水下系統(tǒng)發(fā)送獲取數(shù)據(jù)命令,用于得到最新的采集數(shù)據(jù)。若采集板中已收到傳感器當前采集的數(shù)據(jù),隨即將水下系統(tǒng)中已整合的幀數(shù)據(jù)再次通過以太網(wǎng)傳遞至遠程控制端。當接收到完整幀數(shù)據(jù)后,控制端通過分析之前的數(shù)據(jù)通信協(xié)議,對數(shù)據(jù)包進行解析,將各類傳感器分別采集到的數(shù)據(jù)進行分離,顯示在用戶界面中。程序流程如圖4所示。

4 系統(tǒng)調(diào)試
    在實驗室環(huán)境下,將采集板的4個串口分別與調(diào)制解調(diào)器、CTD傳感器1、2、3相連,網(wǎng)口通過網(wǎng)線與電腦的網(wǎng)口相連。采集板程序中設置 UDP偵聽端口號為5 000、子網(wǎng)掩碼為255.255.255.1,網(wǎng)關(guān)為192.168.1.1,設置本地IP為192.168.1.103,采集板IP地址為192.168.1.220,這兩個地址不能與局域網(wǎng)其他地址沖突。系統(tǒng)上電后,在局域網(wǎng)的PC機中,通過ping命令,發(fā)送ICMP請求,客戶端可得到ICMP回應。接著打開PC機上用戶遠程監(jiān)測軟件,通過搜索指定目標IP,搜索到采集板設備,此時采集板與PC機控制端握手成功后進行數(shù)據(jù)通信,按照配置的采集時間間隔,采集板將數(shù)據(jù)保存在SD中。其中,傳感器每秒采集數(shù)據(jù)長度約500 B。經(jīng)10 min運行,通過將監(jiān)測軟件顯示的以太網(wǎng)幀數(shù)據(jù)與SD卡中的數(shù)據(jù)進行比較可知,系統(tǒng)運行穩(wěn)定;通過PC機對傳感器配置不同采集間隔時,兩種方式下數(shù)據(jù)仍保持一致。
    接著同樣以每秒500 B的數(shù)據(jù)量近似作為傳感器采集數(shù)據(jù)長度,系統(tǒng)均運行10 min,分別對采用串口RS232、RS485、CAN總線傳輸方式下傳輸完成時間、誤碼數(shù)進行測試,得出的結(jié)果如表1所示。

    由表1中測試結(jié)果可知,在相同傳輸條件下,以太網(wǎng)傳輸速度是RS232的14.03倍,是RS485的3.97倍,是CAN總線的6.02倍,說明以太網(wǎng)在傳輸數(shù)據(jù)量較大的情況下,不管在傳輸時間方面還是在誤碼數(shù)方面都占有優(yōu)勢。
    在實驗室模擬調(diào)試的基礎上,在戶外也進行了進一步的測試,選擇水深、湖區(qū)面積適中的杭州千島湖中心湖區(qū)作為野外主要實測地點。測試前主要將浮球、水下數(shù)據(jù)采集系統(tǒng)放入水中,接著進行為期一周的實地觀測。結(jié)果表明,系統(tǒng)工作正常,達到了預期的測試效果。這里選擇其中某個時間點對監(jiān)測軟件的顯示界面進行截圖,如圖5所示。

    本文利用基于LwIP協(xié)議棧的以太網(wǎng)設計和實現(xiàn)了一種海洋數(shù)據(jù)采集與傳輸系統(tǒng)。該采集系統(tǒng)豐富的串口資源使其至多可接入6種不同的傳感器設備。設計時,在保證數(shù)據(jù)傳輸穩(wěn)定的前提下,用以太網(wǎng)傳輸代替?zhèn)鹘y(tǒng)的數(shù)據(jù)傳輸模式,不僅提高了系統(tǒng)實時性,而且使采集板和用戶監(jiān)測端數(shù)據(jù)交互更為快捷。同時,在水下通過加入互聯(lián)設備,易于水下設備的擴展或組網(wǎng)。系統(tǒng)很好地滿足了海洋數(shù)據(jù)實時傳輸?shù)男枨?,達到了傳輸速率在相同條件下優(yōu)于RS232、RS485、CAN總線傳輸速度的設計目標。
參考文獻
[1] 莊彥霞,孫運強,姚愛琴.基于CAN總線的實時數(shù)據(jù)傳輸系統(tǒng)[J].數(shù)據(jù)采集與處理,2006,12(21):222-225.
[2] 陳敬謙,何志偉,劉文澤.RS2232與CAN總線協(xié)議轉(zhuǎn)換單元設計[J].電子工程師,2004,30(4):63-66.
[3] 宋鑫,郭勇,謝興紅.RMII模式以太網(wǎng)PHY芯片DP83848C的應用[J].單片機與嵌入式系統(tǒng)應用,2010(8):50-53.
[4] 王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微控制器原理與實踐[M].北京:北京航空航天大學出版社,2008:366-368.
[5] THOMAS G.用于控制TCP/UDP[J].國內(nèi)外機電一體化技術(shù),2001,6(4):9-11.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。