《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LwIP的海洋數(shù)據(jù)采集與傳輸系統(tǒng)
基于LwIP的海洋數(shù)據(jù)采集與傳輸系統(tǒng)
來(lái)源:電子技術(shù)應(yīng)用2012年第8期
王 暉,周巧娣,章雪挺,盛慶華
杭州電子科技大學(xué) 電子信息學(xué)院,浙江 杭州310018
摘要: 針對(duì)海洋數(shù)據(jù)采集系統(tǒng)中串行數(shù)據(jù)傳輸能力不能滿足海洋環(huán)境實(shí)時(shí)監(jiān)測(cè)需求的現(xiàn)狀,設(shè)計(jì)并實(shí)現(xiàn)了一種傳輸速率較高的以太網(wǎng)數(shù)據(jù)傳輸系統(tǒng)。系統(tǒng)以STM32F207VGT6處理器為核心,選擇輕量級(jí)的LwIP作為以太網(wǎng)協(xié)議棧,將LwIP TCP/IP協(xié)議棧移植到STM32F207VGT6上,在應(yīng)用層實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)、串口數(shù)據(jù)雙向傳輸?shù)臄?shù)據(jù)傳輸系統(tǒng)。經(jīng)測(cè)試,其傳輸速率優(yōu)于同條件下RS232、RS485、CAN總線的傳輸速度,滿足了設(shè)計(jì)要求。
中圖分類號(hào): TP274+.2
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

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

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


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

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

 


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

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

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

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

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

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