智能灌溉系统上位机软件的设计与实现

时间:2022-02-25 11:40:31

智能灌溉系统上位机软件的设计与实现

摘 要: 根据农田环境的水、空气、土壤环境的需求,设计了基于ZigBee无线传感器网络的智能灌溉系统。具体分析了系统功能,设计了总体结构。探讨了基于.Net的智能灌溉系统上位机的功能需求、系统架构、实现方案及关键技术等。

关键词: ZigBee; 无线传感器; .Net; 智能灌溉系统; 上位机

中图分类号:TP315 文献标志码:A 文章编号:1006-8228(2012)12-61-04

Design and implementation of PC software for intelligent irrigation system

Zhao Zhenqi

(Wuxi Machinery and Electron Higher Professional and Technical School, Wuxi, Jiangsu 214028, China)

Abstract: According to the requirements of water, air and soil in farmland environment, an intelligent irrigation system is designed, based on wireless sensor network ZigBee. The system function is analyzed and overall structure is designed. The function demand, system architecture, concrete implementation scheme and key technology of intelligent irrigation system principal machine based on .Net are discussed.

Key words: ZigBee; wireless sensor; .Net; intelligent irrigation system; PC

0 引言

在水资源紧缺的条件下,要实现灌溉农业的可持续发展,就需要灌溉更加精确智能。在不影响农作物生长发育的前提下,按照农作物需水要求准确及时地预报,并实现水量的自动控制,精确施予。目前,主要采用先进的物联网技术与传统农业生产相结合的办法,通过研发先进的传感器、灌溉控制设备、功能强大的计算机灌溉管理软件等来实现科学灌溉,提高农业效益[1]。

由于全球气候的恶化和水污染等原因,水资源短缺已经成为全球性的问题。在各大园林、农业及高尔夫灌溉项目中,越来越多的人认识到了节水灌溉的重要性。为了保证人工植被和农作物的正常生长,节水灌溉系统起到了至关重要的作用。

1 系统主要功能

我们设计并制作出具有监视、控制、环境数据的不间断采集、整理、统计、绘图功能的智能灌溉系统,以实现优化科学灌溉。该系统适用于庭院、园林、农田等灌溉场所。主要包括以下功能:

⑴ 根据CO2浓度自动控制电磁阀的开关,与CO2发生器配套使用;

⑵ 根据土壤的干湿度自动控制电磁阀的开关,与喷灌、微灌、滴灌等管道系统配套使用;

⑶ 根据空气的干湿度自动控制电磁阀的开关,与加/降温、加/除湿等设备配套使用。

2 总体结构设计

Zigbee是基于IEEE802.15.4标准的低功耗局域网协议。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。

无线网关实现了ZigBee、GPRS、以太网、串口的网络互联和协议转换,集成了符合ZigBee协议标准的JN5121系列通讯模块,GPRS模块,以太网接口,RS232接口。并具有通讯距离远、抗干扰能力强、组网灵活等优点和特性;可实现一点对多点、多点对多点的串口设备间的数据透明传输,也可以根据用户的需要定制软件;可按照星形网络、网状网络以及树状网络组网。兼容FCC Part 15, ETSI ETS 300-328和日本的ARIB STD-T16标准。主要应用领域:煤矿/油田设备远程监控、电力/水利设备远程监控、远程智能抄表/线缆取代、工业、农业自动化控制、楼宇、路灯智能控制[2]。

本系统设计由三个部分组成:监控中心、无线网关、无线路由节点。其中,监控中心主体是服务器和上位机;无线网关集成了符合ZigBee协议标准的JN5121系列通讯模块,GPRS模块,以太网接口,RS232接口,负责将各节点的数据发送给上位机处理,或接收上位机发送的指令并传送给各节点;无线路由节点可以有多个,集成了CO2浓度传感模块、土壤的干湿度传感模块、空气的干湿度传感模块和ARM模块。系统组成框图如图1所示。

3 硬件原理

本系统的传感节点硬件采用CC2530,如图2所示。CC2530是用于2.4-GHz IEEE 802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总材料成本建立强大的网络节点。CC2530结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM和许多其他强大的功能。CC2530有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB的闪存。CC2530具有不同的运行模式,使得它特别适应超低功耗要求的系统。运行模式之间的转换时间短,进一步确保了低能源消耗[3]。

4 上位机的设计

4.1 功能需求

以太网通信方式是物联网智能灌溉系统与计算机最主要的通信方式,采用UDP通信协议层,多线程方式进行数据交互。

上位机需要单独具备以太网通信界面,除了实现物联网智能灌溉系统以太网通信命令中列出的各项命令之外,还需要以下几个重要功能。

⑴ 网络拓扑,显示物联网智能灌溉系统所有已经注册的设备节点物理区域视图,主要用于直观地反映设备节点的分布概况,用于设备故障定位。在视图上,双击设备节点图标能够自动显示该节点的实时数据信息;如果设备有故障或告警,节点图标应该改变自身颜色警示操作人员。

⑵ 数据查询,实时记录物联网智能灌溉系统的当前和历史数据,提供用户对数据按日期和设备标识查询的功能。根据数据容量和数据访问并发性的要求,建议数据库采用专用的数据库管理软件,例如SQL Server 2005。

⑶ 数据分析,根据数据库内查询的数据绘制图表(折线图或饼图等),显示数据的分布和趋势,提供用户环境参数的历史数据和做出灌溉决策的参考信息。

⑷ 分布式软件,可以在多个计算机上同时打开上位机软件,软件之间相互协调,每个上位机作出的参数修改都能在其他上位机软件上显示出操作记录,参数设置具有并发性,多个上位机软件进行同一参数的设置不会冲突,参数设置完成后,其他上位机界面会同步更新。

4.2 上位机架构

本系统采用.Net三层架构。三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用逻辑上划分为:表示层(USL)、业务逻辑层(BLL)、数据访问层(DAL)。三层架构是一个支持可抽取、可替换的“抽屉”式架构,符合“高内聚,低耦合”的思想,所以这些层可以单独开发,单独测试[4]。具体的三层架构的分层结构图,如图3所示。

4.3 开发工具的选择

.NET是一个开发平台,它定义了一种公用语言子集(Common Language Subset, CLS)。.NET统一了编程类库,提供了对下一代网络通信标准,可扩展标记语言(XML)的完全支持,使软件的开发变得容易。.NET与Windows平台紧密集成,是一种面向网络、支持各种用户终端的开发平台环境。

SQL SERVER 2005对SQL Server 2000中已经存在的特性进行了加强。加强了T-SQL(事务处理SQL),整合了符合.NET规范的语言(可以在数据库管理系统中执行.NET代码以充分利用.NET功能),使自身带有支持对用户自定义数据库中存储的数据进行加密的功能,生成多活动结果集(允许从单个的客户端到数据库保持一条持久的连接,以便在每个连接上拥有超过一个的活动请求)等。

基于上述原因,我们选择.NET架构C#语言开发,作为系统开发的工具。开发人员必须掌握的预备知识和工具有:①UDP通讯编程(UDP包测试工具的使用);②多线程;③Chart控件的使用;④调试工具的使用。

5 数据库表结构

数据库名称:ZigDB。主要包括设备状态信息表(如表1所示)、设备信息表(如表2所示)、设备类别表(如表3所示)、系统设置表、权限表、用户表等。

6 系统功能模块

系统上位机模块包括四个主要功能模块:实时监测模块、数据查询分析模块、权限管理模块和系统管理模块。每一个模块中设计了若干子模块。系统上位机功能模块图,如图4所示。

[系统上位机模块][实时检测模块][数据查询模块][权限管理模块][系统管理模块][设备分布概况][节点实时信息][读写上下阈值][实时图形显示][历史数据查询][图表报表分析][角色管理][权限管理][用户管理][备份还原数据][设备注册维护][设备采样维护]

图4 系统上位机功能模块图

7 上下位机通信的方式

本系统主要采用两种与上位机通信的方式。

⑴ 本地调试端口,采用RS232串口通信方式,用于和计算机直连后进行数据通信,同时,对智能灌溉系统进行设备注册和网络参数配置也使用该通信方式。

⑵ 远程通信端口,采用以太网通信方式,用于和远端计算机进行数据通信,主要功能是上报智能灌溉系统各传感器的数据,以及获取修改相关参数的上下限阈值。

8 主要窗口与关键技术

8.1 主要窗口

上位机软件主要包括以下几个窗口。

⑴ 主窗口(FormMain):主要包括监听线程Run()方法,用于实现轮询,先采样放入缓冲区然后入库。

⑵ 网络拓扑窗口(FormNetworkTop):显示AP结点拓扑位置,主要包括AP结点图标的类型和位置,鼠标MouseDown()、MouseUp()、MouseMove()事件处理等。

⑶ 设备状态窗口(FormOneEq):主要包括发送信息给传感器sendThreshold()、跨线程访问控件UpdateUI()、设置最大阈值和最小阈值。

⑷ 设备序列号的设置窗口(FormEqpSN):主要包括一些按钮事件处理btnSave_Click()、btnDel_Click()、btnUpdate_Click(),实现对设备序列号的增删改查的操作。

⑸ 数据查询窗口(FormBrowseHisData):主要包括根据查询条件显示查询结果和CHART图表。涉及btnBrow_Click()、dgvBrowResult_DataBindingComplete()等事件处理。

8.2 关键技术

8.2.1 轮询监听

主程序(FormMain)中监听线程Run()方法代码,主要根据通讯协议的要求,通过轮询方式,主要采用基于,.Sockets空间的UdpClient类实现UDP通信,向设备发送命令,从而获取传感器数据信息,然后解析数据(包括进制转换),并记录到数据库表中。

部分代码如下:

private void Run()

{ byte [] buffer=new byte[9];

while (true)

{ Try

{ strEqSn=StaticCommon.EqSn[ii];

buffer[0]=buffer[1]=0xef; //发送标识符

buffer[2]=0x06; //发送长度

//序列号组的规则为拆封设备序列号为3个字节

buffer[3]=Convert.ToByte(strEqSn.Substring(0,2));

buffer[4]=Convert.ToByte(strEqSn.Substring(2,2));

buffer[5]=Convert.ToByte(strEqSn.Substring(4,2));

buffer[6]=0x10; //命令字为单字节表示

//命令选项为命令字的辅助标记部分,区分同一类型命令的不同功能

//命令参数的长度不定,在设置类命令中为需要设置的具体参数数值

buffer[7]=0x00;

//校验和为从应答标识符到应答参数包含的字节内数值累加和

byte x=0;

for (int i=0; i

buffer[8]=x;

StaticCommon.lstbuffer[ii]=buffer; //送到临时缓冲区

udp.Send(buffer, buffer.Length, ipp); //UDP方式发送

Thread.Sleep(200);

StaticCommon.lstrev[ii]=udp.Receive(ref ipp); //间隔0.2秒接受数据

AddData(StaticCommon.lstrev[ii]); //记录到数据库表

Thread.Sleep((int)StaticCommon.ssi.SpanTime);

//间隔用户指定时间

ii++;

if (ii>=StaticCommon.EqSn.Count) ii=0;

//在指定的设备数中循环

}

catch (Exception ex) //异常处理

{……}

}

}

以上各传感器数据信息参数的计算公式如下:

二氧化碳浓度:CO2数据=CO2数据1×256+CO2数据2

土壤湿度:SOIL数据=SOIL数据

日照度:SUN数据=SUN数据1×256×256×256+SUN数据2×256×256+SUN数据3×256+SUN数据4

空气温度:TEMP数据=TEMP数据-40

空气湿度:HUMI数据=HUMI数据

8.2.2 跨线程访问控件

在多线程编程中,经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,一般采用Invoke和BeginInvoke解决这个问题。它们的共同之处是参数为delegate(委托),委托的方法是在Control的线程上执行的,也就是UI线程,这样确保在多线程中安全地更新界面显示。Invoke在拥有此控件的基础窗口句柄的线程上执行指定的委托;而BeginInvoke则在创建控件的基础句柄所在线程上异步执行指定委托。本系统主要采用Invoke方法。

实现轮询式访问多节点设备,调用UpdateUI方法多线程实时更新采样数据,图形化各设备各传感器的参数状态,如果当前某参数值超出上下限阈值范围,及时显示警告信息,并记录在库表中,供操作者进行分析。

while (true)

{ Try

{ this.Invoke(new System.EventHandler(UpdateUI),

StaticCommon.lstrev[StaticCommon.num]);

Thread.Sleep((int)StaticCommon.ssi.SpanTime);

}

catch (Exception ex) //异常处理

{…… } }

9 调试效果

在历史数据查询界面操作中,用户根据条件查询,图形化显示不同时间段及不同设备的CO2浓度、空气温湿度、土壤湿度和日照强度等历史信息。数据查询显示结果图,如图5所示。

10 结束语

经过学校、企业、农业部门的共同努力,智能灌溉系统顺利通过了验收,在省农业厅进行了应用推广,效果良好。在系统地、不间断地采集环境数据后,上体机软件对这些数据进行整理、统计、绘图。使用者不但能实时掌握田间农作物的信息,而且能根据设置的参数自动控制设备,达到了农业的智能化和高效化。随着我国移动互联网的发展,我们将进一步研发本系统的智能移动客户端应用软件,使用户更方便地掌控作物环境,更好地为农业现代化服务。

参考文献:

[1] 顾建华,严国军.远程控制农田自动灌溉系统研制[J].软件,2012.6:10

[2] 牛新征,梁帆,周明天.基于无线传感器的物联网网络拓扑发现算法

研究[J].计算机科学,2012.36(4):118-122

[3] 倪瑛,傅大梅.基于无线传感器网络的温室监测系统的设计[J].南京

工业职业技术学院学报,2010.4:39-41

[4] 傅仁轩.基于无线传感器网络的远程自动抄表系统设计[J].现代电子

技术,2011.5:150-152

上一篇:一根小香蕉的12种神奇功效 下一篇:欧盟暂停征收航空碳税 国内航空公司欢迎之余存...