基于LwIP的海洋數(shù)據(jù)采集與傳輸系統(tǒng)
摘 要: 針對海洋數(shù)據(jù)采集系統(tǒng)中串行數(shù)據(jù)傳輸能力不能滿足海洋環(huán)境實時監(jiān)測需求的現(xiàn)狀,設(shè)計并實現(xiàn)了一種傳輸速率較高的以太網(wǎng)數(shù)據(jù)傳輸系統(tǒng)。系統(tǒng)以STM32F207VGT6處理器為核心,選擇輕量級的LwIP作為以太網(wǎng)協(xié)議棧,將LwIP TCP/IP協(xié)議棧移植到STM32F207VGT6上,在應(yīng)用層實現(xiàn)了一個網(wǎng)絡(luò)、串口數(shù)據(jù)雙向傳輸?shù)臄?shù)據(jù)傳輸系統(tǒng)。經(jīng)測試,其傳輸速率優(yōu)于同條件下RS232、RS485、CAN總線的傳輸速度,滿足了設(shè)計要求。
關(guān)鍵詞: 數(shù)據(jù)采集;LwIP;TCP/IP;數(shù)據(jù)傳輸
以海底觀測節(jié)點(diǎn)為載體的海洋數(shù)據(jù)采集與傳輸系統(tǒng),可以實現(xiàn)海平面以下水環(huán)境監(jiān)測數(shù)據(jù)的實時、自動獲取,它由各個傳感器、CPU控制器、數(shù)據(jù)傳輸接口以及水上遠(yuǎn)程監(jiān)測平臺組成,可為海洋的探索和監(jiān)測提供豐富的信息和資料。從我國開始研制海洋數(shù)據(jù)采集與監(jiān)測系統(tǒng)至今,先后采用了多種數(shù)據(jù)傳輸方式[1],包括RS232、RS485、CAN總線等,各個傳輸方式各有利弊。RS232支持全雙工通信,雖然是眾多設(shè)備的直接連接渠道,但傳輸速率慢、抗干擾能力差、傳輸距離短;RS485只支持半雙工通信,抗噪聲干擾性好,傳輸距離較RS232遠(yuǎn),但傳輸速率慢;CAN總線只支持半雙工通信,通信距離遠(yuǎn),抗干擾能力強(qiáng),但傳輸速率仍有限制[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)遠(yuǎn)程的可控性及實時性。
1 系統(tǒng)工作原理
海洋數(shù)據(jù)采集與傳輸系統(tǒng)的整體結(jié)構(gòu)如圖1所示。其中數(shù)據(jù)采集板是本系統(tǒng)設(shè)計和實現(xiàn)的主要組成部分,本文主要闡述由傳感器、數(shù)據(jù)采集板和用戶遠(yuǎn)程檢測終端組成的海洋數(shù)據(jù)采集與傳輸系統(tǒng)。它主要完成對傳感器采集到的數(shù)據(jù)進(jìn)行存儲和傳輸以及對傳感器進(jìn)行實時監(jiān)測,其目的是提高傳感器水下工作時長、提供外部電源供電引腳、方便進(jìn)行長期觀測。
海洋數(shù)據(jù)采集與傳輸系統(tǒng)工作原理為:當(dāng)水下傳感器采集到數(shù)據(jù)時,即刻通過串口傳遞至數(shù)據(jù)采集板,采集板收到數(shù)據(jù)請求信號,立即執(zhí)行SD卡數(shù)據(jù)存儲操作,并通過以太網(wǎng)對數(shù)據(jù)進(jìn)行接收,在UDP傳輸方式下通過網(wǎng)線將數(shù)據(jù)傳遞至用戶遠(yuǎn)程計算機(jī)終端。數(shù)據(jù)接收完畢后,水下傳感器繼續(xù)執(zhí)行數(shù)據(jù)的采集。與此同時,遠(yuǎn)程計算機(jī)終端通過網(wǎng)絡(luò)發(fā)送控制命令,信號經(jīng)網(wǎng)絡(luò)傳輸至采集板CPU,CPU進(jìn)行命令解析,針對不同的解析結(jié)果對傳感器發(fā)送相應(yīng)控制命令,實現(xiàn)對傳感器開啟、采集間隔設(shè)置的實時控制。
CTD傳感器1~傳感器5是一般的RS232接口傳感器,而耦合傳感器1、2、3屬于感應(yīng)耦合自容式傳感器,若要連入電路,需要加入調(diào)制解調(diào)模塊。兩種傳感器除了都能以RS232形式輸出數(shù)據(jù)外,也可進(jìn)行自容式存儲。
2 系統(tǒng)硬件
目前,實現(xiàn)傳感器串行數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)交換的方式主要有3種:(1)使用專用的網(wǎng)絡(luò)處理芯片;(2)使用高檔嵌入式系統(tǒng)處理;(3)使用單片機(jī)和網(wǎng)絡(luò)控制芯片。通過比較可以發(fā)現(xiàn):第(1)種成本較高,且用戶需要重新設(shè)計接口;第(2)種成本也較高,且如果僅用于通信接口,芯片資源則不能充分利用;相比較而言,通過從成本和使用場合考慮,第(3)種方法成本低,實現(xiàn)比較容易,并且可以根據(jù)實際需要進(jìn)行功能擴(kuò)展,只是軟件編程工作量比較大。因此本文采用第三種方法來實現(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)模塊、傳感器的物理連接,而且對于數(shù)據(jù)的傳輸也提供了較高的傳輸速率,可以有效縮短傳感器通過串口下載歷史數(shù)據(jù)的時間。
以太網(wǎng)收發(fā)芯片選用美國National公司的10/100 M以太網(wǎng)物理層收發(fā)芯片DP83848C,該芯片遵循Ethernet II和IEEE802.3u標(biāo)準(zhǔn),同時支持MII、RMII、SNI三種數(shù)據(jù)連接方式,內(nèi)部還集成了數(shù)據(jù)收發(fā)及濾波功能。在全雙工模式下,可以同時實現(xiàn)發(fā)送和接收,理論上最高速度能達(dá)到100 Mb/s,本文對其配置為100 Mb/s。采集板簡要框圖如圖2所示。
如圖2所示,微控制器與以太網(wǎng)收發(fā)芯片間采用了RMII模式[3]。這種方式在保持物理層器件現(xiàn)有特性的前提下減少了PHY的連接引腳,在保持IEEE802.3規(guī)范中所有特性的同時,降低了系統(tǒng)設(shè)計的成本。
3 系統(tǒng)軟件設(shè)計
本系統(tǒng)軟件設(shè)計包括兩部分:水下采集板傳感器數(shù)據(jù)采集、傳輸程序和遠(yuǎn)程用戶界面實時監(jiān)測程序。其中,采集板程序均在KEIL Uvision4下編譯、測試,遠(yuǎn)程監(jiān)測程序在Visual Studio 2008下編譯、測試。
3.1 TCP/IP協(xié)議棧——LwIP 移植
LwIP是瑞士計算機(jī)科學(xué)院的Adam Dunkles等人開發(fā)的用于嵌入式系統(tǒng)的開放源碼TCP/IP協(xié)議棧,其在保持TCP主要功能的基礎(chǔ)上減少對RAM的占用,一般只需要幾十字節(jié)的RAM和40 KB左右的ROM就可運(yùn)行,使LwIP適合在中低端的嵌入式系統(tǒng)中應(yīng)用。
嵌入式TCP/IP協(xié)議棧有兩種普遍的實現(xiàn)方式:一種是將協(xié)議簇中的每個協(xié)議作為一個單獨(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)用程序通過系統(tǒng)調(diào)用與協(xié)議棧通信。該方式對系統(tǒng)RAM、ROM資源占用較高,且不能很好地支持MDK[4]環(huán)境下的斷點(diǎn)調(diào)試。故本文選擇第一種方式。
3.2 STM32F207采集板程序設(shè)計