本發(fā)明涉及智能化灌溉技術(shù)。
背景技術(shù):
隨著農(nóng)業(yè)現(xiàn)代化的推進(jìn),智能化灌溉技術(shù)越來(lái)越受到重視。一方面,智能化灌溉技術(shù)能夠?qū)ψ魑飳?shí)現(xiàn)按需自動(dòng)灌溉,從而能夠大大減少人工的投入;另一方面,智能化灌溉技術(shù)能夠有效提高水的利用率,從而達(dá)到節(jié)水的目的。
理想化的智能灌溉是如專利文獻(xiàn)cn102037888a所公開的那樣通過采集土壤的濕度等信息,然后根據(jù)這些信息判斷是否需要對(duì)作物進(jìn)行灌溉,如果需要對(duì)作物進(jìn)行灌溉則開啟相應(yīng)的控制閥對(duì)相應(yīng)的作物進(jìn)行灌溉。但現(xiàn)實(shí)的情形卻無(wú)法理想化。
目前,國(guó)內(nèi)絕大部分農(nóng)田通過水渠輸水方式進(jìn)行灌溉。在同一灌溉水源的農(nóng)田灌溉區(qū)域內(nèi),各種水渠組成樹狀網(wǎng)絡(luò)。首先是從作為灌溉水源的水庫(kù)或湖泊連接出來(lái)的主渠道,然后主渠道連接支渠道,支渠道再連接支渠道,最后支渠道連接農(nóng)田的小水渠。主渠道、支渠道、小水渠的上游端設(shè)置有水閘。這些主渠道、支渠道和小水渠基本上屬于明渠。這種基于明渠的灌溉系統(tǒng)需要解決以下問題:1、各種水渠通常很長(zhǎng),本身具有蓄水功能,每次開閘放水需要考慮到水渠底水的水量,水閘處的流量與真正用于灌溉的水量之間不一致;2、水渠流水依賴于自然落差,無(wú)動(dòng)力驅(qū)動(dòng),當(dāng)上游和下游水位齊平時(shí),水流不動(dòng),因此流速流量難以掌控;3、上游渠道與下游渠道之間的自然落差較小,需要利用渠道水閘開關(guān)在渠道內(nèi)蓄水構(gòu)建上下游的水位落差;4、灌溉面積很大,涉及幾百至幾千平方公里的灌溉面積,采用遍布傳感器采集土壤濕度的方案成本過高;5、由于灌溉面積大,考慮到不同地方土壤性質(zhì)的不同、作物性質(zhì)的不同所需要的水量也不同;6、由于灌溉面積大,甚至不同的灌溉點(diǎn)有著不同的降水;7、支渠道所覆蓋的灌溉面積不同,每個(gè)支渠道的水閘并不能同等對(duì)待。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的問題是背景技術(shù)的明渠灌溉系統(tǒng)中所出現(xiàn)的各種問題。
為解決上述問題,本發(fā)明采用的方案如下:
根據(jù)本發(fā)明的一種基于明渠的灌溉控制系統(tǒng),該系統(tǒng)涉及主機(jī)、主渠道上游設(shè)置的水閘、支渠道上游設(shè)置的水閘、農(nóng)田渠道上游設(shè)置的水閘、安裝在所述主渠道和支渠道上的水位計(jì)以及位于農(nóng)田側(cè)的需水采集終端;所述水閘、水位計(jì)和需水采集終端連接所述主機(jī);所述水位計(jì)用于采集主渠道或支渠道的水位,并發(fā)送至所述主機(jī);所述需水采集終端用于收集農(nóng)田側(cè)的需水指數(shù)發(fā)送至所述主機(jī);該系統(tǒng)包括以下模塊:配置管理模塊、指數(shù)采集模塊、指數(shù)分析模塊、水位采集模塊、水位分析模塊、以及渠道注水放水調(diào)控模塊;
所述配置管理模塊用于配置和設(shè)定樹狀灌溉供水網(wǎng)絡(luò)的數(shù)據(jù);所述樹狀灌溉供水網(wǎng)絡(luò)的數(shù)據(jù)包括于:主渠道、支渠道、農(nóng)田渠道的上下游關(guān)系、主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系、農(nóng)田側(cè)需水量與需水指數(shù)的對(duì)應(yīng)關(guān)系、主渠道和支渠道對(duì)農(nóng)田渠道的分配系數(shù);
所述指數(shù)采集模塊用于從所述需水采集終端收集各個(gè)農(nóng)田側(cè)的需水指數(shù);
所述指數(shù)分析模塊用于根據(jù)所述指數(shù)采集模塊所采集的農(nóng)田側(cè)的需水指數(shù),結(jié)合所述農(nóng)田側(cè)需水量與需水指數(shù)的對(duì)應(yīng)關(guān)系,計(jì)算出相應(yīng)的農(nóng)田側(cè)需水量,并將該需水量對(duì)應(yīng)至相應(yīng)的農(nóng)田渠道中作為相應(yīng)的農(nóng)田渠道的需水量,然后根據(jù)所述的主渠道、支渠道、農(nóng)田渠道的上下游關(guān)系,對(duì)需水量逐級(jí)向上匯總得出各個(gè)主渠道、支渠道的需水量;
所述水位采集模塊用于通過水位計(jì)實(shí)時(shí)采集各個(gè)主渠道和支渠道的水位;
所述水位分析模塊用于根據(jù)所述水位采集模塊采集的水位,結(jié)合所述的主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系,計(jì)算出各個(gè)主渠道和支渠道的當(dāng)前儲(chǔ)水量;
所述渠道注水放水調(diào)控模塊用于以廣度優(yōu)先的方式自上而下遍歷各個(gè)的主渠道和支渠道,對(duì)每個(gè)主渠道和支渠道根據(jù)其渠道數(shù)據(jù)和水閘狀態(tài)進(jìn)行注水和放水控制,直到對(duì)所有的農(nóng)田渠道的放水量滿足其對(duì)應(yīng)的農(nóng)田側(cè)的需水量的要求。
進(jìn)一步,根據(jù)本發(fā)明的一種基于明渠的灌溉控制系統(tǒng),所述渠道注水放水調(diào)控模塊包括:初始狀態(tài)校驗(yàn)?zāi)K、定時(shí)器和渠道狀態(tài)分析模塊;
所述初始狀態(tài)校驗(yàn)?zāi)K用于確定被執(zhí)行的灌溉所涉及的渠道的水閘都處于正常工作狀態(tài),并且將所有渠道的水閘關(guān)閉,然后將需水量大于零的主渠道和分支渠道設(shè)定為待注水狀態(tài),同時(shí)將需水量為零的主渠道和分支渠道設(shè)定為空閑狀態(tài);
所述定時(shí)器用于按一定的時(shí)間間隔驅(qū)動(dòng)所述渠道狀態(tài)分析模塊執(zhí)行;
所述渠道狀態(tài)分析模塊首先分析各渠道的剩余需水量是否為零,當(dāng)所有的主渠道、支渠道和農(nóng)田渠道的剩余需水量為零時(shí),則停止定時(shí)器并停止對(duì)注放水執(zhí)行模塊的執(zhí)行命令發(fā)送操作,否則遍歷各個(gè)主渠道和支渠道,對(duì)每個(gè)主渠道和支渠道根據(jù)其渠道數(shù)據(jù)狀態(tài)進(jìn)行注水和放水控制。
進(jìn)一步,根據(jù)本發(fā)明的一種基于明渠的灌溉控制系統(tǒng),所述注水和放水控制包括注水控制和放水控制;
所述注水控制是對(duì)主渠道的注水控制,將該主渠道標(biāo)記為注水狀態(tài),開啟該主渠道的水閘對(duì)該主渠道進(jìn)行注水;注水時(shí),實(shí)時(shí)通過水位計(jì)采集該主渠道的水位并根據(jù)該主渠道的儲(chǔ)水量與水位的對(duì)應(yīng)關(guān)系以及前后水位差估算當(dāng)前注水的水量;當(dāng)該主渠道的水位達(dá)到設(shè)定的上限或者該主渠道的儲(chǔ)水量達(dá)到該主渠道的剩余需水量或者當(dāng)該主渠道的水閘開啟時(shí)間超過上限時(shí),關(guān)閉該主渠道的水閘,將該主渠道標(biāo)記為待放水狀態(tài);
所述放水控制計(jì)算該渠道所有下游渠道中待注水狀態(tài)的農(nóng)田渠道的總需水量,然后將該總需水量與該渠道的處于待注水狀態(tài)的下游支渠道的需水量逐個(gè)進(jìn)行對(duì)比;如果該總需水量大于各個(gè)下游支渠道的需水量時(shí),對(duì)該渠道進(jìn)行農(nóng)田渠道的放水控制,否則對(duì)該渠道進(jìn)行下游支渠道的放水控制。
進(jìn)一步,根據(jù)本發(fā)明的一種基于明渠的灌溉控制系統(tǒng),所述放水控制為:將該渠道標(biāo)記為放水狀態(tài),同時(shí)開啟所有處于待注水狀態(tài)的下游農(nóng)田渠道的水閘,對(duì)相應(yīng)的農(nóng)田渠道進(jìn)行放水;放水時(shí),根據(jù)實(shí)時(shí)采集的該渠道的水位,計(jì)算出當(dāng)前放水量,然后根據(jù)所述主渠道和支渠道對(duì)農(nóng)田渠道的分配系數(shù),計(jì)算出該渠道下游各個(gè)農(nóng)田渠道當(dāng)前的放水量;當(dāng)農(nóng)田渠道的放水量達(dá)到該農(nóng)田渠道的需水量時(shí),關(guān)閉該農(nóng)田渠道的水閘;當(dāng)該渠道的水位達(dá)到底線以下時(shí),關(guān)閉該渠道所有下游農(nóng)田渠道的水閘,并計(jì)算下游各個(gè)農(nóng)田渠道的剩余需水量和該渠道的剩余需水量;當(dāng)下游農(nóng)田渠道的剩余需水量為零時(shí)標(biāo)記該下游農(nóng)田渠道的狀態(tài)為空閑狀態(tài);當(dāng)該渠道的剩余需水量大于零時(shí),標(biāo)記該渠道為待注水狀態(tài),否則標(biāo)記該渠道為空閑狀態(tài)。
根據(jù)本發(fā)明的一種基于明渠的灌溉控制方法,該方法涉及主機(jī)、主渠道上游設(shè)置的水閘、支渠道上游設(shè)置的水閘、農(nóng)田渠道上游設(shè)置的水閘、安裝在所述主渠道和支渠道上的水位計(jì)以及位于農(nóng)田側(cè)的需水采集終端;所述水閘、水位計(jì)和需水采集終端連接所述主機(jī);所述水位計(jì)用于采集主渠道或支渠道的水位,并發(fā)送至所述主機(jī);所述需水采集終端用于收集農(nóng)田側(cè)的需水指數(shù)發(fā)送至所述主機(jī);所述方法包括如下步驟:
s1:獲取主渠道、支渠道、農(nóng)田渠道的上下游關(guān)系、主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系、農(nóng)田側(cè)需水量與需水指數(shù)的對(duì)應(yīng)關(guān)系以及主渠道和支渠道對(duì)農(nóng)田渠道的分配系數(shù),并初始關(guān)閉所有水閘;
s2:通過所述需水采集終端采集農(nóng)田側(cè)的需水指數(shù),結(jié)合所采集的農(nóng)田側(cè)的需水指數(shù)和農(nóng)田側(cè)的需水量和需水指數(shù)的對(duì)應(yīng)關(guān)系得到農(nóng)田側(cè)的需水量,然后根據(jù)主渠道、支渠道、農(nóng)田渠道的上下游的關(guān)系,對(duì)農(nóng)田側(cè)的需水量逐級(jí)向上匯總得到計(jì)算出各個(gè)主渠道、支渠道和農(nóng)田渠道的需水量;
s3:通過水位計(jì)實(shí)時(shí)采集各個(gè)主渠道和支渠道的水位,結(jié)合相應(yīng)的主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系,計(jì)算出各個(gè)主渠道和支渠道的當(dāng)前儲(chǔ)水量;
s4:以廣度優(yōu)先的方式自上而下遍歷各個(gè)主渠道和支渠道,對(duì)每個(gè)主渠道和支渠道根據(jù)其渠道數(shù)據(jù)狀態(tài)進(jìn)行注水和放水控制,直到所有的農(nóng)田渠道的放水量滿足其對(duì)應(yīng)的農(nóng)田側(cè)的需水量的要求。
本發(fā)明的技術(shù)效果如下:
1、本發(fā)明采用分步控制方法,保證整個(gè)渠道灌溉系統(tǒng)的安全;
2、本發(fā)明通過水位計(jì)計(jì)算蓄水量的方式避開了明渠流速流量難以掌控的問題。
3、本發(fā)明的分步控制可以控制多個(gè)不相關(guān)的渠道同時(shí)進(jìn)行開閘和合閘動(dòng)作,從而提高了灌溉過程效率。
附圖說(shuō)明
圖1是本發(fā)明基于明渠的灌溉控制系統(tǒng)的結(jié)構(gòu)示意圖。
圖2是本發(fā)明實(shí)施例中灌溉控制軟件的模塊結(jié)構(gòu)示意圖。
圖3是本發(fā)明實(shí)施例中渠道注水放水調(diào)控模塊的模塊結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
如圖1所示,一種基于明渠的灌溉控制系統(tǒng)涉及主機(jī)101、水閘102、需水采集終端103以及水位計(jì)。該系統(tǒng)安裝在主機(jī)101上,用于對(duì)基于明渠的農(nóng)田灌溉系統(tǒng)的實(shí)現(xiàn)智能化灌溉控制。
圖1中,901是作為灌溉水源的水庫(kù),902是主渠道,903是支渠道,904是農(nóng)田渠道。其中,主渠道902的上游連接水庫(kù)901,也就是說(shuō)主渠道902沒有上游渠道。支渠道903為從主渠道902或另一支渠道903上接出的渠道,也就是說(shuō),支渠道903的上游渠道可能是主渠道902,也可能是另一支渠道903。農(nóng)田渠道904是從主渠道902或支渠道903接出并連接農(nóng)田的渠道,也就是說(shuō)農(nóng)田渠道904的上游渠道可能是主渠道902,也可能是支渠道903。主渠道902、支渠道903和農(nóng)田渠道904構(gòu)成樹狀的且具有上下游關(guān)系的灌溉供水網(wǎng)絡(luò)的農(nóng)田灌溉系統(tǒng)。通常,主渠道902與其上游的水庫(kù)901之間具有較大的高度落差,農(nóng)田渠道904與其上游的主渠道902或支渠道903之間具有較大的高度落差,而主渠道902與其下游的支渠道903,或者支渠道903與其下游的支渠道903之間的高度落差不是很大,相應(yīng)地,主渠道902和支渠道903其自身的上游和下游的高度落差也不是很大。需要指出的是,圖1中的主渠道902只有一條,本領(lǐng)域技術(shù)人員理解,實(shí)際應(yīng)用中,主渠道902可能有多條。
水閘102位于各種渠道的上游,比如位于主渠道902的上游或位于支渠道903的上游或位于農(nóng)田渠道904的上游,用于向本渠道注水。開啟本渠道上游的水閘102是向本渠道注水,對(duì)于其上游渠道來(lái)說(shuō)是放水。農(nóng)田灌溉系統(tǒng)上的各種水閘102通常設(shè)于水閘房?jī)?nèi)。主機(jī)101設(shè)于控制中心的機(jī)房?jī)?nèi)。水閘102通過有線或無(wú)線網(wǎng)絡(luò)接入主機(jī)101,并受主機(jī)101的控制。具體來(lái)說(shuō),水閘102的開關(guān)狀態(tài)上傳至主機(jī)101,主機(jī)101能夠向水閘102下發(fā)水閘開關(guān)的控制指令控制水閘102執(zhí)行開關(guān)動(dòng)作。
需水采集終端103通常是移動(dòng)終端,比如智能手機(jī)或掌上電腦,位于農(nóng)田側(cè),用于向主機(jī)101上傳其對(duì)應(yīng)農(nóng)田的需水指數(shù)。農(nóng)田巡檢員對(duì)農(nóng)田巡檢后分析農(nóng)田是否缺水,然后操作需水采集終端103通過無(wú)線網(wǎng)絡(luò)向主機(jī)101上傳需水指數(shù)。需水指數(shù)分無(wú)需灌溉、例行灌溉、嚴(yán)重缺水以及極度缺水四級(jí)。默認(rèn)情形是無(wú)需灌溉。需水采集終端103也可以是位于農(nóng)田側(cè)的控制終端。該控制終端安裝在水閘房?jī)?nèi),該水閘房也就是用于安裝農(nóng)田渠道904上游水閘的水閘房。該控制終端至少設(shè)有三個(gè)按鍵,分別代表例行灌溉、嚴(yán)重缺水以及極度缺水三級(jí)需水指數(shù)。當(dāng)按下該控制終端的按鍵后,該控制終端將該按鍵對(duì)應(yīng)的需水指數(shù)通過水閘房?jī)?nèi)水閘102與主機(jī)101的連接網(wǎng)絡(luò)向主機(jī)101上傳。
水位計(jì)安裝主渠道902和支渠道903內(nèi),水位計(jì)通過有線或無(wú)線網(wǎng)絡(luò)接入主機(jī)101。水位計(jì)用于采集其所安裝的主渠道902或支渠道903當(dāng)前的水位,并將相應(yīng)的水位數(shù)據(jù)上傳至主機(jī)101。
主機(jī)101上安裝有灌溉控制軟件。主機(jī)101通過運(yùn)行該灌溉控制軟件執(zhí)行本發(fā)明所指的一種基于明渠的灌溉控制方法實(shí)現(xiàn)農(nóng)田灌溉控制。主機(jī)101所安裝的灌溉控制軟件所實(shí)現(xiàn)的功能也就是本方面所指的一種基于明渠的灌溉控制系統(tǒng)。本實(shí)施例中,該灌溉控制系統(tǒng)如圖2所示,包括配置管理模塊221、指數(shù)采集模塊211、指數(shù)分析模塊212、水位采集模塊231、水位分析模塊232、水閘控制模塊241、以及渠道數(shù)據(jù)和狀態(tài)管理模塊202、渠道注水放水調(diào)控模塊201。
配置管理模塊221是ui模塊,用于配置和設(shè)定樹狀灌溉供水網(wǎng)絡(luò)的數(shù)據(jù)。樹狀灌溉供水網(wǎng)絡(luò)的數(shù)據(jù)包括但不限于:主渠道、支渠道、農(nóng)田渠道的上下游關(guān)系、主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系、農(nóng)田側(cè)需水量與需水指數(shù)的對(duì)應(yīng)關(guān)系、主渠道和支渠道對(duì)農(nóng)田渠道的分配系數(shù)。配置管理模塊221所配置和設(shè)定的數(shù)據(jù)被傳遞并保存于渠道數(shù)據(jù)和狀態(tài)管理模塊202中。配置管理模塊221對(duì)應(yīng)前述的基于明渠的灌溉控制方法中的步驟s1,也即,獲取主渠道、支渠道、農(nóng)田渠道的上下游關(guān)系、主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系、農(nóng)田側(cè)需水量與需水指數(shù)的對(duì)應(yīng)關(guān)系以及主渠道和支渠道對(duì)農(nóng)田渠道的分配系數(shù)。
指數(shù)采集模塊211用于從需水采集終端103收集各個(gè)農(nóng)田側(cè)的需水指數(shù)。指數(shù)采集模塊211包含了網(wǎng)絡(luò)連接模塊,通過指數(shù)采集模塊211與需水采集終端103所建立的網(wǎng)絡(luò)連接獲取需水采集終端103上傳的需水指數(shù)。指數(shù)分析模塊212用于根據(jù)指數(shù)采集模塊211所采集的農(nóng)田側(cè)的需水指數(shù),結(jié)合渠道數(shù)據(jù)和狀態(tài)管理模塊202中的農(nóng)田側(cè)需水量與需水指數(shù)的對(duì)應(yīng)關(guān)系,計(jì)算出相應(yīng)的農(nóng)田側(cè)需水量,并將該需水量對(duì)應(yīng)至相應(yīng)的農(nóng)田渠道中作為相應(yīng)的農(nóng)田渠道的需水量,然后根據(jù)渠道數(shù)據(jù)和狀態(tài)管理模塊202中的主渠道、支渠道、農(nóng)田渠道的上下游關(guān)系,對(duì)需水量逐級(jí)向上匯總得出各個(gè)主渠道、支渠道的需水量。指數(shù)分析模塊212得到的主渠道、支渠道和農(nóng)田渠道的需水量被傳遞至并保存于渠道數(shù)據(jù)和狀態(tài)管理模塊202中。指數(shù)采集模塊211和指數(shù)分析模塊212所實(shí)現(xiàn)的功能也就是前述的基于明渠的灌溉控制方法中的步驟s2,也即,通過所述需水采集終端采集農(nóng)田側(cè)的需水指數(shù),結(jié)合所采集的農(nóng)田側(cè)的需水指數(shù)和農(nóng)田側(cè)的需水量和需水指數(shù)的對(duì)應(yīng)關(guān)系得到農(nóng)田側(cè)的需水量,然后根據(jù)主渠道、支渠道、農(nóng)田渠道的上下游的關(guān)系,對(duì)農(nóng)田側(cè)的需水量逐級(jí)向上匯總得到計(jì)算出各個(gè)主渠道、支渠道和農(nóng)田渠道的需水量。需要指出的是,需水采集終端103所對(duì)應(yīng)的農(nóng)田側(cè)需水指數(shù)與其相應(yīng)的農(nóng)田渠道一一對(duì)應(yīng)。
水位采集模塊231用于通過水位計(jì)實(shí)時(shí)采集各個(gè)主渠道和支渠道的水位。水位采集模塊231包含了網(wǎng)絡(luò)連接模塊,通過水位采集模塊231與水位計(jì)所建立的網(wǎng)絡(luò)連接獲取水位計(jì)上傳的水位。由于需要實(shí)時(shí)采集水位,因此水位采集模塊231需要與各個(gè)水位計(jì)建立長(zhǎng)連接,并維護(hù)該連接。而且由于每個(gè)主渠道或支渠道中的水位計(jì)有多個(gè),水位采集模塊231需要對(duì)每個(gè)主渠道或支渠道中的多個(gè)水位計(jì)進(jìn)行匯總,得到相應(yīng)渠道的水位。水位分析模塊232用于:根據(jù)水位采集模塊231采集的水位,結(jié)合渠道數(shù)據(jù)和狀態(tài)管理模塊202中相應(yīng)的主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系,計(jì)算出各個(gè)主渠道和支渠道的當(dāng)前儲(chǔ)水量。水位分析模塊232得到的各個(gè)主渠道和支渠道的當(dāng)前儲(chǔ)水量以及當(dāng)前水位被傳遞至并保存于渠道數(shù)據(jù)和狀態(tài)管理模塊202中。水位采集模塊231和水位分析模塊232所實(shí)現(xiàn)的功能也就是前述的基于明渠的灌溉控制方法中的步驟s3,也就是,通過水位計(jì)實(shí)時(shí)采集各個(gè)主渠道和支渠道的水位,結(jié)合相應(yīng)的主渠道和支渠道的儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系,計(jì)算出各個(gè)主渠道和支渠道的當(dāng)前儲(chǔ)水量。
水閘控制模塊241用于將渠道注水放水調(diào)控模塊201對(duì)各渠道的水閘控制指令通過網(wǎng)絡(luò)下發(fā)至各個(gè)水閘中執(zhí)行開啟水閘和關(guān)閉水閘的指令,并通過網(wǎng)絡(luò)收集各個(gè)水閘的開啟和關(guān)閉的狀態(tài)。
渠道數(shù)據(jù)和狀態(tài)管理模塊202維護(hù)和保存了一個(gè)由渠道節(jié)點(diǎn)所組成的樹形結(jié)構(gòu)的數(shù)據(jù)。渠道節(jié)點(diǎn)保存了渠道數(shù)據(jù)和狀態(tài)。渠道數(shù)據(jù)和狀態(tài)管理模塊202中的各種數(shù)據(jù)用于渠道注水放水調(diào)控模塊201的分析。本實(shí)施例中,渠道節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)定義如下:
struct渠道節(jié)點(diǎn)
渠道標(biāo)識(shí);
渠道類型::={主渠道、支渠道、農(nóng)田渠道};
上游渠道標(biāo)識(shí);
下游渠道標(biāo)識(shí)列表;
注水前的水位;
注水前的儲(chǔ)水量;
當(dāng)前水位;
當(dāng)前儲(chǔ)水量;
水位上限、水位下限;
與上游渠道的落差;
儲(chǔ)水量與水位對(duì)應(yīng)關(guān)系表;
農(nóng)田側(cè)需水量與需水指數(shù)的對(duì)應(yīng)關(guān)系表;(當(dāng)渠道類型為農(nóng)田渠道時(shí)有效)
對(duì)農(nóng)田渠道的分配系數(shù);(當(dāng)渠道類型為農(nóng)田渠道時(shí)有效)
剩余需水量;
水閘標(biāo)識(shí);
開閘時(shí)間;
注水最小時(shí)間間隔;
放水目標(biāo)下游渠道;
渠道狀態(tài)::={空閑、待注水、水閘開啟中、注水中、水閘關(guān)閉中、待放水、放水中};(當(dāng)渠道類型為主渠道或支渠道時(shí)有效)
endstruct
渠道注水放水調(diào)控模塊201用于遍歷各個(gè)的主渠道和支渠道,對(duì)每個(gè)主渠道和支渠道根據(jù)其渠道數(shù)據(jù)狀態(tài)進(jìn)行注水和放水控制,直到對(duì)所有的農(nóng)田渠道的放水量滿足其對(duì)應(yīng)的農(nóng)田側(cè)的需水量的要求。渠道注水放水調(diào)控模塊201所實(shí)現(xiàn)的功能是前述的基于明渠的灌溉控制方法中的步驟s4,也就是,遍歷各個(gè)主渠道和支渠道,對(duì)每個(gè)主渠道和支渠道根據(jù)其渠道數(shù)據(jù)狀態(tài)進(jìn)行注水和放水控制,直到對(duì)所有的農(nóng)田渠道的放水量滿足其對(duì)應(yīng)的農(nóng)田側(cè)的需水量的要求。由于渠道上游下游的關(guān)系,下游渠道的注水也就是上游渠道的放水。本實(shí)施例中,由于遍歷過程是由主渠道至支渠道自上而下遍歷,因此,渠道注水放水調(diào)控模塊只需要實(shí)現(xiàn)主渠道的注水和放水控制和支渠道的放水控制,而支渠道的注水控制由其上游渠道放水控制實(shí)現(xiàn)。又由于主渠道的放水控制過程與支渠道的放水控制過程相同,因此,本實(shí)施例中,渠道注水放水調(diào)控模塊的功能劃分成注水控制和放水控制。注水控制是對(duì)主渠道的注水控制,而放水控制則是對(duì)主渠道或支渠道的放水控制。也就是,對(duì)主渠道來(lái)說(shuō),當(dāng)主渠道的狀態(tài)為待注水時(shí),執(zhí)行對(duì)該主渠道的注水控制;當(dāng)主渠道的狀態(tài)為待放水狀態(tài)時(shí),執(zhí)行對(duì)該主渠道的放水控制。而對(duì)支渠道來(lái)說(shuō),當(dāng)支渠道的狀態(tài)為待放水狀態(tài)時(shí),執(zhí)行對(duì)該分渠道的放水控制,否則等待其上游渠道的放水控制將該其狀態(tài)修改成待放水狀態(tài)。這里涉及兩個(gè)控制原則:所有支渠道的水閘由其上游渠道的放水控制作出;所有支渠道的狀態(tài)從待注水狀態(tài)變遷待放水狀態(tài)的過程由其上游渠道的放水控制作出,而從待放水狀態(tài)變遷至待注水狀態(tài)的過程由其自身渠道的放水控制作出。
注水控制,是對(duì)主渠道的注水控制,主要過程如下:將該主渠道標(biāo)記為注水狀態(tài),開啟該主渠道的水閘對(duì)該主渠道進(jìn)行注水;注水時(shí),實(shí)時(shí)通過水位計(jì)采集該主渠道的水位并根據(jù)該主渠道的儲(chǔ)水量與水位的對(duì)應(yīng)關(guān)系以及前后水位差估計(jì)當(dāng)前注水的水量;當(dāng)該主渠道的水位達(dá)到設(shè)定的上限或者該主渠道的儲(chǔ)水量達(dá)到該主渠道的剩余需水量或者當(dāng)該主渠道的水閘開啟時(shí)間超過上限時(shí),關(guān)閉該主渠道的水閘,將該主渠道標(biāo)記為待放水狀態(tài)。
放水控制,是對(duì)主渠道或支渠道的放水控制,主要過程如下:
計(jì)算該渠道所有下游渠道為待注水狀態(tài)的農(nóng)田渠道的總需水量,然后將該總需水量與該渠道的處于待注水狀態(tài)的下游支渠道的需水量逐個(gè)進(jìn)行對(duì)比;如果該總需水量大于各個(gè)下游支渠道的需水量時(shí),對(duì)該渠道進(jìn)行農(nóng)田渠道的放水控制,否則對(duì)該渠道進(jìn)行下游支渠道的放水控制。也就是放水控制分為農(nóng)田渠道的放水控制和下游支渠道的放水控制。
對(duì)渠道進(jìn)行農(nóng)田渠道的放水控制如下:
將該渠道標(biāo)記為放水狀態(tài),同時(shí)開啟所有處于待注水狀態(tài)的下游農(nóng)田渠道的水閘,對(duì)相應(yīng)的農(nóng)田渠道進(jìn)行放水;放水時(shí),根據(jù)實(shí)時(shí)采集的該渠道的水位,計(jì)算出當(dāng)前放水量,然后根據(jù)所述主渠道和支渠道對(duì)農(nóng)田渠道的分配系數(shù),計(jì)算出該渠道下游各個(gè)農(nóng)田渠道當(dāng)前的放水量;當(dāng)農(nóng)田渠道的放水量達(dá)到該農(nóng)田渠道的需水量時(shí),關(guān)閉該農(nóng)田渠道的水閘;當(dāng)該渠道的水位達(dá)到底線以下時(shí),關(guān)閉所有該渠道所有下游農(nóng)田渠道的水閘,并計(jì)算下游各個(gè)農(nóng)田渠道的剩余需水量和該渠道的剩余需水量;當(dāng)下游農(nóng)田渠道的剩余需水量為零時(shí)標(biāo)記該下游農(nóng)田渠道的狀態(tài)為空閑狀態(tài);當(dāng)該渠道的剩余需水量大于零時(shí),標(biāo)記該渠道為待注水狀態(tài),否則標(biāo)記該渠道為空閑狀態(tài)。
對(duì)渠道進(jìn)行下游支渠道的放水控制如下:
選擇該渠道的處于待注水狀態(tài)的需水量最大的下游支渠道作為目標(biāo)支渠道;設(shè)置該渠道的狀態(tài)為放水狀態(tài),并設(shè)置目標(biāo)支渠道的狀態(tài)為注水狀態(tài),同時(shí)打開目標(biāo)支渠道的水閘對(duì)目標(biāo)支渠道進(jìn)行放水;放水時(shí),根據(jù)實(shí)時(shí)采集的該渠道和目標(biāo)支渠道的水位,計(jì)算出目標(biāo)支渠道的注水量;當(dāng)目標(biāo)支渠道的放水量達(dá)到目標(biāo)支渠道的需水量時(shí)或者目標(biāo)支渠道的水位達(dá)到設(shè)定的上限時(shí)或者目標(biāo)支渠道的水閘打開時(shí)間超過上限時(shí)或者當(dāng)該渠道的水位達(dá)到下限時(shí)或者該渠道的水位與目標(biāo)支渠道的落差達(dá)到下限時(shí),關(guān)閉目標(biāo)支渠道的水閘,停止對(duì)目標(biāo)支渠道放水,同時(shí)標(biāo)記目標(biāo)支渠道的狀態(tài)為待放水狀態(tài),并同時(shí)計(jì)算目標(biāo)支渠道的剩余需水量和該渠道的剩余需水量;當(dāng)該渠道的水位達(dá)到下限且該渠道的剩余需水量為零時(shí),標(biāo)記該渠道為空閑狀態(tài);當(dāng)該渠道的水位達(dá)到下限且該渠道的剩余需水量大于零時(shí),標(biāo)記該渠道為待注水狀態(tài);當(dāng)該渠道的水位高于上限標(biāo)記該渠道為待放水狀態(tài)。
渠道注水放水調(diào)控模塊201的注水控制和放水控制具體到本實(shí)施例中由定時(shí)器驅(qū)動(dòng)。如圖3所示,渠道注水放水調(diào)控模塊201包括灌溉決策模塊31和灌溉執(zhí)行模塊32。灌溉決策模塊用于通過需水量分析、灌溉執(zhí)行周期、結(jié)合最近天氣預(yù)報(bào)情況作出是否執(zhí)行灌溉程序。灌溉程序由灌溉執(zhí)行模塊32所執(zhí)行。灌溉執(zhí)行模塊32包括初始狀態(tài)校驗(yàn)?zāi)K321、定時(shí)器322和渠道狀態(tài)分析模塊323。
初始化校驗(yàn)?zāi)K321用于確定被執(zhí)行的灌溉所涉及的渠道的水閘都處于正常工作狀態(tài),并且將所有渠道的水閘關(guān)閉,然后將需水量大于零的主渠道和分支渠道設(shè)定為待注水狀態(tài),同時(shí)將需水量為零的主渠道和分支渠道設(shè)定為空閑狀態(tài)。也就是,初始化校驗(yàn)?zāi)K321需要確保所有渠道的水閘需要關(guān)閉,并且避開那些無(wú)法正常工作正處于維修或檢修狀態(tài)的水閘和水閘所對(duì)應(yīng)的渠道。
定時(shí)器322用于按一定的時(shí)間間隔驅(qū)動(dòng)渠道狀態(tài)分析模塊323執(zhí)行。渠道狀態(tài)分析模塊323首先分析各渠道的剩余需水量為零,當(dāng)所有的主渠道、支渠道和農(nóng)田渠道的剩余需水量為零時(shí),則停止定時(shí)器322以及灌溉執(zhí)行模塊323的執(zhí)行,否則遍歷各個(gè)主渠道和支渠道,對(duì)每個(gè)主渠道和支渠道根據(jù)其渠道數(shù)據(jù)狀態(tài)進(jìn)行注水和放水控制。渠道狀態(tài)分析模塊遍歷時(shí),首先遍歷各個(gè)主渠道:當(dāng)主渠道的狀態(tài)為待注水狀態(tài)時(shí),由渠道注水執(zhí)行狀態(tài)分析模塊3231對(duì)該主渠道執(zhí)行注水控制,當(dāng)主渠道的狀態(tài)為待放水狀態(tài)時(shí),由渠道放水執(zhí)行狀態(tài)分析模塊對(duì)該主渠道執(zhí)行放水控制;然后再遍歷各個(gè)支渠道:當(dāng)該支渠道的狀態(tài)為待放水狀態(tài)時(shí),由渠道放水執(zhí)行狀態(tài)分析模塊3232對(duì)該支渠道執(zhí)行放水控制。
考慮到水閘開啟和關(guān)閉需要一定的時(shí)間,而且由主機(jī)下發(fā)控制指令至各個(gè)渠道的水閘需要一定的時(shí)間。由此,本實(shí)施例中,注水狀態(tài)進(jìn)一步細(xì)化成:水閘開啟中、注水中和水閘關(guān)閉中三種狀態(tài)。上述細(xì)化的注水狀態(tài)和放水狀態(tài)詳見前述的渠道節(jié)點(diǎn)的狀態(tài)定義。
此外,由于水閘開啟和關(guān)閉的時(shí)間問題。定時(shí)器322所設(shè)定的時(shí)間間隔不小于水閘開啟和關(guān)閉的時(shí)間。一般來(lái)說(shuō),水閘開啟和關(guān)閉需要1分鐘左右的時(shí)間,由此定時(shí)器322所設(shè)定的時(shí)間間隔為1~2分鐘。也就是說(shuō),定時(shí)器322驅(qū)動(dòng)執(zhí)行的渠道狀態(tài)分析模塊323實(shí)質(zhì)上是一個(gè)有限狀態(tài)自動(dòng)機(jī)。渠道狀態(tài)分析模塊323的每一次執(zhí)行,渠道的狀態(tài)最多只變化一次。在該有限狀態(tài)自動(dòng)機(jī)內(nèi),主渠道和支渠道的狀態(tài)變遷如下:
待注水=>水閘開啟中=>注水中=>水閘關(guān)閉中=>待放水=>放水中=>.......=>待注水=>水閘開啟中=>注水中=>水閘關(guān)閉中=>待放水=>放水中=>空閑。
農(nóng)田渠道的狀態(tài)變遷如下:待注水=>水閘開啟中=>注水中=>水閘關(guān)閉中=>.......=>待注水=>水閘開啟中=>注水中=>水閘關(guān)閉中=>空閑。
渠道狀態(tài)分析模塊323需要對(duì)各個(gè)渠道進(jìn)行廣度優(yōu)先遍歷。具體過程如下為:對(duì)各個(gè)渠道節(jié)點(diǎn)進(jìn)行廣度優(yōu)先遍歷,對(duì)于每個(gè)渠道節(jié)點(diǎn)而言,首先判斷該渠道節(jié)點(diǎn)的類型,然后根據(jù)渠道節(jié)點(diǎn)的類型分別執(zhí)行。
如果是主渠道,分析渠道狀態(tài):如果是待注水狀態(tài)、或水閘開啟中狀態(tài)、或注水中狀態(tài)、或水閘關(guān)閉中狀態(tài),則由渠道注水執(zhí)行狀態(tài)分析模塊3231執(zhí)行注水控制;如果是待放水狀態(tài)、或放水中狀態(tài)由渠道放水執(zhí)行狀態(tài)分析模塊3232執(zhí)行放水控制;如果是空閑狀態(tài),則直接返回。
如果是支渠道,分析渠道狀態(tài):如果是待放水狀態(tài)、或放水中狀態(tài)由渠道放水執(zhí)行狀態(tài)分析模塊3232執(zhí)行放水控制;否則直接返回。
渠道注水執(zhí)行狀態(tài)分析模塊3231分析主渠道的狀態(tài),然后根據(jù)狀態(tài)分別執(zhí)行:
如果是待注水狀態(tài),則開啟水閘,并將狀態(tài)修改成水閘開啟中狀態(tài);
如果是水閘開啟中狀態(tài),則判斷水閘是否開啟:如果水閘正常開啟,則修改狀態(tài)為注水中狀態(tài);如果水閘無(wú)法正常開啟,則拋出異常,對(duì)異常進(jìn)行處理;
如果是注水中狀態(tài),則判斷通過水位計(jì)采集該主渠道的水位并根據(jù)該主渠道的儲(chǔ)水量與水位的對(duì)應(yīng)關(guān)系以及前后水位差估計(jì)當(dāng)前注水的水量;當(dāng)該主渠道的水位達(dá)到設(shè)定的上限或者該主渠道的儲(chǔ)水量達(dá)到該主渠道的剩余需水量或者當(dāng)該主渠道的水閘開啟時(shí)間超過上限時(shí),關(guān)閉水閘,并將狀態(tài)修改成水閘關(guān)閉中狀態(tài);
如果是水閘關(guān)閉中狀態(tài),判斷水閘是否關(guān)閉;如果水閘正常關(guān)閉,則將狀態(tài)修改成待放水狀態(tài)。
渠道放水執(zhí)行狀態(tài)分析模塊3232分析渠道的狀態(tài),然后根據(jù)狀態(tài)分別執(zhí)行:
如果是待放水狀態(tài),則計(jì)算該渠道所有下游渠道為待注水狀態(tài)的農(nóng)田渠道的總需水量,然后將該總需水量與該渠道的處于待注水狀態(tài)的下游支渠道的需水量逐個(gè)進(jìn)行對(duì)比;如果該總需水量大于各個(gè)下游支渠道的需水量時(shí),對(duì)該渠道進(jìn)行農(nóng)田渠道的放水控制,否則對(duì)該渠道進(jìn)行下游支渠道的放水控制;農(nóng)田渠道的放水控制時(shí),同時(shí)開啟所有處于待注水狀態(tài)的下游農(nóng)田渠道的水閘,對(duì)相應(yīng)的農(nóng)田渠道進(jìn)行放水,同時(shí)標(biāo)記相應(yīng)的農(nóng)田渠道狀態(tài)為水閘開啟中狀態(tài),同時(shí)設(shè)置該渠道的狀態(tài)為放水中狀態(tài);下游支渠道的放水控制時(shí),選擇該渠道的處于待注水狀態(tài)的需水量最大的下游支渠道作為目標(biāo)支渠道,然后開啟目標(biāo)支渠道,設(shè)置目標(biāo)支渠道的狀態(tài)為水閘開啟中狀態(tài),同時(shí)設(shè)置該渠道的狀態(tài)為放水中狀態(tài);
如果是放水中狀態(tài),則分析各個(gè)相應(yīng)的下游渠道處于水閘開啟中狀態(tài)的水閘是否正常開啟;如果正常開啟,則將相應(yīng)的下游渠道的狀態(tài)修改成注水中狀態(tài);如果不能正常開啟,則拋出異常,對(duì)異常進(jìn)行處理;然后分析分析各個(gè)相應(yīng)的下游渠道處于水閘關(guān)閉中狀態(tài)的水閘是否正常關(guān)閉;如果正常關(guān)閉,則計(jì)算下游渠道的剩余需水量,如果剩余需水量大于零,則將相應(yīng)的下游渠道的狀態(tài)修改成待注水狀態(tài),否則將相應(yīng)的下游渠道的狀態(tài)修改成空閑狀態(tài);在所有下游渠道水閘關(guān)閉的情形下,計(jì)算該渠道的剩余需水量,如果該渠道的剩余需水量大于零,則修改該渠道的狀態(tài)為待注水狀態(tài),否則修改該渠道的狀態(tài)為空閑狀態(tài);如果下游渠道水閘不能正常關(guān)閉,則拋出異常,對(duì)異常進(jìn)行處理;在所有渠道水閘正常開啟或關(guān)閉的狀態(tài)下,如果是對(duì)農(nóng)田渠道放水,則根據(jù)實(shí)時(shí)采集的該渠道的水位,計(jì)算出當(dāng)前放水量,然后根據(jù)所述主渠道和支渠道對(duì)農(nóng)田渠道的分配系數(shù),計(jì)算出該渠道下游各個(gè)農(nóng)田渠道當(dāng)前的放水量;當(dāng)農(nóng)田渠道的放水量達(dá)到該農(nóng)田渠道的需水量時(shí),關(guān)閉該農(nóng)田渠道的水閘,設(shè)置該農(nóng)田渠道的狀態(tài)為水閘關(guān)閉中;當(dāng)該渠道的水位達(dá)到底線以下時(shí),關(guān)閉所有該渠道所有處于注水中狀態(tài)的下游農(nóng)田渠道的水閘,并將相應(yīng)的農(nóng)田渠道的狀態(tài)修改為下游農(nóng)田渠道的狀態(tài)為水閘關(guān)閉中;所有渠道水閘正常開啟或關(guān)閉的狀態(tài)下,如果是對(duì)目標(biāo)支渠道放水,根據(jù)實(shí)時(shí)采集的該渠道和目標(biāo)支渠道的水位,計(jì)算出目標(biāo)支渠道的注水量;當(dāng)目標(biāo)支渠道的放水量達(dá)到目標(biāo)支渠道的需水量時(shí)或者目標(biāo)支渠道的水位達(dá)到設(shè)定的上限時(shí)或者目標(biāo)支渠道的水閘打開時(shí)間超過上限時(shí)或者當(dāng)該渠道的水位達(dá)到下限時(shí)或者該渠道的水位與目標(biāo)支渠道的落差達(dá)到下限時(shí),關(guān)閉目標(biāo)支渠道的水閘,停止對(duì)目標(biāo)支渠道放水,同時(shí)標(biāo)記目標(biāo)支渠道的狀態(tài)為水閘關(guān)閉中狀態(tài)。
也就是說(shuō),本實(shí)施中,渠道狀態(tài)分析模塊323的渠道注水執(zhí)行狀態(tài)分析模塊3231和渠道放水執(zhí)行狀態(tài)分析模塊3232將前述的注水控制和放水控制的動(dòng)作進(jìn)行拆分,然后根據(jù)相應(yīng)的狀態(tài)進(jìn)行分別處理。