灌区地下水水位远程监测系统上位机软件的设计与实现
2012-10-16尹淑欣王雪曹洪军
尹淑欣,王雪,曹洪军
(黑龙江八一农垦大学信息技术学院,大庆163319)
地下水水位测量是灌区测水量水工作中最重要的一项组成部分。对地下水的合理开发,可以有效地缓解供水不足的问题,带来一系列生态与经济效益。由于水稻的产量和商品价值高,黑龙江垦区建三江分局利用地理优势,大力发展水稻种植,水田面积占该分局耕地面积60%以上,80%灌溉用水来自地下水[1]。但过量开采地下水则会引起地面沉降和生态环境恶化,对生产和生活会造成极大的危害。因此,对地下水水位的变化进行监测和预测,充分了解地下水资源的状况,进行合理规划和利用才能真正做到持续利用地下水资源。
根据建三江管理局的地理环境特点,对地下水水位的观测点比较分散、距离远、位于野外无法提供动力电及有线通信的情况,以往对地下水水位监测更多依靠于人工、半人工的监测手段,工作量大、效率低下、数据处理繁杂易错、信息传输不及时等问题,设计实现低功耗、自动化的无线远程地下水水位监测系统是十分必要的。
1 系统总体设计
灌区地下水水位远程监测系统采用了下位机分散采集水位数据,通过GPRS进行远程数据传送,由上位机集中进行数据处理的集散式模式。由分散在整个管局的下辖农场为单位,每个农场的又分设多个采集数据的下位机系统和集中进行管理的上位机系统组成。下位机部分负责地下水水位数据采集,系统电源采用交流市电和太阳能供电的双电源设计,并且进行了低功耗设计。上位机则负责集中管理各个下位机的工作,负责与下位机通信、读取数据、制作数据报表、绘制水位数据曲线图。由于各监测点都位于较为偏远的地方,因此数据传输采用了G200型GPRS模块的无线网络数据通讯方式,数据传输距离远、数据准确、可靠、费用低。系统结构图如图1所示。
图1 地下水水位远程监测系统结构图Fig.1 Structure of groundwater level remotemonitoring system
2 上位机系统设计
上位机是整个监测系统的控制和管理中心,它负责在设定的时间唤醒各个下位机,与其通信获取水位数据并进行数据汇总、处理和分析。根据上位机的具体职责,整个软件体系可分成数据通信和数据管理两个主要部分。
上位机负责唤醒各个下位机并与下位机进行通信、接收采集的数据、进行数据处理等功能。选用了G200型GPRS模块进行远距离数据传输,G200模块屏蔽了GPRS模块的射频电路部分和AT指令集,只需要用熟悉的串口通信方式就可以通过GPRS网络进行通信,因此上位机首先只需要进行串口参数初始化[3-4]。同时因为下位机在测量空闲时处于省电模式,上位机需要按设定的时间间隔主动唤醒下位机系统进行工作。对获取的数据进行分析处理,并进行动态存储和实时曲线绘制。图2为上位机监测中心程序流程图。
图2 上位机监测中心程序流程图Fig.2 Flow chartof user-control software ofmonitoring center
数据通信是通过TTL-232接口与无线模块G200进行数据交换。上位机的G200模块为主模块,工作方式为主动模式。下位机的G200模块为分模块,工作方式为被动模式,即当G200模块收到数据后不是将数据立刻送到串口,而是将数据送到模块内的缓冲区,当上位机需要数据时再向G200模块询问是否有接收到的数据。模块与上位机间的通信是靠串口连接的。串口采用有格式传输方式。在设置通信中的串口格式时,需要在字段中设定站点编号(模块的身份地址),其传输数据包格式如图3所示。
图3 数据传输格式Fig.2 Data transmission format
上位机监测中心利用Timer控件来定时向各远程下位机发送唤醒命令,唤醒命令中包含下位机监测点的站点编号(数据传输格式中的第3部分)。因此首先需要对上位机和下位机的通信模块进行站点编号,以便进行通信。上位机需要以轮询的方式向各个下位机发送唤醒命令,并对下位机的状态进行监测。如果能唤醒下位机并获得数据,则处理获得的数据并进行适当处理(换算成实际的水位数值并进行高程转换)后存入数据库并显示。如果不能及时唤醒下位机模块,需要再次发送唤醒命令,超过5次唤醒失败后系统应提示下位机通信模块出现错误。巡检数据流程图如图4所示。
图4 巡检数据流程图Fig.4 Flow chartof routing inspection data
由于使用Windows API编程非常烦琐、冗长,系统上位机软件采用了C#语言在Visual Studio 2008.NET环境下编程完成。.NET集成了大量实用类库,系统主要使用Serial Port类来实现串口通信功能,Serial Port类为应用程序提供了通过串口收发数据的简便方法,具有功能强大、通信快速、实时性好等特点。由于系统进行通信和数据处理时的操作较为耗时,而且占用了系统资源,考虑到系统工作的稳定性和可靠性,采用了多线程的程序设计方法。在这里使用Thread类完成多线程编程,大大提高了程序的执行效率。
数据库模块采用广泛使用的SQL Server2000作为后台数据库软件。使用Visual Studio 2008.NET中的ADO.NET组件开发数据库应用程序。ADO.NET组件提供了连接数据库存储器检索、操作和更新数据所必须的类,应用DataGrid控件与数据库绑定,能够在应用界面实时接收水位数据信息。
3 系统运行测试
该系统于2011年4月份在黑龙江农垦总局建三江分局的八五九农场进行安装测试,一个上位分别管理5个测试点,主机地址为1001,测试地址分别为1002~1006,测试时间为每天两次,分别为早8点整和晚8点整。表1为1~5号下位机在4月20日、21日、22日三天的早8点和晚8点整,系统在指定时间唤醒下位机并获取采样数据的时间。由表中数据可见,系统运行良好,没有出现缺测现象,数据传输良好,没有出现数据丢失故障。正常测试时能够在3分钟内完成对所有下位机的唤醒及数据处理,完全满足应用需求。在对设备进行故障测试时,也能够在5分钟内完成通信设备故障提醒,运行效果良好。
表1 1~5#井获取采样数据时刻Table1 Arrival instants from 1~5#observation well/hh:mm:ss
4 结束语
系统采用GRPS技术完成了远程地下水水位监测系统的上位机部分的研制,已成功在农场进行应用。可以实现测点组网、可任意增删网络节点(测点),远距离数据传输稳定、费用低廉、覆盖范围广等优点。同时数据处理简洁、便利,显示内容更为丰富、直观,上位机软件运行良好、性能稳定、操作简单。可以使农场的地下水水位测量工作及时、准确、便利,另外对其他监测系统也具有指导性意义。
[1]付强,梁川,杨广林.三江平原井灌水稻发展潜力探析[J].农业系统科学与综合研究,2002,18(1):23-27.
[2]赵斌,匡丽红,黄操军,等.灌区地下水水位遥测系统的研究[J].黑龙江八一农垦大学学报,2011,23(3):58-61.
[3]马斌,张娜,郭强,等.C#串行类在PC机与IC卡读写器串行通信中的作用[J].沈阳建筑大学学报,(自然科学版),2008,24(3):508-511.
[4]李强.基于API函数的Windows多线程串口通信[J].科技信息:科学教研,2008(17):66-68.
[5]王晓亮,谭峰,曹洪军.基于GSM模块的信息服务系统的设计与实现[J].黑龙江八一农垦大学学报,2009(6):74-76.
[6]刁伟伟,郑桂萍,赵凤亮,等.水稻节水保护性耕作的土壤理化性状及产量效益的研究[J].黑龙江八一农垦大学学报,2007(6):14-17.