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

?

一種海洋浮標(biāo)岸站的軟件設(shè)計與實現(xiàn)

2021-12-04 19:30田炳麗胡坤劉志豪
機(jī)電信息 2021年27期

田炳麗 胡坤 劉志豪

摘要:岸站是海洋浮標(biāo)系統(tǒng)的重要組成部分?;诖?,對岸站總體設(shè)計進(jìn)行了描述,介紹了接口設(shè)計,并針對各部分程序的運行流程,創(chuàng)新性地提出了利用JSON進(jìn)行文件的配置和存儲,JSON易于人閱讀和編寫,同時也易于機(jī)器解析和生成,且能有效提升網(wǎng)絡(luò)傳輸效率。該軟件應(yīng)用到實際的海洋浮標(biāo)中,獲得了較好的效果。

關(guān)鍵詞:海洋浮標(biāo);岸站;Ubuntu

0 引言

海洋浮標(biāo)是觀測大氣和海洋參數(shù)最重要的平臺之一,其中觀測的氣象傳感器有風(fēng)速風(fēng)向傳感器、氣溫傳感器、氣壓傳感器、相對濕度傳感器、長波輻射傳感器、短波輻射傳感器等;觀測的水下傳感器有海水溫度傳感器、鹽度傳感器、深度傳感器等。浮標(biāo)數(shù)據(jù)采集控制器按照一定的觀測要求采集數(shù)據(jù)后,每3 h通過銥星模塊把數(shù)據(jù)從浮標(biāo)端發(fā)送到岸站端,岸站有自動運行的軟件接收、處理浮標(biāo)數(shù)據(jù)。本文設(shè)計了一種海洋浮標(biāo)岸站的軟件,并且基于Ubuntu18.04×64位系統(tǒng)上的gcc version 7.4.0編譯器編譯生成在此系統(tǒng)下的可執(zhí)行文件[1-2]。

1 軟件總體設(shè)計

1.1? ? 軟件設(shè)計需求

(1)實時接收浮標(biāo)返回的數(shù)據(jù);(2)以相應(yīng)格式存儲采集到的數(shù)據(jù);(3)相應(yīng)時間內(nèi)存儲的數(shù)據(jù)通過FTP推送給客戶。

1.2? ? 軟件結(jié)構(gòu)

系統(tǒng)軟件結(jié)構(gòu)圖如圖1所示,軟件包含配置解析、數(shù)據(jù)獲取、數(shù)據(jù)存儲、數(shù)據(jù)推送等部分,各部分負(fù)責(zé)不同的任務(wù)。

1.3? ? 系統(tǒng)運行流程

程序總的運行流程圖如圖2所示,系統(tǒng)開機(jī)讀取配置,得到通信的銥星號碼,創(chuàng)建串口的監(jiān)聽線程,每3 h從岸站端給浮標(biāo)端撥號,撥號成功后,在監(jiān)聽到串口收到數(shù)據(jù)時,將數(shù)據(jù)保存。當(dāng)接收完一包數(shù)據(jù)時,首先按照相應(yīng)的格式存儲數(shù)據(jù),其次調(diào)用事先保存到程序執(zhí)行目錄的FTP腳本文件將數(shù)據(jù)保存目錄文件夾進(jìn)行FTP上傳,推送給客戶。

2 接口設(shè)計

岸站系統(tǒng)的通信接口有串口、網(wǎng)口。圖3列出了系統(tǒng)的全部接口,裝有Ubuntu系統(tǒng)的PC機(jī)通過多串口拓展器與銥星模塊相連,通過網(wǎng)線連接至互聯(lián)網(wǎng)。浮標(biāo)數(shù)據(jù)通過銥星模塊的串口輸入至岸站程序,岸站程序在采集保存后進(jìn)行FTP推送。

其中,多串口拓展器(圖4)具備防浪涌設(shè)計,RS232和USB端口都增加了防浪涌保護(hù),避免因地線回路電樁、浪涌、感應(yīng)雷擊、靜電、頻繁插拔燒損接回等環(huán)境因素對設(shè)備的損毀,從而提高系統(tǒng)抗干擾特性(設(shè)備運營穩(wěn)定性)。由于浮標(biāo)與岸站的傳輸是跨海長距離通信,此串口轉(zhuǎn)換器內(nèi)部帶有零延時自動收發(fā)功能,抗干擾,有利于較長距離的數(shù)據(jù)通信。

3 各部分程序運行流程

3.1? ? 配置解析程序

配置文件采用JSON格式編寫,JSON是一種輕量級的數(shù)據(jù)交換格式,它基于ECMAScript(歐洲計算機(jī)協(xié)會制定的js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得JSON成為理想的數(shù)據(jù)交換語言,易于人閱讀和編寫,同時也易于機(jī)器解析和生成,且能有效提升網(wǎng)絡(luò)傳輸效率。

本程序采用C語言編寫,在解析配置文件時,采用了C語言的標(biāo)準(zhǔn)JSON庫進(jìn)行解析,主要從JSON格式的配置文件中解析出浮標(biāo)位置、任務(wù)計劃名稱和通信銥星號碼等,如圖5所示。在程序執(zhí)行時,首先讀取JSON配置文件,然后將JSON文件解析保存到定義的全局結(jié)構(gòu)體變量中,作為之后函數(shù)調(diào)用的入口參數(shù)。

3.2? ? 數(shù)據(jù)獲取程序

數(shù)據(jù)獲取主要是創(chuàng)建了一個串口的監(jiān)聽線程實現(xiàn)程序的并發(fā)性。多線程和進(jìn)程相比,是一種非?!肮?jié)儉”的多任務(wù)操作方式。在Linux系統(tǒng)下,啟動一個新的進(jìn)程必須分配給它獨立的地址空間,建立眾多的數(shù)據(jù)表來維護(hù)它的代碼段、堆棧段和數(shù)據(jù)段,是一種“昂貴”的多任務(wù)工作方式。而運行于一個進(jìn)程中的多個線程,它們彼此之間使用相同的地址空間,共享大部分?jǐn)?shù)據(jù),啟動一個線程所占用的空間遠(yuǎn)遠(yuǎn)小于啟動一個進(jìn)程所占用的空間,而且,線程間彼此切換所需的時間也遠(yuǎn)遠(yuǎn)小于進(jìn)程間切換所需要的時間。對不同進(jìn)程來說,它們具有獨立的數(shù)據(jù)空間,數(shù)據(jù)的傳遞只能通過通信的方式進(jìn)行,這種方式不僅費時,而且很不方便。線程則不然,由于同一進(jìn)程下的線程之間共享數(shù)據(jù)空間,所以一個線程的數(shù)據(jù)可以直接為其他線程所用,這不僅快捷,而且方便。

數(shù)據(jù)獲取線程流程圖如圖6所示。在線程創(chuàng)建后便開始執(zhí)行線程,首先設(shè)置了Select多路復(fù)用串口的超時值,此處串口采用Select方式使用,保證其具有阻塞性的同時也具備了超時判斷。每60 s為一次讀取的周期。之后清空系統(tǒng)內(nèi)部的串口數(shù)據(jù)緩存區(qū),保證下次接收的數(shù)據(jù)是干凈的。此時若有數(shù)據(jù)到來,則會判斷此數(shù)據(jù)為何種數(shù)據(jù)。銥星通信具有不穩(wěn)定性,時常因為信號不良而出現(xiàn)中斷,如果出現(xiàn)中斷情況,串口會收到“NO CARRRIER”數(shù)據(jù),程序?qū)⒋俗鳛閽鞌嘈畔⑴袛啵缛魭鞌?,則重新?lián)芴?。其次,浮?biāo)端規(guī)定了浮標(biāo)數(shù)據(jù)的幀格式,串口收到的數(shù)據(jù)判斷出符合浮標(biāo)數(shù)據(jù)的幀頭時,則會保存到本地,之后通過FTP上傳。

3.3? ? 數(shù)據(jù)存儲程序

系統(tǒng)程序的主線程一直在讀取系統(tǒng)時間,并將時間保存在Linux下一個時間相關(guān)的結(jié)構(gòu)體中,此程序中創(chuàng)建了一個結(jié)構(gòu)體的全局變量。由于浮標(biāo)采用UTC時間,Ubuntu系統(tǒng)默認(rèn)也是用UTC時間。在串口監(jiān)聽線程中的數(shù)據(jù)存儲環(huán)節(jié),根據(jù)當(dāng)前時間對接收到的數(shù)據(jù)進(jìn)行命名保存,并且存儲為JSON格式。命名如:BLBuoy_RAMA2001_20190520_

02_34_MET.json。數(shù)據(jù)存儲流程如圖7所示。

3.4? ? 數(shù)據(jù)推送程序

Ubuntu系統(tǒng)中,vsftpd可以說是很安全的一個ftp文件系統(tǒng),通過輸入命令(vsftpd: sudo apt-get install vsftpd-y)在線安裝。安裝完成后,通過命令開啟(sudo systemctl start vsftpd.service)服務(wù)。在程序執(zhí)行前,vsftpd的相關(guān)配置就已經(jīng)配置完成,用戶的uftp地址輸入到vsftpd.user_list文件中;“/home/ftp”作為推送的文件夾目錄。在岸站程序根目錄下創(chuàng)建一個名為ftp.sh的腳本文件,在程序中調(diào)用這個腳本即可上傳保存到本地的浮標(biāo)數(shù)據(jù)文件至服務(wù)器。

Shell腳本模板如圖8所示。在腳本中配置好服務(wù)器的IP和用戶密碼后,其會將浮標(biāo)存儲的文件夾內(nèi)所有文件上傳。

4 結(jié)語

該軟件由C語言進(jìn)行程序的編寫,其中調(diào)用了基于Shell腳本語言的腳本文件?;赨buntu18.04×64位系統(tǒng)上的gcc version 7.4.0編譯器編譯生成在此系統(tǒng)下的可執(zhí)行文件。岸站程序功能主要包含了定時進(jìn)行對浮標(biāo)端數(shù)據(jù)的獲取、存儲、FTP推送,岸站系統(tǒng)能實現(xiàn)自主運行。岸站系統(tǒng)搭載了工業(yè)級串口拓展模塊,由其連接銥星通信所需的模塊。浮標(biāo)通過銥星與地面岸站建立實時的通信,岸站系統(tǒng)能夠接收浮標(biāo)實時返回的數(shù)據(jù),存儲并且通過FTP推送給客戶。

[參考文獻(xiàn)]

[1] 許欣欣.海洋監(jiān)測技術(shù)發(fā)展現(xiàn)狀研究及應(yīng)用[J].中國戰(zhàn)略新興產(chǎn)業(yè),2018(24):180.

[2] 鄭苗壯,劉巖,李明杰,等.我國海洋資源開發(fā)利用現(xiàn)狀及趨勢[J].海洋開發(fā)與管理,2013,30(12):13-16.

收稿日期:2021-01-28

作者簡介:田炳麗(1976—),女,山東高密人,碩士,講師,主要從事自動化控制、數(shù)字信號處理方面的研究工作。