国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

北斗海洋浮標(biāo)數(shù)據(jù)接收與控制終端軟件

2021-03-09 08:36張勝茂楊勝龍范秀梅
漁業(yè)現(xiàn)代化 2021年1期
關(guān)鍵詞:數(shù)據(jù)類型浮標(biāo)隊列

張勝茂,戴 陽,楊勝龍,范秀梅,王 斐

(1 中國水產(chǎn)科學(xué)研究院東海水產(chǎn)研究所,農(nóng)業(yè)農(nóng)村部東海漁業(yè)資源開發(fā)利用重點實驗室,上海 200090;2中國水產(chǎn)科學(xué)研究院東海水產(chǎn)研究所,農(nóng)業(yè)農(nóng)村部遠洋與極地漁業(yè)創(chuàng)新重點實驗室,上海200090)

海洋浮標(biāo)一般可攜帶多種傳感器來探測海洋環(huán)境參數(shù),是一種重要的海洋觀測工具[1-4]。具有全天候、全天時穩(wěn)定可靠的收集海洋環(huán)境資料的能力[5-6],并能實現(xiàn)數(shù)據(jù)的自動采集、自動標(biāo)識和發(fā)送[7-9]。海洋浮標(biāo)種類繁多,主要有錨定類型浮標(biāo)和漂流類型浮標(biāo)[10-11],用途包括氣象資料收集、海水水質(zhì)監(jiān)測、船舶導(dǎo)航、重要設(shè)施標(biāo)識等[12-15]。近年來,隨著聲吶設(shè)備的小型化,海洋浮標(biāo)也可攜帶魚探儀器輔助海洋捕撈[16-19]。海洋浮標(biāo)的通信方式多樣,主要包括衛(wèi)星通信、移動網(wǎng)絡(luò)通信、北斗短報文等[20]。海事衛(wèi)星、銥星等通信方式快捷但費用高[21-23],而移動通信網(wǎng)絡(luò)適合在近海浮標(biāo)上使用,海洋浮標(biāo)采集的環(huán)境數(shù)據(jù)多為海洋物理參數(shù),采用北斗短報文方式通信費用低,傳輸次數(shù)限制小,因此適合作為海洋浮標(biāo)的數(shù)據(jù)通信方式。

海洋捕撈是人類海洋開發(fā)史上最古老的產(chǎn)業(yè)之一[24],因魚類資源時空變化大[25-26],快速確定漁場位置在漁業(yè)捕撈中尤為重要,尋找漁場手段包括船長經(jīng)驗、人員觀測、多船分散探捕等[27],以及運用衛(wèi)星遙感技術(shù)預(yù)報漁場[28-30]。海洋浮標(biāo)可以攜帶聲吶設(shè)備,通過太陽能供電可以長期工作,并且體積小成本低[31],漁船在作業(yè)海域可以布放多個浮標(biāo)來探測魚群,成為快速定位漁場有效手段。

本研究利用面向?qū)ο蟮脑O(shè)計方法,采用北斗通信方式實現(xiàn)數(shù)據(jù)接收與海洋浮標(biāo)控制。受短消息的數(shù)據(jù)量限制,傳感器數(shù)據(jù)采用分解包為多幀方式傳輸,終端軟件采用多線程,通過哈希表管理接收數(shù)據(jù),隊列管理回發(fā)的信息和控制命令。漁船上部署海洋浮標(biāo)數(shù)據(jù)收發(fā)控制的船載終端可直接獲取浮標(biāo)數(shù)據(jù),服務(wù)于漁場尋找。

1 北斗海洋浮標(biāo)信息通信

北斗海洋浮標(biāo)是一種漂浮在海上的浮標(biāo)終端,利用太陽能電池板供電,通過掛載的多個傳感器收集海洋物理參數(shù),如溫度、鹽度、pH、聲吶等。船載終端部署在船上,通過船上的發(fā)電設(shè)備供電,控制衛(wèi)星海洋浮標(biāo)數(shù)據(jù)的收發(fā)。浮標(biāo)終端和船載終端都裝有衛(wèi)星通信卡,通過通信衛(wèi)星完成兩者之間的數(shù)據(jù)收發(fā)與控制(圖1)。浮標(biāo)終端掛載的傳感器分別為傳感器1、傳感器2、…、傳感器n,通過下位機讀取海洋物理參數(shù)。船載終端由上位機發(fā)送控制命令和接收數(shù)據(jù),接收的數(shù)據(jù)保存在數(shù)據(jù)庫中,通過終端能夠查詢。

2 數(shù)據(jù)定義

2.1 浮標(biāo)數(shù)據(jù)定義

上位機和下位機間的數(shù)據(jù)類型固定不變,共有11種數(shù)據(jù)類型,包括無符號整數(shù)(8位、16位、32位、64位)、有符號整數(shù)(8位、16位、32位、64位)、浮點數(shù)(32位、64位)、128位精確的十進制值。浮標(biāo)終端發(fā)送的基本信息固定(表1),包括浮標(biāo)卡號(32位無符號整數(shù)類型)、時間(32位無符號整數(shù)類型)、經(jīng)度(32位單精度浮點型)、緯度(32位單精度浮點型)、航速(8位無符號整數(shù))、航向(16位無符號整數(shù))。浮標(biāo)基本信息數(shù)據(jù)長度為:B=32(浮標(biāo)卡號)+32(時間)+32(經(jīng)度)+32(緯度)+8(航速)+16(航向)+16(電壓)=168(bit)。

表1 浮標(biāo)數(shù)據(jù)基本信息

浮標(biāo)卡號取值范圍0到4 294 967 295,卡號不多于9位;時間為2000年起算的秒數(shù),上位機接收到數(shù)據(jù)后,在2000年基礎(chǔ)上加上秒數(shù)來計算時間;經(jīng)緯度類型都為單精度浮點型,經(jīng)度范圍-180°~180°,緯度范圍-90°~90°;航速為8位無符號整數(shù),取值范圍為0到255,除以10后范圍為0~25.5 m/s;航向為16位無符號整數(shù)類型,采用方位角表達,范圍為0~259。浮標(biāo)終端傳感器有多個,各傳感器位數(shù)總和為傳感器的數(shù)據(jù)長度。

(1)

式中:S為各傳感器的總位數(shù);ni為第i個傳感器的數(shù)據(jù)個數(shù);ti為ni傳感器的數(shù)據(jù)類型位數(shù),兩者乘積為第i個傳感器數(shù)據(jù)的位數(shù)。

浮標(biāo)基本數(shù)據(jù)和傳感器數(shù)據(jù)合并后向船載終端發(fā)送,一般會超過通信衛(wèi)星一條短消息的長度,因此,將向船載終端發(fā)送的完整數(shù)據(jù)作為一個包,把包劃分為多幀,多次發(fā)送。船載終端接收到全部幀后,再把幀拼接為包,然后進行解譯。

數(shù)據(jù)包由多個幀組成,每幀有一個頭文件(表2),頭文件中包含包編號、幀數(shù)、幀序號、傳感器i數(shù)據(jù)個數(shù)、傳感器i數(shù)據(jù)類型。包的一組幀的包編號相同,每月開始從1起始編號,編號用該月起始的分鐘數(shù),到該月最后一分鐘位置,編號范圍從1到44 640的值。幀數(shù)是包的一組幀的總數(shù),8位有符號整數(shù)類型的前4位,幀序號是幀在一組幀的順序號,8位有符號整數(shù)類型后4位,幀數(shù)和幀序號組成一個8位無符號整數(shù)類型,只有各幀全部接收并且按順序拼接才能正確解譯數(shù)據(jù)。傳感器i數(shù)據(jù)個數(shù)表明該傳感器在包中有多少數(shù)據(jù),8位有符號整數(shù)類型的前4位,傳感器i數(shù)據(jù)類型表明該傳感器的數(shù)據(jù)的類型,8位有符號整數(shù)類型后4位,傳感器數(shù)據(jù)個數(shù)和數(shù)據(jù)類型組成一個8位無符號整數(shù)類型。包編號、幀數(shù)、幀序號在數(shù)據(jù)包的每個包都存在,傳感器i的數(shù)據(jù)個數(shù)、類型和頭結(jié)束,僅在第一幀包含。幀數(shù)據(jù)的頭文件數(shù)據(jù)長度為:H=16(包編號)+8(幀)+8(傳感器個數(shù)n)+n×8=32+n×8。

表2 幀數(shù)據(jù)的頭文件

完整的數(shù)據(jù)包信息包括頭文件、基本數(shù)據(jù)、傳感器數(shù)據(jù),因此數(shù)據(jù)長度計算方法如式(2)。

L=H+B+S

(2)

式中:L為數(shù)據(jù)包的位數(shù);H為頭文件數(shù)據(jù)的位數(shù);B為基本數(shù)據(jù)的位數(shù);S為各傳感器的總共位數(shù)。把H、B、S帶入式(2)得到式(3)。

(3)

每個幀都有頭文件,假設(shè)通信衛(wèi)星一次傳輸數(shù)據(jù)量為N位bit,則一個包需要傳輸?shù)膸瑪?shù)計算方法如式(4)。

(4)

式中:F為幀數(shù);N為衛(wèi)星一次傳輸數(shù)據(jù)的位數(shù);n為傳感器個數(shù);ni為第i個傳感器的數(shù)據(jù)個數(shù);ti為ni傳感器的數(shù)據(jù)類型位數(shù)。

2.2 控制命令定義

船載終端通過發(fā)送命令控制浮標(biāo)終端,主要控制命令包括設(shè)置傳感器、時間同步、時間間隔、立刻返回數(shù)據(jù)(表3)。設(shè)置傳感器格式為“n:sensori,num,type;”n是傳感器數(shù),sensori是傳感器號,num是數(shù)據(jù)個數(shù),type是數(shù)據(jù)類型。例如“3:1,3,9;2,1,9;3,5,2”表示3個傳感器,1號傳感器3個數(shù)據(jù),數(shù)據(jù)類型為32位單精度浮點型;2號傳感器有1個數(shù)據(jù),數(shù)據(jù)類型為32位單精度浮點型;3號傳感器有5個數(shù)據(jù),數(shù)據(jù)類型為16位無符號整數(shù)類型。時間同步格式為“yyyy-MM-dd HH:mm:ss”,表示年月日時分秒。時間間隔為浮標(biāo)終端發(fā)送數(shù)據(jù)的時間間隔,通過命令設(shè)置間隔的分鐘數(shù)。立刻返回數(shù)據(jù)為命令浮標(biāo)終端立即發(fā)回數(shù)據(jù)。

表3 浮標(biāo)終端的主要控制命令

3 船載終端功能實現(xiàn)

3.1 船載終端軟件結(jié)構(gòu)組成

船載終端(圖2)定義了主窗體類、串口測試類、命令控制類、數(shù)據(jù)瀏覽類,以及后臺運行的串口數(shù)據(jù)接收類、數(shù)據(jù)回發(fā)類、清理回發(fā)類、清理包類。實例化的主窗體界面是用戶交互界面,主要窗體上有串口測試、命令控制、數(shù)據(jù)瀏覽。

串口測試完成端口、波特率、數(shù)據(jù)位、校驗位、停止位的設(shè)置,運行測試端口返回可用的端口信息,運行打開串口完成串口開啟,再運行數(shù)據(jù)接收,啟動臺程序。命令控制在完成浮標(biāo)號選擇、命令名稱選擇、參數(shù)設(shè)置后,運行發(fā)送命令,實現(xiàn)命令的發(fā)送功能。數(shù)據(jù)瀏覽在完成浮標(biāo)卡號選擇,時間范圍設(shè)置,然后運行查詢功能,獲取對應(yīng)浮標(biāo)的數(shù)據(jù),運行導(dǎo)出功能可以導(dǎo)出查詢到的數(shù)據(jù)。

3.2 船載終端接收浮標(biāo)終端數(shù)據(jù)

浮標(biāo)終端發(fā)回的數(shù)據(jù)由ReadCom對象完成(圖3),在初始化時首先實例化ReadCom對象,傳入的參數(shù)有信息回發(fā)隊列、串口實例和數(shù)據(jù)包管理表。

回發(fā)隊列用于暫存接收到的數(shù)據(jù)包信息,這些信息會向浮標(biāo)終端回復(fù)數(shù)據(jù)包收到,串口實例用于監(jiān)聽浮標(biāo)終端發(fā)來的數(shù)據(jù),數(shù)據(jù)包管理表用于管理接收的報包數(shù)據(jù),如果首次收到包則保存在表中,如果非首次接收則忽略。實例化的ReamCom通過串口監(jiān)聽浮標(biāo)終端發(fā)來的數(shù)據(jù),當(dāng)有數(shù)據(jù)收后觸發(fā)Comm_DataReceived事件,首先創(chuàng)建接收的包信息,保存到數(shù)據(jù)庫中,然后處理數(shù)據(jù)包,讀取數(shù)據(jù)幀,判斷數(shù)據(jù)幀是否接收完整,如果沒有接收完整則不做處理,如果數(shù)據(jù)幀接收完整,則拼接數(shù)據(jù)包進行解析,解析完成后返回到處理數(shù)據(jù)包方法,存儲包文件,并把信息存儲到數(shù)據(jù)庫,最后把解析處理完成的包從數(shù)據(jù)包管理表中清除。

船載終端接收的數(shù)據(jù)存儲在數(shù)據(jù)庫中,用GetBeidou窗體類實例化對象(圖8),在窗體中設(shè)置時間范圍、浮標(biāo)卡號、數(shù)據(jù)類型等信息,運行SearchGet方法,由實例化的SqliteHelper對象獲取數(shù)據(jù),然后返回到窗體顯示,數(shù)據(jù)也可以導(dǎo)出。

3.3 船載終端向浮標(biāo)終端回發(fā)數(shù)據(jù)

首先,把信息回發(fā)類(SendBack)實例化為對象(圖4),完成接收包的回發(fā)和控制命令的回發(fā)。其次,用數(shù)據(jù)包回發(fā)隊列暫存所接收包的信息,船載終端向浮標(biāo)終端發(fā)送包信息,通知浮標(biāo)終端包已經(jīng)成功接收,浮標(biāo)終端就不再重發(fā)。命令隊列暫存控制命令,命令是由BeidouCmm實例化的對象生成,通過船載終端向浮標(biāo)終端發(fā)送命令,控制浮標(biāo)的工作。

BeidouCmm為生成命令的窗體對象,在選擇好命令,設(shè)置好參數(shù)后,運行命名發(fā)送功能,命令首先通過實例化的SQLiteHelper對象報道數(shù)據(jù)庫中,然后經(jīng)過創(chuàng)建命令、命令編碼后,暫存到SendBack實例的回發(fā)消息隊列中。

數(shù)據(jù)回發(fā)類中定義有時鐘實例,設(shè)置一定的時間間隔后,時鐘定時觸發(fā)OnTimer事件,查詢命令隊列中是否有沒有發(fā)出的命令,如果有則取出命令并向浮標(biāo)終端發(fā)送,發(fā)送結(jié)束后在隊列中刪除命令。然后再檢查數(shù)據(jù)包回發(fā)隊列,如果隊列中有未發(fā)的數(shù)據(jù)包消息,則把消息向浮標(biāo)終端發(fā)送,然后在隊列中刪除該包信息。

3.4 清除數(shù)據(jù)包與回發(fā)信息

船載終端以包的形式接收浮標(biāo)終端數(shù)據(jù),每個包采用編碼管理,數(shù)據(jù)包以編碼方式保存在數(shù)據(jù)包管理表中,數(shù)據(jù)包各幀都接收到后會被解析保存到數(shù)據(jù)庫,并在包管理表中刪除該包;如果數(shù)據(jù)包中的幀不能全部接收到,則數(shù)據(jù)包一直保存在包管理表中,隨著接收時間延長(1個月以上)積累包增多,占用大量內(nèi)存,由于包發(fā)送一般限制在1 h到1 d內(nèi)發(fā)送完成,如果超過1 d沒有收到則該包失效,因此限時1 d對包管理表中超過1 d的包進行清除。

船載終端接收到包后會把回復(fù)信息和控制命令信息暫存到回發(fā)隊列,終端定時自動讀取回發(fā)隊列中的信息,向浮標(biāo)終端發(fā)送,發(fā)送完成后從隊列中清除該消息。消息發(fā)送一般限制在1 min到1 h發(fā)送完成,如果發(fā)送失敗則信息會留在回發(fā)隊列中,隨著接收時間延長(1個月以上)積累包增多,占用內(nèi)存,因此限時1 d對隊列中超過1 d的消息進行清除。

船載終端同時控制和接收多個浮標(biāo)終端,因此在時間較長的情況下(1個月以上),包管理表中出現(xiàn)的無效數(shù)據(jù)包,以及回發(fā)隊列中的無效包回發(fā)信息、命令控制信息會更多,因此采用清除包和回發(fā)信息非常重要。包清除類(圖5a)、回發(fā)信息和控制命令類(圖5b)完成清除,實例化的包清除對象在指定時間觸發(fā)OnTimeClearBaoEvent事件清除數(shù)據(jù)包管理表的無效信息,處理過程保存在日志中。實例化的回發(fā)清除對象在指定時間觸發(fā)OnTimeClearSendBackEvent事件清除包信息回發(fā)隊列和命令發(fā)送隊列的無效信息,處理過程保存在日志中。

3.5 浮標(biāo)數(shù)據(jù)收發(fā)驗證

海洋浮標(biāo)數(shù)據(jù)接收與控制終端軟件部署在戴爾Latitude E6500測試機上,通過測試機連接串口接收數(shù)據(jù)。2020年6月3日到6月9日,進行5組數(shù)據(jù)收發(fā)試驗。單幀數(shù)據(jù)以1包1幀方式發(fā)送,累計發(fā)送186條,成功176條,成功率94.6%,各組接收成功率都在90%以上;多幀數(shù)據(jù)以1包3幀的方式發(fā)送,累計發(fā)送95條,成功接收到86條,成功率90.5%,除第5組接收成功率較低外,其他各組成功率都在90%以上。浮標(biāo)控制命令以多次發(fā)送直到浮標(biāo)端確認收到為止的形式執(zhí)行程序,保證命令發(fā)送成功,共測試了74條控制命令浮標(biāo)端都能成功接收。

表4 浮標(biāo)數(shù)據(jù)接收測試

4 結(jié)論

北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國自主研制的全球衛(wèi)星定位與通信系統(tǒng),已經(jīng)完成全球組網(wǎng),可在全球范圍內(nèi)全天候、全天時為用戶提供高精度、高可靠定位、導(dǎo)航、授時服務(wù),并具有短報文通信功能。北斗海洋漁探浮標(biāo)利用太陽能供電,通過北斗定位與短報文通信,采用面向?qū)ο蟮脑O(shè)計方法,以北斗通信方式實現(xiàn)數(shù)據(jù)接收與海洋浮標(biāo)控制。為解決短消息的數(shù)據(jù)量限制,傳感器數(shù)據(jù)采用分解包為多幀傳輸。終端軟件采用多線程,通過哈希表管理接收數(shù)據(jù),隊列管理回發(fā)的信息和控制命令。浮標(biāo)有溫度、鹽度、pH、聲吶等多個傳感器收集海洋物理參數(shù),可應(yīng)用于漁場尋找、資源調(diào)查等,為漁業(yè)生產(chǎn)和科學(xué)研究提供服務(wù)。

猜你喜歡
數(shù)據(jù)類型浮標(biāo)隊列
淺談浮標(biāo)靈敏度的判斷
淺談浮標(biāo)的吃鉛比數(shù)值
一種浮標(biāo)位置修正算法*
隊列隊形體育教案
隊列里的小秘密
基于多隊列切換的SDN擁塞控制*
提問:冬釣輕口魚如何選擇浮標(biāo)?
基于SeisBase模型的地震勘探成果數(shù)據(jù)管理系統(tǒng)設(shè)計
線上眾籌產(chǎn)品的特征分析與研究
相似度計算及其在數(shù)據(jù)挖掘中的應(yīng)用