智能灌溉系统上位机软件的设计_第1页
智能灌溉系统上位机软件的设计_第2页
智能灌溉系统上位机软件的设计_第3页
智能灌溉系统上位机软件的设计_第4页
智能灌溉系统上位机软件的设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能灌溉系统上位机软件的设计引言 在水资源紧缺的条件下,要实现灌溉农业的可持续发展,就需要灌溉更加精确智能。在不影响农作物生长发育的前提下,按照农作物需水要求准确及时地预报,并实现水量的自动控制,精确施予。目前,主要采用先进的物联网技术与传统农业生产相结合的办法,通过研发先进的传感器、灌溉控制设备、功能强大的计算机灌溉管理软件等来实现科学灌溉,提高农业效益。由于全球气候的恶化和水污染等原因,水资源短缺已经成为全球性的问题。在各大园林、农业及高尔夫灌溉项目中,越来越多的人认识到了节水灌溉的重要性。为了保证人工植被和农作物的正常生长,节水灌溉系统起到了至关重要的作用。托普物联网专注于农业物联网的研

2、发和建设,在这几年里,积极响应国家农业物联网推广的号召,组建专业的研发团队和推广团队,同时也取得了一定的成就。主要研发的有温室大棚控制系统、灌溉系统、喷灌系统、花卉栽培控制系统、设施园艺自动控制系统、滴灌智能控制系统、设施农业滴灌施肥智能化控制系统。并在多地有已经建成的项目。 1 系统主要功能 我们设计并制作出具有监视、控制、环境数据的不间断采集、整理、统计、绘图功能的智能灌溉系统,以实现优化科学灌溉。该系统适用于庭院、园林、农田等灌溉场所。主要包括以下功能: 根据CO2浓度自动控制电磁阀的开关,与CO2发生器配套使用; 根据土壤的干湿度自动控制电磁阀的开关,与喷灌、微灌、滴灌等管道系统配套使

3、用; 根据空气的干湿度自动控制电磁阀的开关,与加/降温、加/除湿等设备配套使用。 2 总体结构设计 Zigbee 是基于标准的低功耗局域网协议。据这个协议规定的技术是一种短距离、低功耗的无线通信技术。其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。 无线网关实现了ZigBee、GPRS、以太网、串口的网络互联和协议转换,集成了符合ZigBee协议标准的JN5121系列通讯模块,GPRS模块,以太网接口,RS232接口。并具有通讯距离远、抗干扰能力强、组网灵活等优点和特性;可实现一点对多点、多点对多点的串口设备间的数据透明传输,

4、也可以根据用户的需要定制软件;可按照星形网络、网状网络以及树状网络组网。兼容 FCC Part 15, ETSI ETS 300-328 和日本的ARIB STD-T16标准。主要应用领域:煤矿/油田设备远程监控、电力/水利设备远程监控、远程智能抄表/线缆取代、工业、农业自动化控制、楼宇、路灯智能控制。本系统设计由三个部分组成:监控中心、无线网关、无线路由节点。其中,监控中心主体是服务器和上位机;无线网关集成了符合ZigBee协议标准JN5121系列通讯模块,GPRS模块,以太网接口,RS232接口,负责将各节点的数据发送给上位机处理,或接收上位机发送的指令并传送给各节点;无线路由节点可以有多

5、个,集成了CO2浓度传感模块、土壤的干湿度传感模块、空气的干湿度传感模块和ARM模块。系统组成框图如图1所示。图1 系统组成框图 3 硬件原理本系统的传感节点硬件采用CC2530,如图2所示。CC2530是用于、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总材料成本建立强大的网络节点。CC2530结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM和许多其他强大的功能。CC2530有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB的闪存。CC2530具

6、有不同的运行模式,使得它特别适应超低功耗要求的系统。运行模式之间的转换时间短,进一步确保了低能源消耗。图2 传感节点硬件框图 4 上位机的设计 4.1 功能需求 以太网通信方式是物联网智能灌溉系统与计算机最主要的通信方式,采用UDP通信协议层,多线程方式进行数据交互。上位机需要单独具备以太网通信界面,除了实现物联网智能灌溉系统以太网通信命令中列出的各项命令之外,还需要以下几个重要功能。 网络拓扑,显示物联网智能灌溉系统所有已经注册的设备节点物理区域视图,主要用于直观地反映设备节点的分布概况,用于设备故障定位。在视图上,双击设备节点图标能够自动显示该节点的实时数据信息;如果设备有故障或告警,节点

7、图标应该改变自身颜色警示操作人员。 数据查询,实时记录物联网智能灌溉系统的当前和历史数据,提供用户对数据按日期和设备标识查询的功能。根据数据容量和数据访问并发性的要求,建议数据库采用专用的数据库管理软件,例如SQL Server 2005。 数据分析,根据数据库内查询的数据绘制图表(折线图或饼图等),显示数据的分布和趋势,提供用户环境参数的历史数据和做出灌溉决策的参考信息。 分布式软件,可以在多个计算机上同时打开上位机软件,软件之间相互协调,每个上位机作出的参数修改都能在其他上位机软件上显示出操作记录,参数设置具有并发性,多个上位机软件进行同一参数的设置不会冲突,参数设置完成后,其他上位机界面

8、会同步更新。 4.2 上位机架构本系统采用.Net三层架构。三层架构(3-tier application)通常意义上的三层架构就是将整个业务应用逻辑上划分为:表示层(USL)、业务逻辑层(BLL)、数据访问层(DAL)。三层架构是一个支持可抽取、可替换的“抽屉”式架构,符合“高内聚,低耦合”的思想,所以这些层可以单独开发,单独测试。具体的三层架构的分层结构图,如图3所示。图3 三层架构的分层结构图 4.3 开发工具的选择 .NET 是一个开发平台,它定义了一种公用语言子集(Common Language Subset, CLS)。.NET统一了编程类库,提供了对下一代网络通信标准,可扩展标记

9、语言(XML)的完全支持,使软件的开发变得容易。.NET与Windows平台紧密集成,是一种面向网络、支持各种用户终端的开发平台环境。 SQL SERVER 2005 对 SQL Server 2000 中已经存在的特性进行了加强。加强了T-SQL(事务处理SQL),整合了符合.NET规范的语言(可以在数据库管理系统中执行.NET代码以充分利用.NET功能),使自身带有支持对用户自定义数据库中存储的数据进行加密的功能,生成多活动结果集(允许从单个的客户端到数据库保持一条持久的连接,以便在每个连接上拥有超过一个的活动请求)等。基于上述原因,我们选择.NET架构C#语言开发,作为系统开发的工具。开

10、发人员必须掌握的预备知识和工具有:UDP通讯编程(UDP包测试工具的使用);多线程;Chart控件的使用;调试工具的使用。 5 数据库表结构数据库名称:ZigDB。主要包括设备状态信息表(如表1所示)、设备信息表(如表2所示)、设备类别表(如表3所示)、系统设置表、权限表、用户表等。表1 EqStatusInfo表2 EquipmentInfo表3 EquipmentType 6 系统功能模块系统上位机模块包括四个主要功能模块:实时监测模块、数据查询分析模块、权限管理模块和系统管理模块。每一个模块中设计了若干子模块。系统上位机功能模块图,如图4所示。图4 系统上位机功能模块图 7 上下位机通信

11、的方式 本系统主要采用两种与上位机通信的方式。 本地调试端口,采用RS232串口通信方式,用于和计算机直连后进行数据通信,同时,对智能灌溉系统进行设备注册和网络参数配置也使用该通信方式。 远程通信端口,采用以太网通信方式,用于和远端计算机进行数据通信,主要功能是上报智能灌溉系统各传感器的数据,以及获取修改相关参数的上下限阈值。 8 主要窗口与关键技术 8.1 主要窗口 上位机软件主要包括以下几个窗口。 主窗口(FormMain):主要包括监听线程Run()方法,用于实现轮询,先采样放入缓冲区然后入库。 网络拓扑窗口(FormNetworkTop):显示AP结点拓扑位置,主要包括AP结点图标的类

12、型和位置,鼠标MouseDown()、MouseUp()、MouseMove()事件处理等。 设备状态窗口(FormOneEq):主要包括发送信息给传感器sendThreshold()、跨线程访问控件UpdateUI()、设置最大阈值和最小阈值。 设备序列号的设置窗口(FormEqpSN):主要包括一些按钮事件处理btnSave_Click()、btnDel_Click()、btnUpdate_Click(),实现对设备序列号的增删改查的操作。 数据查询窗口(FormBrowseHisData):主要包括根据查询条件显示查询结果和CHART图表。涉及btnBrow_Click()、dgvBro

13、wResult_DataBindingComplete()等事件处理。 8.2 关键技术轮询监听 主程序(FormMain)中监听线程Run()方法代码,主要根据通讯协议的要求,通过轮询方式,主要采用基于System.Net,空间的UdpClient类实现UDP通信,向设备发送命令,从而获取传感器数据信息,然后解析数据(包括进制转换),并记录到数据库表中。 部分代码如下: private void Run() byte buffer=new byte9; while (true) Try strEqSn=StaticCommon.EqSnii; buffer0=buffer1=0xef; /发

14、送标识符 buffer2=0x06; /发送长度 /序列号组的规则为拆封设备序列号为 3 个字节 buffer3=Convert.ToByte(strEqSn.Substring(0,2); buffer4=Convert.ToByte(strEqSn.Substring(2,2); buffer5=Convert.ToByte(strEqSn.Substring(4,2); buffer6=0x10; /命令字为单字节表示 /命令选项为命令字的辅助标记部分,区分同一类型命令的不同功能 /命令参数的长度不定,在设置类命令中为需要设置的具体参数数值 buffer7=0x00; /校验和为从应答标

15、识符到应答参数包含的字节内数值累加和 byte x=0; for (int i=0; i<8; i+) x+=bufferi; buffer8=x; StaticCommon.lstbufferii=buffer; /送到临时缓冲区 udp.Send(buffer, buffer.Length, ipp); /UDP 方式发送 Thread.Sleep(200); StaticCommon.lstrevii =udp.Receive(ref ipp); /间隔 0.2秒接受数据 AddData(StaticCommon.lstrevii); /记录到数据库表 /间隔用户指定时间 ii+;

16、 /在指定的设备数中循环 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数据跨线程访问控件 在多线程编程中,经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,一般采用Invoke和BeginInvoke解决这个问题。它们的共同之处是参数为delegate(委托),委托的方法是在Control的线程上执行的,也就是UI线程,这样确保在多线程中安全地更新界面显示。 Invoke在拥有此控件的基础窗口句柄的线程上执行指定的委托;而BeginInvoke则在创建控件的基

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论