作者主页:毕业设计精选
作者简介:9年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家
摘. 要
以巢湖水质为研究对象,设计和开发了基于 SSM 的轻量级水质在线监测系统 ,对巢湖水中的总磷 、 氨氮等 9 种成分数据进行采集、传输和预测分析 。在监测系统中,智能传感器通过现场总线协议 Modbus 将采集 的数据发到监测站,监测站再将数据通过 TCP/IP 协议传送到系统主机,基于 Vue 的 系统主机对数据进行分析处 理后,在网 页上实时展示 。基于 SSM 框架构建水质监测系统降低了开发难度,系统稳定可靠,实现了设计 目标 。
关键词 SSM 框架;Modbus 协议;TCP/IP 协议;数据预测分析;巢湖;
水质安全事关人民群众健康 、社会经济发展和 自然环境保护。近年来,随着我国工业水平的高速发 展,水资源短缺 、水环境污染 、水生态受损三大问题 日益凸显 , 同时地表水成分逐渐趋于复杂且化学成 分增多[1] 。社会对水质安全的要求越来越高,因而设 计一个稳定的实时预测分析监测系统很有必要[2]。
近年来 ,Spring+Spring MVC+Mybatis(SSM)框架 凭借其优越的性能和较高的开发效率 ,在一众 Web 应用开发框架中脱颖而出。该框架结构简单,实现较为轻松,具有高复用 、低耦合 、易开发的优势[3] 。本系 统使用 Java 语言 ,以 SSM 框架为主 ,结合 Vue 前端 设计框架设计出 了轻量级的巢 湖 水 质 在 线 监 测 系 统 。本系统使用 Modbus 与 TCP/IP 通信协议进行数 据传输,数据传输至系统主机后存于 H2 数据库 。系 统主机通过经典算法对数据进行分析处理后 ,在可 视化网页平台实时更新展示 ,实现了水质数据在线 监测的目标。
1 系统架构设计
水质数据监测系统(图 1)中 ,可采集多 种水质 数据的智能传感器布设在监测区域 ,其负责将数据 发送到周边的监测站点 ;监测站点转换数据格式后转发给负责数据预测分析和信息输出的主机 ; 主机 采用 SSM 框架和 H2 数据库[4-5]。
1.1 SSM 框架
图 2 是 SSM 框架结构图。在 SSM 框架中,系统的 3 层架构为表现层(包括 model、controller、view)、业 务层 、持久层 。不同层分别负责相应的功能,提高了 系统的运行效率,降低了开发难度[6]
1.1.1 SSM 框架的表现层
该层要通过调用业务层 的接口来控制业务流程 ,其作用是使用 JavaWeb 结 合 Vue 等相关技术将逻辑底层传来的数据显示给用 户。控制的配置也是在 Spring 的配置文件中进行,针 对具体的业务流程设有不同的控制器 。 同时进行抽 样归纳,重复利用子单元流程模块,可以使程序结构 变得清晰 。这一逻辑层依赖底层的功能接口实现数据的传递和通信 。
1.1.2 SSM 框架的业务层
该层具有承上启下的中 间过渡作用,运用 Servlet、Tomcat、Web Server、Filter、 Listener 等技术栈向上控制传递 SSM 框架中表现层 的请求 。站点业务层的职能是管理协调好各个水质 监测站点的相关数据和业务 ,该层通过调用一个或 多个持久层中的功能点来获取数据 。该层在处理好 各站点数据和业务后将结果传输到上层程序逻辑处 理层 ,进而完成对水质数据业务和基站功能及接 口 的整合工作 。封装该层的业务逻辑有利于通用业务 逻辑的独立性和重复利用性,程序非常简洁。
1.1.3 SSM 框架的持久层
该层是容器的最底层,实 现逻辑结构的最底层与数据库互相作用 。其夹在业 务逻辑与数据库资源中间,是 MVC 模式中的 Model 层。MyBatis 使用 XML 或注解用于配置和原始映射,提供映射标签和 XML 标签 。各个数据对应 Pojos 和 监测水站的接口依此被映射成数据库中的记录 。这 些记录和上层的站点数据处理层产生交互 ,完成水 质数据的存储、增删改查等一系列相关基本操作。
1.2 系统数据库设计
为了消除数据存取等因素对系统数据稳定性 造成的影响 ,本系统选择关系型数据库 H2 。结合 MyBatis 框架的优势建立了数据库 ,包括设备表 、数 据表、权限表、用户表 、信息表等 5 张表单。在系统中 对应的表单名称如表 1 所示。
2 系统主要功能设计
本系统最主要 、最基础的功能是通信功能 、异常 报警功能、数据预测功能和信息输出功能(图 3)。
2.1 通信功能
通信功能承担着系统中传输数据和指令的任务 。智能传感器布设在巢湖中,并定时以 Modbus 协 议格式发送收集到的水质数据到监测站点 。5 个监 测站点均匀布设在巢湖周边 ,其作为系统的通信中 枢起到了过渡的 作用 。智能传感 器 将 数 据 直 接 以 Modbus 格式送至监测站点,监测站点立即将数据通 过预写的转换程序转为 TCP/IP 格式的水质数据再 送至系统主机的数据库中[7-8]
2.1.1 智能传感器与监测站点的通信过程
Modbus 协议定义了一个 与基础通信层无 关的 简 单 数 据 协 议 数 据 单 元 PDU( protocol description unit),特定总线或网络上的 Modbus 协议映射能够在 应 用 数 据 单 元 ADU(application data unit)上 引 入 一 些附加域 。对于不同物理介质上实现的 Modbus 协 议 ,其 PDU 单元是统一的 ,而附加地址域及差错校 验域需要遵循不同总线或网络的特定要求和格式[9]。 通用帧格式如图 5 所示。
附加地址域是信 息帧的第一字节(8 位),定义 为 0~255 。通过这个字节,拥有唯一预设地址的节点
在发送给对应监测站点信息时可表明该报文来源 。 因为监测站点和节点是一对一的 ,所以该报文在转 为 TCP/IP 格式并被主机接受后,主机可以迅速了解 该水质数据所对应的水域。
功能码是通信传送的第二个字节 。Modbus 通讯 协议定义功能号为 1~127 。表 2 是常用功能码及其 作用。功能码生成后从节点发往监测站点,指示监测 站点需要执行的动作 ,监测站点执行后返回响应中 带有相同功能码表明已执行该操作。
表 2 通信过程中的常用功能码及其作用
功能码 | 名称 | 作用 |
01 | 读线圈状态 | 读取一组逻辑线圈的当前状态 |
02 | 读输入状态 | 读取一组输入线圈的当前状态 |
03 | 读保持寄存器 | 读取一个或多个保持寄存器中的值 |
04 | 读输入寄存器 | 读取一个或者多个输入寄存器中的值 |
05 | 写单个线圈 | 强制一个逻辑线圈的状态 |
06 | 写单个寄存器 | 把一个具体的值装入一个保持寄存器 |
15 | 写多个线圈 | 强制多个逻辑线圈状态 |
16 | 写多个寄存器 | 将一组具体的值装入多个保持寄存器 |
数据区根据不同的功能码而存在差异 。本系统 的数据区由多种水质数据综合在一起 ,大小未知且 占用数据帧中 n 个字节。
差错校验是用校验码判别接收的信息是否出 错。因为水中的干扰因素较多,相关信息在传输过程 中可能会发生细微的变化,所以通过差错校验码可以 保证监测站点或节点在数据传送过程中识别出错误 信息,并且使其失效,以增加系统的安全性和效率 。 差错校验采用 CRC-16 校验方法 , 图 6 是计算 CRC 码的步骤 。
目前,Modbus 有 3 种常见的数据帧格式 ,本文 选用最主流且适用于现场设备的 RTU 数据帧格式 作为传输格式 。 以下是监测站点收到 Modbus-RTU 报文的核心代码:
//这边使用的是 Netty 进行命令下发
public void channelActive(ChannelHandlerCon - text ctx)throws Exception{
//请求当前设备的设备 ID
byte [] deviceIdResult = new byte [] {0x03 ,0x10, 0x00,0x01,(byte)0xC4,0x1A};
ctx.writeAndFlush(Unpooled.wrappedBuffer(devi- ceIdResult)).addListener(ChannelFutureListener.FIRE_ EXCEPTION_ON_FAILURE);
ctx.flush();}
对该条 Modbus-RTU 数据报文的解析: 从机地 址为 03,功能号为 10,数据 为 0001,CRC 校验码为 C41A 。这串帧数据即表达 03 号智能传感器向其对 应的监测站点发送了数值 0001。
2.1.2 主机与监测站点的通信过程
监测站点与主 机之间通信需要先创建 TCP/IP 连接,在数据发送完 毕后再断开连接。图 7 是“三次握手”连接建立过程 。 系统主机先创建传输控制块 TCB,进入 LISTEN(监 听)状态。系统主机向一个监测站点发出连接请求报 文,即报文首部中同部位 SYN=1,同时附带选择一个 初试序列号 seq=x,系统主机切换至 SYN-SENT(同 步已发送)状态 。监测站点收到该请求报文后,会自动发出确认报文 ,该报文中 ACK=1、SYN=1,确认号 是 ack=x+1 , 同样附带一个初始化序列号 seq=y,监 测站点切换到 SYN-RCVD(同步收到)状态 。系统主 机收到确认后,同样也要返回一个确认,该确认报文 的 ACK=1、ack=y+1,初始序列号 seq=x+1,发送完后 系统主机即刻进入 ESTABLISHED(已建立连接)状 态 。 当监测站点收到确认后也进入 ESTABLISHED (已建立连接)状态。至此,监测站点与系统主机之间 即可传输数据。之前,监测站点将智能传感器发来的 Modbus-RTU 格式帧数据通过预写转换程序直接转 为 TCP/IP 协议数据格式 。TCP/IP 帧数据将一个报文 MBAP 头部(modbus application protocol header)直接 加到从 Modbus 数据单元中保留的由功能码和数据 组合而成的协议数据单元 PDU(protocol data unit)的 前 面 , 形 成 了 TCP/IP 协 议 的 应 用 数 据 单 元 ADU (application data unit)。 图 8 是对这 2 种帧数据的具 体通用格式对比 ,表 3 是对报文头部内各项内容的 解释[10]。
在数据发送完毕后需要断开连接,图 9 是“ 四次挥手 ”断开连接的过程 。系统主机发出连接释放报 文 ,并且停止发送数据 ,释放数据报文头部 FIN=1, 初始序列号为 seq=u , 系统主机进 入 FIN-WAIT-1 (终止等待 1)状态 。监测站点收到连接释放报文并 发出确认报文,ACK=1、ack=u+1,附带序列号 seq=v, 此时监测站点进入 CLOSE-WAIT(关闭等待)状态 。 系统主机收到确认请求后,进入 FIN-WAIT-2(终止 等待 2)状态,等待监测站点发送连接释放报文 。监 测站点发送完最后的数据后会发送连接释放报文 , FIN=1、ack=u+1,序列 号为 seq=w,此时监测站 点 进 入 LAST-ACK(最后确认)状态 。系统主机收到后必 须发出确认,ACK=1、ack=w+1 , 自身序列号为 seq= u+1,系统主机进入 TIME-WAIT(时间等待)状态 。再 经过 2*MSL(最长报文段寿命)的时间后 ,系统主机 删除 TCB 后进入 CLOSED 状态。监测站点在收到确 认报文后立即进入 CLOSED 状态[10]。
2.2 异常报警功能
系统主机需要对数据敏感 , 即当某个数据值骤 高或骤低时发出异常警报。因此,需要在系统中提前 设置好阈值 。 同时,在特殊情况下,数据的正常波动 阈值可以由管理员重设 ,保证了系统主机报警的及 时性和有效性 。这里规定了 3 个警报级别 , 即 0 级 (正常)、1 级(超标警戒)、2 级(严重超标警戒)。一旦 报警 ,管理部门可以根据警报级别及内容迅速发布 应急措施,保障巢湖水质安全。表 4 是应季水质数据对应报警级别的波动范围.
表 4 各指标数据警报级别范围
级别 | 电导率/ (μS·cm-1) | pH 值 | COD/ (mg·L-1) | 氨氮/ (mg·L-1) | 总磷/ (mg·L-1) | 温度/ ℃ | 流速/ (m·s-1) | 浊度/ JTU | 溶解氧/ (mg·L-1) |
0 级 | 3~5 | 6.5~9.0 | 8~12 | 0~0.02 | 0~8 | 0~22 | 0~0.2 | 0~3 | 1.6~2.4 |
1 级 | 5~8 | 5.5~6.5 | 12~15 | 0.02~0.50 | 8~10 | 22~26 | 0.2~0.8 | 3~10 | 2.4~3.0 |
2 级 | >8 | 0~5.5,>9.0 | >15 | >0.50 | >10 | >26 | >0.8 | >10 | >3.0 |
2.3 数据预测功能
在实际监测中 , 由于数值过高或过低等突发情 况产生具有随机性 、不定时性,维护人员无法保证在 第一时间赶到现场处理。根据理论分析与实际经验, 连续几天测量的数值可能具有一定的相关性 , 因而 本系统给出了数据预测的解决方案: 系统后台会基 于前 15 d 测定的所 有数 据 值 来 预 测 后 2 d 的 数 据 值,并展示在页面上,为维护人员提供参考 ,以便人 们对可能出现的异常数值进行前瞻性的应对准备 。
2.3.1 预测功能实现原理
选择使用回归分析模型 对数据进行预测分析。以测定的总磷量为例,把时间 (d)作为自变量 、总磷含量(mg·L-1)作为因变量 ,可 以确定两者间是一对一的关系 。 回归模型包括线性 回归模型与非线性回归模型。分析实际数据,并结合 预测准确度 、功能需求度的考虑,发现变量之间的关 系无法用线性回归方程准确表示 , 于是选择使用非线性回归模拟方式 。一元非线性回归方程: f(x)=θ0+θ1x1+……+θnxn
方程求解基于 Gauss-Newton 法[11] 的思想 ,根据 最小二乘法的原理[12],通过不断迭代逼近参数解。
2.3.2 模型训练及验证
横坐标为时间(d)、纵坐标 为总磷含量(mg·L-1)。 算法实现需要设计迭代的次 数(degree,即模型运行一次最大迭代次数的非线性 议程最高阶),从而得到不同的拟合曲线 ,预测准确 度也不相同 。试验选取其连续 16 d 中的总磷量统计 数据集,以前 15 d 的数据作为训练集 、第 16 天的数 据作为验证集 。通过训练集试验不同的迭代次数并 得到预测值,通过验证集测试模型预测的准确度。
预测准确度×100式中,Ti 和 Pi 分别为验证值和预测值。
图 10 和图 11 为 2 张不同迭代次数的拟合曲线 图 。自变量的个数一定程度上会影响拟合的准确性,当自变量的个数增大时,曲线会趋向更加平滑,预测 结果也会更加准确。
2.3.3 实 际 应 用 测 试
本 系 统 实 际 应 用 中 选 用 degree=9 的算法模型 。模型训练结果表明,此时预测 准确度最高,为 94.98% 。总磷与氨氮的含量对现实 环境中的水质影响较大[13],以这 2 种指标为例 ,应用 上述模型实现系统的预测功能 。表 5 展示了功能实 现结果。
当 测 试 除 了 氨 氮 和 总 磷 之 外 的 其 他 7 种 指 标 时,同样得到了稳定高于 90%的准确度。测试结果表明,预测的准确度较高,可以应用于实际监测.
表 5 模型对总磷和氨氮的预测应用测试
日期 | 总磷 | 氨氮 | ||||
测量值/(mg·L-1) | 预测值/(mg·L-1) | 预测准确度/% | 测量值/(mg·L-1) | 预测值/(mg·L-1) | 预测准确度/% | |
2021-01-22 | 0.205 14 | 0.210 15 | 97.6 | 1.015 47 | 1.092 45 | 94.1 |
2021-01-23 | 0.214 54 | 0.221 74 | 96.7 | 1.034 63 | 1.110 24 | 93.2 |
2021-01-24 | 0.216 79 | 0.224 46 | 95.0 | 1.014 59 | 1.087 45 | 93.1 |
2.4 信息输出功能
水质监测系统运行后 ,水质数据可实时展示在 网页上(图 12)。
3 结语
物联网为解决许多问题提供了更智能 、高效的 方案 。在水资源保护领域中,用智能传感器+通信传 输+数据分析来完成水质监测工作具有一定的优势 。 本文基于目前巢湖水质监测现状 、综合系统应用环 境 ,分析设计了基于 SSM 框架的水质监测系统,最后完成开发实现了本系统。
结合当前巢湖水质保护的需求 ,分析了系统实 现的逻辑架构:首先,确立了系统的层次结构 ,系统的开发选择了基于 J2EE 平台下的轻量级框架 SSM, 本框架的使用降低了系统的开发难度 ,提高了系统 的可扩展性能和易用性能;其次,使用了 H2 数据库, 整合 MyBatis 框架大大简化了复杂的数据库配置,并 通过一个具有转换协议功能的通信系统完成了数据 的有序传输和准确存放;最后,结合回归方程和现实 的数据不断总结,实现了预测水质指标变化的功能。
本文主要针对传统监测模式存在的缺陷设计开 发了一个巢湖水质监测系统 。该系统能够改善系统 扩展性和易用性 ,解决数据传输和存取不够稳定的 问题 ,并通过环绕巢湖设置基站保证对各区域水质 数据的实时监测 。未来可以从以下 5 个方面对系统 进行优化:丰富信息输出网站的功能,如增加管理员 身份 、留言板功能等;丰富传感器的使用 ,增加图像 传感器等其他传感器来满足用户的需求 ;加强系统 的稳定性,防止恶意攻击 、数据安全等问题 ,以应对 使用过程中复杂多样的情况[14];引用最优化算法 、全 局优化算法改进回归方程,使预测更加准确;针对很 多无法直接通过扩展智能传感器硬件采集的重要水 质数据,如铅等,可采集其他相关数据并通过相关算 法计算获取。
4 参考文献
[1] 张培培 ,王成新 ,肖伟华 ,等 .我国中长期水环境安全战 略体系构建[J].环境保护,2018,46(5):64-67.
[2] 王维东,刘树波,涂国庆.县级农村饮水安全信息监管平 台 设 计 与 实 现 [J].长 江 科 学 院 院 报 ,2019,36(4):123 - 128.
[3] WANG S X,HOU P F,YUN L J,et al.Design and researchof paper management system based on SSM architecture[J]. Journal of Physics:Conference Series,2018,1069:012045.
[4] 焦俊 ,张水明 ,杜玉林 ,等 .物联网技术在农田环境监测 中的应用[J].中国农学通报,2014,30(20):290-295.
[5] 林麟 ,李群 .基于结构化与数字化技术的轨道交通建设 工程应急预案体系设计与构建方法研究[J].中国安全生 产科学技术,2019,15(12):135-142.
[6] 牛志伟 ,晁阳 ,齐慧君 .基于 SSM 框架的大坝监测数据 管理系统设计[J].水电能源科学,2020,38(2):91-94.
[7] 高 秀 兰 . 基 于 Modbus TCP/IP 通 讯 综 合 监 控 系 统 的 实 现[J].仪表技术与传感器,2015(10):104-106.
[8] BAI Q ,JIN B ,WANG D ,et al.Compact Modbus TCP/IP protocol for data acquisition systems based on limited hardware resources [J].Journal of Instrumentation,2018,13
(4):T04004.
[9] 詹静 ,杨 静 .基 于 远程 证 明 的 可 信 Modbus/TCP 协 议 研 究[J].工程科学与技术,2017,49(1):197-205.
[10] 汪凤珠 ,赵博 ,王辉 ,等 .基于 ZigBee 和 TCP/IP 的盐碱 地田间监控系统研究[J].农业机械学报,2019,50(增刊 1):207-213.
[11] 康国华 ,范凯 ,周琼峰 ,等 .基于 Gauss-Newton 和 UKF 结合的微小卫星姿态确定算法[J].中国空间科学技术, 2018,38(2):16-23.
[12] KOZOREZ D A,KRUZHKOV D M,KUZNETSOV K V,et al.Predicting the earth orientation parameters by the least squares method [J].Russian Engineering Research,2020, 40(12):1124-1127.
[13] 翟敏婷,辛卓航,韩建旭,等 .河流水质模拟及污染源归 因分析[J].中国环境科学,2019,39(8):3457-3464.
[14] 肖文娟,王加胜.基于 Vue 和 Spring Boot 的校园记录管 理 Web App 的 设 计 与 实 现 [J].计 算 机 应 用 与 软 件 , 2020,37(4):25-30.
标签:Modbus,水质,SpringMvc,Spring,系统,SSM,监测站,毕业设计,数据 From: https://blog.csdn.net/Aknits/article/details/139392530