劉敬彪,翁 杰,于海濱
(杭州電子科技大學電子信息學院, 杭州310018)
隨著衛星通訊、衛星遙感、水聲遙測以及數據同化等技術的不斷發展與成熟,海洋環境監測已進入從空間、沿岸、水面及水下對海洋環境進行立體監測的時代。海洋浮標是一種現代化的海洋觀測設施。它具有全天候、全天時穩定可靠地收集海洋環境資料的能力,并能實現數據的自動采集、自動標示和自動發送。海洋浮標與衛星、飛機、調查船、潛水器及聲波探測設備一起,組成了現代海洋環境主體監測系統,為探測海洋的奧秘,立下了不朽功勛。
海洋浮標,一般分為水上和水下兩部分,水上部分裝有多種氣象要素傳感器,分別測量風速、風向、氣溫、氣壓和溫度等氣象要素;水下部分有多種水文要素傳感器以及海洋環境化學參數測量傳感器,分別測量波浪、海流、潮位、海溫、鹽度、pH值、葉綠素、營養鹽、濁度等。
各種傳感器將采集到的信號,通過儀器自動處理,由發射機定時發出。地面接收站將收到的信號經過處理后,就得到了人們所需要的資料。通過對這些資料的掌握,會給人們的生產和生活帶來極大的便利。如知道了海流流向,航海時便盡可能順流而行;知道了風暴區域,航海時則可避開繞行;知道了潮位的異常升高,便可及時防備突發事件。
海洋資料浮標的實時數據傳輸系統是浮標的重要組成部分。從我國開始研制海洋資料浮標以來,實時數據傳輸系統先后采用過多種數據通訊方式[1],包括短波通訊、INMARSAT-C衛星通訊以及GPRS/CDMA通訊等。各種通訊方式各有優點和局限性,短波通訊抗干擾能力差,誤碼率高,數據接收率低;INMARSAT-C衛星通訊可靠性高,數據接收率達95%以上,但通訊費用較高,不適合大數據量傳輸;GPRS/CDMA通訊費用較低,但通訊信號受到浮標到岸邊距離的限制。我們根據浮標系統數據傳輸的技術要求,采用銥星數據通訊傳輸大數據量的實時資料。
本文第1節介紹系統組成。第2節給出電子系統整體設計。第3節給出通信系統設計。第4節給出控制系統軟件設計。第5節得出結論。
本文設計的浮標電子與通信系統是海洋定點垂直剖面監控系統的子系統。整個監控系統還包括水下數據采集子系統。浮標電子與通信系統的核心部分是基于ARM的嵌入式處理器和Linux操作系統的水下數據處理和控制系統。浮標系統根據已定的協議,接收到電磁耦合模塊傳過來的數據,并保存在大容量存儲器中??紤]到如果用有線通信方式,則由于通信距離不斷變化會導致傳輸線路設計困難、通信的可靠性都難以保障。而電磁耦合通信正是利用電磁感應原理來傳輸數據的,它的設計電路簡單可靠,體積小,成本低,可以實現在水下的近距離無線傳輸。圖1是整個監測控制系統工作流程圖,電磁耦合模塊包括接收和發送兩部分。

圖1 監測控制系統工作流程圖
波浪能通過錨纜傳遞轉化為垂直剖面測量系統水下主體部分(小浮力浮球)下行的動能。系統將充分利用大、小浮球的浮力慣性實現抽纜(相當于水下主體部分的下行)功能,當需上行時,只需打開鎖閥。在依靠小浮球浮力上行過程中采集各環境參數變量。
整個一次數據采集、存儲,送到水上通訊平臺,最后海洋環境數據送到監測平臺周期為24 h,也就是每隔24 h采集各剖面環境量。垂直剖面觀測深度為300 m。整個系統維護周期約為三個月一次。
在整個測量系統中,控制系統是核心單元。水下監測數據采集平臺的控制塊在儀器倉內。它負責指揮和協調系統各部分工作狀態。包括控制海洋各剖面數據的采集、存儲、數據處理、傳輸等。本文描述的水上通訊平臺的控制部分主要接收電磁耦合模塊傳過來的各個采集量,以及獲取浮標電壓值和浮標姿態等信息,然后通過銥星衛星[2]發送給監控中心。
浮標電子與通信系統采用太陽能電池和蓄電池組合供電。平臺的主體是浮標部分。為提高可靠性,有的浮標采用兩個獨立的供電系統,每個系統都有蓄電池和太陽能電池板,都能為整個浮標供電。這種備份盡管不是必需的,但它提高了浮標的可靠性等級。浮標控制系統的CPU采用AT91SAM9260,一路串口按序接收電磁耦合發送模塊傳過來的各個傳感器的采集數據,并保存在SD大容量存儲卡中(如圖2)。存于卡中的各路傳感器采集的數據通過銥星衛星發送, ARM9的COM2口接銥星SBD 9601模塊,用來與監控中心進行通信。

圖2 浮體平臺結構圖
同時,浮標上裝有錨燈,內有傳感器檢測光線,自動點亮,給監測帶來方便。同時CPU通過I/O獲取錨燈狀態信息。
AT91SAM9260通過自帶的A/D讀取電池的電壓值和傾角傳感器獲得的浮標姿態信息。
浮標上裝有GPS天線,用于定位。
通信系統是為了滿足監測數據能及時有效地傳送給監控中心進行觀測。根據浮標系統數據傳輸的技術要求,本系統采用銥星數據通訊傳輸大數據量的實時資料。
浮標通信系統的結構圖如圖3所示。

圖3 浮標通信系統組成
具體的衛星通信模塊是由是由銥星公司推出9601SBD[3-4],體 積 小, 長 度、寬 度 和 厚 度 分 別 為106 mm, 56.2 mm和13 mm,重量117 g。9601不需要SIM卡,每次最多可以發送340字節信息,可以接收270 字節信息,當有信息收到時能夠發出振鈴。工作溫度-35°~70°,工作電壓5 V。該模塊通過RS232接口實現SBD(突發短數據)業務,默認的波特率是19 200 bit/s,可以通過AT+IPR指令設置??梢赃x擇的波特率bit/s范圍包括:1 200、2 400、4 800、9 600、19 200、38 400等??蛇x數據長度7位或8位,默認為8位。其他包括一個停止位和無奇偶校驗位。銥星SBD的待機平均電流為66 mA,信息發送中的平均電流<=350 mA,能夠滿足海洋浮標設備低功耗的要求。
該模塊通過點對點的方式實現數據收發,即浮標平臺和監控平臺各有一個9601SBD MODEN。通過發送“AT”指令來實現通信。海洋環境監測數據通過安裝在浮標頂端的銥星天線發射出去。
控制系統采用了AT91SAM9260作為CPU,它支持主流的Linux、Windows XP等操作系統。目標板上移植了Linux操作系統來進行任務管理和調度,改變了傳統的在類似硬件平臺下采用MSDOS單用戶、單任務操作系統難以完成較為復雜的分布式多任務應用的缺點。在數據采集系統中, Linux系統可以同時處理多個傳感器發送來的較為復雜的控制任務,從而提高系統的整體響應速度及并發處理能力。
構成嵌入式Linux系統至少需要下面3個基本元素[5]:引導程序, Linux微內核和初始化進程。如果要讓它有更多的功能,還可加上文件系統、GUI和設計精簡的應用程序,并將其放在diskonchip中啟動。
在Linux操作系統下,有三類主要的設備文件類型:字符設備、塊設備和網絡設備。字符設備和塊設備的主要區別是在對字符設備發出讀/寫請求時,實際的硬件I/O一般緊接著發生;塊設備則不然,它利用一塊系統內存做緩沖區,當用戶進程對設備請求能滿足用戶的要求時,就返回請求的數據;如果不能,就調用請求函數來進行實際的I/O操作。塊設備是主要針對磁盤等慢速設備設計的,以免耗費過多的CPU時間來等待。用戶進程通過設備文件來與實際的硬件打交道。每個設備文件都有其文件屬性(c/b),表示是字符設備還是塊設備。每個文件都有兩個設備號, 第一個是主設備號,標志驅動程序;第二個是從設備號,標志使用同一個設備驅動程序的不同的硬件設備。設備文件的主設備號必須與設備驅動程序在登記時申請的主設備號一致,否則用戶進程將無法訪問到驅動程序。
Linux操作系統將所有設備作為文件來處理[6],他們可以使用文件、I/O相關函數來處理,這樣就方便了對設備的處理。例如:串口文件位于/dev目 錄下, 串 口 1 為/dev/ttyS0, 串 口 2 為/dev/ttyS1。打開串口用標準的文件打開函數操作。如:int fd=open(Dev, O_RDWR);Dev是設備文件,返回-1則表示打開失敗,成功則返回大于0的值。
其中幾個主要函數如下:
set_speed(fd, 115200) //設置 串口 波特 率函數, fd對應 的串口文件
set_Parity(fd, 8, 1, 'N')” //設置 串口接 收數 據格 式, 8位 數據位, 1位停止位, 無校驗
OpenDev("/dev/ttyS1")//打開串口1
w rite(fd, buff, nread) //往串口buff寫nread字節數 據
nread=read(fd, buff, 512)//讀串 口緩 沖區512字 節數 據, 返回讀取的實際個數
num=fwrite(buff, sizeof//往fp對應的文件寫nread字節
(char), nread, fp)
send_AT(AT_CMD[ 0] , //銥星MODEN發送AT指令
iridium)
close(fd) //關閉文件(包括普通文件和設備文件)
對串口的操作[7]需要用到的頭文件有:
#include <stdio.h> //標準輸入輸出定義
#include <fcntl.h> //對文件控制的函數
#include <stdlib.h> //標準函數庫定義
#include <unistd.h> //Unix標準函數定義
#include <sys/types.h>//系統函數定義
#include <sys/stat.h> //系統調用的函數頭文件
#include <termios.h> //POSIX終端控制定義
#include <errno.h> //錯誤號定義
#include <pthread.h> //線程庫定義
浮標電子系統接收電磁耦合通信模塊(RS232)傳送過來的數據,并將傳感器采集到的海洋環境數據保存到大容量的SD卡中。具體的流程圖如圖4。

圖4 浮標電子系統程序流程圖
接收完水下數據采集系統傳送的數據并保存后,打開與銥星9601SBD MODEN連接的串口。并打開保存于卡中的文件。發送AT指令,在得到應答信號后發送數據,每次最多只能發送340字節。浮標通信系統流程圖如圖5。

圖5 浮標通信系統流程圖
系統在實驗室PC機調試助手模擬數據發送,通過電磁耦合接收、發送模塊成功將數據送到水上浮標系統的ARM中并保存到大容量的SD卡中,實現了浮標系統與水下數據采集系統的數據傳送。隨后讀取文件中保存的數據,打開9601SBD MODEN,發送給另一臺PC。PC機端的9601SBD MODEN接收數據,并在上位機上[8]動態的顯示收到的數據。在水下進行測試過程中,控制電路工作正常,水上浮體平臺數據能正常接收、存儲,傾角傳感器、電池電壓值能通過A/D采集。且監測數據通過銥星衛星成功發送給監控中心。
[ 1] 張曙偉,王秀芬,齊勇.銥星數據通信在海洋資料浮標上的應用[J] .山東科學, 2006, 19(5):16-19.
[ 2] 劉解華,楊東靚,邢她棟,等.基于PC 104工控機/GPS/銥星通信的海洋監測系統[ J] .計算機測量與控制, 2005, 13(11):1161-1163.
[ 3] 張治平, 張秉豪.衛星通信技術在石油測井作業中的應用[J].CNSSWorld of China, 2008, 3:42-45.
[ 4] 龔文剛.新型海洋資料浮標數據采集控制系統研究與概念設計[J] .海洋技術, 1996, 15(4):79-89.
[ 5] 孫天澤,袁文菊,張海峰編著.嵌入式設計及Linux驅動開發指南-基于ARM9處理器[M].北京:電子工業出版社, 2006.
[ 6] 于磊,曾剛.POSIX多線程程序設計[ M] .北京:中國電力出版社, 2003.
[ 7] 羅苑棠,德.嵌入式Linux應用系統開發實例精講[ M] .北京:電子工業出版社, 2007.
[ 8] 孫鑫,余安萍.VC++深入詳解[ M] .北京:電子工業出版社,2007.