費(fèi)曉昕,吳述園,朱紅生,馬志堅(jiān),唐 萌
(1.中冶華天工程技術(shù)有限公司,安徽 馬鞍山 243005;2.南京理工大學(xué)自動(dòng)化學(xué)院)
水是生命之源,是人類自身生存和人類社會(huì)發(fā)展不可或缺的資源。我國重視對(duì)水資源的保護(hù),在針對(duì)河流、湖泊的日常水質(zhì)檢測(cè)方面,通過獲取水質(zhì)數(shù)據(jù)、對(duì)數(shù)據(jù)的匯總分析來制定治理方案。
傳統(tǒng)的水質(zhì)信息獲取方法有人工取樣、浮標(biāo)定點(diǎn)檢測(cè)和遠(yuǎn)程遙測(cè)等方式。人工取樣方式費(fèi)時(shí)費(fèi)力,受天氣影響很大,往往還需將樣本帶回實(shí)驗(yàn)室檢測(cè),時(shí)效性差,數(shù)據(jù)管理與跟蹤也有難度;浮標(biāo)定點(diǎn)檢測(cè)方式可長(zhǎng)時(shí)間連續(xù)地對(duì)特定區(qū)域進(jìn)行檢測(cè),但靈活性差、系統(tǒng)建造性價(jià)比不高;遠(yuǎn)程遙測(cè)方式智能化程度高,但測(cè)量精度不高,檢測(cè)結(jié)果方差偏大,可信度偏低。
針對(duì)以上難題,本課題組在自主構(gòu)建的無人船平臺(tái)上搭載多種水質(zhì)檢測(cè)傳感器,實(shí)現(xiàn)靈活的自主航行和水質(zhì)檢測(cè),針對(duì)可航行水域,基于Qt 5.12.1 設(shè)計(jì)了一款無人船水質(zhì)檢測(cè)系統(tǒng)的上位機(jī)軟件,軟件可以與無人船進(jìn)行遠(yuǎn)程無線通訊,實(shí)時(shí)獲取無人船坐標(biāo)信息,實(shí)時(shí)接收無人船搭載的傳感器信息,并能夠?qū)v史水質(zhì)信息進(jìn)行顯示、保存和查閱等操作。方便環(huán)境保護(hù)工作人員對(duì)不便于人工取樣的水域進(jìn)行檢測(cè),并能夠?qū)崟r(shí)獲取目標(biāo)檢測(cè)點(diǎn)水質(zhì)信息,根據(jù)歷史水質(zhì)信息進(jìn)行數(shù)據(jù)的分析、評(píng)估以便確定污染源,針對(duì)相關(guān)污染水域制定治理方案。經(jīng)過實(shí)驗(yàn)測(cè)試,本軟件與無人船之間通訊狀況良好,界面簡(jiǎn)潔易于操作,人機(jī)交互性好,具有很好的應(yīng)用前景。
無人船選用單體式結(jié)構(gòu),材質(zhì)由韌性優(yōu)良的塑料制成,方便后期開模加裝傳感器。根據(jù)水質(zhì)檢測(cè)種類的需要,為船體加裝溫度傳感器、溶解氧傳感器、化學(xué)需氧量傳感器和氨氮傳感器四種傳感器,無人船主要設(shè)備清單、性能指標(biāo)和船體示意圖如表1、表2 和圖1所示。
圖1 船體示意圖
表1 設(shè)備清單
表2 無人船性能指標(biāo)
Qt 是由挪威的奇趣科技軟件公司于1991 年開發(fā)的基于圖形用戶界面應(yīng)用程序框架,其跨平臺(tái)性好且具有很強(qiáng)的擴(kuò)展性。Qt 是面向?qū)ο髞磉M(jìn)行程序的編寫,Qt 自帶的編譯器Qt Creater 提供了三個(gè)基類:QMainWindow、QWidget 和QDialog,所有子類都從這三個(gè)基類繼承而來。Qt 的核心機(jī)制是信號(hào)和槽,對(duì)象的內(nèi)部狀態(tài)改變,會(huì)向其所連接的槽發(fā)射信號(hào),從而調(diào)用槽函數(shù),實(shí)現(xiàn)所需功能。
本文基于現(xiàn)有的無人船為對(duì)象,以Qt作為設(shè)計(jì)工具,在Windows 系統(tǒng)下開發(fā)設(shè)計(jì)程序。該上位機(jī)軟件主要實(shí)現(xiàn)以下功能:
⑴上位機(jī)與無人船之間通訊功能的實(shí)現(xiàn);
⑵無人船坐標(biāo)的實(shí)時(shí)地圖顯示;
⑶無人船采集的水質(zhì)信息實(shí)時(shí)傳輸和顯示;
⑷水質(zhì)信息的保存和歷史水質(zhì)信息的查閱。
上位機(jī)軟件的總體結(jié)構(gòu)如圖2所示。
圖2 上位機(jī)軟件總體結(jié)構(gòu)圖
基于中興MF79U模塊,利用FRP反向代理和組網(wǎng)技術(shù)搭建無人船和上位機(jī)軟件間的通訊網(wǎng)絡(luò)。通過建立socket套接字來進(jìn)行數(shù)據(jù)的發(fā)送和接收。
當(dāng)無人船與上位機(jī)軟件通信連接時(shí),先使用FRP軟件工具進(jìn)行內(nèi)網(wǎng)穿透,獲得可以直連的IP 地址。然后使用TCP/IP協(xié)議通信,按IP地址與軟件端口號(hào)組成的socket 套接字發(fā)送數(shù)據(jù)。通信子系統(tǒng)連接框架如圖3所示。
圖3 通信子系統(tǒng)框架圖
無人船航行到指定水域檢測(cè)點(diǎn)時(shí),傳感器開始采集數(shù)據(jù)并將采集到的數(shù)據(jù)發(fā)送到上位機(jī)端。此時(shí)上位機(jī)在設(shè)置好的Qt程序中遠(yuǎn)程接收、解析數(shù)據(jù)并進(jìn)行實(shí)時(shí)的顯示。
上位機(jī)軟件由軟件界面、通訊和數(shù)據(jù)庫等模塊共同構(gòu)成,采用低耦合、高內(nèi)聚的設(shè)計(jì)思想,設(shè)計(jì)軟件界面簡(jiǎn)介美觀,人機(jī)交互性強(qiáng)。
上位機(jī)軟件由水質(zhì)信息顯示界面、歷史信息顯示界面、航跡顯示界面組成。其中水質(zhì)信息顯示界面包含功能區(qū)和檢測(cè)信息顯示界面等;歷史信息顯示界面包含檢測(cè)線路的命名、保存等;航跡顯示界面由百度地圖和無人船航行坐標(biāo)點(diǎn)等構(gòu)成。主界面如圖4所示。
圖4 主界面設(shè)計(jì)圖
百度地圖是由百度公司開發(fā),集智能定位、導(dǎo)航、路徑規(guī)劃、實(shí)時(shí)路況顯示等功能為一體的新一代AI地圖。百度地圖開發(fā)工具包提供了一套免費(fèi)應(yīng)用程序接口方便開發(fā)者在網(wǎng)頁中構(gòu)建各式各樣的特色地圖。Qt 中也提供了QtWebEngine Widgets 控件實(shí)現(xiàn)Web功能,在百度注冊(cè)賬號(hào),然后將獲取的密鑰配置在Qt程序中,在上位機(jī)軟件界面端添加百度地圖。無人船的經(jīng)緯度坐標(biāo)通過通訊網(wǎng)絡(luò)傳送給上位機(jī),上位機(jī)對(duì)經(jīng)緯度坐標(biāo)進(jìn)行解析,解析后通過構(gòu)建Json 數(shù)組傳值的方式將無人船的經(jīng)緯度坐標(biāo)傳遞給前端接口,關(guān)聯(lián)相關(guān)檢測(cè)點(diǎn),最后將經(jīng)緯度坐標(biāo)顯示在地圖上。顯示效果如圖5所示。
圖5 百度地圖坐標(biāo)點(diǎn)顯示
無人船采集的水質(zhì)信息需要根據(jù)檢測(cè)點(diǎn)分時(shí)、分類保存,并能夠滿足軟件使用者隨時(shí)隨地對(duì)歷史信息進(jìn)行查看的需求。本節(jié)基于以上幾點(diǎn)設(shè)想搭建了數(shù)據(jù)庫,并通過ECharts 動(dòng)態(tài)顯示數(shù)據(jù)庫數(shù)據(jù),從而提高了數(shù)據(jù)的可讀性。
MySQL是一個(gè)基于關(guān)系的數(shù)據(jù)庫管理系統(tǒng),可以將不同數(shù)據(jù)分類保存在預(yù)設(shè)的不同表中,MySQL數(shù)據(jù)庫體積小且運(yùn)行速度快,其開源的特性降低了開發(fā)成本,因此本設(shè)計(jì)基于MySQL 設(shè)計(jì)了數(shù)據(jù)庫。檢測(cè)信息的存儲(chǔ)可以在數(shù)據(jù)庫中設(shè)計(jì)三張表分別保存檢測(cè)線路、檢測(cè)線路對(duì)應(yīng)的檢測(cè)點(diǎn),以及檢測(cè)點(diǎn)對(duì)應(yīng)的水質(zhì)信息,如圖6 所示,三張表之間使用外鍵相連,可以實(shí)現(xiàn)快速保存和查詢數(shù)據(jù)。根據(jù)船體檢測(cè)點(diǎn)、日期和搭載傳感器的種類等設(shè)計(jì)每張表內(nèi)容,詳情如圖7所示。
圖6 數(shù)據(jù)庫頁表設(shè)計(jì)
圖7 數(shù)據(jù)庫頁表內(nèi)容
根據(jù)上位機(jī)軟件的設(shè)計(jì)可知,通過Qt功能模塊連接部署在云服務(wù)器中MySQL 數(shù)據(jù)庫,檢測(cè)線路完成后,將水質(zhì)檢測(cè)信息按照檢測(cè)線路保存至MySQL 數(shù)據(jù)庫。Qt 中提供了QtSql 模塊操作數(shù)據(jù)庫,QtSql 模塊主要由用戶接口層、SQL 接口層、驅(qū)動(dòng)層三部分組成,如表3所示。
表3 QtSql模塊組成
數(shù)據(jù)庫模塊通過驅(qū)動(dòng)層和接口層提供的接口連接部署在云端服務(wù)器上的MySQL 數(shù)據(jù)庫。通過實(shí)例化QSqlDatabase 類的對(duì)象,然后設(shè)置MySQL 用戶名、密碼和IP 地址,連接云服務(wù)器上的數(shù)據(jù)庫。連接完成后可以使用QSqlQuery 類對(duì)檢測(cè)線路進(jìn)行增、刪、查、改等管理操作,檢測(cè)線路管理如圖8所示。
圖8 檢測(cè)線路管理
為了滿足數(shù)據(jù)的直觀、可視化且易讀的需求,軟件使用基于JavaScript 開發(fā)的開源可視化庫ECharts。在Qt 前端頁面
使用script 標(biāo)簽引入ECharts 依賴庫,在繪制圖表前準(zhǔn)備一個(gè)DOM 容器,然后對(duì)圖表實(shí)例進(jìn)行初始化,從云端服務(wù)器中取出數(shù)據(jù)庫中的數(shù)據(jù)并構(gòu)建Json數(shù)組,最終通過AJax解析并在上位機(jī)動(dòng)態(tài)的顯示,效果如圖9所示。圖9 水質(zhì)數(shù)據(jù)圖
通過對(duì)比傳統(tǒng)水資源保護(hù)手段優(yōu)缺點(diǎn),根據(jù)復(fù)雜水域水質(zhì)檢測(cè)應(yīng)用場(chǎng)景的需求,本文基于Qt框架設(shè)計(jì)了一款適配無人船的水質(zhì)檢測(cè)系統(tǒng)的上位機(jī)軟件,實(shí)現(xiàn)了遠(yuǎn)程通訊、數(shù)據(jù)解析、數(shù)據(jù)保存、歷史信息查閱和動(dòng)態(tài)顯示等功能,為河流、湖泊水質(zhì)檢測(cè)、勘探提供了新的解決方案,具有很高的應(yīng)用價(jià)值。