姜 斌,陳永華,姜靜波
(中國科學(xué)院海洋研究所,山東 青島 266071)
浮標(biāo)系統(tǒng)是一個(gè)無人的自動(dòng)海洋觀測點(diǎn),投放在一個(gè)固定的海域,可以在海洋任何氣象條件下,對氣象水文參數(shù)進(jìn)行長期、自動(dòng)、連續(xù)、全天候的記錄,目前已經(jīng)發(fā)展為海洋監(jiān)測技術(shù)的主要手段[1-2]。浮標(biāo)岸站接收系統(tǒng)是整個(gè)浮標(biāo)系統(tǒng)最后一個(gè)重要環(huán)節(jié),氣象、水文及浮標(biāo)狀態(tài)等資料都要通過岸站接收系統(tǒng)處理,由岸站負(fù)責(zé)浮標(biāo)發(fā)送數(shù)據(jù)的接收、處理、顯示、存儲(chǔ)及轉(zhuǎn)發(fā),可及時(shí)了解浮標(biāo)的狀態(tài)信息,并使氣象、水文資料得到有效地利用。
目前的浮標(biāo)岸站接收系統(tǒng)是將數(shù)據(jù)收集、處理、存儲(chǔ)、應(yīng)用、分析、顯示功能以層層級(jí)聯(lián)的方式實(shí)現(xiàn),若其中一個(gè)步驟出現(xiàn)問題,數(shù)據(jù)不會(huì)有效存儲(chǔ)和顯示,這會(huì)導(dǎo)致一個(gè)接收端口只能接收一種數(shù)據(jù)格式的浮標(biāo)[3-6]。在布放浮標(biāo)日益增多的情況下,計(jì)算機(jī)開放的端口也隨之增多,這為運(yùn)行岸站接收系統(tǒng)的服務(wù)器安全埋下了隱患。即使同一個(gè)浮標(biāo)經(jīng)過維護(hù)后,因?yàn)閭鞲衅鞯鹊淖兓?,也?huì)改變數(shù)據(jù)格式,這就導(dǎo)致在浮標(biāo)維護(hù)后,必須修改完對應(yīng)的浮標(biāo)岸站接收程序后,才能布放浮標(biāo);在完成浮標(biāo)布放后,如果更改浮標(biāo)岸站接收系統(tǒng)中的數(shù)據(jù)換算方法,會(huì)導(dǎo)致數(shù)據(jù)庫中數(shù)據(jù)前后不一致,數(shù)據(jù)處理方式不靈活。
LabVIEW 是NI 公司開發(fā)的一種基于G 語言的圖形化編程語言,具有函數(shù)庫豐富、圖形化編程開發(fā)快捷、專業(yè)性強(qiáng)的特點(diǎn)[7-10]。本文提出了一種基于CS 架構(gòu)的單端口接收多浮標(biāo)的岸站接收系統(tǒng),采用LabVIEW 開發(fā),開發(fā)周期短,單端口可以接收多種數(shù)據(jù)格式的浮標(biāo)數(shù)據(jù),浮標(biāo)的數(shù)據(jù)格式改變不會(huì)影響服務(wù)器端的數(shù)據(jù)接收工作,數(shù)據(jù)處理方式靈活高效。
浮標(biāo)岸站接收系統(tǒng)具體需要實(shí)現(xiàn)的功能如下:
(1)數(shù)據(jù)接收:浮標(biāo)岸站接收系統(tǒng)需要穩(wěn)定接收來自浮標(biāo)傳輸?shù)臄?shù)據(jù),數(shù)據(jù)定時(shí)傳輸一次,數(shù)據(jù)內(nèi)容包括浮標(biāo)采集的水文、氣象信息以及浮標(biāo)的狀態(tài)信息。數(shù)據(jù)接收要求穩(wěn)定可靠,要有容錯(cuò)能力,能夠滿足多浮標(biāo)向一個(gè)端口傳輸數(shù)據(jù)的要求;
(2)數(shù)據(jù)存儲(chǔ):浮標(biāo)岸站接收系統(tǒng)需要將接收的浮標(biāo)數(shù)據(jù)經(jīng)過簡單地處理后存儲(chǔ)到數(shù)據(jù)庫[11-12]中和本地服務(wù)器中,數(shù)據(jù)庫中存儲(chǔ)的格式需要滿足方便按照時(shí)間和浮標(biāo)號(hào)查詢。
(3)數(shù)據(jù)查詢:浮標(biāo)岸站接收系統(tǒng)可以實(shí)時(shí)查詢浮標(biāo)的最新數(shù)據(jù),并按照格式解析成浮標(biāo)采集的水文氣象信息以及浮標(biāo)的狀態(tài)信息實(shí)時(shí)顯示,可以查詢指定歷史時(shí)間段內(nèi)的某個(gè)參數(shù)的歷史信息并曲線顯示,可以在多臺(tái)計(jì)算機(jī)上同時(shí)查詢浮標(biāo)數(shù)據(jù)。
(4)數(shù)據(jù)導(dǎo)出:岸站接收系統(tǒng)可以將指定時(shí)間段內(nèi)的數(shù)據(jù)解析成浮標(biāo)采集的水文氣象信息以及浮標(biāo)的狀態(tài)信息,通過Excel 導(dǎo)出,以方便進(jìn)行進(jìn)一步的研究。
根據(jù)浮標(biāo)岸站接收系統(tǒng)的設(shè)計(jì)需求,采用CS架構(gòu),如圖1 所示,海上的浮標(biāo)數(shù)據(jù)采集系統(tǒng)將采集的數(shù)據(jù)傳輸給服務(wù)器端接收程序,服務(wù)器端接收程序?qū)?shù)據(jù)存儲(chǔ)在服務(wù)器上的數(shù)據(jù)庫中,客戶端顯示程序通過請求數(shù)據(jù)庫中的數(shù)據(jù)來獲取浮標(biāo)的采集數(shù)據(jù),在客戶端顯示程序中將請求到的數(shù)據(jù)按照格式解析成水文氣象信息以及浮標(biāo)的狀態(tài)信息顯示出來。
圖1 浮標(biāo)岸站接收系統(tǒng)設(shè)計(jì)思路
2.1.1 通訊格式設(shè)計(jì) 為了實(shí)現(xiàn)浮標(biāo)岸站接收系統(tǒng)服務(wù)器端軟件的穩(wěn)定接收以及客戶端軟件的方便查詢,需要設(shè)計(jì)浮標(biāo)傳輸數(shù)據(jù)的通訊格式,通訊格式如圖2 所示。
圖2 浮標(biāo)傳輸?shù)臄?shù)據(jù)格式
浮標(biāo)岸站接收系統(tǒng)服務(wù)器端通常會(huì)收到干擾數(shù)據(jù),為了準(zhǔn)確獲得浮標(biāo)發(fā)送的數(shù)據(jù),需要將數(shù)據(jù)頭加上識(shí)別碼,這樣,浮標(biāo)岸站接收系統(tǒng)服務(wù)器端可以準(zhǔn)確獲得浮標(biāo)發(fā)送的數(shù)據(jù)段;數(shù)據(jù)長度用于指示該次數(shù)據(jù)總的數(shù)據(jù)長度;浮標(biāo)號(hào)用于識(shí)別是哪個(gè)浮標(biāo)發(fā)送的數(shù)據(jù);時(shí)間是浮標(biāo)發(fā)送數(shù)據(jù)時(shí)的浮標(biāo)中的時(shí)間;浮標(biāo)狀態(tài)包括浮標(biāo)所在經(jīng)緯度、電池電壓、錨燈狀態(tài)、進(jìn)水報(bào)警、門禁報(bào)警等信息;氣象數(shù)據(jù)包括風(fēng)速、風(fēng)向、溫濕壓等信息;水文數(shù)據(jù)包括水下不同深度的溫度、鹽度等信息;校驗(yàn)碼用于驗(yàn)證獲得的數(shù)據(jù)是完整和準(zhǔn)確的。
2.1.2 數(shù)據(jù)庫格式設(shè)計(jì) 數(shù)據(jù)庫中的格式既需要滿足對不同長度數(shù)據(jù)存儲(chǔ)的要求,又要滿足方便浮標(biāo)岸站接收系統(tǒng)客戶端根據(jù)時(shí)間標(biāo)號(hào)查詢的要求。數(shù)據(jù)庫存儲(chǔ)格式如表1 所示。
表1 浮標(biāo)數(shù)據(jù)庫存儲(chǔ)格式
發(fā)送時(shí)間為浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序解析數(shù)據(jù)得到的數(shù)據(jù)的發(fā)送時(shí)間;接收時(shí)間為浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序獲得數(shù)據(jù)時(shí)的服務(wù)器的系統(tǒng)時(shí)間;長度為存儲(chǔ)的數(shù)據(jù)的長度;標(biāo)號(hào)為浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序解析數(shù)據(jù)得到的浮標(biāo)標(biāo)號(hào);數(shù)據(jù)為浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序得到的浮標(biāo)發(fā)送的原始數(shù)據(jù)。其中,浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序需要解析的只有時(shí)間和標(biāo)號(hào)兩個(gè)簡單信息,其余信息可以直接獲得,這樣增加了浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序的穩(wěn)定性,而且保留了足夠多的信息。
2.1.3 服務(wù)器端的實(shí)現(xiàn) 浮標(biāo)岸站接收系統(tǒng)服務(wù)器端流程圖如圖3 所示。浮標(biāo)岸站接收系統(tǒng)服務(wù)器端軟件安裝于具有公網(wǎng)固定IP 地址的計(jì)算機(jī)上,浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序可以對服務(wù)器上的某個(gè)端口進(jìn)行監(jiān)聽,判斷是否收到數(shù)據(jù),如果未收到數(shù)據(jù),繼續(xù)監(jiān)聽端口,如果收到數(shù)據(jù),對數(shù)據(jù)進(jìn)行處理,查找識(shí)別碼,判斷是否是浮標(biāo)數(shù)據(jù)。如果是浮標(biāo)數(shù)據(jù),將數(shù)據(jù)存入數(shù)據(jù)庫中,如果不是浮標(biāo)數(shù)據(jù),繼續(xù)監(jiān)聽端口。
圖3 浮標(biāo)岸站接收系統(tǒng)服務(wù)器端流程圖
浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序界面如圖4所示,對服務(wù)器端單端口進(jìn)行監(jiān)控,監(jiān)控多個(gè)浮標(biāo)傳輸?shù)臄?shù)據(jù),收到的數(shù)據(jù)存儲(chǔ)到本地文件和數(shù)據(jù)庫中,整個(gè)界面簡潔清楚。
圖4 浮標(biāo)岸站接收系統(tǒng)服務(wù)器端程序界面
2.2.1 客戶端的模塊設(shè)計(jì) 浮標(biāo)岸站接收系統(tǒng)客戶端需要滿足的功能包括實(shí)時(shí)數(shù)據(jù)查詢、歷史數(shù)據(jù)查詢及繪制曲線圖以及數(shù)據(jù)導(dǎo)出等功能。因此,將程序按照功能劃分成3 個(gè)軟件模塊,分別為最新數(shù)據(jù)、數(shù)據(jù)查詢和數(shù)據(jù)報(bào)表,最新數(shù)據(jù)頁可實(shí)時(shí)查詢最新數(shù)據(jù),并將最新數(shù)據(jù)解析成浮標(biāo)狀態(tài)、氣象、水質(zhì)等信息,可以選擇不同的標(biāo)號(hào)進(jìn)行實(shí)時(shí)查詢;數(shù)據(jù)查詢頁可以根據(jù)不同的參數(shù),選定開始時(shí)間和結(jié)束時(shí)間,來查詢該參數(shù)在該時(shí)間端內(nèi)的變化情況并繪制成曲線;數(shù)據(jù)報(bào)表頁可以選擇開始時(shí)間和結(jié)束時(shí)間,導(dǎo)出該時(shí)間段內(nèi)所有數(shù)據(jù)到Excel 中,導(dǎo)出到Excel 中的數(shù)據(jù)已經(jīng)解析完成。浮標(biāo)岸站接收系統(tǒng)客戶端程序軟件模塊如圖5 所示。
圖5 浮標(biāo)岸站接收系統(tǒng)客戶端程序軟件模塊
2.2.2 最新數(shù)據(jù)模塊 最新數(shù)據(jù)模塊界面如圖6所示。在最新數(shù)據(jù)模塊中可以實(shí)時(shí)查詢最新的不同標(biāo)號(hào)的數(shù)據(jù),并將數(shù)據(jù)解析成狀態(tài)信息、報(bào)警信息、氣象信息和水文信息,其中狀態(tài)信息包括系統(tǒng)電壓、錨燈狀態(tài)、經(jīng)緯度信息;報(bào)警信息包括艙門開啟、移位報(bào)警和進(jìn)水報(bào)警;氣象信息包括平均風(fēng)速、風(fēng)向,最大風(fēng)速、風(fēng)向及發(fā)生時(shí)間,極大風(fēng)速、風(fēng)向及發(fā)生時(shí)間,瞬時(shí)最大風(fēng)速、風(fēng)向及發(fā)生時(shí)間,平均溫度、濕度、氣壓,最大溫度、濕度、氣壓及發(fā)生時(shí)間,最小溫度、濕度、氣壓及發(fā)生時(shí)間;水文信息包括水文、電導(dǎo)率、水壓、鹽度、深度等信息以及不同深度下的水溫。
圖6 最新數(shù)據(jù)頁界面
2.2.3 數(shù)據(jù)查詢模塊 在查詢參數(shù)中選擇需要查詢的參數(shù),包括電池電壓、平均風(fēng)速、最大風(fēng)速、極大風(fēng)速、瞬時(shí)最大風(fēng)速、平均氣溫、最高氣溫、最低氣溫、平均濕度、最高濕度、最低濕度、平均氣壓、最高氣壓、最低氣壓、水溫、電導(dǎo)率、水壓、鹽度、深度和各深度水溫。其中,不同深度水溫通過層數(shù)選擇深度,選擇需要查詢的起始時(shí)間和結(jié)束時(shí)間,曲線圖中會(huì)出現(xiàn)該參數(shù)在該時(shí)間段內(nèi)的數(shù)據(jù)曲線,如圖7 所示,查詢的西太平洋上5 號(hào)標(biāo)在2019 年1 月28 日—2019 年7 月28 日半年間的平均氣壓變化情況,可以看出平均氣壓有一個(gè)整體的變化趨勢,為數(shù)據(jù)維護(hù)提供參考。
圖7 數(shù)據(jù)查詢頁界面
2.2.4 數(shù)據(jù)報(bào)表模塊 數(shù)據(jù)報(bào)表模塊界面如圖8所示。選擇需要導(dǎo)出的開始時(shí)間和結(jié)束時(shí)間,在數(shù)據(jù)數(shù)量處會(huì)顯示導(dǎo)出的數(shù)據(jù)條數(shù),點(diǎn)擊導(dǎo)出按鈕后,會(huì)跳出 Excel,如圖 9 所示,Excel 中會(huì)導(dǎo)出所有數(shù)據(jù)的原始值和解析后的數(shù)值,當(dāng)導(dǎo)出完成后,在數(shù)據(jù)報(bào)表模塊界面中,導(dǎo)出完成指示燈會(huì)變亮,這時(shí),可以保存或者修改導(dǎo)出的Excel。
圖8 數(shù)據(jù)報(bào)表頁界面
圖9 數(shù)據(jù)報(bào)表導(dǎo)出Excel
自2018 年8 月開始,單端口接收多浮標(biāo)岸站接收系統(tǒng)替代之前的單端口接收單浮標(biāo)岸站接收系統(tǒng),應(yīng)用于深海熱帶西太平洋觀測示范分系統(tǒng)項(xiàng)目和近海垂直剖面監(jiān)測系統(tǒng)項(xiàng)目中。浮標(biāo)岸站接收系統(tǒng)通過1 個(gè)端口接收4 個(gè)深海浮標(biāo)的數(shù)據(jù)和1個(gè)近海浮標(biāo)的數(shù)據(jù),其中深海浮標(biāo)通過銥星通訊,近海浮標(biāo)通過CDMA 通訊,目前岸站接收系統(tǒng)已經(jīng)穩(wěn)定運(yùn)行13 個(gè)多月,通過銥星通訊累計(jì)接收數(shù)據(jù)5萬多條,數(shù)據(jù)接收率是100%,通過CDMA 接收近海1 個(gè)浮標(biāo)的數(shù)據(jù),累計(jì)數(shù)據(jù)1 萬多條,數(shù)據(jù)接收率是100%。在運(yùn)行期間,近海垂直剖面監(jiān)測系統(tǒng)共維護(hù)浮標(biāo)5 次,每次維護(hù)都會(huì)增加、減少或者更改傳感器,數(shù)據(jù)格式都有變化,浮標(biāo)岸站接收系統(tǒng)在維護(hù)期間,數(shù)據(jù)接收都是100%,每次維護(hù)完畢直接可以布放,不影響浮標(biāo)岸站接收系統(tǒng)的數(shù)據(jù)接收工作。
單端口接收多浮標(biāo)的岸站接收系統(tǒng)與之前的單端口接收單浮標(biāo)岸站接收系統(tǒng)對比如表2 所示。
表2 岸站接收系統(tǒng)對比
單端口接收單浮標(biāo)岸站接收系統(tǒng)將接收到的浮標(biāo)數(shù)據(jù)解析后存儲(chǔ)到數(shù)據(jù)庫中,每個(gè)端口接收一個(gè)浮標(biāo)數(shù)據(jù),因此5 個(gè)浮標(biāo)需要在服務(wù)器上運(yùn)行5個(gè)岸站軟件,只能在服務(wù)器運(yùn)行的岸站軟件上查看浮標(biāo)數(shù)據(jù)。單端口接收單浮標(biāo)岸站接收系統(tǒng)對浮標(biāo)數(shù)據(jù)進(jìn)行嚴(yán)格解析后才存儲(chǔ)到數(shù)據(jù)庫中,因此如果通訊有問題或者維護(hù)更新設(shè)備導(dǎo)致接收到的浮標(biāo)數(shù)據(jù)有部分出錯(cuò),這條浮標(biāo)數(shù)據(jù)就不會(huì)存儲(chǔ)到數(shù)據(jù)庫中,這也是單端口接收單浮標(biāo)岸站接收系統(tǒng)的接收率無法達(dá)到100%的原因。
本文介紹的單端口接收多浮標(biāo)的岸站接收系統(tǒng)分為服務(wù)器端軟件和客戶端軟件。服務(wù)器端軟件將接收的浮標(biāo)數(shù)據(jù)做簡單解析后存儲(chǔ)到數(shù)據(jù)庫中,客戶端軟件根據(jù)客戶需要,按條件從數(shù)據(jù)庫中查詢數(shù)據(jù)并進(jìn)行嚴(yán)格的解析,這樣降低了服務(wù)器的負(fù)擔(dān),并且支持多客戶同時(shí)查詢數(shù)據(jù)庫,服務(wù)器端軟件接收到浮標(biāo)數(shù)據(jù)后都會(huì)存儲(chǔ)到數(shù)據(jù)庫中,因此數(shù)據(jù)接收率是100%,并且維護(hù)時(shí)更新設(shè)備不影響數(shù)據(jù)接收。
出于安全角度的考慮,目前中國科學(xué)院海洋所的服務(wù)器端口都需要進(jìn)行嚴(yán)格審批才能對外開放,采用單端口接收多浮標(biāo)的岸站接收系統(tǒng)可以減少開放的端口數(shù)量,增強(qiáng)服務(wù)器的安全性。浮標(biāo)數(shù)據(jù)的解析都分布在客戶端,由此降低了服務(wù)器的硬件性能要求。本文設(shè)計(jì)并實(shí)現(xiàn)了單端口接收多浮標(biāo)的岸站接收系統(tǒng),采用CS 架構(gòu),利用LabVIEW 開發(fā)完成,可以通過一個(gè)計(jì)算機(jī)端口接收多種數(shù)據(jù)格式的浮標(biāo)數(shù)據(jù),并且浮標(biāo)維護(hù)不影響服務(wù)器端的數(shù)據(jù)接收。目前,單端口接收多浮標(biāo)的岸站接收系統(tǒng)已經(jīng)應(yīng)用在遠(yuǎn)海浮標(biāo)和近海浮標(biāo)上,一個(gè)端口可以接收5 個(gè)近海和遠(yuǎn)海的浮標(biāo)數(shù)據(jù),數(shù)據(jù)接收率是100%,近海的浮標(biāo)維護(hù)不影響數(shù)據(jù)接收。本系統(tǒng)可以應(yīng)用于別的岸站接收系統(tǒng),大大減少了岸站接收系統(tǒng)計(jì)算機(jī)的開發(fā)端口數(shù)量,增加了岸站接收系統(tǒng)計(jì)算機(jī)的安全性,降低了服務(wù)器的硬件要求。