面向地表水水质检测的无人船上位机软件设计与实现*
2022-09-07费晓昕吴述园朱红生马志坚
费晓昕,吴述园,朱红生,马志坚,唐 萌
(1.中冶华天工程技术有限公司,安徽 马鞍山 243005;2.南京理工大学自动化学院)
0 引言
水是生命之源,是人类自身生存和人类社会发展不可或缺的资源。我国重视对水资源的保护,在针对河流、湖泊的日常水质检测方面,通过获取水质数据、对数据的汇总分析来制定治理方案。
传统的水质信息获取方法有人工取样、浮标定点检测和远程遥测等方式。人工取样方式费时费力,受天气影响很大,往往还需将样本带回实验室检测,时效性差,数据管理与跟踪也有难度;浮标定点检测方式可长时间连续地对特定区域进行检测,但灵活性差、系统建造性价比不高;远程遥测方式智能化程度高,但测量精度不高,检测结果方差偏大,可信度偏低。
针对以上难题,本课题组在自主构建的无人船平台上搭载多种水质检测传感器,实现灵活的自主航行和水质检测,针对可航行水域,基于Qt 5.12.1 设计了一款无人船水质检测系统的上位机软件,软件可以与无人船进行远程无线通讯,实时获取无人船坐标信息,实时接收无人船搭载的传感器信息,并能够对历史水质信息进行显示、保存和查阅等操作。方便环境保护工作人员对不便于人工取样的水域进行检测,并能够实时获取目标检测点水质信息,根据历史水质信息进行数据的分析、评估以便确定污染源,针对相关污染水域制定治理方案。经过实验测试,本软件与无人船之间通讯状况良好,界面简洁易于操作,人机交互性好,具有很好的应用前景。
1 系统的整体设计
无人船选用单体式结构,材质由韧性优良的塑料制成,方便后期开模加装传感器。根据水质检测种类的需要,为船体加装温度传感器、溶解氧传感器、化学需氧量传感器和氨氮传感器四种传感器,无人船主要设备清单、性能指标和船体示意图如表1、表2 和图1所示。
图1 船体示意图
表1 设备清单
表2 无人船性能指标
Qt 是由挪威的奇趣科技软件公司于1991 年开发的基于图形用户界面应用程序框架,其跨平台性好且具有很强的扩展性。Qt 是面向对象来进行程序的编写,Qt 自带的编译器Qt Creater 提供了三个基类:QMainWindow、QWidget 和QDialog,所有子类都从这三个基类继承而来。Qt 的核心机制是信号和槽,对象的内部状态改变,会向其所连接的槽发射信号,从而调用槽函数,实现所需功能。
本文基于现有的无人船为对象,以Qt作为设计工具,在Windows 系统下开发设计程序。该上位机软件主要实现以下功能:
⑴上位机与无人船之间通讯功能的实现;
⑵无人船坐标的实时地图显示;
⑶无人船采集的水质信息实时传输和显示;
⑷水质信息的保存和历史水质信息的查阅。
上位机软件的总体结构如图2所示。
图2 上位机软件总体结构图
2 软件通讯功能的实现
基于中兴MF79U模块,利用FRP反向代理和组网技术搭建无人船和上位机软件间的通讯网络。通过建立socket套接字来进行数据的发送和接收。
当无人船与上位机软件通信连接时,先使用FRP软件工具进行内网穿透,获得可以直连的IP 地址。然后使用TCP/IP协议通信,按IP地址与软件端口号组成的socket 套接字发送数据。通信子系统连接框架如图3所示。
图3 通信子系统框架图
无人船航行到指定水域检测点时,传感器开始采集数据并将采集到的数据发送到上位机端。此时上位机在设置好的Qt程序中远程接收、解析数据并进行实时的显示。
3 软件界面的设计
上位机软件由软件界面、通讯和数据库等模块共同构成,采用低耦合、高内聚的设计思想,设计软件界面简介美观,人机交互性强。
3.1 软件界面的设计
上位机软件由水质信息显示界面、历史信息显示界面、航迹显示界面组成。其中水质信息显示界面包含功能区和检测信息显示界面等;历史信息显示界面包含检测线路的命名、保存等;航迹显示界面由百度地图和无人船航行坐标点等构成。主界面如图4所示。
图4 主界面设计图
3.2 地图构建与显示
百度地图是由百度公司开发,集智能定位、导航、路径规划、实时路况显示等功能为一体的新一代AI地图。百度地图开发工具包提供了一套免费应用程序接口方便开发者在网页中构建各式各样的特色地图。Qt 中也提供了QtWebEngine Widgets 控件实现Web功能,在百度注册账号,然后将获取的密钥配置在Qt程序中,在上位机软件界面端添加百度地图。无人船的经纬度坐标通过通讯网络传送给上位机,上位机对经纬度坐标进行解析,解析后通过构建Json 数组传值的方式将无人船的经纬度坐标传递给前端接口,关联相关检测点,最后将经纬度坐标显示在地图上。显示效果如图5所示。
图5 百度地图坐标点显示
4 数据的保存和展示
无人船采集的水质信息需要根据检测点分时、分类保存,并能够满足软件使用者随时随地对历史信息进行查看的需求。本节基于以上几点设想搭建了数据库,并通过ECharts 动态显示数据库数据,从而提高了数据的可读性。
4.1 数据库搭建
MySQL是一个基于关系的数据库管理系统,可以将不同数据分类保存在预设的不同表中,MySQL数据库体积小且运行速度快,其开源的特性降低了开发成本,因此本设计基于MySQL 设计了数据库。检测信息的存储可以在数据库中设计三张表分别保存检测线路、检测线路对应的检测点,以及检测点对应的水质信息,如图6 所示,三张表之间使用外键相连,可以实现快速保存和查询数据。根据船体检测点、日期和搭载传感器的种类等设计每张表内容,详情如图7所示。
图6 数据库页表设计
图7 数据库页表内容
4.2 实时水质信息的保存
根据上位机软件的设计可知,通过Qt功能模块连接部署在云服务器中MySQL 数据库,检测线路完成后,将水质检测信息按照检测线路保存至MySQL 数据库。Qt 中提供了QtSql 模块操作数据库,QtSql 模块主要由用户接口层、SQL 接口层、驱动层三部分组成,如表3所示。
表3 QtSql模块组成
数据库模块通过驱动层和接口层提供的接口连接部署在云端服务器上的MySQL 数据库。通过实例化QSqlDatabase 类的对象,然后设置MySQL 用户名、密码和IP 地址,连接云服务器上的数据库。连接完成后可以使用QSqlQuery 类对检测线路进行增、删、查、改等管理操作,检测线路管理如图8所示。
图8 检测线路管理
4.3 历史检测信息查阅
为了满足数据的直观、可视化且易读的需求,软件使用基于JavaScript 开发的开源可视化库ECharts。在Qt 前端页面
使用script 标签引入ECharts 依赖库,在绘制图表前准备一个DOM 容器,然后对图表实例进行初始化,从云端服务器中取出数据库中的数据并构建Json数组,最终通过AJax解析并在上位机动态的显示,效果如图9所示。图9 水质数据图
5 结束语
通过对比传统水资源保护手段优缺点,根据复杂水域水质检测应用场景的需求,本文基于Qt框架设计了一款适配无人船的水质检测系统的上位机软件,实现了远程通讯、数据解析、数据保存、历史信息查阅和动态显示等功能,为河流、湖泊水质检测、勘探提供了新的解决方案,具有很高的应用价值。