基于互联网的农业自动灌溉控制系统数据实时推送设计与开发

来源 :现代农业科技 | 被引量 : 0次 | 上传用户:linba
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要 基于Web的自动灌溉控制系统是当前农业节水信息技术发展的主流趋势,针对基于Web的应用程序在实时性上表现较差而难以满足应用需求这一问题,首先分析了基于Web的自动灌溉控制系统的结构和数据传输实时性瓶颈,提出了通过数据推送模式提高实时性的方案,并对数据层与逻辑层、逻辑层与表现层之间的具体数据推送模式进行了设计。通过编程开发完成基于Web的灌溉控制系统的构建,实现了数据实时推送的机制,并对系统数据采集和控制指令发送过程的实时性进行测试。结果表明:数据采集平均延时为1 676 ms,控制数据从发送到结果返回的平均延时为3 378 ms,基本能够满足其设备控制和灌溉决策的需要;软件系统内采集和控制过程的数据库至客户端数据传输的平均延时分别为124 ms和118 ms,消除了数据拉取模式中的延时因素,对提高系统实时性起到了重要作用。该研究为基于Web的实时监测与控制系统的开发提供了方法参考。
  关键词 互联网;自动灌溉控制系统;数据采集;数据推送;观察者模式;设计;开发
  中图分类号 TP274 .2 文献标识码 A 文章编号 1007-5739(2015)19-0344-03
  Abstract Automatic irrigation control system based on Web is the main trend in the development of agricultural water-saving information technology.The application program based on Web in real-time performance is poor,so it is difficult to meet the application needs of this problem.In this paper,the structure and data transmission real-time bottleneck of automatic irrigation control system based on Web was analyzed,and the scheme to improve the real-time performance of data transmission mode was put forward.The construction of irrigation control system based on Web was developed,and the mechanism of data real-time push was realized,and the real-time performance of data acquisition and control instruction was tested.The results showed that the average delay of data acquisition was 1 676 ms,the average delay was 3 378 ms,which could basically satisfy the requirement of equipment control and irrigation decision.The average delay of data transmission was 124 ms and 118 ms.This study provided a reference for the development of real-time monitoring and control system based on Web.
  Key words Web;automatic irrigation control system;data acquisition;data push;observer pattern;design;development
  作为物联网技术的典型应用之一,自动灌溉控制系统不仅为设施农业灌溉和城市绿化灌溉等领域节约了大量水资源,也为根据作物和花木的需水特性进行个性化灌溉和用水精准计量提供了基础[1-2]。自动灌溉控制系统由硬件和软件2个部分组成,硬件部分包括灌溉控制器、电磁阀和传感器,软件安装运行于工控机上并与硬件部分相连,是人机交互入口和控制中心,根据监测数据和灌溉模型进行自动/半自动的灌溉控制。自动灌溉方式主要有2种:一种是建立周期性的灌溉方案,进行定时灌溉;另一种是以土壤水分监测数据和气象数据为输入,通过灌溉决策模型计算灌溉时间和灌水量,实现按需灌溉[3-4]。
  实时性对于自动灌溉控制系统至关重要,传感器数据采集的实时性也决定了灌溉决策的时效性,同时,灌溉控制指令也必须实时地传输到电磁阀,保证灌水量的精确控制[5-6]。网络环境和系统架构是影响实时性的主要因素,通常在一定的工程条件下网络传输速度是确定的,此时系统架构对实时性起着决定性作用。当前的灌溉控制软件系统主要是基于客户端/服务器(C/S)结构开发的桌面应用程序,客户端软件与数据库之间通讯效率很高,且网络结构简单,因此系统实时性能够得到有效保障。但是,由于C/S结构程序必须运行于特定的软硬件平台,无法实现多种设备平台的覆盖,适用范围非常有限,而针对所有可能平台进行开发在多数情况下并不可行[7]。另外,C/S 结构程序升级维护成本较高,同时难以实现多个项目集中管理。因此,当前软件应用系统更多地选择基于浏览器/服务器(B/S)结构进行开发,即Web应用程序。在Web应用程序中,常常通过Ajax方式来模拟实时效果,数据刷新的频率直接决定了延时长短,通过提高刷新频率来改善实时性能,不仅会增加无效网络传输,对服务器资源也是极大的考验。本文针对这一问题展开研究,通过数据推送方式实现数据传输,改善Web应用系统的实时性,满足自动灌溉控制需求。   1 系统结构与数据实时推送设计
  1.1 系统结构
  在基于Web的自动灌溉控制系统中,硬件设备和灌溉控制软件不采取直接通信的方式,而是通过独立的数据通讯模块实现数据传输,将硬件设备的监测数据和自身状态数据发送至灌溉控制软件系统,并将软件系统发出的控制命令数据传输至硬件设备,不仅降低了系统耦合性,也使软件部署更加灵活,有利于实现多个灌溉控制项目的远程集中管理。基于C/S架构的灌溉控制软件限制了服务对象和应用范围,同时也需要较高的成本来维护和更新系统,基于B/S架构进行软件系统设计具有更大的优势。在软件架构方面采用Web应用程序的典型3层架构,即数据层、逻辑层和表现层。但是传统基于HTML页面的表现层技术不能满足灌溉控制中的操作交互和实时数据传输要求,因此本文采用丰富互联网应用(rich internet application)技术进行表现层的开发,使其除了展示服务器返回数据之外,增加更多数据表现和交互功能,在改善用户体验的同时,也减少了网络数据传输量。
  1.2 数据传输实时性瓶颈分析
  在硬件设备与数据通讯模块之间采用嵌入式程序进行通讯,延时很短;数据通讯模块与数据库之间的数据传输为桌面级应用程序,实施性也能够得到保证;在软件系统内部,由于架构特点和各层次之间数据传输方式的差异,实时性的提高往往以巨大的网络带宽消耗和服务器性能需求为代价,在实际应用中存在较大的问题,因此在整个灌溉控制系统中,软件部分是实时性提高的关键。
  软件系统中数据传输包括控制和采集2个过程。控制过程的数据传输是从客户端应用程序到数据库,其实现过程为客户端程序向Web服务器发出请求,服务器接收数据并保存到数据库中,整个过程是由数据源向接收数据层的推送过程,其延时主要来自于网络通讯延时和计算耗时,实时性较高。采集过程的数据传输是从数据库到客户端应用程序,更新数据是由接收层通过查询操作拉取获得。在数据拉取模式中,客户端程序调用一个异步方法来从服务器获取数据,然后服务器端程序通过调用一个同步方法从数据库中获取最新数据,数据库返回数据给服务器端程序后,服务器再将数据发送给客户端。数据拉取过程通常可以在较短时间内完成,但是由于硬件设备的数据采集与软件系统的数据获取相互独立,客户端程序并不知道何时数据库数据有了更新,难以实现数据同步更新,延时较长且不确定,形成了整个系统实时性的瓶颈,影响着整个灌溉控制过程。
  1.3 数据实时推送设计
  解决数据采集过程中实时性瓶颈的最有效方案就是采用数据推送方式来传输数据更新,在数据推送模式中,数据更新活动之间相互连接,各部分操作之间不会因为查询间隔而互相等待,降低数据传输延时的同时,也减少了无用的数据查询操作。现重点分析如何在Web应用程序中实现数据推送。
  1.3.1 观察者模式。观察者模式(又称为发布-订阅模式)是软件设计模式的一种,在这种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知,常被用来实现事件处理系统。观察者模式的实现中定义了一个一对多的依赖关系,允许多个用户同时观察同一个数据主题,当这个主题的数据状态发生变化时,会通知所有相关用户,根据最新的数据更新自己的状态。
  在自动灌溉控制系统中采用观察者模式来实现数据传输能够很好地解决当前实时性能问题:数据逐层按照通知方式进行传递,消除了查询频率与数据更新频率不同造成的延时;数据推送仅在数据源发生变化时发生,避免了大量不必要的查询操作。
  在不同层次之间实现观察者模式的方式不同,下面分别对灌溉控制软件的数据层与逻辑层,以及逻辑层与表现层之间,如何通过观察者模式进行数据推送进行分析。
  1.3.2 数据层与逻辑层之间的数据推送设计。在数据层与逻辑层之间应用观察者模式,可以实现数据从数据层到逻辑层的推送,其中,被观察者为数据库中数据表,观察者为Web服务器中监听程序,数据通讯模块将更新数据插入数据表后,数据库立即通知相关Web服务程序,执行数据主题更新。实现数据层到逻辑层的数据推送的主要步骤如下:①在Web服务器创建数据接收程序,以响应数据更新通知;②在数据库创建一个存储过程,实现发送数据到Web服务器;③在被观察的数据表中创建insert触发器,其中调用②中建立的存储过程;④当更新数据插入被观察数据表中时,触发器调用存储过程将更新数据发送到Web服务器,服务器程序接收数据并更新对应的数据主题,为下一步推送数据至客户端程序做准备。
  1.3.3 逻辑层与表现层之间的数据推送设计。在逻辑层中,被观察者为运行在Web服务器中的程序对象,表现层中观测者为客户端程序中的程序对象。由于Web服务程序无法直接向客户端程序发起数据连接,因此在逻辑层与表现层之间实现观察者模式,需要客户端程序加载时,在逻辑层和表现层之间建立实时的双向数据连接,并观察逻辑层的一组数据主题,当这组数据主题更新后,就会通过数据连接通知客户端程序。表现层发出连接请求后与逻辑层建立连接并保持,然后通过数据流请求,为逻辑层数据推送提供下行通道,而表现层推送数据至逻辑层,则采用内部HTTP连接按照请求应答方式进行。
  2 自动灌溉控制系统开发
  2.1 软硬件环境
  本文研究中,墒情监测设备可获得的采集量包括土壤温湿度和各类气象指标,EIC直流灌溉控制器是一种主要用于温室和小型绿地灌溉的小型灌溉控制器,使用电池供电,不需要布设外部电缆,其控制的终端为直流电磁阀。数据通讯模块采用基于短消息服务(SMS)的无线传输方式,将数据编码后以短信形式发出,接收端收到短信后,经过解析提取数据并传递给数据接收对象。
  在软件系统技术选型中,考虑技术的成熟度、市场占有率以及技术之间衔接的紧密程度,客户端应用程序使用Flex技术开发,并且运用BlazeDS框架来构建Flex前端与Java后端之间的通讯。逻辑层采用Java开发,Web服务器使用Tomcat,数据库采用SQL Server,通过JDBC连接数据库。   2.2 实现实时数据推送的关键步骤
  2.2.1 数据库开发。数据库开发的核心目标是自动推送数据给Web服务器,实现这种机制的方式是使用数据库存储过程和触发器。首先,在SQL Server中创建存储过程“SP_SEND_ HTTPREQUEST”实现通过HTTP请求将数据发送到指定服务器端的Servlet,然后在监测数据表上创建触发器“TRIGGE R_STATION_INSERT”,当有新数据插入数据表后,该触发器将调用“SP_SEND_HTTPREQUEST”,将数据发送到Web服务器。
  2.2.2 Web服务开发。逻辑层是开发的重点,它既是数据层的观察者,同时也是客户端程序的被观察者。作为观察者,它通过响应HTTP请求来获取更新数据,而作为被观察者则需要利用BlazeDS框架建立的数据通道来发送数据。BlazeDS框架为客户端程序连接到服务端数据、并在多个客户端和服务器间传送数据提供了一系列的数据服务,核心功能包括RPC服务和消息服务,BlazeDS应用包括2个部分,即1个客户端应用程序和1个服务端的J2EE程序。BlazeDS在客户端和服务器间使用2种主要的交换模式:第1种模式是请求响应模式,客户端发送1个请求给服务器处理,服务器返回1个包含处理结果的响应给客户端,RPC服务使用这种模式;第2种模式是发送订阅模式,当服务端路径发布消息给一系列订阅该地址的客户端,客户端将收到该消息,消息服务使用这种模式。本文采用消息服务来传递实时数据,并为消息服务配置StreamingHTTPChannel和Stream-ingAMFChannel类型的数据通道,这种类型的通道能够使客户端打开并保持与服务器的连接,让服务器以流的方式推送数据到客户端,实时性高且无需轮询开销。但客户端到服务器的消息并不通过流方式发送,而是在操作期间使用内部的HTTP连接通过请求应道方式发送。
  服务器端部署BlazeDS需要把BlazeDS及其依赖的jar包拷贝到WEB-INF/lib下,修改WEB-INF/flex目录下有关BlazeDS的配置文件,并在WEB-INF/web.xmL文件中定义MessageBrokerServlet和1个session listener。在完成配置后,服务端需要开发程序来接收从数据库推送来的数据,并推送给显示的功能,主要包括3个步骤:①建立数据主题的Java类Feed,实现对象化地操作更新数据;②在BlazeDS的Messaging-config.xmL中增加数据主题配置信息,为表现层提供订阅对象;③实现数据的接收和推送功能。
  3 数据传输实时性能测试
  3.1 测试设计
  为了对本文数据推送方案的实时性能进行量化评价,并与传统拉取模式进行对比,针对不同的数据传输过程制定了系统延时测试方案,以获取数据在整个传输过程中的耗时数据。从传感器到客户端程序的采集数据传输延时采用以下方案进行测量:控制器在一定时间范围内,采用随机方式进行传感器数据读取,并将数据值与数据采集时间发送至数据库,在数据库、Web服务器和客户端程序分别记录接收到更新数据的时间,与数据采集时间相减得到数据到达各部分的延时。对于控制数据传输的延时采用以下方案进行测量:在客户端程序中执行打开或关闭阀门操作,并记录操作时间,当数据发送至电磁阀后,电磁阀开闭状态发生改变,之后再将更新的状态数据返回到客户端程序,记录控制指令发送过程和控制结果返回过程中数据库、Web服务器和客户端程序收到更新数据的时间,与用户界面上操作的时间相减,获得控制数据和返回数据到达各部分的延时。
  在局域网环境下,通过浏览器访问系统进行测试,数据采集过程无需人工操作,系统自动获取最新数据并更新界面显示,控制过程需要人工通过客户端程序执行设备控制操作。数据拉取模式分别采用0.25、1.00、10.00 s的拉取间隔进行测试,其分别代表极高频率、高频率和正常频率的数据拉取操作。测试前,需要对系统中硬件设备和软件平台的系统时钟进行同步,然后分别对数据推送模式和不同间隔的拉取模式进行10次采集和控制测试,并采用上述方案计算软件系统各节点的数据传输平均延时。
  3.2 性能测试结果与分析
  在数据采集过程中,拉取模式从设备发出数据到客户端接收单向传输的总延时为1 676 ms,其中数据通讯模块将硬件数据发送至数据库耗时1 552 ms,占总延时的92.6%,主要来自短信传输耗时;从数据库到客户端程序的平均耗时等于到达客户端与到达数据库的平均延时之差,即124 ms,主要来自计算和网络传输耗时,这一结果表明通过数据推送的设计与实现,软件系统内的延时已经被极大地消减。采用数据拉取模式达到延时124 ms,数据拉取间隔至少要达到248 ms,与0.25 s间隔拉取模式测试的访问频率接近,此时拉取模式从数据库导客户端的平均耗时为228 ms,大于推送模式的延时,且系统1 s内需要执行4次数据查询,在多客户端访问的情况下,业务系统将承受巨大的访问压力,影响系统的稳定运行。当拉取模式的拉取间隔增大至1 s和10 s,总延时达到2 231 ms和6 641 ms,此时从数据库到达客户端程序的平均耗时为588 ms和5 079 ms,可以看出延时随着拉取间隔延长,平均延时大大增加,甚至远超硬件系统与软件系统之间的通讯延时。
  在控制过程中,推送模式从客户端发出操作指令到接收返回操作结果的总延时为3 378 ms,单向平均为总延时的1/2,即1 689 ms,其中数据通讯模块中的总传输时间为控制结果到达数据库与控制指令到达数据库延时之差,即3 260-127=3 133 ms,占总延时的92.7%;控制指令数据从客户端程序到数据库的延时为127 ms;设备状态数据从数据库到客户端程序的平均耗时等于到达客户端与达到数据库的平均延时差,即3 378-3 260=118 ms,结果同样表明软件系统内的延时已经接近于计算和网络延时的极限,数据推送机制对于提高实时性能效果显著。拉取模式中,0.25、1.00、10.00 s拉取间隔下控制指令从客户端发送至数据库的延时分别为138、122、120 s,与推送模式下的127 s接近,这是由于在不同的访问模式中,控制指令发送过程都相同的请求/响应过程,且与拉取间隔无关。但在控制结果返回过程中,0.25、1.00、10.00 s拉取间隔下设备状态数据从数据库到客户端程序的平均耗时达到256、749、4 918 ms,延时随着拉取间隔增大而增大,与数据采集过程类似。总的来看,推送模式下设备与客户端程序之间的单向数据传输平均延时都在2 s以内,基本能够满足自动灌溉控制的需求;而拉取模式存在着实时性和服务器访问压力之间的矛盾,要提高实时性必然会成倍增加服务器量,同时带来更多的带宽和流量资源消耗。以上结果是在局域网络环境下测试所得,当通过互联网或4G无线网络访问系统时,受连接速度影响系统延时可能会增加,但通常延时在102 ms级别,对系统实时性影响不大。   4 结语
  本研究主要解决基于Web的自动灌溉控制系统中数据传输实时性的问题,通过在软件系统的数据传输过程中设计并实现观察者模式,形成实时数据推送机制,在没有带来更多带宽和计算资源消耗的前提下,数据采集和控制过程平均延时为1 676 ms和3 378 ms,其中软件系统内数据库至客户端的数据传输平均延时仅为124 ms和118 ms,大幅提高了系统实时性能,为系统实施精确的灌溉控制提供了保障。
  本文研究结果表明,通过合理的设计和开发,基于Web
  的灌溉控制系统能够达到接近桌面控制系统的实时性能,系统的数据推送设计方案同样可以应用于其他物联网相关的监测和控制软件系统开发中,可以较低成本实现实时性能的提升。系统以短信服务作为硬件系统与软件系统之间的数据传输方式,其具有不需要专用传输信道、点对点直接传输等优点,但延时通常在1~10 s之间,还存在传输数据量有限,遇到网络阻塞可能传输失败的缺点。因此,在后续研究工作中,需要对短信通讯模块进行进一步优化,并在移动通讯网络较好的条件下,采用GPRS方式进行辅助传输,提高硬件系统与软件系统之间数据传输的稳定性和实时性。
  5 参考文献
  [1] 单飞飞,周建军,郑文刚,等.基于组态软件和Modbus协议的公园自动灌溉系统[J].中国农村水利水电,2010(4):36-38.
  [2] 匡迎春,沈岳,段建南,等.模糊控制在水稻节水自动灌溉中的应用[J].农业工程学报,2011,27(4):18-21.
  [3] 徐忠辉,潘卫国,石红梅.自动灌溉控制系统的应用[J].北京水务,2010(5):48-51.
  [4] 岳学军,刘永鑫,洪添胜,等.基于土壤墒情的自动灌溉控制系统设计与试验[J].农业机械学报,2013,44(增刊2):241-246.
  [5] 李楠,刘成良,李彦明,等.基于3S技术联合的农田墒情远程监测系统开发[J].农业工程学报,2010,26(4):169-174.
  [6] 陈少波,桂卫华.基于Internet网过程控制远程监控系统实时性研究[J].信息技术,2008(3):31-33.
  [7] 贾永振,刘载文.基于WEB的远程实时监测系统的实现技术[J].微计算机信息,2006,22(8):89-91.
其他文献
拥有湖南首条机器人堆码线湖南百宜由原浏阳市饲料厂改制而来,于2001年成立,位于城区的老厂年产能10万吨。供不应求的市场差额也使湖南百宜谋求着扩产,在租用长沙一家饲料厂的车
针对现有的销售管理信息系统对决策支持的不足,本文提出一种基于数据仓库技术的解决方案,给出了系统体系结构、数据仓库模型以及联机分析处理策略,并对系统实现的关键技术进行了