基于C/ S架构的水文监测数据处理子系统设计
2017-04-13马慧,张永
马 慧,张 永
(许昌学院 信息工程学院,河南 许昌 461000)
基于C/ S架构的水文监测数据处理子系统设计
马 慧,张 永
(许昌学院 信息工程学院,河南 许昌 461000)
针对在线水文监控的实际需求,设计开发了基于C/S架构的水文数据处理系统。该系统通过短信模块接收水文数据,在服务器端进行处理后,按要求格式存储在数据库中。用户使用客户端即可查询相关水文数据,并通过图表等形式展示一段时间内水位、流量等信息变化情况。该系统极大地提高了水文监控系统水文数据的精度,方便工作人员及时、准确地掌握流域水文情况,为防汛决策提供可靠资料及依据。
C/S架构;水文监测;水文数据处理;信息查询
0 引言
随着互联网技术的快速发展,在线水文监测系统实现了水文信息的自动化处理,极大地提高了水文监测与防汛能力[1]。但是流量监测一直没有实现在线遥测,是水文监测应用技术发展中的一个薄弱环节。调研结果显示,河南省大部分中小型河流水文站现在仍采用传统的监测仪器加人工的方式对水文信息进行监测、处理、统计,工作效率极低。
系统在完成水文数据采集、传输的基础上,开发了基于C/S架构的水文数据处理系统。该系统主要完成数据的接收、处理、计算、查询等功能,以便为站点工作人员提供及时、准确的水文数据,提高水文监测效率。
1 水文监测系统整体设计
本系统包括服务器端和客户端两部分。服务器主要完成数据接收、客户端通信、原始水文数据处理以及各站点信息维护等工作;客户端主要负责为用户提供站点信息查询与成果表导出的功能,包括水位、流量、流速、电压、误差等信息的查询和日平均水位、流量等成果数据的Excel导出等。
1.1 系统架构
水文实时监测系统采用C/S架构实现,系统底层采用MINA2网络应用框架,主要解决客户端与服务器端之间的通信问题。MINA2网络应用框架采用了Java中的NIO技术[2],基于TCP、UDP等协议通信进行了大量封装,为用户提供基于各种网络事件驱动的API。MINA网络应用框架主要分为三层,分别是I/O服务层、I/O过滤器层和I/O处理器层。I/O 服务层主要实现服务器与客户端之间连接的建立与收发消息;I/O过滤器实现消息对象与字节流间的转换。
1.2 消息机构
系统客户端与服务器端之间通信的消息在网络上是以字节流的形式传输的,因此系统需要能够实现字节流与消息对象之间的相互转换。水文站系统在接收到网络上传输过来的字节流时,首先要找到消息的边界,然后将代表一条消息的字节提取出来,经过特定的逻辑将字节流转换为消息对象,最后把消息对象移交给I/O处理器来执行其对应的业务逻辑。反之,系统还需要能够把一个消息对象转换为字节流数据,放在网络上进行传输。
在数据传输过程中,在字节流中确定消息边界一般有三种方法:使用长度固定的消息、使用固定长度的消息头标志消息总长度,以及使用分隔符确定消息边界。
对于水文站流量实时监测系统而言,客户端与服务器端之间的通信情况相对比较复杂,需要利用各种不同类型的消息。不同消息的格式可能不相同,即使是相同类型的消息,其内容也不一定相同。因此,系统使用第二种方法,可以满足系统消息设计灵活易变的要求。
本系统中所有的消息主体都由两部分组成:第一部分为消息类别名称,长度固定不变;第二部分为消息的具体主题内容。消息结构如图1所示。
系统中使用的消息代码如表1所示。
图1 消息结构
表1 消息代码
消息代码消息作用描述101心跳请求通过心跳请求与响应实现客户端与服务器端通信状态的监测102心跳响应103登录请求客户端标识发出登录请求的代码104登录响应服务器端标识响应登录请求的代码105原始数据表查询请求客户端标识各种查询请求的代码106原始数据表查询响应服务器端标识响应查询请求的代码107日径流量成果表查询请求客户端标识日径流量查询请求的代码108日径流量成果表查询响应服务器端标识响应日径流量查询请求的代码109日平均水位成果表查询请求客户端标识日平均水位查询请求的代码110日平均水位成果表查询响应服务器标识响应日平均水位查询请求的代码111日平均流量成果表查询请求客户端标识日平均流量查询请求的代码112日平均流量成果表查询请求服务器标识响应日平均流量查询请求的代码
1.3 日志系统
在系统开发过程中,为了方便系统开发人员跟踪调试程序,以及运维人员了解系统运行状态,系统中加入了日志功能。如果系统某个模块发生异常,系统运维人员可以通过查看系统日志文件,迅速确定异常原因并予以解决。 系统采用SLF4J和LOG4J日志框架相结合的日志系统[3]。系统通过Loggers控制要输出哪些日志记录语句并对日志信息进行级别限定。本系统日志信息同时输出到两个位置,通过ConsoleAppender将日志输出到控制台、通过RollingFileAppender实现日志信息以向后追加的方式输出到日志文件中。通过Layout指定日志输出格式为“%-4r %-5p [%d{yyyy-MM-dd HH:mm:ss}] %m%n”,即:打印日志距系统开始的毫秒数+日志级别+当前系统时间+日志具体信息。
2 服务器端设计
服务器端主要实现用户管理、站点管理、水位截面积管理和原始数据管理、服务器配置以及串口配置等功能,管理员通过启动、重启、停止按钮实现服务器的开启、重新启动及停止。同时,服务器利用DTU短信模块接收远端RTU模块发送的原始数据,解析处理后存放于数据库中。
2.1 短信接收
短信模块传递过来的是原始数据,首先需要对数据进行解码,流速检测在垂直方向上每隔20cm测出一组流速数据,最多包含40组流速数据。因此,原始数据包中包含的流速数量要根据水位高度来计算有效流速的数量。首先要计算出当前包中的有效流速数量,如公式(1)所示。其中N为有效流速,W为当前水位,b为河堤高程,k为流速测试仪的高度。
(1)
每组中都包含测试时间和流速,每隔1分钟发送一次。由于测试仪器本身存在的误差,为了保证数据的准确性,采用前后6分钟的有效流速数据求平均作为当前时间的流速数据。这里的关键点在于虽然流速检测设备每分钟发送一次流速数据,但是在该数据包中包含的6组流速数据时间可能存在前后偏差,即当前包中可能包含上一分钟或下一分钟的数据。为了精确计算,采用延时计算的方式,先将接收到的每组数据放入一个优先级队列中,队列排序以时间为标准,每隔1分钟从中取出前一分钟的流速数据并求出平均值,将该平均流速再和前6分钟的流速数据求平均,最后的结果作为该时间的流速,然后将该流速数据写入数据库中。
服务器启动之前需要通过串口参数配置模块对短信模块的串口参数进行正确配置,否则服务器的短信模块无法与远端的RTU模块进行通信,系统将无法获取站点的水流信息。运行服务器端程序时,系统会自动读取配置文件进行数据库连接。若能连接成功,系统将直接进入到服务器端主界面;若连接失败,系统将直接跳转到服务器配置界面。当管理员配置好数据库参数点击保存后,系统会自动将配置信息保存到配置文件中,管理员只需重新运行服务器端程序即可成功连接数据库,并进入主界面。
图2 短信模块流程
2.2 水位截面积管理
水位截面积管理模块是对站点水位对应截面积的关系进行记录与管理,提供了添加、删除与修改等操作。此模块中提供了两种水位截面积信息的添加方式:①在系统中通过添加按钮方式,一次添加一条数据;②首先从系统中下载Excel模版,然后在模版中添加所有要导入系统的水位截面积信息,最后通过系统的导入按钮将Excel模版中的数据批量导入系统数据库。水位截面积信息主要包括站点、水位高度、截面积、系数K,该数据的主要作用是计算当前时间的流量信息。流量数据的计算如公式(2)所示,其中A是过水截面积,A可以通过水位高度和截面积数据通过插值方式计算出当前水位的截面积,V是平均流速,k为流速系数,可通过该系数调整流速数据计算的准确度,该值也是通过水位和系数K数据通过插值方式进行计算。为实测有效垂线分层流速,通过该公式计算出实时流量数据:
(2)
3 客户端设计
3.1 信息查询
查询模块主要实现运行状态、实时过程、电压监视与误差统计等信息的查询。运行状态主要为用户提供站点某段时间内流速信息的查询,并使用JFreeChar折线图与表格的形式显示该时段内流速的变化情况[4];实时过程查询为用户提供某时段内水位、流量信息的查询,并通过统计图和表格直观表现水位和流量在某一时间段内的变化;误差统计能够对某站点指定时间段内的实时流量数据与实测流量数据进行对比分析,并以图表方式展示。
3.2 成果导出
实测成果模块可对特定站点某一年的各种信息进行统计计算以及成果导出,主要包括平均水位、平均流量、日径流量等信息。用户可以按年对日平均水位成果、日平均流量成果、日径流量成果进行统计计算,并用POI设计Excel表格进行显示与成果导出[5]。
4 结语
本系统在水文数据采集、传输的基础上,使用Java开发了一个水文数据监测系统,通过对采集数据的处理、分析、存储,为用户提供及时、准确的流量、水位等水文信息。同时,通过图表等方式为用户提供直观的水文水利数据变化情况,使水文工作人员及时掌握河流水文情况,对河流的防洪防汛有非常重要的意义。
[1] 朱娟.基于ZigBee和CDMA的水情远程监测系统设计[J].大众科技,2013,15(170):16-17,51.
[2] 金玉军,姜晓彤,况迎辉.基于高性能NIO的MINA框架的应用[J].信息科技,2009(16):93-94.
[3] 吴志峰,鞠凤娟.SLF4J框架集成日志系统的应用研究[J].信息管理,2011(4):74-75.
[4] 吴宏波.基于JFreeChart技术的Web数据图表化表现[J].电子科技,2010(1):97-99.
[5] 戴维.POI实现Excel的数据导入导出的研究[J].科技信息,2013(1):107,126.
(责任编辑:黄 健)
许昌学院骨干教师资助项目(2014)
马慧(1974-),女,河南许昌人,许昌学院信息工程学院副教授,研究方向为计算机网络;张永(1981-),男,河南许昌人,许昌学院信息工程学院助教,研究方向为计算机网络、软件工程。
10.11907/rjdk.171159
TP319
A
1672-7800(2017)003-0089-02