文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)08-0026-04
以海底觀測節(jié)點為載體的海洋數(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就可運行,,使LwIP適合在中低端的嵌入式系統(tǒng)中應(yīng)用,。
嵌入式TCP/IP協(xié)議棧有兩種普遍的實現(xiàn)方式:一種是將協(xié)議簇中的每個協(xié)議作為一個單獨的進(jìn)程,并指定進(jìn)程之間的通信點,。其優(yōu)點在于結(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ào)試。故本文選擇第一種方式,。
3.2 STM32F207采集板程序設(shè)計
主程序設(shè)計可以分為以下4個步驟:
(1)系統(tǒng)初始化
上電后,,對系統(tǒng)時鐘、LwIP協(xié)議棧,、RTC實時時鐘,、通用I/O口初始化配置。
(2)串口配置和通信
在STM32中,,struct USART_InitTypeDef中包括了串口的波特率,、字符位數(shù)和奇偶校驗等重要屬性,在設(shè)置好該結(jié)構(gòu)體后,,調(diào)用串口USART_Init使串口屬性生效,。配置好串口后,用USART_DMACmd函數(shù)配置串口以DMA直接內(nèi)存訪問,,當(dāng)有傳感器數(shù)據(jù)到達(dá)串口的緩沖區(qū)時,,直接存儲至DMA指定緩沖區(qū)中,同時,,當(dāng)數(shù)據(jù)到達(dá)最大長度時,,執(zhí)行數(shù)據(jù)傳出、SD卡存儲并清空緩沖區(qū),。
(3)遠(yuǎn)程端命令偵聽
在LwIP中,,struct udp_pcb包括了以太網(wǎng)數(shù)據(jù)最小傳輸單元的類型、IP地址,、子網(wǎng)掩碼,、網(wǎng)關(guān),、當(dāng)前端口號,、目的端口號等重要屬性,在創(chuàng)建好udp_pcb之后,,調(diào)用udp API操作函數(shù)udp_bind使指定的udp數(shù)據(jù)單元屬性生效,。對于以太網(wǎng)數(shù)據(jù)的讀寫,設(shè)置以太網(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)聽中無線程阻塞,當(dāng)接收到遠(yuǎn)程數(shù)據(jù)報時,用udp_send寫數(shù)據(jù),。遠(yuǎn)程控制端對水下采集板的監(jiān)測是在監(jiān)聽線程udp_echoserver_receive_callback中完成的,,接著,將接收到的命令反饋至CPU,,CPU根據(jù)不同的命令,,決定是否開啟傳感器。
(4)數(shù)據(jù)幀整合
根據(jù)傳感器的不同,,將采集到的數(shù)據(jù)幀進(jìn)行排序,、整合,按照固定順序整合成特定幀格式,,最后通過以太網(wǎng)發(fā)送至遠(yuǎn)程監(jiān)測端,。采集板程序流程如圖3所示。
3.3 遠(yuǎn)程用戶監(jiān)測程序設(shè)計
遠(yuǎn)程用戶控制端主要實現(xiàn)對水下采集板采集到的數(shù)據(jù)和傳感器工作狀態(tài)的實時監(jiān)測,??刂贫送ㄟ^查找IP地址的形式對連接在用戶局域網(wǎng)內(nèi)的設(shè)備進(jìn)行搜索,經(jīng)過濾,,找出設(shè)備,,與水下采集板建立虛擬鏈接。然后以UDP面向無連接的通信方式[5]通過以太網(wǎng)接口向采集板發(fā)送傳感器開啟命令,。待發(fā)送完畢后,,每隔1 s時間,控制端間歇性地通過以太網(wǎng)向水下系統(tǒng)發(fā)送獲取數(shù)據(jù)命令,,用于得到最新的采集數(shù)據(jù),。若采集板中已收到傳感器當(dāng)前采集的數(shù)據(jù),隨即將水下系統(tǒng)中已整合的幀數(shù)據(jù)再次通過以太網(wǎng)傳遞至遠(yuǎn)程控制端,。當(dāng)接收到完整幀數(shù)據(jù)后,,控制端通過分析之前的數(shù)據(jù)通信協(xié)議,對數(shù)據(jù)包進(jìn)行解析,,將各類傳感器分別采集到的數(shù)據(jù)進(jìn)行分離,,顯示在用戶界面中。程序流程如圖4所示,。
4 系統(tǒng)調(diào)試
在實驗室環(huán)境下,,將采集板的4個串口分別與調(diào)制解調(diào)器、CTD傳感器1,、2,、3相連,網(wǎng)口通過網(wǎng)線與電腦的網(wǎng)口相連,。采集板程序中設(shè)置 UDP偵聽端口號為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,,這兩個地址不能與局域網(wǎng)其他地址沖突。系統(tǒng)上電后,,在局域網(wǎng)的PC機(jī)中,,通過ping命令,發(fā)送ICMP請求,,客戶端可得到ICMP回應(yīng),。接著打開PC機(jī)上用戶遠(yuǎn)程監(jiān)測軟件,通過搜索指定目標(biāo)IP,,搜索到采集板設(shè)備,,此時采集板與PC機(jī)控制端握手成功后進(jìn)行數(shù)據(jù)通信,按照配置的采集時間間隔,,采集板將數(shù)據(jù)保存在SD中,。其中,傳感器每秒采集數(shù)據(jù)長度約500 B,。經(jīng)10 min運行,,通過將監(jiān)測軟件顯示的以太網(wǎng)幀數(shù)據(jù)與SD卡中的數(shù)據(jù)進(jìn)行比較可知,系統(tǒng)運行穩(wěn)定,;通過PC機(jī)對傳感器配置不同采集間隔時,,兩種方式下數(shù)據(jù)仍保持一致。
接著同樣以每秒500 B的數(shù)據(jù)量近似作為傳感器采集數(shù)據(jù)長度,,系統(tǒng)均運行10 min,,分別對采用串口RS232、RS485,、CAN總線傳輸方式下傳輸完成時間,、誤碼數(shù)進(jìn)行測試,得出的結(jié)果如表1所示,。
由表1中測試結(jié)果可知,,在相同傳輸條件下,以太網(wǎng)傳輸速度是RS232的14.03倍,,是RS485的3.97倍,,是CAN總線的6.02倍,說明以太網(wǎng)在傳輸數(shù)據(jù)量較大的情況下,,不管在傳輸時間方面還是在誤碼數(shù)方面都占有優(yōu)勢。
在實驗室模擬調(diào)試的基礎(chǔ)上,,在戶外也進(jìn)行了進(jìn)一步的測試,,選擇水深,、湖區(qū)面積適中的杭州千島湖中心湖區(qū)作為野外主要實測地點。測試前主要將浮球,、水下數(shù)據(jù)采集系統(tǒng)放入水中,,接著進(jìn)行為期一周的實地觀測。結(jié)果表明,,系統(tǒng)工作正常,,達(dá)到了預(yù)期的測試效果。這里選擇其中某個時間點對監(jiān)測軟件的顯示界面進(jìn)行截圖,,如圖5所示,。
本文利用基于LwIP協(xié)議棧的以太網(wǎng)設(shè)計和實現(xiàn)了一種海洋數(shù)據(jù)采集與傳輸系統(tǒng)。該采集系統(tǒng)豐富的串口資源使其至多可接入6種不同的傳感器設(shè)備,。設(shè)計時,,在保證數(shù)據(jù)傳輸穩(wěn)定的前提下,用以太網(wǎng)傳輸代替?zhèn)鹘y(tǒng)的數(shù)據(jù)傳輸模式,,不僅提高了系統(tǒng)實時性,,而且使采集板和用戶監(jiān)測端數(shù)據(jù)交互更為快捷。同時,,在水下通過加入互聯(lián)設(shè)備,,易于水下設(shè)備的擴(kuò)展或組網(wǎng)。系統(tǒng)很好地滿足了海洋數(shù)據(jù)實時傳輸?shù)男枨?,達(dá)到了傳輸速率在相同條件下優(yōu)于RS232,、RS485、CAN總線傳輸速度的設(shè)計目標(biāo),。
參考文獻(xiàn)
[1] 莊彥霞,,孫運強(qiáng),姚愛琴.基于CAN總線的實時數(shù)據(jù)傳輸系統(tǒng)[J].數(shù)據(jù)采集與處理,,2006,,12(21):222-225.
[2] 陳敬謙,何志偉,,劉文澤.RS2232與CAN總線協(xié)議轉(zhuǎn)換單元設(shè)計[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微控制器原理與實踐[M].北京:北京航空航天大學(xué)出版社,2008:366-368.
[5] THOMAS G.用于控制TCP/UDP[J].國內(nèi)外機(jī)電一體化技術(shù),,2001,,6(4):9-11.