水质监测系统云平台的设计与实现
2021-11-26石爱峰
石爱峰
(200093 上海市 上海理工大学 机械工程学院)
0 引言
为了解决水处理公司对水质监测设备测取数据的实时查看及远程控制,设计该远程水质监测系统,本系统前端使用React,JavaScript,CSS 等进行搭建,后台使用Django 进行搭建,数据库采用MySQL 进行数据储存,并将系统部署到云端服务器,实现远程访问与实时监测。其中,数据来源于硬件部分测取,通过传感器将所测数据远程回传至服务器[1],使用InfluxDB 服务器进行存储,并基于 Django-crontab 进行定时水质预警判断,最终结合包括 Echarts 等工具,将获取到的数据以图像的方式进行展示,从而实现水质数据的实时化、可视化展示,使得企业在查看水质数据和追踪水质变化的能力上得到大大加强。
1 云平台系统设计
1.1 核心需求规划
针对平台使用对象和服务对象的不同需求,首先建立核心需求规划表,如表1 所示。
表1 平台核心需求规划Tab.1 Core requirements planning
1.2 设计目标
(1)实现各设备水质监测数据的远程监控;(2)实现各设备工作环境中的水质预警;(3)实现设备管理与调度功能;(4)实现基本的设备管理,该功能主要服务于企业;(5)实现基本的用户管理,该功能主要服务于企业。
1.3 软件部分整体设计
软件部分的整体组成逻辑图如图1 所示。该平台采用React 作为前端框架,这是因为React可以非常轻松地创建用户交互界面[2],设计简洁的状态视图,在数据改变时,高效地更新渲染内容界面。React 使用虚拟DOM,可以帮助解决跨浏览器问题,并能提供标准化的API。此外,React 采用组件化、模块化方式管理[3],代码的维护性更高,后台部分采用Django 进行开发[3],数据库选择MySQL 进行数据管理。该数据库是一个成熟的关系型数据管理系统,运行平稳,适合中小型系统。数据沟通采用Axios 进行前后台数据异步请求,每次数据更新无需刷新整个浏览器页面,只针对更新部分进行局部数据更新。
图1 软部分整体设计逻辑Fig.1 Overall design logic of software part
1.3.1 水质监测功能设计
该数字化平台的核心功能实际上就是远程水质监测,水质监测数据的主要查看途径主要分当前实时数据直接查看与历史数据折线图查看,在二者结合的情况下,能够更好地对当前水质情况有所了解,并有利于对未来水质的预判[4]。
如图2 所示,在线平台会将最近24 h 的各传感器水质记录数据以折线图的形式进行展示,并辅以当前实时水质数据,在二者并用的情况下,水质当前情况已经变得异常清晰,便于判断。
图2 水质监测页面Fig.2 Water quality monitoring page
1.3.2 水质提醒功能设计
水质预警的目的在于帮助设备操作者判断是否需要添加各类药剂。由于水质预警事件发生时机的特殊性,并不总是恰好发生在设备用户或者企业运维人员查看设备传感器监测数据时[5]。水质提醒界面如图3 所示。除此之外,水质预警信息也应当能够查阅历史记录,以方便追究责任人等情况。在此需求下,本系统除了将传感器测量数据存储于设备本地之外,还将监测数据每5 min 上传一次。并在上传的同时,监控测量值是否达到阀值,若超过阀值,则根据各设备和传感器的相应设置发起水质预警,水质提醒记录页面如图4 所示。
图3 水质提醒页面Fig.3 Water quality reminder page
图4 水质提醒记录页面Fig.4 Water quality reminder record page
1.3.3 设备管理功能设计
设备创建流程如图5 所示,采取了相对简单的二级管理机制,即主机型号与设备。主机型号是用于统一设备本体的管理,例如嵌入式等核心设备相同的主机均属于同一主机型号。在主机型号下面还要创建设备,就可以根据客户的不同需求配备数量不等的各类型、各型号的传感器,满足客户在生产环境下的实际需求,并使得整个系统更具灵活性[6]。
图5 设备创建流程Fig.5 Device creation process
2 数字化平台整体实现
2.1 首页模块
首页模块主要展示设备地区分布情况、设备的数量和当前的运行状态。设备运维走势曲线展示了不同省份各个季度设备的维护情况。
2.2 运维模块设计
运维模块由运维首页、设备实时监控、水质提醒记录、传感器标定和设备维护子模块组成。
运维首页直观地展示了各个地区设备数量、单位、编号和运行状态等信息,还可以根据地区、用户单位和设备状态来搜索获得具体设备的相关信息;点击设备图片可以跳转到该设备的实时监控页面。
设备实时监控模块展示了设备对水质的一个远程监测,点击水质监控、传感器标定和设备维护图标,能够跳转到相应的详细的信息展示页面;点击设备详情和客户单位会弹出弹框,展示设备详情和客户基础信息。不同传感器会对应不同的传感器监控曲线,直观展示了水质情况,搜索功能能帮助用户更便捷获得水质情况信息。
水质提醒记录模块展示了设备在工作环境中发出的水质预警提示信息。各种类型的传感器在出厂时会设定相应的理论值、阀值和提醒内容,当测得实际值不在预定范围,就会触发传感器发送提示内容,实现水质预警作用。根据所选的时间段和传感器类型,可以查询到特定的水质提醒记录信息。
传感器标定模块是设备维护人员用来展示传感器标定记录和保存维护人员测得的标定实际值和补偿值的。传感器标定列表是用做维护人员记录测得的标定实际值和补偿值,传感器标定记录列表展示的是所有传感器的标定信息,可以通过选择时间段和传感器类型来查询指定数据。
设备维护模块展示的是该台设备的所有维护记录,通过选择时间段和维护原因能查询到具体的设备维护记录。点击设备报修按钮,弹出弹窗,可以进行设备维护记录的创建,点击编辑按钮可以对设备维护记录进行编辑。
2.3 客户信息模块设计
客户信息模块展示了所有客户的基本信息,通过搜索客户单位可以查看到该客户单位的地址、邮编、电话等基本信息,可以创建、编辑、删除客户信息。联系人弹窗不仅展示了联系人职位和电话等基础信息,还可以实现新增联系人、编辑和删除联系人的功能。
2.4 设备基本信息模块
基本信息模块主要由主机信息和传感器信息页面组成。主机信息页面主要由主机信息列表和搜索区域组成。主机信息列表上展示了所有的主机信息,例如主机编码、主机名称、开始生产日期和状态等信息。通过选择时间段和主机编号,可以搜索到指定的主机信息。可以新增、编辑和删除主机信息。传感器信息页面展示了所有传感器的基本信息,例如传感器的编号、类型、状态等信息。搜索功能是通过选择传感器类型、型号和编号来进行检索,可以实现传感器信息的新增、编辑和删除。
2.5 账户信息管理模块
账户信息管理模块主要由角色权限管理和账户信息管理组成,企业用户可以在该模块设置新用户的账户信息与权限,其中权限部分在前端完成,通过每次登录时从后台获取账户信息,将账户权限信息存储于浏览器的cookie 中,在登录完成跳转进入系统时,根据cookie 中的账号权限信息来限制访问的路由,实现账户权限控制。
2.6 硬件部分数据传输
硬件部分的整体组成逻辑图如图6 所示。上位机采用国产芯片瑞芯微RK3288 的Firefly 开源主板,通过RS485 总线与扩展板连接,扩展板再与各个传感器的电极变压器的接线连接采集传感器的电压信号。
图6 硬件整体逻辑图Fig.6 Hardware integration logic
嵌入式软件采用QT Creator 进行编写,因为QT 代码有很好的移植性,搭配自带的界面编辑器,可以快速地进行界面设计,并且移植到各个平台。
通过调用QSerialPort 模块[7],可以实现上位机与下位机的RS485 串口通讯,并且发送的数据内容符合MODBUS-RTU 协议,能够极大地保障发送与接收数据的准确性和抗干扰能力。由于QT 运行的窗口是一个main 函数,中间不能发生时间中断,否则会导致窗口的运行崩溃。为了满足嵌入式上位机能延时自动向下位机发送报文,在编程时调用了QThread 模块进行了多任务的设计。传感器所测水质数据远程回传至服务器,使用 influxDB 服务器进行存储,通过该数字化系统,定时访问服务器,获取数据,并通过前后端交互,将数据通过Echarts 渲染在页面上。
4 结论
本云平台是一个基于对现有水质监测设备的数字化设计,采用Web 技术搭建的远程实时水质监测的云平台,可以满足企业用户对于水质的实时监控的需求,并提供了水质提醒、设备管理等辅助功能,是一个完善的远程实时水质监测云平台。