姜 斌,厲運(yùn)周,陳永華
(1.中國(guó)科學(xué)院 海洋研究所,山東 青島 266071; 2.山東省科學(xué)院 海洋儀器儀表研究所,山東 青島266061)
隨著海洋科學(xué)技術(shù)的不斷發(fā)展,氣象水文浮標(biāo)成了海洋探索中不可缺少的一部分[1]。原有的海洋監(jiān)測(cè)需要人工輔助,監(jiān)測(cè)范圍和時(shí)長(zhǎng)受限較多。氣象水文浮標(biāo)使用了傳感器、控制、電源管理、通信等多方面技術(shù),是一個(gè)包含廣泛的綜合性應(yīng)用[2-4]。通過(guò)自動(dòng)化技術(shù),使氣象水文浮標(biāo)的探測(cè)變得簡(jiǎn)單,通過(guò)無(wú)線通信系統(tǒng)與后臺(tái)通信服務(wù)器相連,實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)采集、標(biāo)識(shí)和傳輸,無(wú)需人工值守就能全天候、更廣范圍地了解到海洋氣象和水文要素。氣象水文浮標(biāo)的應(yīng)用,推動(dòng)了海洋科學(xué)技術(shù)的發(fā)展。 基于單片機(jī)的浮標(biāo)采集系統(tǒng),擴(kuò)展的端口有限,部分單片機(jī)未使用操作系統(tǒng),無(wú)法并發(fā)采集氣象水文數(shù)據(jù)[5]。為了同時(shí)獲取更多種類的氣象、水文連續(xù)穩(wěn)定的觀測(cè)數(shù)據(jù),作者設(shè)計(jì)并實(shí)現(xiàn)了基于Linux的氣象水文浮標(biāo)采集系統(tǒng)。
基于Linux的氣象水文浮標(biāo)采集系統(tǒng)搭載1個(gè)溫濕壓風(fēng)傳感器模塊、1個(gè)GPS定位模塊、1套耦合溫鹽傳感器模塊和1套無(wú)線通信模塊,其中,溫濕壓風(fēng)傳感器模塊用來(lái)采集氣象數(shù)據(jù),溫度、濕度、氣壓、風(fēng)速和風(fēng)向參數(shù),GPS定位模塊用來(lái)采集浮標(biāo)定位,耦合溫鹽傳感器用來(lái)采集水文數(shù)據(jù),不同深度的水溫和鹽度,無(wú)線通信模塊用來(lái)與岸站接收系統(tǒng)通信,將采集處理后的數(shù)據(jù)回傳。
基于 Linux的氣象水文浮標(biāo)采集系統(tǒng)需要實(shí)時(shí)監(jiān)測(cè)電池電壓、浮標(biāo)是否進(jìn)水以及浮標(biāo)艙門(mén)是否被打開(kāi)這些狀態(tài)信息,并將這些信息回傳,以方便實(shí)時(shí)了解浮標(biāo)目前的狀態(tài)。
基于Linux的氣象水文浮標(biāo)采集系統(tǒng)采用嵌入式Linux操作系統(tǒng),Qt作為軟件開(kāi)發(fā)平臺(tái),傳感器的數(shù)據(jù)采集是多線程進(jìn)行,傳感器之間工作互不影響?;贚inux的氣象水文浮標(biāo)采集系統(tǒng)分工作狀態(tài)和休眠狀態(tài),根據(jù)預(yù)先設(shè)定,實(shí)時(shí)時(shí)鐘喚醒系統(tǒng)進(jìn)入工作狀態(tài),進(jìn)行各傳感器的數(shù)據(jù)采集工作和數(shù)據(jù)整理、回傳,工作結(jié)束后,程序通知系統(tǒng)進(jìn)入休眠狀態(tài)。
基于 Linux的氣象水文浮標(biāo)采集系統(tǒng)的硬件結(jié)構(gòu)可以劃分為核心控制模塊、接口擴(kuò)展模塊及傳感器模塊,工作功率不超過(guò)3W,休眠時(shí)功率幾乎為0。如圖1所示。
圖1 基于Linux的氣象水文浮標(biāo)采集系統(tǒng)硬件結(jié)構(gòu)圖Fig.1 Hardware structure diagram of the meteorological and hydrological buoy acquisition system based on Linux
核心控制模塊的接口包括1個(gè)USB接口、1個(gè)I2C接口和20個(gè)GPIO口; 接口擴(kuò)展模塊將核心控制模塊的1個(gè)USB接口擴(kuò)展成4個(gè)數(shù)字串口,分別用來(lái)連接溫濕壓風(fēng)傳感器、耦合溫鹽傳感器、GPS定位模塊和無(wú)線通信模塊,將1個(gè)I2C接口擴(kuò)展成4路模擬信號(hào)輸入,用來(lái)監(jiān)測(cè)電池電壓、進(jìn)水報(bào)警和開(kāi)艙報(bào)警; GPIO口控制繼電器,為溫濕壓風(fēng)傳感器、耦合溫鹽傳感器、GPS定位模塊和無(wú)線通信模塊通電或者斷電。
核心控制模塊采用基于ARM11的主頻1 GHz、內(nèi)存521 MB的Broadcom BCM2835作為主芯片,設(shè)計(jì)引出20個(gè)的GPIO口、1個(gè)USB口和1個(gè)I2C口。GPIO口用來(lái)控制傳感器的上電和斷電,USB口可用來(lái)擴(kuò)展數(shù)字信號(hào),I2C用來(lái)擴(kuò)展模擬信號(hào)。USB口的傳輸速率為 12 Mbps,擴(kuò)展成串口后,串口最高傳輸速率為115 200 bps,所以USB口最少可以擴(kuò)展成109個(gè)串口。
接口擴(kuò)展模塊主要是將核心控制模塊的USB口擴(kuò)展成多個(gè)數(shù)字串口和將 I2C口擴(kuò)展成多個(gè)模擬接口。首先將USB口通過(guò)USB Hub擴(kuò)展成多個(gè)USB口,擴(kuò)展出的USB口平分傳輸速率,USB Hub芯片選用FE1.1S,可以將1個(gè)USB口擴(kuò)展成4個(gè)USB口,USB轉(zhuǎn)串口芯片選用FT232R,如果還需要擴(kuò)展更多的數(shù)字接口,可以設(shè)計(jì)更多的USB Hub和串口轉(zhuǎn)換芯片,可以擴(kuò)展109個(gè)數(shù)字串口。I2C接口的模數(shù)轉(zhuǎn)換芯片選用 PCF8591T,8位的轉(zhuǎn)換精度可以滿足報(bào)警兩種狀態(tài)的需要,4路模擬量輸入完全可以滿足電池電壓、開(kāi)艙報(bào)警和進(jìn)水報(bào)警。
傳感器模塊包括溫濕壓風(fēng)傳感器、耦合溫鹽傳感器、GPS定位模塊和無(wú)線通信模塊,都是通過(guò)數(shù)字串口連接。溫濕壓風(fēng)傳感器采用的是 Young公司的超聲波溫濕壓風(fēng)傳感器。
耦合溫鹽傳感器采用Sea Bird公司的耦合溫鹽傳感器。感應(yīng)耦合數(shù)據(jù)傳輸系統(tǒng)利用塑包引導(dǎo)鋼纜和周?chē)K纬砷]環(huán)。將收發(fā)耦合磁環(huán)分置主浮體下端和剖面測(cè)量平臺(tái)上,將塑包鋼纜從耦合磁環(huán)中心傳入,完成感應(yīng)耦合通訊與數(shù)據(jù)傳輸[6]。這種傳輸方式的優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、成本低; 不存在接頭和導(dǎo)線,可靠性高; 不受接頭的限制,傳感器的部署位置可以更加靈活。
無(wú)線通信模塊在近海浮標(biāo)使用DTU(Data Transfer Unit,無(wú)線通信網(wǎng)絡(luò) GPRS/CDMA進(jìn)行傳送的無(wú)線終端設(shè)備)模塊,遠(yuǎn)海浮標(biāo)使用銥星模塊。DTU模塊通信費(fèi)用低,只能在陸地或者近海的地方使用[7]; 銥星模塊通信費(fèi)用高,可以在遠(yuǎn)海的地方使用。
氣象水文浮標(biāo)系統(tǒng)的軟件設(shè)計(jì)主要包括采集端的程序和岸站接收中心軟件的設(shè)計(jì)。采集端程序功能包括溫濕壓風(fēng)傳感器模塊的數(shù)據(jù)采集及處理、耦合溫鹽傳感器模塊的數(shù)據(jù)采集及處理、GPS模塊的地理坐標(biāo)參數(shù)采集和將所有數(shù)據(jù)整合處理發(fā)送回岸站接收系統(tǒng); 岸站接收中心軟件功能主要是接收、解析、顯示和存儲(chǔ)采集端的數(shù)據(jù)。
采集端軟件采用Qt作為軟件開(kāi)發(fā)平臺(tái),與數(shù)據(jù)庫(kù)結(jié)合自動(dòng)備份,多線程運(yùn)行滿足各傳感器同時(shí)采集數(shù)據(jù),設(shè)計(jì)流程圖如圖2所示。
圖2 采集系統(tǒng)軟件流程圖Fig.2 Software flow chart of the acquisition system
采集端由實(shí)時(shí)時(shí)鐘喚醒進(jìn)入工作狀態(tài),首先進(jìn)行 Linux系統(tǒng)的初始化,通過(guò) GPIO口控制繼電器,為溫濕壓風(fēng)傳感器模塊、GPS定位模塊、水下的耦合溫鹽傳感器模塊和無(wú)線通信模塊分別上電,同時(shí)通過(guò)溫濕壓風(fēng)傳感器模塊采集溫度、濕度、氣壓和風(fēng)速、風(fēng)向等氣象數(shù)據(jù)并將采集數(shù)據(jù)插入對(duì)應(yīng)數(shù)據(jù)庫(kù),通過(guò)耦合溫鹽傳感器采集不同深度的水溫、鹽度等水文數(shù)據(jù)并將采集數(shù)據(jù)插入對(duì)應(yīng)數(shù)據(jù)庫(kù),通過(guò)GPS定位模塊采集定位數(shù)據(jù)并將采集數(shù)據(jù)插入對(duì)應(yīng)數(shù)據(jù)庫(kù),按照要求采集完數(shù)據(jù)后,通過(guò)GPIO口控制繼電器,分別關(guān)閉對(duì)應(yīng)的溫濕壓風(fēng)傳感器模塊、GPS定位模塊和水下的耦合溫鹽傳感器模塊,將采集的報(bào)警數(shù)據(jù)插入對(duì)應(yīng)數(shù)據(jù)庫(kù)。當(dāng)需要采集的數(shù)據(jù)全部入庫(kù)后,按照要求整合處理采集的所有的數(shù)據(jù)并壓縮,制作成本次采集需要回傳的數(shù)據(jù),同時(shí)將數(shù)據(jù)庫(kù)中需要補(bǔ)發(fā)的數(shù)據(jù)移動(dòng)到內(nèi)存中,加上本次需要回傳的數(shù)據(jù),一共N條數(shù)據(jù)需要發(fā)送,對(duì)每一條數(shù)據(jù)嘗試發(fā)送,發(fā)送成功的數(shù)據(jù)從內(nèi)存中刪除,沒(méi)有發(fā)送成功的數(shù)據(jù)再存入補(bǔ)發(fā)數(shù)據(jù)庫(kù)中,當(dāng)所有需要補(bǔ)發(fā)的數(shù)據(jù)全部嘗試發(fā)送一次之后,關(guān)閉無(wú)線通信模塊,本次的采集端的工作結(jié)束,進(jìn)入休眠狀態(tài)。
氣象水文浮標(biāo)根據(jù)離岸的遠(yuǎn)近分為近海浮標(biāo)和遠(yuǎn)海浮標(biāo),考慮到通信質(zhì)量、通信成本等因素,近海浮標(biāo)大多選用GPRS或者CDMA兩種通信方式,遠(yuǎn)海浮標(biāo)通常選用衛(wèi)星通訊作為通信方式。為了兼顧近海浮標(biāo)和遠(yuǎn)海浮標(biāo),基于Linux的氣象水文浮標(biāo)采集系統(tǒng)的通信端口通過(guò)一個(gè)標(biāo)志位可以切換 DTU(Data Transfer Unit,無(wú)線通信網(wǎng)絡(luò)GPRS/CDMA進(jìn)行傳送的無(wú)線終端設(shè)備)和銥星模塊。
近海浮標(biāo)采用GPRS或者CDMA作為通信方式,通信流程如圖3所示。發(fā)送數(shù)據(jù)時(shí),每條數(shù)據(jù)發(fā)送后等待最多3 s,接收到岸站接收系統(tǒng)回復(fù)后即為本條數(shù)據(jù)發(fā)送成功,如果沒(méi)有收到回復(fù),將該條數(shù)據(jù)插入數(shù)據(jù)庫(kù),并繼續(xù)發(fā)送下一條數(shù)據(jù)。遠(yuǎn)海浮標(biāo)采用銥星通訊作為通信方式,通信流程如圖4所示。首先發(fā)送AT指令,如果銥星模塊返回OK,再發(fā)送 AT+CSQ指令來(lái)獲得當(dāng)前通訊的信號(hào)質(zhì)量,如果發(fā)送這兩條指令沒(méi)有返回 OK,重新發(fā)送該指令,如果沒(méi)有信號(hào),則發(fā)送失敗后結(jié)束發(fā)送,這兩條命令在銥星模塊初始化時(shí)發(fā)送,以后發(fā)送每條數(shù)據(jù)不必再次發(fā)送這兩條命令; 當(dāng)有信號(hào)時(shí),發(fā)送AT+SBDD2指令來(lái)清空發(fā)送緩存,當(dāng)返回OK后,發(fā)送AT+SBDWB= buff.size指令來(lái)指定發(fā)送數(shù)據(jù)的大小,其中 buff.size是需要發(fā)送的數(shù)據(jù)大小,如果返回READY,發(fā)送需要發(fā)送的數(shù)據(jù),將發(fā)送數(shù)據(jù)寫(xiě)入銥星模塊的發(fā)送緩沖區(qū),以上指令發(fā)送后如果返回不正確或者沒(méi)有返回,都需要重新發(fā)送AT+SBDD2指令,將發(fā)送數(shù)據(jù)寫(xiě)入銥星模塊的發(fā)送緩沖區(qū)后,銥星模塊如果返回0,發(fā)送AT+SBDIX指令,如果返回的status<3,則表示發(fā)送成功,如果沒(méi)有返回或者 status<3錯(cuò)誤,則發(fā)送失敗。
圖3 近海浮標(biāo)通信流程圖Fig.3 Communication flow chart of the offshore buoy
圖4 遠(yuǎn)海浮標(biāo)通信流程圖Fig.4 Communication flow chart of the open sea buoy
岸站接收系統(tǒng)選用LabVIEW作為軟件開(kāi)發(fā)平臺(tái),采用CS架構(gòu),LabVIEW提供了方便的界面設(shè)計(jì)工具,CS架構(gòu)將數(shù)據(jù)接收存儲(chǔ)和數(shù)據(jù)解析分離開(kāi),數(shù)據(jù)的接收存儲(chǔ)在服務(wù)器端完成,數(shù)據(jù)解析在客戶端完成,保證數(shù)據(jù)接收的穩(wěn)定性及數(shù)據(jù)解析的靈活性。
岸站接收系統(tǒng)的服務(wù)器端程序流程圖如圖5所示。服務(wù)器端程序監(jiān)聽(tīng)端口,當(dāng)有浮標(biāo)采集器連接端口后,等待接收數(shù)據(jù),當(dāng)接收到數(shù)據(jù)后,將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,檢測(cè)連接是否斷開(kāi),如果沒(méi)有斷開(kāi)繼續(xù)等待接收數(shù)據(jù),如果連接斷開(kāi),繼續(xù)監(jiān)聽(tīng)端口,在有一個(gè)連接接入端口后,不影響其他浮標(biāo)的采集器接入端口,是一個(gè)并行的過(guò)程,服務(wù)器端程序簡(jiǎn)單高效,以保證每條數(shù)據(jù)都能存儲(chǔ)下來(lái)。
圖5 岸站接收系統(tǒng)服務(wù)器端程序流程圖Fig.5 Flow chart of the server shore station receiving system
岸站接收系統(tǒng)的客戶端程序功能模塊組成圖如圖6所示。登錄界面輸入正確的用戶名和密碼后進(jìn)入主界面,主界面由3個(gè)頁(yè)組成,最新數(shù)據(jù)、數(shù)據(jù)查詢和數(shù)據(jù)報(bào)表。在最新數(shù)據(jù)中會(huì)實(shí)時(shí)更新數(shù)據(jù)庫(kù)中最新的數(shù)據(jù)并按照解析格式解析成氣象參數(shù)、水文參數(shù)和報(bào)警信息,也可以在最新數(shù)據(jù)中根據(jù)時(shí)間查找某個(gè)時(shí)間之前的最新數(shù)據(jù); 數(shù)據(jù)查詢是選擇需要查詢的參數(shù)后,選擇起始時(shí)間和結(jié)束時(shí)間,可以得到該參數(shù)在這個(gè)時(shí)間段內(nèi)的變化曲線; 數(shù)據(jù)報(bào)表是選擇起始時(shí)間和結(jié)束時(shí)間,會(huì)將該時(shí)間段內(nèi)的數(shù)據(jù)解析完成后導(dǎo)出到 Excel中,以便進(jìn)行進(jìn)一步的科學(xué)研究。岸站接收系統(tǒng)的客戶端程序的界面如圖7所示。
圖6 岸站接收系統(tǒng)客戶端程序功能框圖Fig.6 Functional block diagram of the client shore station receiving system
圖7 岸站接收系統(tǒng)客戶端程序界面Fig.7 Interface of the client shore station receiving system
基于Linux的氣象水文浮標(biāo)如圖8和表1所示,近海在威海和煙臺(tái)各布放一套,遠(yuǎn)海在西太平洋赤道附近布放2套。威海近海浮標(biāo)已經(jīng)布放半年,維護(hù)過(guò)1次,煙臺(tái)近海浮標(biāo)和遠(yuǎn)海浮標(biāo)布放3個(gè)多月,目前從岸站接收系統(tǒng)中查詢數(shù)據(jù)回傳正常,數(shù)據(jù)采集和浮標(biāo)狀態(tài)正常。近海浮標(biāo)采用CDMA通信,遠(yuǎn)海浮標(biāo)采用銥星通信。
表1 接收數(shù)據(jù)準(zhǔn)點(diǎn)率Tab.1 On-time rate of received data
圖8 基于Linux的氣象水文浮標(biāo)Fig.8 Meteorological and hydrological buoy based on Linux
煙臺(tái)近海 1號(hào)浮標(biāo)由于距離陸地較遠(yuǎn),通信信號(hào)不是很好,因此接收數(shù)據(jù)準(zhǔn)點(diǎn)率較差,原因包括發(fā)送數(shù)據(jù)慢和補(bǔ)發(fā)數(shù)據(jù),其他浮標(biāo)通信信號(hào)比較好,都是因?yàn)檠a(bǔ)發(fā)數(shù)據(jù)造成的接收數(shù)據(jù)不準(zhǔn)時(shí)。由于每次采集開(kāi)始時(shí)間都是確定的,數(shù)據(jù)準(zhǔn)時(shí)回傳,說(shuō)明數(shù)據(jù)采集的時(shí)間是一定的。相比目前主要采用的串行數(shù)據(jù)采集,效率更高,可擴(kuò)展的傳感器更多。
浮標(biāo)每次回傳的數(shù)據(jù)都是一段時(shí)間采集后的特征值,比如是每個(gè)時(shí)間段的平均值、最大值和最小值,如果回傳傳感器上每一個(gè)采集數(shù)據(jù),數(shù)據(jù)量太大,通信費(fèi)用比較高,因此采集端需要將每個(gè)傳感器采集的數(shù)據(jù)自動(dòng)備份,當(dāng)浮標(biāo)回收時(shí),可以通過(guò)備份的數(shù)據(jù)還原所有的采集過(guò)程,為進(jìn)一步科學(xué)研究提供數(shù)據(jù)支持。
目前,只有威海近海 2號(hào)浮標(biāo)維護(hù)過(guò),從浮標(biāo)的數(shù)據(jù)庫(kù)中取出的數(shù)據(jù)經(jīng)過(guò)重新計(jì)算,與岸站接收系統(tǒng)接收到的數(shù)據(jù)是一致的,證明了回傳數(shù)據(jù)的正確性。
由于海上的信號(hào)不穩(wěn)定,不能保證岸站接收系統(tǒng)能接收所有數(shù)據(jù),因此,為了保證數(shù)據(jù)的連續(xù)性,需要將每次沒(méi)有發(fā)送成功的數(shù)據(jù),在下次信號(hào)好的時(shí)候,可以一起補(bǔ)發(fā)到岸站接收系統(tǒng)。各個(gè)浮標(biāo)的數(shù)據(jù)補(bǔ)發(fā)率如表2所示,煙臺(tái)近海1號(hào)浮標(biāo)由于距離陸地較遠(yuǎn),通信信號(hào)不是很好,因此補(bǔ)發(fā)率較高。
表2 接收數(shù)據(jù)補(bǔ)發(fā)率Tab.2 Reissue rate of received data
文章詳細(xì)闡述了基于 Linux的氣象水文浮標(biāo)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn),多線程同時(shí)采集氣象數(shù)據(jù)、水文數(shù)據(jù)和浮標(biāo)狀態(tài)信息,相比無(wú)操作系統(tǒng)下串行采集傳感器數(shù)據(jù),采集效率更高,工作功率比較低; 可擴(kuò)展性強(qiáng),可以擴(kuò)展到109個(gè)傳感器同時(shí)采集數(shù)據(jù),內(nèi)置數(shù)據(jù)庫(kù),可以將各個(gè)傳感器每次的采集數(shù)據(jù)自動(dòng)備份,保證了回收數(shù)據(jù)正確性和為進(jìn)一步的科學(xué)研究提供數(shù)據(jù)支持; 實(shí)現(xiàn)了數(shù)據(jù)補(bǔ)發(fā)功能,由于海上信號(hào)不穩(wěn)定,數(shù)據(jù)補(bǔ)發(fā)可以將由于信號(hào)不好時(shí)的數(shù)據(jù)在信號(hào)好的時(shí)候再次發(fā)送,保證了岸站接收系統(tǒng)接收采集數(shù)據(jù)的連續(xù)性。近海和遠(yuǎn)海各 2套浮標(biāo)已經(jīng)運(yùn)行數(shù)月,岸站接收系統(tǒng)接收的浮標(biāo)數(shù)據(jù)都是正常連續(xù)的,威海近海 2號(hào)浮標(biāo)的自容數(shù)據(jù)與回傳數(shù)據(jù)一致,說(shuō)明基于Linux的氣象水文浮標(biāo)數(shù)據(jù)采集系統(tǒng)能同時(shí)獲取氣象、水文的連續(xù)穩(wěn)定的觀測(cè)數(shù)據(jù),并且回傳數(shù)據(jù)是準(zhǔn)確可靠的。設(shè)計(jì)還有許多不足之處,未來(lái)的工作是改善和改進(jìn),主要有以下幾點(diǎn):
(1) 擴(kuò)展更多的數(shù)字接口,來(lái)滿足浮標(biāo)搭載更多的傳感器;
(2) 實(shí)現(xiàn)遠(yuǎn)程控制的功能,通過(guò)岸站接收系統(tǒng)控制氣象水文浮標(biāo)數(shù)據(jù)采集系統(tǒng)的采集方式;
(3) 除了目前已經(jīng)應(yīng)用的太陽(yáng)能供電,探索更多的供電方式,以滿足更多傳感器供電需求;
(4) 利用Linux的優(yōu)勢(shì),將人工智能應(yīng)用到氣象水文浮標(biāo)數(shù)據(jù)采集系統(tǒng)中,系統(tǒng)可以根據(jù)已經(jīng)采集的數(shù)據(jù)分析后面的采集方式。