姜 斌,陳永華,姜靜波
(中國科學院海洋研究所,山東 青島 266071)
浮標系統是一個無人的自動海洋觀測點,投放在一個固定的海域,可以在海洋任何氣象條件下,對氣象水文參數進行長期、自動、連續、全天候的記錄,目前已經發展為海洋監測技術的主要手段[1-2]。浮標岸站接收系統是整個浮標系統最后一個重要環節,氣象、水文及浮標狀態等資料都要通過岸站接收系統處理,由岸站負責浮標發送數據的接收、處理、顯示、存儲及轉發,可及時了解浮標的狀態信息,并使氣象、水文資料得到有效地利用。
目前的浮標岸站接收系統是將數據收集、處理、存儲、應用、分析、顯示功能以層層級聯的方式實現,若其中一個步驟出現問題,數據不會有效存儲和顯示,這會導致一個接收端口只能接收一種數據格式的浮標[3-6]。在布放浮標日益增多的情況下,計算機開放的端口也隨之增多,這為運行岸站接收系統的服務器安全埋下了隱患。即使同一個浮標經過維護后,因為傳感器等的變化,也會改變數據格式,這就導致在浮標維護后,必須修改完對應的浮標岸站接收程序后,才能布放浮標;在完成浮標布放后,如果更改浮標岸站接收系統中的數據換算方法,會導致數據庫中數據前后不一致,數據處理方式不靈活。
LabVIEW 是NI 公司開發的一種基于G 語言的圖形化編程語言,具有函數庫豐富、圖形化編程開發快捷、專業性強的特點[7-10]。本文提出了一種基于CS 架構的單端口接收多浮標的岸站接收系統,采用LabVIEW 開發,開發周期短,單端口可以接收多種數據格式的浮標數據,浮標的數據格式改變不會影響服務器端的數據接收工作,數據處理方式靈活高效。
浮標岸站接收系統具體需要實現的功能如下:
(1)數據接收:浮標岸站接收系統需要穩定接收來自浮標傳輸的數據,數據定時傳輸一次,數據內容包括浮標采集的水文、氣象信息以及浮標的狀態信息。數據接收要求穩定可靠,要有容錯能力,能夠滿足多浮標向一個端口傳輸數據的要求;
(2)數據存儲:浮標岸站接收系統需要將接收的浮標數據經過簡單地處理后存儲到數據庫[11-12]中和本地服務器中,數據庫中存儲的格式需要滿足方便按照時間和浮標號查詢。
(3)數據查詢:浮標岸站接收系統可以實時查詢浮標的最新數據,并按照格式解析成浮標采集的水文氣象信息以及浮標的狀態信息實時顯示,可以查詢指定歷史時間段內的某個參數的歷史信息并曲線顯示,可以在多臺計算機上同時查詢浮標數據。
(4)數據導出:岸站接收系統可以將指定時間段內的數據解析成浮標采集的水文氣象信息以及浮標的狀態信息,通過Excel 導出,以方便進行進一步的研究。
根據浮標岸站接收系統的設計需求,采用CS架構,如圖1 所示,海上的浮標數據采集系統將采集的數據傳輸給服務器端接收程序,服務器端接收程序將數據存儲在服務器上的數據庫中,客戶端顯示程序通過請求數據庫中的數據來獲取浮標的采集數據,在客戶端顯示程序中將請求到的數據按照格式解析成水文氣象信息以及浮標的狀態信息顯示出來。

圖1 浮標岸站接收系統設計思路
2.1.1 通訊格式設計 為了實現浮標岸站接收系統服務器端軟件的穩定接收以及客戶端軟件的方便查詢,需要設計浮標傳輸數據的通訊格式,通訊格式如圖2 所示。

圖2 浮標傳輸的數據格式
浮標岸站接收系統服務器端通常會收到干擾數據,為了準確獲得浮標發送的數據,需要將數據頭加上識別碼,這樣,浮標岸站接收系統服務器端可以準確獲得浮標發送的數據段;數據長度用于指示該次數據總的數據長度;浮標號用于識別是哪個浮標發送的數據;時間是浮標發送數據時的浮標中的時間;浮標狀態包括浮標所在經緯度、電池電壓、錨燈狀態、進水報警、門禁報警等信息;氣象數據包括風速、風向、溫濕壓等信息;水文數據包括水下不同深度的溫度、鹽度等信息;校驗碼用于驗證獲得的數據是完整和準確的。
2.1.2 數據庫格式設計 數據庫中的格式既需要滿足對不同長度數據存儲的要求,又要滿足方便浮標岸站接收系統客戶端根據時間標號查詢的要求。數據庫存儲格式如表1 所示。

表1 浮標數據庫存儲格式
發送時間為浮標岸站接收系統服務器端程序解析數據得到的數據的發送時間;接收時間為浮標岸站接收系統服務器端程序獲得數據時的服務器的系統時間;長度為存儲的數據的長度;標號為浮標岸站接收系統服務器端程序解析數據得到的浮標標號;數據為浮標岸站接收系統服務器端程序得到的浮標發送的原始數據。其中,浮標岸站接收系統服務器端程序需要解析的只有時間和標號兩個簡單信息,其余信息可以直接獲得,這樣增加了浮標岸站接收系統服務器端程序的穩定性,而且保留了足夠多的信息。
2.1.3 服務器端的實現 浮標岸站接收系統服務器端流程圖如圖3 所示。浮標岸站接收系統服務器端軟件安裝于具有公網固定IP 地址的計算機上,浮標岸站接收系統服務器端程序可以對服務器上的某個端口進行監聽,判斷是否收到數據,如果未收到數據,繼續監聽端口,如果收到數據,對數據進行處理,查找識別碼,判斷是否是浮標數據。如果是浮標數據,將數據存入數據庫中,如果不是浮標數據,繼續監聽端口。

圖3 浮標岸站接收系統服務器端流程圖
浮標岸站接收系統服務器端程序界面如圖4所示,對服務器端單端口進行監控,監控多個浮標傳輸的數據,收到的數據存儲到本地文件和數據庫中,整個界面簡潔清楚。

圖4 浮標岸站接收系統服務器端程序界面
2.2.1 客戶端的模塊設計 浮標岸站接收系統客戶端需要滿足的功能包括實時數據查詢、歷史數據查詢及繪制曲線圖以及數據導出等功能。因此,將程序按照功能劃分成3 個軟件模塊,分別為最新數據、數據查詢和數據報表,最新數據頁可實時查詢最新數據,并將最新數據解析成浮標狀態、氣象、水質等信息,可以選擇不同的標號進行實時查詢;數據查詢頁可以根據不同的參數,選定開始時間和結束時間,來查詢該參數在該時間端內的變化情況并繪制成曲線;數據報表頁可以選擇開始時間和結束時間,導出該時間段內所有數據到Excel 中,導出到Excel 中的數據已經解析完成。浮標岸站接收系統客戶端程序軟件模塊如圖5 所示。

圖5 浮標岸站接收系統客戶端程序軟件模塊
2.2.2 最新數據模塊 最新數據模塊界面如圖6所示。在最新數據模塊中可以實時查詢最新的不同標號的數據,并將數據解析成狀態信息、報警信息、氣象信息和水文信息,其中狀態信息包括系統電壓、錨燈狀態、經緯度信息;報警信息包括艙門開啟、移位報警和進水報警;氣象信息包括平均風速、風向,最大風速、風向及發生時間,極大風速、風向及發生時間,瞬時最大風速、風向及發生時間,平均溫度、濕度、氣壓,最大溫度、濕度、氣壓及發生時間,最小溫度、濕度、氣壓及發生時間;水文信息包括水文、電導率、水壓、鹽度、深度等信息以及不同深度下的水溫。

圖6 最新數據頁界面
2.2.3 數據查詢模塊 在查詢參數中選擇需要查詢的參數,包括電池電壓、平均風速、最大風速、極大風速、瞬時最大風速、平均氣溫、最高氣溫、最低氣溫、平均濕度、最高濕度、最低濕度、平均氣壓、最高氣壓、最低氣壓、水溫、電導率、水壓、鹽度、深度和各深度水溫。其中,不同深度水溫通過層數選擇深度,選擇需要查詢的起始時間和結束時間,曲線圖中會出現該參數在該時間段內的數據曲線,如圖7 所示,查詢的西太平洋上5 號標在2019 年1 月28 日—2019 年7 月28 日半年間的平均氣壓變化情況,可以看出平均氣壓有一個整體的變化趨勢,為數據維護提供參考。

圖7 數據查詢頁界面
2.2.4 數據報表模塊 數據報表模塊界面如圖8所示。選擇需要導出的開始時間和結束時間,在數據數量處會顯示導出的數據條數,點擊導出按鈕后,會跳出 Excel,如圖 9 所示,Excel 中會導出所有數據的原始值和解析后的數值,當導出完成后,在數據報表模塊界面中,導出完成指示燈會變亮,這時,可以保存或者修改導出的Excel。

圖8 數據報表頁界面

圖9 數據報表導出Excel
自2018 年8 月開始,單端口接收多浮標岸站接收系統替代之前的單端口接收單浮標岸站接收系統,應用于深海熱帶西太平洋觀測示范分系統項目和近海垂直剖面監測系統項目中。浮標岸站接收系統通過1 個端口接收4 個深海浮標的數據和1個近海浮標的數據,其中深海浮標通過銥星通訊,近海浮標通過CDMA 通訊,目前岸站接收系統已經穩定運行13 個多月,通過銥星通訊累計接收數據5萬多條,數據接收率是100%,通過CDMA 接收近海1 個浮標的數據,累計數據1 萬多條,數據接收率是100%。在運行期間,近海垂直剖面監測系統共維護浮標5 次,每次維護都會增加、減少或者更改傳感器,數據格式都有變化,浮標岸站接收系統在維護期間,數據接收都是100%,每次維護完畢直接可以布放,不影響浮標岸站接收系統的數據接收工作。
單端口接收多浮標的岸站接收系統與之前的單端口接收單浮標岸站接收系統對比如表2 所示。

表2 岸站接收系統對比
單端口接收單浮標岸站接收系統將接收到的浮標數據解析后存儲到數據庫中,每個端口接收一個浮標數據,因此5 個浮標需要在服務器上運行5個岸站軟件,只能在服務器運行的岸站軟件上查看浮標數據。單端口接收單浮標岸站接收系統對浮標數據進行嚴格解析后才存儲到數據庫中,因此如果通訊有問題或者維護更新設備導致接收到的浮標數據有部分出錯,這條浮標數據就不會存儲到數據庫中,這也是單端口接收單浮標岸站接收系統的接收率無法達到100%的原因。
本文介紹的單端口接收多浮標的岸站接收系統分為服務器端軟件和客戶端軟件。服務器端軟件將接收的浮標數據做簡單解析后存儲到數據庫中,客戶端軟件根據客戶需要,按條件從數據庫中查詢數據并進行嚴格的解析,這樣降低了服務器的負擔,并且支持多客戶同時查詢數據庫,服務器端軟件接收到浮標數據后都會存儲到數據庫中,因此數據接收率是100%,并且維護時更新設備不影響數據接收。
出于安全角度的考慮,目前中國科學院海洋所的服務器端口都需要進行嚴格審批才能對外開放,采用單端口接收多浮標的岸站接收系統可以減少開放的端口數量,增強服務器的安全性。浮標數據的解析都分布在客戶端,由此降低了服務器的硬件性能要求。本文設計并實現了單端口接收多浮標的岸站接收系統,采用CS 架構,利用LabVIEW 開發完成,可以通過一個計算機端口接收多種數據格式的浮標數據,并且浮標維護不影響服務器端的數據接收。目前,單端口接收多浮標的岸站接收系統已經應用在遠海浮標和近海浮標上,一個端口可以接收5 個近海和遠海的浮標數據,數據接收率是100%,近海的浮標維護不影響數據接收。本系統可以應用于別的岸站接收系統,大大減少了岸站接收系統計算機的開發端口數量,增加了岸站接收系統計算機的安全性,降低了服務器的硬件要求。