文獻標識碼: A
文章編號: 0258-7998(2012)08-0026-04
以海底觀測節點為載體的海洋數據采集與傳輸系統,可以實現海平面以下水環境監測數據的實時、自動獲取,它由各個傳感器、CPU控制器、數據傳輸接口以及水上遠程監測平臺組成,可為海洋的探索和監測提供豐富的信息和資料。從我國開始研制海洋數據采集與監測系統至今,先后采用了多種數據傳輸方式[1],包括RS232、RS485、CAN總線等,各個傳輸方式各有利弊。RS232支持全雙工通信,雖然是眾多設備的直接連接渠道,但傳輸速率慢、抗干擾能力差、傳輸距離短;RS485只支持半雙工通信,抗噪聲干擾性好,傳輸距離較RS232遠,但傳輸速率慢;CAN總線只支持半雙工通信,通信距離遠,抗干擾能力強,但傳輸速率仍有限制[2]。根據數據采集及傳輸系統對數據傳輸速率的要求,本文利用LwIP作為以太網協議棧,完成LwIP TCP/IP協議棧在STM32F207VGT6的移植;考慮到以太網支持全雙工通信,同時利用以太網中的UDP傳輸方式實現各類傳感器開啟、采集間隔的控制以及對采集數據的實時監測,大幅度提高了系統遠程的可控性及實時性。
1 系統工作原理
海洋數據采集與傳輸系統的整體結構如圖1所示。其中數據采集板是本系統設計和實現的主要組成部分,本文主要闡述由傳感器、數據采集板和用戶遠程檢測終端組成的海洋數據采集與傳輸系統。它主要完成對傳感器采集到的數據進行存儲和傳輸以及對傳感器進行實時監測,其目的是提高傳感器水下工作時長、提供外部電源供電引腳、方便進行長期觀測。
海洋數據采集與傳輸系統工作原理為:當水下傳感器采集到數據時,即刻通過串口傳遞至數據采集板,采集板收到數據請求信號,立即執行SD卡數據存儲操作,并通過以太網對數據進行接收,在UDP傳輸方式下通過網線將數據傳遞至用戶遠程計算機終端。數據接收完畢后,水下傳感器繼續執行數據的采集。與此同時,遠程計算機終端通過網絡發送控制命令,信號經網絡傳輸至采集板CPU,CPU進行命令解析,針對不同的解析結果對傳感器發送相應控制命令,實現對傳感器開啟、采集間隔設置的實時控制。
CTD傳感器1~傳感器5是一般的RS232接口傳感器,而耦合傳感器1、2、3屬于感應耦合自容式傳感器,若要連入電路,需要加入調制解調模塊。兩種傳感器除了都能以RS232形式輸出數據外,也可進行自容式存儲。
2 系統硬件
目前,實現傳感器串行數據與以太網數據交換的方式主要有3種:(1)使用專用的網絡處理芯片;(2)使用高檔嵌入式系統處理;(3)使用單片機和網絡控制芯片。通過比較可以發現:第(1)種成本較高,且用戶需要重新設計接口;第(2)種成本也較高,且如果僅用于通信接口,芯片資源則不能充分利用;相比較而言,通過從成本和使用場合考慮,第(3)種方法成本低,實現比較容易,并且可以根據實際需要進行功能擴展,只是軟件編程工作量比較大。因此本文采用第三種方法來實現。
本系統中主控板微處理器選用ST公司基于Cortex-M3內核的32 bit微處理器STM32F207,其主頻達120 MHz,專用于網絡型嵌入式設備中。STM32F207具有豐富的串口資源、4路USART通道、2路UART通道。其中USART1和USART6最高波特率支持7.5 Mb/s,其他接口最高支持3.75 Mb/s,不僅支持調制解調模塊、傳感器的物理連接,而且對于數據的傳輸也提供了較高的傳輸速率,可以有效縮短傳感器通過串口下載歷史數據的時間。
以太網收發芯片選用美國National公司的10/100 M以太網物理層收發芯片DP83848C,該芯片遵循Ethernet II和IEEE802.3u標準,同時支持MII、RMII、SNI三種數據連接方式,內部還集成了數據收發及濾波功能。在全雙工模式下,可以同時實現發送和接收,理論上最高速度能達到100 Mb/s,本文對其配置為100 Mb/s。采集板簡要框圖如圖2所示。
如圖2所示,微控制器與以太網收發芯片間采用了RMII模式[3]。這種方式在保持物理層器件現有特性的前提下減少了PHY的連接引腳,在保持IEEE802.3規范中所有特性的同時,降低了系統設計的成本。
3 系統軟件設計
本系統軟件設計包括兩部分:水下采集板傳感器數據采集、傳輸程序和遠程用戶界面實時監測程序。其中,采集板程序均在KEIL Uvision4下編譯、測試,遠程監測程序在Visual Studio 2008下編譯、測試。
3.1 TCP/IP協議棧——LwIP 移植
LwIP是瑞士計算機科學院的Adam Dunkles等人開發的用于嵌入式系統的開放源碼TCP/IP協議棧,其在保持TCP主要功能的基礎上減少對RAM的占用,一般只需要幾十字節的RAM和40 KB左右的ROM就可運行,使LwIP適合在中低端的嵌入式系統中應用。
嵌入式TCP/IP協議棧有兩種普遍的實現方式:一種是將協議簇中的每個協議作為一個單獨的進程,并指定進程之間的通信點。其優點在于結構清晰,代碼易懂,占用系統資源較少,且方便調試;另一種方式是將協議棧駐留在操作系統內核中,應用程序通過系統調用與協議棧通信。該方式對系統RAM、ROM資源占用較高,且不能很好地支持MDK[4]環境下的斷點調試。故本文選擇第一種方式。
3.2 STM32F207采集板程序設計
主程序設計可以分為以下4個步驟:
(1)系統初始化
上電后,對系統時鐘、LwIP協議棧、RTC實時時鐘、通用I/O口初始化配置。
(2)串口配置和通信
在STM32中,struct USART_InitTypeDef中包括了串口的波特率、字符位數和奇偶校驗等重要屬性,在設置好該結構體后,調用串口USART_Init使串口屬性生效。配置好串口后,用USART_DMACmd函數配置串口以DMA直接內存訪問,當有傳感器數據到達串口的緩沖區時,直接存儲至DMA指定緩沖區中,同時,當數據到達最大長度時,執行數據傳出、SD卡存儲并清空緩沖區。
(3)遠程端命令偵聽
在LwIP中,struct udp_pcb包括了以太網數據最小傳輸單元的類型、IP地址、子網掩碼、網關、當前端口號、目的端口號等重要屬性,在創建好udp_pcb之后,調用udp API操作函數udp_bind使指定的udp數據單元屬性生效。對于以太網數據的讀寫,設置以太網讀寫超時是非常重要的,LwIP_Periodic_Handle函數提供了這樣的功能。配置好udp后,用udp_recv函數打開數據接收回調函數,通過回調函數體中第二個參數創建監聽線程。在監聽中無線程阻塞,當接收到遠程數據報時,用udp_send寫數據。遠程控制端對水下采集板的監測是在監聽線程udp_echoserver_receive_callback中完成的,接著,將接收到的命令反饋至CPU,CPU根據不同的命令,決定是否開啟傳感器。
(4)數據幀整合
根據傳感器的不同,將采集到的數據幀進行排序、整合,按照固定順序整合成特定幀格式,最后通過以太網發送至遠程監測端。采集板程序流程如圖3所示。
3.3 遠程用戶監測程序設計
遠程用戶控制端主要實現對水下采集板采集到的數據和傳感器工作狀態的實時監測。控制端通過查找IP地址的形式對連接在用戶局域網內的設備進行搜索,經過濾,找出設備,與水下采集板建立虛擬鏈接。然后以UDP面向無連接的通信方式[5]通過以太網接口向采集板發送傳感器開啟命令。待發送完畢后,每隔1 s時間,控制端間歇性地通過以太網向水下系統發送獲取數據命令,用于得到最新的采集數據。若采集板中已收到傳感器當前采集的數據,隨即將水下系統中已整合的幀數據再次通過以太網傳遞至遠程控制端。當接收到完整幀數據后,控制端通過分析之前的數據通信協議,對數據包進行解析,將各類傳感器分別采集到的數據進行分離,顯示在用戶界面中。程序流程如圖4所示。
4 系統調試
在實驗室環境下,將采集板的4個串口分別與調制解調器、CTD傳感器1、2、3相連,網口通過網線與電腦的網口相連。采集板程序中設置 UDP偵聽端口號為5 000、子網掩碼為255.255.255.1,網關為192.168.1.1,設置本地IP為192.168.1.103,采集板IP地址為192.168.1.220,這兩個地址不能與局域網其他地址沖突。系統上電后,在局域網的PC機中,通過ping命令,發送ICMP請求,客戶端可得到ICMP回應。接著打開PC機上用戶遠程監測軟件,通過搜索指定目標IP,搜索到采集板設備,此時采集板與PC機控制端握手成功后進行數據通信,按照配置的采集時間間隔,采集板將數據保存在SD中。其中,傳感器每秒采集數據長度約500 B。經10 min運行,通過將監測軟件顯示的以太網幀數據與SD卡中的數據進行比較可知,系統運行穩定;通過PC機對傳感器配置不同采集間隔時,兩種方式下數據仍保持一致。
接著同樣以每秒500 B的數據量近似作為傳感器采集數據長度,系統均運行10 min,分別對采用串口RS232、RS485、CAN總線傳輸方式下傳輸完成時間、誤碼數進行測試,得出的結果如表1所示。
由表1中測試結果可知,在相同傳輸條件下,以太網傳輸速度是RS232的14.03倍,是RS485的3.97倍,是CAN總線的6.02倍,說明以太網在傳輸數據量較大的情況下,不管在傳輸時間方面還是在誤碼數方面都占有優勢。
在實驗室模擬調試的基礎上,在戶外也進行了進一步的測試,選擇水深、湖區面積適中的杭州千島湖中心湖區作為野外主要實測地點。測試前主要將浮球、水下數據采集系統放入水中,接著進行為期一周的實地觀測。結果表明,系統工作正常,達到了預期的測試效果。這里選擇其中某個時間點對監測軟件的顯示界面進行截圖,如圖5所示。
本文利用基于LwIP協議棧的以太網設計和實現了一種海洋數據采集與傳輸系統。該采集系統豐富的串口資源使其至多可接入6種不同的傳感器設備。設計時,在保證數據傳輸穩定的前提下,用以太網傳輸代替傳統的數據傳輸模式,不僅提高了系統實時性,而且使采集板和用戶監測端數據交互更為快捷。同時,在水下通過加入互聯設備,易于水下設備的擴展或組網。系統很好地滿足了海洋數據實時傳輸的需求,達到了傳輸速率在相同條件下優于RS232、RS485、CAN總線傳輸速度的設計目標。
參考文獻
[1] 莊彥霞,孫運強,姚愛琴.基于CAN總線的實時數據傳輸系統[J].數據采集與處理,2006,12(21):222-225.
[2] 陳敬謙,何志偉,劉文澤.RS2232與CAN總線協議轉換單元設計[J].電子工程師,2004,30(4):63-66.
[3] 宋鑫,郭勇,謝興紅.RMII模式以太網PHY芯片DP83848C的應用[J].單片機與嵌入式系統應用,2010(8):50-53.
[4] 王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微控制器原理與實踐[M].北京:北京航空航天大學出版社,2008:366-368.
[5] THOMAS G.用于控制TCP/UDP[J].國內外機電一體化技術,2001,6(4):9-11.