?

基于Python的科考數據的實時采集與存儲

2024-03-16 04:46鐘金波李湘湘
中國修船 2024年1期
關鍵詞:數據格式數據源語句

鐘金波,李湘湘

(中國科學院深??茖W與工程研究所,海南 三亞 572000)

海洋科學調查工作近幾年有了突飛猛進的發展,由于海洋環境的復雜性和多變性,對于后續樣品的分析,必須附帶有GPS、風速風向、溫鹽深(CTD)等數據作為支撐。對于科學家來說,人為記錄數據存在以下問題,一是不具備連續性;二是海洋科考工作強度較大,沒有精力去實現人為記錄;三是采集這些數據的傳感器分布在全船各處,對于在甲板或者在實驗室采集數據的科學家來說不方便手動記錄?;诖?,迫切需要能在實驗室或者甲板工作區有實現實時采集相關數據的接口,而且能實現數據的實時保存?,F在大多數的科考船都配置了信息采集系統,在物理架構上,可以實現數據的采集。從實船實驗室的采集和使用設備來看,具有設備多樣性、接口的需求多樣性、數據格式的多樣性、文獻[1]和文獻[2]強調了數據的采集和存儲實現的可行性,側重整個數據包的采集和存儲,沒有有效手段對數據包進行針對性的處理,以滿足不同設備對數據格式的不同需求?;谶@種需求,“探索一號”船作為國內科考船改造的成功典范,自然將該項工作提到了日程,在已有的硬件架構上,通過軟件的開發,基于Python編程語言的可擴充性、免費、開源、可移植性、可擴展性、可嵌入性等優點,可以有針對性地滿足不同設備對不同數據的特殊性需求。

1 系統設計

1.1 系統總體硬件框架

本系統硬件主要包括4個部分。

1)數據源設備層。主要包括分布在駕駛臺的導航設備和科學調查設備。這些設備能夠提供各種數據源,其中導航數據來自GPS、羅經、計程儀、測深儀、風速風向儀等,科學調查設備數據包括CTD、多波束等,通過雙絞線以RS422 或者RS232的串口通訊的數據格式接入采集設備。

2)數據的采集單元。該設備布置在駕駛臺,由信號轉換單元和串口服務器2部分組成。信號轉換單元主要是將雙絞線的串口數據轉換成網線輸出的串口數據,串口服務器選用的是MOXA 的NPort 563016,其功能是將以雙絞線接入該串口服務器的COM1、COM2……多個串口的數據,通過該串口服務器轉換成對應的網絡端口4001、4002……,該串口服務器可以同時將所需的16 種數據傳送給串口服務器,而且還可以選用32 口的串口服務器,對于后續的數據擴展提供了比較方便的路徑。

3)數據的轉發單元。該設備布置在數據處理中心,由2 部分組成,包括串口服務器、客戶端。串口服務器選用的是MOXA Nport6650-32 服務器,其作用是端口的控制,該服務器選用的是32 端口的服務器,通過參考NPort_6600_Series_QIG_v6 資料,可以配置不同端口的數據傳輸形式,既可以選擇RealCom 的數據傳輸模式,也可以選擇TCP Server 的傳輸模式,基于該功能,可以在各實驗室獲取所需要的數據格式??蛻舳说淖饔镁褪峭ㄟ^安裝的TJ-IDAS 軟件配置上述服務器的32 個不同端口的數據源,實現數據的采集、轉發。

4)數據接收單元。從串口服務器分別布置2條網線到各實驗室和其他處所,通過分布在各實驗室各區域的網絡接口,科學家可以隨時采集和存儲所需要的數據。

系統硬件框架圖如圖1所示。

圖1 系統硬件框架圖

1.2 系統軟件實現

1)通過串口實現數據轉發。由于科學考察需求的不同,經常會有專業設備軟件(ADCP、人工地震作業、Global map 等)需要臨時接入GPS、羅經、CTD 等的數據,所以該系統經過2 次重要的升級,第一次是在控制終端實現數據的采集和存儲,在控制終端通過TJ-IDAS程序配置不同的端口。

串口轉發程序配置界面圖如圖2 所示,圖2中,串口號即實驗室實際的物理端口號,串口類型選擇發送,在串口數據源端口中,選擇所需要分發的數據源,例如GPS、CTD 等,然后在串口參數中配置波特率、數據位、停止位和校驗位等相應的參數,在對應的實驗室接口就可以獲取實時的串口數據。該軟件方案提供了2種工作模式:采集模式和采集并存儲模式。在采集模式下可以實現數據的采集和停止,而且可以實時查看所有源端口的數據格式和報文。在作業工況下提供采集并存儲模式,可以實現所有數據邊采集邊存儲,也可以實現對某一所需通道數據的采集和存儲,可以更高效地利用數據和存儲空間。

圖2 串口轉發程序配置界面圖

該次升級的軟件版本問題在于數據種類的增加,串口采集服務器可以隨時增加不同的數據類型,由于從服務器去各個實驗室采用串口傳輸,一個串口端口只能同時傳輸一種數據,想要在某一區域同時接收多種數據,就需要同時布置多條串口傳輸網線,在實現上存在很大的困難,是軟件需要再次升級的主要原因。

2)Python 程序的實現。串口通信在一條物理鏈路上只能同時傳輸一種數據形式。由于對多種類型多路數據的需求增加,迫切需要能在一條物理鏈路上同時傳輸多種數據形式,而通過網絡通信就可以實現該功能?;谠撃繕诵枰诙诬浖?,通過使用Python語言開發了小程序來實現同時獲取多種數據形式。MOXA Nport6650-32服務器可以配置其輸出端口的通訊形式,在物理鏈路上實現網絡數據的通信,只需要在MOXA Nport6650-32服務器的配置界面上將實驗室的某一端口對應的輸出端口配置成TCP Server 模式,就可以在實驗室訪問該串口服務器。

(1)導入庫。用import語句,導入所需要使用的第三方庫文件,包括網口數據的采集socket庫[3-4]、文件讀寫與保存的CSV 庫、datetime 和time庫。socket 是計算機之間進行通信的一種約定或一種方式。通過socket約定,一臺計算機可以接收其他計算機的數據,也可以向其他計算機發送數據。datetime 庫是Python常用的一個庫,主要用于時間解析和計算。csv 在Python 語言中主要用于文件的讀取與存儲。

①import socket

②import datetime

③import csv

④import time

(2)文件的獲取。通過mysock.connect()命令,可以指定需要訪問的網絡IP 和端口號,用mysock.recv()命令可以獲取端口的數據內容,并將該端口獲取的內容賦值到a,由于端口獲取的數據內容雜亂,可以利用′ ′將所有的數據按換行符來切割成不同的行賦值給a。

⑤mysock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

⑥mysock.connect((′192.168.1.254′,4001))

⑦out_message=[]

⑧out_gga=[]

⑨while True:

⑩a=mysock.recv(512)

?if len(a)<1:

?break

?a=a.decode("utf-8")

?a=a.split() #把a的數據按′ ′切割

(3)數據的選擇與截取。為了獲取所需要的數據內容,可以通過判斷語句“if ′GGA/HDT′in text_split”,并將指定的數據增加到out_gga,然后每讀取一條內容,就在后面增加讀取該內容的時間。

?for text_split in a:

?if "GGA" in text_split: # 切割出來一條,判斷一條

?out_gga.append(text_split)

?now_time= datetime.datetime.now().strftime(′%Y-%m-%d%H:%M:%S′)

?out_gga.append(now_time)

(4)數據的保存。用withopen()命令,來建立csv 文件,再通過csv.writer ()命令將獲取的內容保存在新建立的csv文件里。

?with open(′gps_out.csv′,′a′,newline=′′)as f:

?writer=csv.writer(f)

?writer.writerow(out_gga)

?f.close()

?print(out_gga)

?out_gga=[]

?out_message=[]

?time.sleep(2)

通過該Python 程序,能夠獲取指定的數據內容,對于不同的網絡端口,只需要更改⑥中的IP地址和網絡端口號,就可以獲取其他數據內容,比如4002 對應的羅經數據,4003 對應的計程儀數據等。同樣,如果需要截取端口內的部分內容,也可以通過?的判斷語句來截取。

3)程序的封裝。 通過PyCharm 軟件自帶的PyInstaller 庫的功能[5],將該程序封裝成exe 執行程序,可以安裝到不同的電腦上,很方便地實現不同實驗室不同數據的實時采集和存儲功能。

2 試驗測試與結果分析

為了驗證該系統的穩定性,“探索一號”科考船的TS21 航次中,在地球物理實驗室實時采集和存儲GPS 數據,得到比較理想的結果。在該測試中,選用GPS數據作為測試目標,由于GPS發過來的數據包有很多不同類型的數據格式,包括GGA、GLL、RMC 等[6],其大部分數據都具有重復性。所以在該測試中,只讀取以S GGA 開頭的語句作為存儲GPS的坐標,為實現該目的可以利用在Python編程語句中?的判斷語句“if ′GGA′in text_split”等來實現。也就是說,從socket讀取的數據a不是全部采集保存,只有以GGA 開頭的語句才保存在輸出的文檔里。數據樣本保存結果如圖3所示,通過對比圖3,處理后的語句實際已包含經緯度、時間、航速等重要的數據,已刪減無用或者重復的數據。只讀取該語句的數據,不僅滿足科學家對于GPS數據利用的需求,也可以大大節省存儲空間。

圖3 數據樣本保存結果

在“探索一號”科考船上,已經寫好了目前所使用的7種數據的語言包,并封裝成不同的小軟件。在實際使用中,只需要插上網線,將本地電腦設置成192.168.1.**網段的IP,直接打開對應的小軟件,就可以獲取所需要的數據,并保存在本地電腦里。

3 結束語

綜合多航次的實際使用情況,該設計的軟硬件的使用在實踐上已經獲得了科學家的認可,為他們保存了大量的科學考察數據。隨著中國科考事業的發展和科考工作的完善,數據的采集和存儲將得到更大程度地利用和重視,這種基于Python或者其他語言的數據實時采集與存儲系統的便利性和可復制性將得到更廣泛的運用。

猜你喜歡
數據格式數據源語句
重點:語句銜接
在智能交通系統中PLC數據格式轉換方法的研究
Web 大數據系統數據源選擇*
基于不同網絡數據源的期刊評價研究
基于真值發現的沖突數據源質量評價算法
論子函數在C語言數據格式輸出中的應用
DWG與SHP數據格式互轉換方法研究——以龍巖規劃測繪數據為例
如何搞定語句銜接題
分布式異構數據源標準化查詢設計與實現
基于ArcGIS的規劃數據格式轉換研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合