《武汉工程大学学报》  2014年07期 68-72   出版日期:2014-07-31   ISSN:1674-2869   CN:42-1779/TQ
农业生产环境监测系统软件设计


0引言随着农业信息技术的快速发展和广泛应用,农业生产正逐步由传统农业向信息化、自动化、智能化农业的方向发展.我国农业生产因基础薄弱、生产技术落后而导致农业生产成本高、产量增长缓慢、生产效益低下、农业不能得到很好的发展等诸多问题.搭建农业生产环境信息监测系统,对农业生产环境进行远程实时准确的监测,从而实现农业生产的信息化管理,可有效降低农业生产运行成本,提高生产效率以及农作物的生产质量和产量.国内外已有较多对农业生产信息进行实时自动监测的设备,如基于.NET的农业生产环境信息监测系统、基于组态平台的日光温室群监控系统等[14]..NET是一个微软开发平台,它集成了微软VC++、VB、VC#等语言开发环境,但是实际上它对C#语言的支持是最好的,与C++语言相比较,C#语言具有强大的网络操作,但在Windows环境下编程,采用C++开发应用程序调用win32 API函数比C#方便很多;组态软件是包含了很多程序模块的软件系统,用组态软件开发程序周期较短,但组态软件的模块大多也是用VC++来编写的,与VC++开发应用程序相比较,其灵活性较差.在众多的可视化集成开发环境中,用C++语言编写Windows应用程序,Visual C++6.0 是最佳选择,它功能强大,具有灵活的消息传递机制和友好的编程界面,它提供的微软基础类库(Microsoft Foundation Classes,以下简称:MFC)内部封装了Windows API 函数,用户可以充分利用类的封装性、继承性和多态性,方便地设计所需要的类.另外,它提供了数据库的开发平台,对硬件、内存的操作也较容易,是底层编程环境的最佳选择;MySQL是源码开放的关系型数据库管理系统[5],因其体积小、速度快、可靠性高和适应性强而备受关注,而且由于其是开放源码软件,可以大大降低总体开发成本.因此,本文在VC++环境下,应用开发工具提供的MFC类库、微软通信控制(Microsoft Communications Control,以下简称:MSComm)软件,结合MySQL数据库技术开发基于串行通信的上位机监测系统.该系统实现了农业生产环境多元信息的规范化、信息化、智能化实时远程监测与管理,有利于提高农业生产效率,降低生产成本.同时,系统将监测数据及时、规范地存储到数据库中,为农业生产科学管理提供充分、可靠的科学依据. 第7期文小玲,等:农业生产环境监测系统软件设计武汉工程大学学报第36卷1系统总体设计1.1系统总体结构设计本系统采用 客户机/服务器(Client/Server, 以下简称:C/S)模型,实现对大面积农业生产环境信息的远程集中监测和农户管理人员的异步查询.整个系统主要包括远程监测终端、通信链路和数据采集终端3部分.系统原理框图如图1所示.图1系统结构框图Fig.1Diagram of system structure 远程监测终端包括内部运行了上位机监测程序和存储了系统决策支持相关信息数据库的个人计算机(Personal Computer,以下简称:PC);通信链路包括PC机与紫蜂(ZigBee)协调器间串行通信链路及ZigBee近距离无线通讯网络,无线通信网络以ARM9为核心,结合ZigBee无线网络技术,实现农业环境多参数的实时与远程监测[68];数据采集终端包括农田环境温度传感器、CO2浓度传感器、土壤水分传感器以及光照强度传感器.1.2上位机监测系统功能设计基于VC++和数据库的农业环境监测系统,便于用户及时掌握农业生产多元信息.用户可登陆上位机监测系统实时监测农田环境信息,并可进行数据的历史查询、动态分析、异常预警等操作.系统整体功能结构如图2所示.图2系统功能模块图Fig.2Diagram of system functional block 登陆模块:为提高系统信息安全性,登陆模块分为管理员登陆与普通用户登陆2部分.参数设置模块:设置串口参数值及异常预警阀值,如串行通信端口号、波特率、数据位、校验位、停止位、空气温度湿度上下限值等.节点信息管理模块:管理布设在田间的传感器节点基本信息,如节点位置、节点名称及节点状态等,节点信息存储到节点信息数据库表中.用户信息管理模块:管理用户基本信息,通过操作用户信息数据库可以查看用户注册的基本信息、用户访问时间和次数及设置用户访问权限等.实时数据监测模块:将传感器终端采集到的空气温湿度、光照强度、CO2浓度、土壤水分等数据实时上传至PC机,首先存储到实时数据表中,用户通过单击数据显示按钮,动态刷新显示界面查看实时监测数据,实现多参数信息的实时监测与存储.历史数据查询模块:实现对某指定监测节点指定时间段的感知数据信息的查询.数据动态分析模块:以动态波形形式实现对监测点环境参数变化趋势的分析,通过单击系统主界面数据动态分析按钮查看动态波形图.异常预警模块:设定监测点的监测标准值,并进行逻辑判断,超出阀值,记录报警.2系统软件设计2.1串口通信程序设计在Windows下进行串行通信编程的方法有:①利用Win32 API函数编程;②利用VC++6.0类库中提供的CSerialPort类编程;③利用开发工具提供的MSComm控件编程.笔者选用MSComm控件编写串口通信程序.MSComm控件是一种ActiveX控件,能在简化了的Windows环境下进行串行通信编程,由Microsoft公司提供,该控件通过串口收发数据,为应用程序编写串行通信提供了简便方法.VC为其提供了标准的事件处理函数和过程,同时提供了进行数据通信所需的RS 232协议,软件开发人员可方便地通过设置和监视MSComm控件的属性和事件编写串口通信程序[9]. 用MSComm控件进行串口编程的具体方法如下:(1)在对话框中插入MSComm控件.可以把MSComm控件从对话框控件工具栏中拖入对话框中,若控件工具栏中缺少该控件,可通过菜单Project→Add to Project→Components and Control插入即可.(2)为MSComm控件ID添加一个控制对象.可手动添加该控制对象,也可通过ClassWizard的成员函数选项卡提示步骤来添加.(3)设置MSComm属性,初始化串口. (4)添加消息处理函数OnComm(),这一过程可以由ClassWizard自动实现.(5)编写串口接收、发送相关代码,如获取控件数据、读缓冲区、送入临时变量、加入接收字符串等代码.(6)关闭串口.可通过MSComm控制对象调用SetPortOpen()函数关闭串口. 2.2数据库设计 数据是农业环境信息化管理系统的基础,数据的有效采集、存储、分析处理是系统功能稳定发挥的关键环节,而数据库是整个系统中数据处理、组织、分析及管理的核心,它设计的合理与否直接影响到整个系统的开发和运行效率.本系统从分析数据信息入手设计系统数据库,后台数据库管理系统选用MySQL 5.5;应用程序通过开放数据源互联(Open Database Connectivity, 以下简称:ODBC)配置连接到MySQL数据库[10],数据库查询语言使用结构查询语言(Structured Query Language, 以下简称:SQL). 笔者根据数据库设计规范的要求,在考虑设计数据库结构时,既考虑便于用户使用,又力求数据库表结构规范化,以提高数据库的查询效率.根据系统实际情况,设计3个数据库,分别为用户信息数据库、环境监测信息数据库、阀值信息数据库.每个数据库采用一库多表的形式设计数据库结构,从而实现监测系统相关信息的结构化、规范化存储.设计数据库结构具体如下:用户信息数据库.主要存储系统用户基本信息,包括用户注册信息、用户类别、用户权限、权限选择、相应权限功能等.监测信息数据库.该数据库主要存放3类信息:①节点信息,主要存储与监测节点相关的信息,包括节点名、节点位置、节点类型、节点状态等;②监测点资料信息,主要存放各个农田监测点基本资料,包括监测点位置名、位置经度、位置纬度、所属田户、农作物类别等;③监测数据信息,主要用于存储系统监测数据,包括实时数据规范化存储、历史数据分类存储、监测情况记录等.阀值信息数据库.主要用于存储各监测值的上下限,监测数据超出阀值时系统启动报警功能,包括监测点、温度阀值、湿度阀值、光照强度阀值等.部分数据库表结构及相互之间的关系如图3所示.图3环境监测信息数据库表结构及关系Fig.3Structures of monitoring information database tables and their relationship3系统测试运行系统,首先进入登陆界面,输入用户信息数据库表中有效的用户信息,点击登录按钮即可进入如图4所示的系统主界面. 图4系统主界面图Fig.4Diagram of system main interface 为了检验系统的可行性和稳定性,首先在实验室进行了系统组装测试,系统ZigBee终端节点安装了空气温度传感器、空气湿度传感器,采集时间设置为20 min采集一次,测试成功后在实验室正常运行一段时间,系统检测到的数据首先存储到数据库实时数据表中,用户通过单击实时监测按钮可动态刷新监测界面,查看当前时刻环境信息,如图4所示.通过操作上位机监控软件可动态分析某一时间段内环境参数值变化情况;通过查询数据库历史数据表了解某块地农作物的生长环境历史信息,从而为来年农作物的选种、播种等做出有效判断.系统数据的动态分析与历史查询测试如图5所示. (a) 动态分析 (b) 历史查询图5数据动态分析与历史查询图Fig.5Diagram of data dynamic analysis and historical query 4结语笔者设计了一个基于VC++的农业环境监测系统,系统应用C/S体系结构进行数据存取,实现了用户通过登录监测系统远程监测农业环境信息的功能.实验结果表明,该系统人机界面友好,功能较为完善,运行稳定可靠,并且易于扩展和维护.它有效地结合MySQL数据库技术,使庞大的监测数据得到快速、灵活、高效的处理,为农业决策提供重要的数据支持.该系统通过ZigBee无线传感器技术结合嵌入式技术进行数据采集、融合与传输,实现农作物的生长环境信息的实时监测,解决了现有的有线传输带来的布线复杂、成本高、维护麻烦等困难,提高了系统扩展性、可移动性,节省了安装成本和人力资源,较大地提高了农业环境信息监测与管理的质量,有利于大面积农田环境的智能化、统一化管理.致谢国家科学基金委员会对本研究提供了资金资助,在此表示衷心的感谢!