本发明涉及智能化灌溉技术。
背景技术:
随着农业现代化的推进,智能化灌溉技术越来越受到重视。一方面,智能化灌溉技术能够对作物实现按需自动灌溉,从而能够大大减少人工的投入;另一方面,智能化灌溉技术能够有效提高水的利用率,从而达到节水的目的。
理想化的智能灌溉是如专利文献cn102037888a所公开的那样通过采集土壤的湿度等信息,然后根据这些信息判断是否需要对作物进行灌溉,如果需要对作物进行灌溉则开启相应的控制阀对相应的作物进行灌溉。但现实的情形却无法理想化。
目前,国内绝大部分农田通过水渠输水方式进行灌溉。在同一灌溉水源的农田灌溉区域内,各种水渠组成树状网络。首先是从作为灌溉水源的水库或湖泊连接出来的主渠道,然后主渠道连接支渠道,支渠道再连接支渠道,最后支渠道连接农田的小水渠。主渠道、支渠道、小水渠的上游端设置有水闸。这些主渠道、支渠道和小水渠基本上属于明渠。这种基于明渠的灌溉系统需要解决以下问题:1、各种水渠通常很长,本身具有蓄水功能,每次开闸放水需要考虑到水渠底水的水量,水闸处的流量与真正用于灌溉的水量之间不一致;2、水渠流水依赖于自然落差,无动力驱动,当上游和下游水位齐平时,水流不动,因此流速流量难以掌控;3、上游渠道与下游渠道之间的自然落差较小,需要利用渠道水闸开关在渠道内蓄水构建上下游的水位落差;4、灌溉面积很大,涉及几百至几千平方公里的灌溉面积,采用遍布传感器采集土壤湿度的方案成本过高;5、由于灌溉面积大,考虑到不同地方土壤性质的不同、作物性质的不同所需要的水量也不同;6、由于灌溉面积大,甚至不同的灌溉点有着不同的降水;7、支渠道所覆盖的灌溉面积不同,每个支渠道的水闸并不能同等对待。
技术实现要素:
本发明所要解决的问题是背景技术的明渠灌溉系统中所出现的各种问题。
为解决上述问题,本发明采用的方案如下:
根据本发明的一种基于明渠的灌溉控制系统,该系统涉及主机、主渠道上游设置的水闸、支渠道上游设置的水闸、农田渠道上游设置的水闸、安装在所述主渠道和支渠道上的水位计以及位于农田侧的需水采集终端;所述水闸、水位计和需水采集终端连接所述主机;所述水位计用于采集主渠道或支渠道的水位,并发送至所述主机;所述需水采集终端用于收集农田侧的需水指数发送至所述主机;该系统包括以下模块:配置管理模块、指数采集模块、指数分析模块、水位采集模块、水位分析模块、以及渠道注水放水调控模块;
所述配置管理模块用于配置和设定树状灌溉供水网络的数据;所述树状灌溉供水网络的数据包括于:主渠道、支渠道、农田渠道的上下游关系、主渠道和支渠道的储水量与水位对应关系、农田侧需水量与需水指数的对应关系、主渠道和支渠道对农田渠道的分配系数;
所述指数采集模块用于从所述需水采集终端收集各个农田侧的需水指数;
所述指数分析模块用于根据所述指数采集模块所采集的农田侧的需水指数,结合所述农田侧需水量与需水指数的对应关系,计算出相应的农田侧需水量,并将该需水量对应至相应的农田渠道中作为相应的农田渠道的需水量,然后根据所述的主渠道、支渠道、农田渠道的上下游关系,对需水量逐级向上汇总得出各个主渠道、支渠道的需水量;
所述水位采集模块用于通过水位计实时采集各个主渠道和支渠道的水位;
所述水位分析模块用于根据所述水位采集模块采集的水位,结合所述的主渠道和支渠道的储水量与水位对应关系,计算出各个主渠道和支渠道的当前储水量;
所述渠道注水放水调控模块用于以广度优先的方式自上而下遍历各个的主渠道和支渠道,对每个主渠道和支渠道根据其渠道数据和水闸状态进行注水和放水控制,直到对所有的农田渠道的放水量满足其对应的农田侧的需水量的要求。
进一步,根据本发明的一种基于明渠的灌溉控制系统,所述渠道注水放水调控模块包括:初始状态校验模块、定时器和渠道状态分析模块;
所述初始状态校验模块用于确定被执行的灌溉所涉及的渠道的水闸都处于正常工作状态,并且将所有渠道的水闸关闭,然后将需水量大于零的主渠道和分支渠道设定为待注水状态,同时将需水量为零的主渠道和分支渠道设定为空闲状态;
所述定时器用于按一定的时间间隔驱动所述渠道状态分析模块执行;
所述渠道状态分析模块首先分析各渠道的剩余需水量是否为零,当所有的主渠道、支渠道和农田渠道的剩余需水量为零时,则停止定时器并停止对注放水执行模块的执行命令发送操作,否则遍历各个主渠道和支渠道,对每个主渠道和支渠道根据其渠道数据状态进行注水和放水控制。
进一步,根据本发明的一种基于明渠的灌溉控制系统,所述注水和放水控制包括注水控制和放水控制;
所述注水控制是对主渠道的注水控制,将该主渠道标记为注水状态,开启该主渠道的水闸对该主渠道进行注水;注水时,实时通过水位计采集该主渠道的水位并根据该主渠道的储水量与水位的对应关系以及前后水位差估算当前注水的水量;当该主渠道的水位达到设定的上限或者该主渠道的储水量达到该主渠道的剩余需水量或者当该主渠道的水闸开启时间超过上限时,关闭该主渠道的水闸,将该主渠道标记为待放水状态;
所述放水控制计算该渠道所有下游渠道中待注水状态的农田渠道的总需水量,然后将该总需水量与该渠道的处于待注水状态的下游支渠道的需水量逐个进行对比;如果该总需水量大于各个下游支渠道的需水量时,对该渠道进行农田渠道的放水控制,否则对该渠道进行下游支渠道的放水控制。
进一步,根据本发明的一种基于明渠的灌溉控制系统,所述放水控制为:将该渠道标记为放水状态,同时开启所有处于待注水状态的下游农田渠道的水闸,对相应的农田渠道进行放水;放水时,根据实时采集的该渠道的水位,计算出当前放水量,然后根据所述主渠道和支渠道对农田渠道的分配系数,计算出该渠道下游各个农田渠道当前的放水量;当农田渠道的放水量达到该农田渠道的需水量时,关闭该农田渠道的水闸;当该渠道的水位达到底线以下时,关闭该渠道所有下游农田渠道的水闸,并计算下游各个农田渠道的剩余需水量和该渠道的剩余需水量;当下游农田渠道的剩余需水量为零时标记该下游农田渠道的状态为空闲状态;当该渠道的剩余需水量大于零时,标记该渠道为待注水状态,否则标记该渠道为空闲状态。
根据本发明的一种基于明渠的灌溉控制方法,该方法涉及主机、主渠道上游设置的水闸、支渠道上游设置的水闸、农田渠道上游设置的水闸、安装在所述主渠道和支渠道上的水位计以及位于农田侧的需水采集终端;所述水闸、水位计和需水采集终端连接所述主机;所述水位计用于采集主渠道或支渠道的水位,并发送至所述主机;所述需水采集终端用于收集农田侧的需水指数发送至所述主机;所述方法包括如下步骤:
s1:获取主渠道、支渠道、农田渠道的上下游关系、主渠道和支渠道的储水量与水位对应关系、农田侧需水量与需水指数的对应关系以及主渠道和支渠道对农田渠道的分配系数,并初始关闭所有水闸;
s2:通过所述需水采集终端采集农田侧的需水指数,结合所采集的农田侧的需水指数和农田侧的需水量和需水指数的对应关系得到农田侧的需水量,然后根据主渠道、支渠道、农田渠道的上下游的关系,对农田侧的需水量逐级向上汇总得到计算出各个主渠道、支渠道和农田渠道的需水量;
s3:通过水位计实时采集各个主渠道和支渠道的水位,结合相应的主渠道和支渠道的储水量与水位对应关系,计算出各个主渠道和支渠道的当前储水量;
s4:以广度优先的方式自上而下遍历各个主渠道和支渠道,对每个主渠道和支渠道根据其渠道数据状态进行注水和放水控制,直到所有的农田渠道的放水量满足其对应的农田侧的需水量的要求。
本发明的技术效果如下:
1、本发明采用分步控制方法,保证整个渠道灌溉系统的安全;
2、本发明通过水位计计算蓄水量的方式避开了明渠流速流量难以掌控的问题。
3、本发明的分步控制可以控制多个不相关的渠道同时进行开闸和合闸动作,从而提高了灌溉过程效率。
附图说明
图1是本发明基于明渠的灌溉控制系统的结构示意图。
图2是本发明实施例中灌溉控制软件的模块结构示意图。
图3是本发明实施例中渠道注水放水调控模块的模块结构示意图。
具体实施方式
下面结合附图对本发明做进一步详细说明。
如图1所示,一种基于明渠的灌溉控制系统涉及主机101、水闸102、需水采集终端103以及水位计。该系统安装在主机101上,用于对基于明渠的农田灌溉系统的实现智能化灌溉控制。
图1中,901是作为灌溉水源的水库,902是主渠道,903是支渠道,904是农田渠道。其中,主渠道902的上游连接水库901,也就是说主渠道902没有上游渠道。支渠道903为从主渠道902或另一支渠道903上接出的渠道,也就是说,支渠道903的上游渠道可能是主渠道902,也可能是另一支渠道903。农田渠道904是从主渠道902或支渠道903接出并连接农田的渠道,也就是说农田渠道904的上游渠道可能是主渠道902,也可能是支渠道903。主渠道902、支渠道903和农田渠道904构成树状的且具有上下游关系的灌溉供水网络的农田灌溉系统。通常,主渠道902与其上游的水库901之间具有较大的高度落差,农田渠道904与其上游的主渠道902或支渠道903之间具有较大的高度落差,而主渠道902与其下游的支渠道903,或者支渠道903与其下游的支渠道903之间的高度落差不是很大,相应地,主渠道902和支渠道903其自身的上游和下游的高度落差也不是很大。需要指出的是,图1中的主渠道902只有一条,本领域技术人员理解,实际应用中,主渠道902可能有多条。
水闸102位于各种渠道的上游,比如位于主渠道902的上游或位于支渠道903的上游或位于农田渠道904的上游,用于向本渠道注水。开启本渠道上游的水闸102是向本渠道注水,对于其上游渠道来说是放水。农田灌溉系统上的各种水闸102通常设于水闸房内。主机101设于控制中心的机房内。水闸102通过有线或无线网络接入主机101,并受主机101的控制。具体来说,水闸102的开关状态上传至主机101,主机101能够向水闸102下发水闸开关的控制指令控制水闸102执行开关动作。
需水采集终端103通常是移动终端,比如智能手机或掌上电脑,位于农田侧,用于向主机101上传其对应农田的需水指数。农田巡检员对农田巡检后分析农田是否缺水,然后操作需水采集终端103通过无线网络向主机101上传需水指数。需水指数分无需灌溉、例行灌溉、严重缺水以及极度缺水四级。默认情形是无需灌溉。需水采集终端103也可以是位于农田侧的控制终端。该控制终端安装在水闸房内,该水闸房也就是用于安装农田渠道904上游水闸的水闸房。该控制终端至少设有三个按键,分别代表例行灌溉、严重缺水以及极度缺水三级需水指数。当按下该控制终端的按键后,该控制终端将该按键对应的需水指数通过水闸房内水闸102与主机101的连接网络向主机101上传。
水位计安装主渠道902和支渠道903内,水位计通过有线或无线网络接入主机101。水位计用于采集其所安装的主渠道902或支渠道903当前的水位,并将相应的水位数据上传至主机101。
主机101上安装有灌溉控制软件。主机101通过运行该灌溉控制软件执行本发明所指的一种基于明渠的灌溉控制方法实现农田灌溉控制。主机101所安装的灌溉控制软件所实现的功能也就是本方面所指的一种基于明渠的灌溉控制系统。本实施例中,该灌溉控制系统如图2所示,包括配置管理模块221、指数采集模块211、指数分析模块212、水位采集模块231、水位分析模块232、水闸控制模块241、以及渠道数据和状态管理模块202、渠道注水放水调控模块201。
配置管理模块221是ui模块,用于配置和设定树状灌溉供水网络的数据。树状灌溉供水网络的数据包括但不限于:主渠道、支渠道、农田渠道的上下游关系、主渠道和支渠道的储水量与水位对应关系、农田侧需水量与需水指数的对应关系、主渠道和支渠道对农田渠道的分配系数。配置管理模块221所配置和设定的数据被传递并保存于渠道数据和状态管理模块202中。配置管理模块221对应前述的基于明渠的灌溉控制方法中的步骤s1,也即,获取主渠道、支渠道、农田渠道的上下游关系、主渠道和支渠道的储水量与水位对应关系、农田侧需水量与需水指数的对应关系以及主渠道和支渠道对农田渠道的分配系数。
指数采集模块211用于从需水采集终端103收集各个农田侧的需水指数。指数采集模块211包含了网络连接模块,通过指数采集模块211与需水采集终端103所建立的网络连接获取需水采集终端103上传的需水指数。指数分析模块212用于根据指数采集模块211所采集的农田侧的需水指数,结合渠道数据和状态管理模块202中的农田侧需水量与需水指数的对应关系,计算出相应的农田侧需水量,并将该需水量对应至相应的农田渠道中作为相应的农田渠道的需水量,然后根据渠道数据和状态管理模块202中的主渠道、支渠道、农田渠道的上下游关系,对需水量逐级向上汇总得出各个主渠道、支渠道的需水量。指数分析模块212得到的主渠道、支渠道和农田渠道的需水量被传递至并保存于渠道数据和状态管理模块202中。指数采集模块211和指数分析模块212所实现的功能也就是前述的基于明渠的灌溉控制方法中的步骤s2,也即,通过所述需水采集终端采集农田侧的需水指数,结合所采集的农田侧的需水指数和农田侧的需水量和需水指数的对应关系得到农田侧的需水量,然后根据主渠道、支渠道、农田渠道的上下游的关系,对农田侧的需水量逐级向上汇总得到计算出各个主渠道、支渠道和农田渠道的需水量。需要指出的是,需水采集终端103所对应的农田侧需水指数与其相应的农田渠道一一对应。
水位采集模块231用于通过水位计实时采集各个主渠道和支渠道的水位。水位采集模块231包含了网络连接模块,通过水位采集模块231与水位计所建立的网络连接获取水位计上传的水位。由于需要实时采集水位,因此水位采集模块231需要与各个水位计建立长连接,并维护该连接。而且由于每个主渠道或支渠道中的水位计有多个,水位采集模块231需要对每个主渠道或支渠道中的多个水位计进行汇总,得到相应渠道的水位。水位分析模块232用于:根据水位采集模块231采集的水位,结合渠道数据和状态管理模块202中相应的主渠道和支渠道的储水量与水位对应关系,计算出各个主渠道和支渠道的当前储水量。水位分析模块232得到的各个主渠道和支渠道的当前储水量以及当前水位被传递至并保存于渠道数据和状态管理模块202中。水位采集模块231和水位分析模块232所实现的功能也就是前述的基于明渠的灌溉控制方法中的步骤s3,也就是,通过水位计实时采集各个主渠道和支渠道的水位,结合相应的主渠道和支渠道的储水量与水位对应关系,计算出各个主渠道和支渠道的当前储水量。
水闸控制模块241用于将渠道注水放水调控模块201对各渠道的水闸控制指令通过网络下发至各个水闸中执行开启水闸和关闭水闸的指令,并通过网络收集各个水闸的开启和关闭的状态。
渠道数据和状态管理模块202维护和保存了一个由渠道节点所组成的树形结构的数据。渠道节点保存了渠道数据和状态。渠道数据和状态管理模块202中的各种数据用于渠道注水放水调控模块201的分析。本实施例中,渠道节点的数据结构定义如下:
struct渠道节点
渠道标识;
渠道类型::={主渠道、支渠道、农田渠道};
上游渠道标识;
下游渠道标识列表;
注水前的水位;
注水前的储水量;
当前水位;
当前储水量;
水位上限、水位下限;
与上游渠道的落差;
储水量与水位对应关系表;
农田侧需水量与需水指数的对应关系表;(当渠道类型为农田渠道时有效)
对农田渠道的分配系数;(当渠道类型为农田渠道时有效)
剩余需水量;
水闸标识;
开闸时间;
注水最小时间间隔;
放水目标下游渠道;
渠道状态::={空闲、待注水、水闸开启中、注水中、水闸关闭中、待放水、放水中};(当渠道类型为主渠道或支渠道时有效)
endstruct
渠道注水放水调控模块201用于遍历各个的主渠道和支渠道,对每个主渠道和支渠道根据其渠道数据状态进行注水和放水控制,直到对所有的农田渠道的放水量满足其对应的农田侧的需水量的要求。渠道注水放水调控模块201所实现的功能是前述的基于明渠的灌溉控制方法中的步骤s4,也就是,遍历各个主渠道和支渠道,对每个主渠道和支渠道根据其渠道数据状态进行注水和放水控制,直到对所有的农田渠道的放水量满足其对应的农田侧的需水量的要求。由于渠道上游下游的关系,下游渠道的注水也就是上游渠道的放水。本实施例中,由于遍历过程是由主渠道至支渠道自上而下遍历,因此,渠道注水放水调控模块只需要实现主渠道的注水和放水控制和支渠道的放水控制,而支渠道的注水控制由其上游渠道放水控制实现。又由于主渠道的放水控制过程与支渠道的放水控制过程相同,因此,本实施例中,渠道注水放水调控模块的功能划分成注水控制和放水控制。注水控制是对主渠道的注水控制,而放水控制则是对主渠道或支渠道的放水控制。也就是,对主渠道来说,当主渠道的状态为待注水时,执行对该主渠道的注水控制;当主渠道的状态为待放水状态时,执行对该主渠道的放水控制。而对支渠道来说,当支渠道的状态为待放水状态时,执行对该分渠道的放水控制,否则等待其上游渠道的放水控制将该其状态修改成待放水状态。这里涉及两个控制原则:所有支渠道的水闸由其上游渠道的放水控制作出;所有支渠道的状态从待注水状态变迁待放水状态的过程由其上游渠道的放水控制作出,而从待放水状态变迁至待注水状态的过程由其自身渠道的放水控制作出。
注水控制,是对主渠道的注水控制,主要过程如下:将该主渠道标记为注水状态,开启该主渠道的水闸对该主渠道进行注水;注水时,实时通过水位计采集该主渠道的水位并根据该主渠道的储水量与水位的对应关系以及前后水位差估计当前注水的水量;当该主渠道的水位达到设定的上限或者该主渠道的储水量达到该主渠道的剩余需水量或者当该主渠道的水闸开启时间超过上限时,关闭该主渠道的水闸,将该主渠道标记为待放水状态。
放水控制,是对主渠道或支渠道的放水控制,主要过程如下:
计算该渠道所有下游渠道为待注水状态的农田渠道的总需水量,然后将该总需水量与该渠道的处于待注水状态的下游支渠道的需水量逐个进行对比;如果该总需水量大于各个下游支渠道的需水量时,对该渠道进行农田渠道的放水控制,否则对该渠道进行下游支渠道的放水控制。也就是放水控制分为农田渠道的放水控制和下游支渠道的放水控制。
对渠道进行农田渠道的放水控制如下:
将该渠道标记为放水状态,同时开启所有处于待注水状态的下游农田渠道的水闸,对相应的农田渠道进行放水;放水时,根据实时采集的该渠道的水位,计算出当前放水量,然后根据所述主渠道和支渠道对农田渠道的分配系数,计算出该渠道下游各个农田渠道当前的放水量;当农田渠道的放水量达到该农田渠道的需水量时,关闭该农田渠道的水闸;当该渠道的水位达到底线以下时,关闭所有该渠道所有下游农田渠道的水闸,并计算下游各个农田渠道的剩余需水量和该渠道的剩余需水量;当下游农田渠道的剩余需水量为零时标记该下游农田渠道的状态为空闲状态;当该渠道的剩余需水量大于零时,标记该渠道为待注水状态,否则标记该渠道为空闲状态。
对渠道进行下游支渠道的放水控制如下:
选择该渠道的处于待注水状态的需水量最大的下游支渠道作为目标支渠道;设置该渠道的状态为放水状态,并设置目标支渠道的状态为注水状态,同时打开目标支渠道的水闸对目标支渠道进行放水;放水时,根据实时采集的该渠道和目标支渠道的水位,计算出目标支渠道的注水量;当目标支渠道的放水量达到目标支渠道的需水量时或者目标支渠道的水位达到设定的上限时或者目标支渠道的水闸打开时间超过上限时或者当该渠道的水位达到下限时或者该渠道的水位与目标支渠道的落差达到下限时,关闭目标支渠道的水闸,停止对目标支渠道放水,同时标记目标支渠道的状态为待放水状态,并同时计算目标支渠道的剩余需水量和该渠道的剩余需水量;当该渠道的水位达到下限且该渠道的剩余需水量为零时,标记该渠道为空闲状态;当该渠道的水位达到下限且该渠道的剩余需水量大于零时,标记该渠道为待注水状态;当该渠道的水位高于上限标记该渠道为待放水状态。
渠道注水放水调控模块201的注水控制和放水控制具体到本实施例中由定时器驱动。如图3所示,渠道注水放水调控模块201包括灌溉决策模块31和灌溉执行模块32。灌溉决策模块用于通过需水量分析、灌溉执行周期、结合最近天气预报情况作出是否执行灌溉程序。灌溉程序由灌溉执行模块32所执行。灌溉执行模块32包括初始状态校验模块321、定时器322和渠道状态分析模块323。
初始化校验模块321用于确定被执行的灌溉所涉及的渠道的水闸都处于正常工作状态,并且将所有渠道的水闸关闭,然后将需水量大于零的主渠道和分支渠道设定为待注水状态,同时将需水量为零的主渠道和分支渠道设定为空闲状态。也就是,初始化校验模块321需要确保所有渠道的水闸需要关闭,并且避开那些无法正常工作正处于维修或检修状态的水闸和水闸所对应的渠道。
定时器322用于按一定的时间间隔驱动渠道状态分析模块323执行。渠道状态分析模块323首先分析各渠道的剩余需水量为零,当所有的主渠道、支渠道和农田渠道的剩余需水量为零时,则停止定时器322以及灌溉执行模块323的执行,否则遍历各个主渠道和支渠道,对每个主渠道和支渠道根据其渠道数据状态进行注水和放水控制。渠道状态分析模块遍历时,首先遍历各个主渠道:当主渠道的状态为待注水状态时,由渠道注水执行状态分析模块3231对该主渠道执行注水控制,当主渠道的状态为待放水状态时,由渠道放水执行状态分析模块对该主渠道执行放水控制;然后再遍历各个支渠道:当该支渠道的状态为待放水状态时,由渠道放水执行状态分析模块3232对该支渠道执行放水控制。
考虑到水闸开启和关闭需要一定的时间,而且由主机下发控制指令至各个渠道的水闸需要一定的时间。由此,本实施例中,注水状态进一步细化成:水闸开启中、注水中和水闸关闭中三种状态。上述细化的注水状态和放水状态详见前述的渠道节点的状态定义。
此外,由于水闸开启和关闭的时间问题。定时器322所设定的时间间隔不小于水闸开启和关闭的时间。一般来说,水闸开启和关闭需要1分钟左右的时间,由此定时器322所设定的时间间隔为1~2分钟。也就是说,定时器322驱动执行的渠道状态分析模块323实质上是一个有限状态自动机。渠道状态分析模块323的每一次执行,渠道的状态最多只变化一次。在该有限状态自动机内,主渠道和支渠道的状态变迁如下:
待注水=>水闸开启中=>注水中=>水闸关闭中=>待放水=>放水中=>.......=>待注水=>水闸开启中=>注水中=>水闸关闭中=>待放水=>放水中=>空闲。
农田渠道的状态变迁如下:待注水=>水闸开启中=>注水中=>水闸关闭中=>.......=>待注水=>水闸开启中=>注水中=>水闸关闭中=>空闲。
渠道状态分析模块323需要对各个渠道进行广度优先遍历。具体过程如下为:对各个渠道节点进行广度优先遍历,对于每个渠道节点而言,首先判断该渠道节点的类型,然后根据渠道节点的类型分别执行。
如果是主渠道,分析渠道状态:如果是待注水状态、或水闸开启中状态、或注水中状态、或水闸关闭中状态,则由渠道注水执行状态分析模块3231执行注水控制;如果是待放水状态、或放水中状态由渠道放水执行状态分析模块3232执行放水控制;如果是空闲状态,则直接返回。
如果是支渠道,分析渠道状态:如果是待放水状态、或放水中状态由渠道放水执行状态分析模块3232执行放水控制;否则直接返回。
渠道注水执行状态分析模块3231分析主渠道的状态,然后根据状态分别执行:
如果是待注水状态,则开启水闸,并将状态修改成水闸开启中状态;
如果是水闸开启中状态,则判断水闸是否开启:如果水闸正常开启,则修改状态为注水中状态;如果水闸无法正常开启,则抛出异常,对异常进行处理;
如果是注水中状态,则判断通过水位计采集该主渠道的水位并根据该主渠道的储水量与水位的对应关系以及前后水位差估计当前注水的水量;当该主渠道的水位达到设定的上限或者该主渠道的储水量达到该主渠道的剩余需水量或者当该主渠道的水闸开启时间超过上限时,关闭水闸,并将状态修改成水闸关闭中状态;
如果是水闸关闭中状态,判断水闸是否关闭;如果水闸正常关闭,则将状态修改成待放水状态。
渠道放水执行状态分析模块3232分析渠道的状态,然后根据状态分别执行:
如果是待放水状态,则计算该渠道所有下游渠道为待注水状态的农田渠道的总需水量,然后将该总需水量与该渠道的处于待注水状态的下游支渠道的需水量逐个进行对比;如果该总需水量大于各个下游支渠道的需水量时,对该渠道进行农田渠道的放水控制,否则对该渠道进行下游支渠道的放水控制;农田渠道的放水控制时,同时开启所有处于待注水状态的下游农田渠道的水闸,对相应的农田渠道进行放水,同时标记相应的农田渠道状态为水闸开启中状态,同时设置该渠道的状态为放水中状态;下游支渠道的放水控制时,选择该渠道的处于待注水状态的需水量最大的下游支渠道作为目标支渠道,然后开启目标支渠道,设置目标支渠道的状态为水闸开启中状态,同时设置该渠道的状态为放水中状态;
如果是放水中状态,则分析各个相应的下游渠道处于水闸开启中状态的水闸是否正常开启;如果正常开启,则将相应的下游渠道的状态修改成注水中状态;如果不能正常开启,则抛出异常,对异常进行处理;然后分析分析各个相应的下游渠道处于水闸关闭中状态的水闸是否正常关闭;如果正常关闭,则计算下游渠道的剩余需水量,如果剩余需水量大于零,则将相应的下游渠道的状态修改成待注水状态,否则将相应的下游渠道的状态修改成空闲状态;在所有下游渠道水闸关闭的情形下,计算该渠道的剩余需水量,如果该渠道的剩余需水量大于零,则修改该渠道的状态为待注水状态,否则修改该渠道的状态为空闲状态;如果下游渠道水闸不能正常关闭,则抛出异常,对异常进行处理;在所有渠道水闸正常开启或关闭的状态下,如果是对农田渠道放水,则根据实时采集的该渠道的水位,计算出当前放水量,然后根据所述主渠道和支渠道对农田渠道的分配系数,计算出该渠道下游各个农田渠道当前的放水量;当农田渠道的放水量达到该农田渠道的需水量时,关闭该农田渠道的水闸,设置该农田渠道的状态为水闸关闭中;当该渠道的水位达到底线以下时,关闭所有该渠道所有处于注水中状态的下游农田渠道的水闸,并将相应的农田渠道的状态修改为下游农田渠道的状态为水闸关闭中;所有渠道水闸正常开启或关闭的状态下,如果是对目标支渠道放水,根据实时采集的该渠道和目标支渠道的水位,计算出目标支渠道的注水量;当目标支渠道的放水量达到目标支渠道的需水量时或者目标支渠道的水位达到设定的上限时或者目标支渠道的水闸打开时间超过上限时或者当该渠道的水位达到下限时或者该渠道的水位与目标支渠道的落差达到下限时,关闭目标支渠道的水闸,停止对目标支渠道放水,同时标记目标支渠道的状态为水闸关闭中状态。
也就是说,本实施中,渠道状态分析模块323的渠道注水执行状态分析模块3231和渠道放水执行状态分析模块3232将前述的注水控制和放水控制的动作进行拆分,然后根据相应的状态进行分别处理。