基于SSM的水质在线监测与数据分析
2022-03-19黄子扬祝奕炜沈信宇慕京生
黄子扬祝奕炜 沈信宇 慕京生 焦 俊*
(1安徽农业大学信息与计算机学院,安徽合肥 230036;2蒙城县京徽蒙农业科技发展有限公司,安徽蒙城 233524)
水质安全事关人民群众健康、社会经济发展和自然环境保护。近年来,随着我国工业水平的高速发展,水资源短缺、水环境污染、水生态受损三大问题日益凸显,同时地表水成分逐渐趋于复杂且化学成分增多[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的配置文件中进行,针对具体的业务流程设有不同的控制器。同时进行抽样归纳,重复利用子单元流程模块,可以使程序结构变得清晰。这一逻辑层依赖底层的功能接口实现数据的传递和通信。
通信功能承担着系统中传输数据和指令的任务。智能传感器布设在巢湖中,并定时以Modbus协议格式发送收集到的水质数据到监测站点。5个监测站点均匀布设在巢湖周边,其作为系统的通信中枢起到了过渡的作用。智能传感器将数据直接以Modbus格式送至监测站点,监测站点立即将数据通过预写的转换程序转为TCP/IP格式的水质数据再送至系统主机的数据库中[7-8]。
1.1.2 SSM框架的业务层。该层具有承上启下的中间过渡作用,运用 Servlet、Tomcat、Web Server、Filter、Listener等技术栈向上控制传递SSM框架中表现层的请求。站点业务层的职能是管理协调好各个水质监测站点的相关数据和业务,该层通过调用一个或多个持久层中的功能点来获取数据。该层在处理好各站点数据和业务后将结果传输到上层程序逻辑处理层,进而完成对水质数据业务和基站功能及接口的整合工作。封装该层的业务逻辑有利于通用业务逻辑的独立性和重复利用性,程序非常简洁。
2.作者及作者单位:只列出主要参加者,一般不超过6人。应标明全部作者的工作单位全称、所在地及邮政编码。
1.1.3 SSM框架的持久层。该层是容器的最底层,实现逻辑结构的最底层与数据库互相作用。其夹在业务逻辑与数据库资源中间,是MVC模式中的Model层。MyBatis使用XML或注解用于配置和原始映射,提供映射标签和XML标签。各个数据对应Pojos和监测水站的接口依此被映射成数据库中的记录。这些记录和上层的站点数据处理层产生交互,完成水质数据的存储、增删改查等一系列相关基本操作。
1.2 系统数据库设计
为了消除数据存取等因素对系统数据稳定性造成的影响,本系统选择关系型数据库H2。结合MyBatis框架的优势建立了数据库,包括设备表、数据表、权限表、用户表、信息表等5张表单。在系统中对应的表单名称如表1所示。
表1 系统数据库对应表单
2 系统主要功能设计
本系统最主要、最基础的功能是通信功能、异常报警功能、数据预测功能和信息输出功能(图3)。
前一阶段的工作重点集中在配变重过载、低电压预警模型构建方面,目前还有较大提升空间,包括在基础数据源拓展、预警模型优化、业务互动能力等方面还需进一步完善,应用范围还有待进一步推广,同时在台区停电事件分析、台区三相不平衡分析方面的研究工作目前尚处于空白状态。下阶段的重点工作包括预警模型深化研究、台区停电事件分析及治理研究、台区三相不平衡分析及治理研究、配变运行环境监测及预警机制研究等内容:
2.1 通信功能
随着全球能源的逐渐枯竭、大气污染的不断加剧以及气温上升带来的危害加重,越来越多的人意识到节能减排是社会发展的方向。因此,电动汽车应运而生,并迅速得以广泛应用[1]。电动汽车作为电力负荷,其充电行为具有间歇性和随机性。在电动汽车充电过程中,由于充电器本身包含各种非线性特性的电力电子元件,会向电力系统注入谐波,当谐波超过一定范围,将会给电网带来谐波污染,从而对电网的稳定性产生影响,同时也将缩短电池的寿命,因此对电动汽车充电过程中的谐波进行分析和检测具有重要意义[2-4]。
2.1.1 智能传感器与监测站点的通信过程。图4是该过程的基本流程。
Modbus协议定义了一个与基础通信层无关的简单数据协议数据单元PDU(protocol description unit),特定总线或网络上的Modbus协议映射能够在应用数据单元ADU(application data unit)上引入一些附加域。对于不同物理介质上实现的Modbus协议,其PDU单元是统一的,而附加地址域及差错校验域需要遵循不同总线或网络的特定要求和格式[9]。通用帧格式如图5所示。
数据区根据不同的功能码而存在差异。本系统的数据区由多种水质数据综合在一起,大小未知且占用数据帧中n个字节。
功能码是通信传送的第二个字节。Modbus通讯协议定义功能号为1~127。表2是常用功能码及其作用。功能码生成后从节点发往监测站点,指示监测站点需要执行的动作,监测站点执行后返回响应中带有相同功能码表明已执行该操作。
表2 通信过程中的常用功能码及其作用
附加地址域是信息帧的第一字节(8位),定义为0~255。通过这个字节,拥有唯一预设地址的节点在发送给对应监测站点信息时可表明该报文来源。因为监测站点和节点是一对一的,所以该报文在转为TCP/IP格式并被主机接受后,主机可以迅速了解该水质数据所对应的水域。
差错校验是用校验码判别接收的信息是否出错。因为水中的干扰因素较多,相关信息在传输过程中可能会发生细微的变化,所以通过差错校验码可以保证监测站点或节点在数据传送过程中识别出错误信息,并且使其失效,以增加系统的安全性和效率。差错校验采用CRC-16校验方法,图6是计算CRC码的步骤。
对于食盐的质量安全管控,《办法》提出了以下规定:一是完善食盐监管体制。增加规定国务院食品药品监管部门和县级以上地方人民政府确定的部门负责食盐质量安全监督管理的职责。二是增加食盐企业及其董事、监事、高级管理人员的信用管理,建立健全信用信息记录和公示制度的规定。三是食盐定点生产企业、定点批发企业和非食用盐生产企业要施行产购销记录制度,严防工业用盐等非食用盐流入食盐市场。四是进一步完善法律责任,加大对违法行为处罚力度。例如,若非食盐定点企业生产食盐,违法生产经营的食盐货值金额不足1万元的,可以处5万元以下的罚款;货值金额1万元以上的,并处货值金额5倍以上10倍以下的罚款。
目前,Modbus有3种常见的数据帧格式,本文选用最主流且适用于现场设备的RTU数据帧格式作为传输格式。以下是监测站点收到Modbus-RTU报文的核心代码:
//这边使用的是Netty进行命令下发
这时,他发现就在十几米处,出现了日本鬼子!战士们纷纷举枪射击。经过一瞬的犹豫,他也开始对着日本鬼子疯狂射击。
运算能力包括计算能力和几何运算能力。计算能力仅指数据计算能力,包括加、减、乘、除、乘方、开方。几何运算能力包括平移、旋转、对称、压伸、相似、位似等变换。
public void channelActive(ChannelHandlerContext ctx)throws Exception{
在SUSAN算法中,每个像素对USAN的贡献值主要是由其与原子核亮度差的指数函数式(4)之间的关系决定的。同时也对二元方程进行了对比分析,但上述的指数方程的贡献是众多方法之一。因此,本文也将比较二进制方法。
//请求当前设备的设备ID
byte[]deviceIdResult=new byte[]{0x03,0x10,0x00,0x01,(byte)0xC4,0x1A};
会上,研发三部还与当地经销商签订“中国农资”系列新产品的销售代理协议。参会的一位经销商表示:“这几年我们一直与中农合作,当地农民对中农产品非常认可。我们与中农控股这样的大企业合作感到很放心。跟着中农走,小康路上加速走!”
ctx.writeAndFlush(Unpooled.wrappedBuffer(deviceIdResult)).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]。
表3 MBAP各项解释
以下是调用Modbus转TCP/IP格式程序的核心代码:
头孢哌酮钠/舒巴坦的两种配方比较鲍曼不动杆菌所致肺部感染的疗效……………………… 熊 洁,彭清臻,厉银平,等(2·141)
tcpipmaster=ModbusTcpSwither.createTcpmaster;
tcpmaster.init();
System.out.println("Modbus转TCP/IP报文初始化成功");
2.3.1 预测功能实现原理。选择使用回归分析模型对数据进行预测分析。以测定的总磷量为例,把时间(d)作为自变量、总磷含量(mg·L-1)作为因变量,可以确定两者间是一对一的关系。回归模型包括线性回归模型与非线性回归模型。分析实际数据,并结合预测准确度、功能需求度的考虑,发现变量之间的关系无法用线性回归方程准确表示,于是选择使用非线性回归模拟方式。一元非线性回归方程:
2.2 异常报警功能
系统主机需要对数据敏感,即当某个数据值骤高或骤低时发出异常警报。因此,需要在系统中提前设置好阈值。同时,在特殊情况下,数据的正常波动阈值可以由管理员重设,保证了系统主机报警的及时性和有效性。这里规定了3个警报级别,即0级(正常)、1 级(超标警戒)、2 级(严重超标警戒)。 一旦报警,管理部门可以根据警报级别及内容迅速发布应急措施,保障巢湖水质安全。表4是应季水质数据对应报警级别的波动范围。
最后将所得到的电压控制型BOOST电路,在Simulink进行仿真设计。通过引入电压串联扰动、电阻串联扰动和电阻并联扰动来验证系统性能和稳定性;硬件设计则选用TI公司生产的TP43000型PWM控制器进行电路设计。最终结果表明:本文设计稳定可行,满足设计要求。
表4 各指标数据警报级别范围
2.3 数据预测功能
在实际监测中,由于数值过高或过低等突发情况产生具有随机性、不定时性,维护人员无法保证在第一时间赶到现场处理。根据理论分析与实际经验,连续几天测量的数值可能具有一定的相关性,因而本系统给出了数据预测的解决方案:系统后台会基于前15 d测定的所有数据值来预测后2 d的数据值,并展示在页面上,为维护人员提供参考,以便人们对可能出现的异常数值进行前瞻性的应对准备。
在数据发送完毕后需要断开连接,图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]。
富家坞铜钼矿床是德兴铜矿三大矿床之一,矿石中金属矿物主要是硫化矿,其中黄铜矿、辉钼矿是主要目的金属矿物,同时,矿石中有一定量的含金矿物,脉石矿物主要是石英、云母等[1-2]。大山选厂同时处理铜厂、富家坞两个矿床的矿石,由于两种矿石性质的差异,在生产过程中造成选矿技术指标不高,尤其是钼回收率偏低[3-4]。因此,本文研究针对富家坞矿石开展试验研究,探索提高钼回收率的方法,开发适宜处理富家坞矿石的浮选工艺条件,提高选矿指标。
方程求解基于Gauss-Newton法[11]的思想,根据最小二乘法的原理[12],通过不断迭代逼近参数解。
图10和图11为2张不同迭代次数的拟合曲线图。自变量的个数一定程度上会影响拟合的准确性,当自变量的个数增大时,曲线会趋向更加平滑,预测结果也会更加准确。
式中,Ti和Pi分别为验证值和预测值。
2.3.2 模型训练及验证。横坐标为时间(d)、纵坐标为总磷含量(mg·L-1)。算法实现需要设计迭代的次数(degree,即模型运行一次最大迭代次数的非线性议程最高阶),从而得到不同的拟合曲线,预测准确度也不相同。试验选取其连续16 d中的总磷量统计数据集,以前15 d的数据作为训练集、第16天的数据作为验证集。通过训练集试验不同的迭代次数并得到预测值,通过验证集测试模型预测的准确度。
崔仁浩用眼神给我鼓励,我硬着头皮,用英语和他们交流。不久,他的家仆推出来一个三层蛋糕,蛋糕上并排站着一对小朋友,他爸爸用并不标准的中文说:“张,送给你们的,你们是两个可爱的小朋友。”我开心地笑了:“谢谢叔叔!”客厅里响起一片掌声……
degree=3时,拟合方程为
预测值为0.206 990 05,验证值为0.230 954 90,预测准确度为89.63%。
degree=9时,拟合方程为
河南省旅游资源丰富,近年来旅游产业发展迅速。但由于旅游资源、旅游接待设施等客观原因,河南省旅游经济发展不均衡,城市间的旅游经济联系差异也较大。郑州市虽作为河南省中心城市,但增长极作用没有得到充分发挥,各城市间旅游经济联系不足,缺乏进一步发展的动力。而学者们对河南旅游经济的研究侧重于旅游经济的演化和发展对策[20-21],对河南省旅游经济联系的网络化探讨不足。本文借助万有引力模型,以旅游经济联系为基础,运用社会网络分析方法,对2010-2016年河南省18个城市之间旅游经济网络结构特征及其影响因素进行深入探讨,以期为河南省旅游业的持续协调发展提供理论指导。
预测值为0.219 346 71,验证值为0.230 954 90,预测准确度为94.98%。
分析模型的训练结果,当4≤degree≤10时,模型预测准确度≥90%。一般认为,准确度>90%的模型可以被应用于实际预测功能中。试验结果表明,此模型符合功能需求。
2.3.3 实际应用测试。本系统实际应用中选用degree=9的算法模型。模型训练结果表明,此时预测准确度最高,为94.98%。总磷与氨氮的含量对现实环境中的水质影响较大[13],以这2种指标为例,应用上述模型实现系统的预测功能。表5展示了功能实现结果。
表5 模型对总磷和氨氮的预测应用测试
当测试除了氨氮和总磷之外的其他7种指标时,同样得到了稳定高于90%的准确度。测试结果表明,预测的准确度较高,可以应用于实际监测。
2.4 信息输出功能
水质监测系统运行后,水质数据可实时展示在网页上(图 12)。
3 结语
物联网为解决许多问题提供了更智能、高效的方案。在水资源保护领域中,用智能传感器+通信传输+数据分析来完成水质监测工作具有一定的优势。本文基于目前巢湖水质监测现状、综合系统应用环境,分析设计了基于SSM框架的水质监测系统,最后完成开发实现了本系统。
结合当前巢湖水质保护的需求,分析了系统实现的逻辑架构:首先,确立了系统的层次结构,系统的开发选择了基于J2EE平台下的轻量级框架SSM,本框架的使用降低了系统的开发难度,提高了系统的可扩展性能和易用性能;其次,使用了H2数据库,整合MyBatis框架大大简化了复杂的数据库配置,并通过一个具有转换协议功能的通信系统完成了数据的有序传输和准确存放;最后,结合回归方程和现实的数据不断总结,实现了预测水质指标变化的功能。
本文主要针对传统监测模式存在的缺陷设计开发了一个巢湖水质监测系统。该系统能够改善系统扩展性和易用性,解决数据传输和存取不够稳定的问题,并通过环绕巢湖设置基站保证对各区域水质数据的实时监测。未来可以从以下5个方面对系统进行优化:丰富信息输出网站的功能,如增加管理员身份、留言板功能等;丰富传感器的使用,增加图像传感器等其他传感器来满足用户的需求;加强系统的稳定性,防止恶意攻击、数据安全等问题,以应对使用过程中复杂多样的情况[14];引用最优化算法、全局优化算法改进回归方程,使预测更加准确;针对很多无法直接通过扩展智能传感器硬件采集的重要水质数据,如铅等,可采集其他相关数据并通过相关算法计算获取。