戴 楊,張晴暉,李俊萩,宋 燚,秦明明
(西南林業(yè)大學(xué) 大數(shù)據(jù)與智能工程學(xué)院,云南 昆明 650224)
目前,大部分小型泵站仍然采用傳統(tǒng)的人工操作方式,部分泵站使用了水位浮子配合簡易遙控裝置能實(shí)現(xiàn)簡單的半自動運(yùn)行[1-3],但這種方式依然需要人工輔助,且單向遙控易受外界干擾,并不可靠。部分控制系統(tǒng)使用PLC 或單片機(jī)作為控制核心,可以對設(shè)備及水位狀況做出簡單判斷,但仍然無法做到無人值守[4-6]。隨著物聯(lián)網(wǎng)、嵌入式、邊緣計(jì)算技術(shù)的飛速發(fā)展,物聯(lián)網(wǎng)及邊緣計(jì)算技術(shù)逐漸應(yīng)用于小型泵站的智能控制,使得水泵的智能全自動控制成為可能[7-8]。
根據(jù)小型泵房管理特點(diǎn),本文提出了一種基于LoRa 物聯(lián)網(wǎng)、嵌入式及邊緣計(jì)算技術(shù)的水泵智能控制系統(tǒng)(見圖1),用于水塔與多個泵站間的自動控制。系統(tǒng)除具備水塔實(shí)時水位采集、水泵自動起停、智能保護(hù)、數(shù)據(jù)查詢及實(shí)時顯示功能等功能外,還引入了邊緣計(jì)算技術(shù)。整個網(wǎng)絡(luò)沒有中心節(jié)點(diǎn),每個節(jié)點(diǎn)都能從網(wǎng)絡(luò)中平等地獲取數(shù)據(jù),獨(dú)立運(yùn)算,自動調(diào)整啟動閾值以達(dá)到最佳調(diào)度效果。
圖1 系統(tǒng)結(jié)構(gòu)框圖
在該項(xiàng)目實(shí)施過程中,采用了“穩(wěn)定實(shí)驗(yàn)團(tuán)隊(duì)培養(yǎng)模式”[9],依托學(xué)院創(chuàng)新基地及學(xué)??萍紕?chuàng)新基金支持,使項(xiàng)目順利進(jìn)行且具有較好的延續(xù)性,同時也增強(qiáng)了參與項(xiàng)目學(xué)生的團(tuán)隊(duì)協(xié)作能力。
該系統(tǒng)已在西南林業(yè)大學(xué)的供水系統(tǒng)中進(jìn)行了部署實(shí)驗(yàn),在校園面積擴(kuò)大、在校生人數(shù)持續(xù)增加但水源沒有增加的情況下高效調(diào)度水泵工作。至今,該系統(tǒng)運(yùn)行已有2 年時間,期間未出現(xiàn)過異常停水的情況,有效保障了供水安全。同時,其為物聯(lián)網(wǎng)、嵌入式課程教學(xué)提供了實(shí)驗(yàn)平臺與數(shù)據(jù)。
本文系統(tǒng)的設(shè)計(jì)來源于解決西南林業(yè)大學(xué)改擴(kuò)建后用水量急劇上升但水源并未增加導(dǎo)致供水不足問題。泵房原有設(shè)備雖然實(shí)現(xiàn)了無線電遙控功能,但功能較為簡單,且不具備設(shè)備保護(hù)功能。運(yùn)行過程中經(jīng)常出現(xiàn)水塔溢出或放空的情況,一方面浪費(fèi)了水資源,另一方面空轉(zhuǎn)和長時間工作導(dǎo)致水泵電機(jī)燒毀。簡單的低水位抽水、高水位停機(jī)無法根據(jù)實(shí)際用水量進(jìn)行調(diào)整,經(jīng)常導(dǎo)致用水高峰期停水。各個水池的水位只能靠人工查看,增加人力投入也無法做到實(shí)時掌握,進(jìn)一步增加了調(diào)度的難度?;谝陨蠁栴},設(shè)計(jì)了一套基于LoRa 物聯(lián)網(wǎng),結(jié)合邊緣計(jì)算及嵌入式技術(shù)的水泵智能控制系統(tǒng)。
如圖1 所示,整套系統(tǒng)的硬件由用于水塔水位采集的水塔監(jiān)測節(jié)點(diǎn)、用于泵房自動監(jiān)測及控制的泵房監(jiān)控節(jié)點(diǎn)、用于LoRa 數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)交互的網(wǎng)關(guān)、后臺管理及服務(wù)系統(tǒng)4 部分組成。
水塔監(jiān)測節(jié)點(diǎn)用于實(shí)時監(jiān)測水塔水位,通過無線傳感器網(wǎng)絡(luò)向各個節(jié)點(diǎn)提供水塔水位數(shù)據(jù)及高低水位警告。考慮到水塔一般位置較高,不便使用市電,水塔監(jiān)測節(jié)點(diǎn)設(shè)計(jì)為使用太陽能供電,可降低系統(tǒng)的部署難度及成本。另外,監(jiān)測節(jié)點(diǎn)具備2 套相互獨(dú)立的液位傳感裝置,可對采集到的參數(shù)進(jìn)行校驗(yàn),自動上報傳感器故障。
圖2 為水塔監(jiān)測節(jié)點(diǎn)原理框圖,主要包括MCU、水位信號采集和電源管理3 部分。其中MCU 采用了STM32F103,其豐富的片上資源減少了外圍元件的使用、方便了硬件設(shè)計(jì),Cortex_M3 內(nèi)核為邊緣計(jì)算的實(shí)現(xiàn)提供了充足的運(yùn)算能力[10]。無線收發(fā)器采用了SX1278 非授權(quán)頻譜LoRa 調(diào)制芯片,采用線性調(diào)頻擴(kuò)頻調(diào)制方式可以有效提高靈敏度、抗干擾能力和信道容量[11],使用較低的功耗實(shí)現(xiàn)遠(yuǎn)距離數(shù)據(jù)傳輸,適合遠(yuǎn)距離組網(wǎng)使用[12]。
圖2 水塔監(jiān)測節(jié)點(diǎn)原理框圖
水位數(shù)據(jù)采集采用了電流型投入式液位感器,通過轉(zhuǎn)換電路將4~20 mA 電流信號轉(zhuǎn)換為0~5 V 電壓信號后送入ADC 采樣后換算為水池實(shí)際水位。水位過低或過高時會觸發(fā)水位浮子翻轉(zhuǎn),使浮子驅(qū)動電路產(chǎn)生電平變化觸發(fā)MCU 外部中斷使系統(tǒng)獲取水位超限信息。電源系統(tǒng)收集太陽能為節(jié)點(diǎn)提供電力并為鋰電池充電,夜間及陰雨天則由鋰電池提供電源。
泵房監(jiān)控節(jié)點(diǎn)用于實(shí)時采集泵房水池的水位狀態(tài),完成與網(wǎng)絡(luò)中其余節(jié)點(diǎn)的數(shù)據(jù)交互,根據(jù)各節(jié)點(diǎn)的工作狀態(tài)及自身運(yùn)行數(shù)據(jù)綜合計(jì)算,自動控制水泵工作。
圖3 為泵房監(jiān)控節(jié)點(diǎn)原理框圖,主要由MCU、液晶顯示屏、控制旋鈕、電源管理、4 路模擬電流量輸入、4 路無源開關(guān)量輸出6 個部分組成。溫度探頭用于監(jiān)測水泵運(yùn)行的溫度,配合系統(tǒng)實(shí)現(xiàn)超溫保護(hù)的功能。水位傳感器用于監(jiān)測泵房水池的水位變化,為低水位停機(jī)及抽水時長提供數(shù)據(jù)。開關(guān)量輸出單元通過驅(qū)動繼電器的通斷來控制變頻器啟動水泵抽水。液晶顯示屏、操作旋鈕及啟動/停止按鈕構(gòu)成用戶交互界面,用戶可以通過液晶屏查看各個節(jié)點(diǎn)的實(shí)時狀態(tài),通過旋轉(zhuǎn)旋鈕可對菜單進(jìn)行操作修改當(dāng)前節(jié)點(diǎn)的運(yùn)行參數(shù)。使用啟動/停止按鈕可以實(shí)現(xiàn)水泵的手動啟動及緊急停機(jī)。
圖3 為泵房監(jiān)控節(jié)點(diǎn)原理框圖
網(wǎng)關(guān)是LoRa 傳感器網(wǎng)絡(luò)與以太網(wǎng)銜接的橋梁,將來自物聯(lián)網(wǎng)的數(shù)據(jù)轉(zhuǎn)換為TCP/IP 數(shù)據(jù),并將來自網(wǎng)絡(luò)的TCP/IP 數(shù)據(jù)包轉(zhuǎn)換為物聯(lián)網(wǎng)數(shù)據(jù)發(fā)送給各個節(jié)點(diǎn)。
網(wǎng)關(guān)同樣使用 STM32F103 作為處理器,使用SX1278 作為收發(fā)模塊。整個裝置安裝在鋁壓鑄盒內(nèi),能適應(yīng)長期戶外使用。網(wǎng)關(guān)的電源采用了48VPOE 供電,安裝時只需要一根網(wǎng)線即可實(shí)現(xiàn)供電與數(shù)據(jù)傳輸。
節(jié)點(diǎn)軟件的設(shè)計(jì)充分運(yùn)用了去中心化的思想,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都處于平等地位,平等地接收信息并擁有自主決定權(quán)。這使得部分節(jié)點(diǎn)的退出不影響整個網(wǎng)絡(luò)的穩(wěn)定運(yùn)行。
節(jié)點(diǎn)底層軟件設(shè)計(jì)調(diào)用了SX1278 的底層API,通過SPI 總線協(xié)議進(jìn)行通信。所有節(jié)點(diǎn)均工作于ClassC模式,收發(fā)器不進(jìn)入休眠,保證數(shù)據(jù)包的可靠接收。
圖4 為節(jié)點(diǎn)的主程序流程圖。程序主進(jìn)程循環(huán)采集傳感器數(shù)據(jù),結(jié)合其他節(jié)點(diǎn)的運(yùn)行數(shù)據(jù)計(jì)算并刷新運(yùn)行參數(shù),根據(jù)運(yùn)行參數(shù)控制水泵的啟動與停止。數(shù)據(jù)收發(fā)、屏幕刷新、用戶操作、物聯(lián)網(wǎng)數(shù)據(jù)收發(fā)采用中斷響應(yīng)方式編寫,可以減少液晶屏刷新、用戶操作等進(jìn)程在系統(tǒng)運(yùn)行中占用的運(yùn)算資源,提高系統(tǒng)運(yùn)行效率,將更多資源留給計(jì)算運(yùn)行參數(shù)。定時器1 用于啟動LoRa 數(shù)據(jù)發(fā)送子進(jìn)程,將本節(jié)點(diǎn)的數(shù)據(jù)發(fā)送到物聯(lián)網(wǎng)中;定時器2 用于啟動液晶屏刷新子進(jìn)程,設(shè)定每0.5 s 進(jìn)行一次刷新。用戶操作子進(jìn)程由用戶觸動控制按鈕激活,操作完成進(jìn)程隨即關(guān)閉。物聯(lián)網(wǎng)數(shù)據(jù)接收子進(jìn)程由物聯(lián)網(wǎng)無線數(shù)據(jù)包觸發(fā),程序自動判斷數(shù)據(jù)包來源和類型后對節(jié)點(diǎn)相應(yīng)參數(shù)進(jìn)行修改,數(shù)據(jù)更新完成進(jìn)程即關(guān)閉??撮T狗程序可以在程序出現(xiàn)錯誤時重啟系統(tǒng),提高系統(tǒng)穩(wěn)定性。
數(shù)據(jù)幀格式采用LoRa 規(guī)范的幀格式,由前導(dǎo)碼、物理頭、負(fù)載和校驗(yàn)組成,結(jié)構(gòu)如圖5 所示。數(shù)據(jù)幀起始兩字節(jié)為地址碼,分別標(biāo)識節(jié)點(diǎn)的簇編號和節(jié)點(diǎn)ID 號;地址碼后是兩字節(jié)操作代碼,用于標(biāo)識該數(shù)據(jù)幀傳輸?shù)臄?shù)據(jù)定義;其后是16 字節(jié)數(shù)據(jù);最后是6字節(jié)時間代碼。
圖4 節(jié)點(diǎn)軟件流程圖
圖5 LoRa 無線物聯(lián)網(wǎng)數(shù)據(jù)幀格式
節(jié)點(diǎn)在運(yùn)行過程中自動收集來自傳感器的數(shù)據(jù)和來自其他節(jié)點(diǎn)的運(yùn)行數(shù)據(jù),按算法計(jì)算并更新控制參數(shù)。每個節(jié)點(diǎn)的計(jì)算過程相互獨(dú)立,不依賴于服務(wù)器,但節(jié)點(diǎn)會將更新后的控制參數(shù)發(fā)送到傳感器網(wǎng)絡(luò)中,完成與其他節(jié)點(diǎn)的數(shù)據(jù)交互。這種處理模式在源頭對數(shù)據(jù)進(jìn)行處理,使整個網(wǎng)絡(luò)去中心化,能有效提高系統(tǒng)的可靠性[13]。
每個節(jié)點(diǎn)啟動水泵的條件都由本泵站的水位、其余泵站的工作狀態(tài)、水塔水位的變化情況計(jì)算得出。其計(jì)算的依據(jù)為水塔輸出水量的變化情況。節(jié)點(diǎn)會在每次抽水結(jié)束后定時計(jì)算水塔水位下降的速率,計(jì)算方式如下:
式中,k 為Δt 時間內(nèi)水位下降的速率,其數(shù)值反映了用水量的大小;ht為根據(jù)水位下降速率求出的t 時刻水泵啟動水位。為排除干擾,準(zhǔn)確反映該時間段內(nèi)水位下降的速率,系統(tǒng)循環(huán)計(jì)算k 值,并求出其平均值kn,如式(2)所示。kn用于動態(tài)調(diào)整水泵啟動條件中的水塔水位下限,如式(3)所示。
式中,ht限制于節(jié)點(diǎn)設(shè)置的水塔上限水位hH和水位下限hL之間;b 為常數(shù),該參數(shù)是經(jīng)驗(yàn)值,需要根據(jù)水塔容積及運(yùn)行情況進(jìn)行調(diào)整。
該策略可以讓水泵在用水量大時提高抽水頻率,水塔中保持較高的水位;在用水量低時延長水泵停機(jī)時間,降低啟動頻率,減少設(shè)備磨損。
圖6 用戶操作界面
節(jié)點(diǎn)內(nèi)建了實(shí)時數(shù)據(jù)顯示及用戶操作界面,在無用戶操作時液晶屏顯示為待機(jī)界面(圖6(a))。該界面顯示了本節(jié)點(diǎn)及相鄰節(jié)點(diǎn)的實(shí)時運(yùn)行參數(shù)。用戶按下控制旋鈕即進(jìn)入菜單選項(xiàng)(圖6(b)),旋轉(zhuǎn)控制旋鈕可以對相應(yīng)參數(shù)進(jìn)行修改(圖6(c)—6(f)),確認(rèn)后的參數(shù)會被保存到MCU 的EEPROM 中,掉電不會丟失。
后臺服務(wù)軟件由節(jié)點(diǎn)管理與WEB 服務(wù)2 部分構(gòu)成。節(jié)點(diǎn)管理用于采集來自各個節(jié)點(diǎn)的數(shù)據(jù),并對其運(yùn)行狀態(tài)進(jìn)行監(jiān)控,也負(fù)責(zé)節(jié)點(diǎn)數(shù)據(jù)更新及遙控指令下發(fā)。WEB 服務(wù)為用戶提供數(shù)據(jù)查詢及實(shí)時展示,可通過網(wǎng)頁查看各個節(jié)點(diǎn)的實(shí)時狀態(tài)、歷史數(shù)據(jù),并提供數(shù)據(jù)分析功能。
節(jié)點(diǎn)管理程序通過網(wǎng)關(guān)監(jiān)控整個網(wǎng)絡(luò)的運(yùn)行情況,采集運(yùn)行數(shù)據(jù)并存儲入數(shù)據(jù)庫。同時實(shí)現(xiàn)對節(jié)點(diǎn)的數(shù)據(jù)更新及異常檢測功能。
為保持各個節(jié)點(diǎn)的時間一致,管理程序通過北斗NTP 獲取標(biāo)準(zhǔn)時間,通過下發(fā)數(shù)據(jù)幀的時間字段對各個節(jié)點(diǎn)進(jìn)行校時。當(dāng)用戶通過網(wǎng)絡(luò)發(fā)起遙控請求時,管理程序?qū)⒕W(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)換為控制指令,通過網(wǎng)關(guān)發(fā)送給對應(yīng)節(jié)點(diǎn)。當(dāng)物聯(lián)網(wǎng)中有節(jié)點(diǎn)出現(xiàn)異常時,節(jié)點(diǎn)管理程序?qū)惓P畔l(fā)送給用戶,便于故障的排查處理。
WEB 服務(wù)后端基于Django 開源框架實(shí)現(xiàn),前端采用響應(yīng)式布局設(shè)計(jì),支持PC 端和手機(jī)端瀏覽,以圖形圖表的方式展示了用水量變化、實(shí)時水位、設(shè)備電量和設(shè)備運(yùn)行狀態(tài)??紤]到應(yīng)用場景的特殊性,以及工作人員的使用便捷問題,工作人員只需輸入指定網(wǎng)址即可查看各參數(shù)的變化情況。頁面默認(rèn)只顯示過去24 h 內(nèi)各參數(shù)的變化圖形,可點(diǎn)擊圖形查看各參數(shù)的具體數(shù)值。通過曲線的變化,用戶可以了解到最近時段的用水情況,結(jié)合系統(tǒng)自帶的數(shù)據(jù)分析功能可快速判定用水管道設(shè)施是否發(fā)生故障,以便提前做好保障用水的應(yīng)對措施。
本系統(tǒng)在西南林業(yè)大學(xué)校園內(nèi)進(jìn)行實(shí)際部署,共建設(shè)了兩個網(wǎng)關(guān),2 個泵房監(jiān)控節(jié)點(diǎn),一個水塔監(jiān)測節(jié)點(diǎn)。圖7(b)為水塔監(jiān)控節(jié)點(diǎn)實(shí)物,節(jié)點(diǎn)使用ABS 工程塑料外殼封裝,可使用標(biāo)準(zhǔn)導(dǎo)軌安裝。圖7(c)為水塔監(jiān)測節(jié)點(diǎn)實(shí)物,該節(jié)點(diǎn)使用鋁壓鑄外殼封裝,可抵御戶外惡劣條件,保證穩(wěn)定運(yùn)行。圖7(d)-(f)分別為網(wǎng)關(guān)、泵房監(jiān)控節(jié)點(diǎn)、水塔監(jiān)測節(jié)點(diǎn)實(shí)際部署照片。
圖7 部署區(qū)域及實(shí)物照片
本系統(tǒng)的WEB 服務(wù)端界面能夠從宏觀上觀察各個節(jié)點(diǎn)的運(yùn)行狀態(tài)。圖8 為2019 年10 月29—31 日的WEB 界面。通過該界面可以實(shí)時查看各個節(jié)點(diǎn)的運(yùn)行情況,界面上同時顯示了現(xiàn)有的2 個泵房1 個水塔的實(shí)時數(shù)據(jù)。包括:實(shí)時水位、設(shè)備的電源電壓、水位變化的波動情況、水泵的運(yùn)行狀態(tài)。其中水塔的下限水位在不斷變化,這是系統(tǒng)自動調(diào)節(jié)的結(jié)果。圖中的設(shè)備電量是設(shè)備的工作電壓,其大幅度跳變是因?yàn)樘柲芤褳殡姵爻錆M電,系統(tǒng)顯示太陽能電池的開路電壓。通過WEB 界面用戶還可指定時間段對歷史數(shù)據(jù)進(jìn)行回放。
圖8 WEB 前端界面
圖9 為手機(jī)端軟件運(yùn)行效果。用戶通過手機(jī)端軟件能查看各個節(jié)點(diǎn)的運(yùn)行狀態(tài)以及運(yùn)行數(shù)據(jù)繪制出的曲線,點(diǎn)擊曲線,可以查看該時刻的詳細(xì)數(shù)據(jù),手機(jī)端也同樣支持?jǐn)?shù)據(jù)回放功能。
通過對整個系統(tǒng)的運(yùn)行數(shù)據(jù)截取進(jìn)行分析,得出2019 年10 月11—13 日各個節(jié)點(diǎn)的水位變化情況,如圖10 所示。圖中3 條折線分別顯示了水塔、#1 泵站水池、#2 泵站水池3 天的水位變化情況。從圖中可以看出,水塔水位下降速度越快,觸發(fā)泵站開始工作的最低水位就越高。其中12 日晚因#1 泵站停水觸發(fā)#1泵站監(jiān)控節(jié)點(diǎn)低水位保護(hù),該緊急情況觸發(fā)了#2 泵站延長水泵工作時長,保證了水塔始終處于有水的狀態(tài),未導(dǎo)致停水。待#1 泵站水位回升到正常水位后系統(tǒng)隨即恢復(fù)正常狀態(tài)。
圖9 手機(jī)軟件界面
圖10 節(jié)點(diǎn)水位變化
本系統(tǒng)針對多節(jié)點(diǎn)水泵系統(tǒng)智能化調(diào)度管理的需要,基于LoRa 物聯(lián)網(wǎng)及邊緣技術(shù)設(shè)計(jì)了一套水泵自動調(diào)度系統(tǒng)。系統(tǒng)在西南林業(yè)大學(xué)實(shí)際部署,并穩(wěn)定運(yùn)行了2 年時間。通過實(shí)際使用及對數(shù)據(jù)庫中存儲的大量數(shù)據(jù)抽取分析對比,驗(yàn)證了該系統(tǒng)的穩(wěn)定性和可靠性。該架構(gòu)體系有利于推廣物聯(lián)網(wǎng)技術(shù)及邊緣計(jì)算在泵站自動化、智能化管理中的運(yùn)用,為泵房系統(tǒng)管理者將現(xiàn)場操作記錄向電子手持終端遠(yuǎn)程監(jiān)控進(jìn)行轉(zhuǎn)移,降低勞動強(qiáng)度的同時也為供水保障提供技術(shù)支撐服務(wù)。同時,該項(xiàng)目的實(shí)施為學(xué)生提高實(shí)踐動手能力提供了真實(shí)的物聯(lián)網(wǎng)系統(tǒng)運(yùn)維環(huán)境及原始數(shù)據(jù)。