文獻標識碼: A
文章編號: 0258-7998(2012)08-0026-04
以海底觀測節(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.