馬和平,王政
(包頭職業(yè)技術(shù)學(xué)院 電氣工程系,內(nèi)蒙古包頭,014000)
鄉(xiāng)村供水工程一直都是解決“三農(nóng)”問(wèn)題的關(guān)鍵,隨著全面脫貧的結(jié)束鄉(xiāng)村振興的開(kāi)啟,鄉(xiāng)村供水如何向智能化方向發(fā)展,則成為鞏固脫貧邁向振興的重要環(huán)節(jié)。而通信則是智能化中必不可少的組成。由于鄉(xiāng)村供水的水源所處地理位置有的較為偏僻,移動(dòng)基站信號(hào)無(wú)法覆蓋,導(dǎo)致目前4G 或未來(lái)5G 通信在水廠(chǎng)遠(yuǎn)程遙控汲水中直接使用受到限制。
根據(jù)村鎮(zhèn)所處地理位置,供水方式可采用單村獨(dú)立供水、聯(lián)村集中供水和城市管網(wǎng)延伸供水。內(nèi)蒙古西部某鄉(xiāng)村供水工程依據(jù)《生活飲用水衛(wèi)生標(biāo)準(zhǔn)》(GB5749-85)和《農(nóng)村生活飲用水量衛(wèi)生要求》(GB11730-89)選擇水源,由于該地區(qū)水資源缺乏,符合飲水標(biāo)準(zhǔn)的水源分布不均,多以就地打井,單村獨(dú)立供水或聯(lián)村集中供水為主。多數(shù)水源井處于移動(dòng)基站信號(hào)無(wú)法覆蓋或信號(hào)較差區(qū)域,影響了鄉(xiāng)村供水從自動(dòng)化向智能化邁進(jìn),也成為實(shí)施規(guī)模化供水工程建設(shè),改善農(nóng)民飲用水質(zhì)量,完善農(nóng)村水價(jià)水費(fèi)機(jī)制和工程長(zhǎng)效運(yùn)營(yíng)機(jī)制[1],以及實(shí)現(xiàn)跨區(qū)域水資源管理的障礙。
目前水源井遠(yuǎn)程控制技術(shù)主要分為三部分,一是水源井終端設(shè)備,包括可編程控制器、分布式I/O、嵌入式系統(tǒng)控制器等終端控制及數(shù)據(jù)采集設(shè)備,主要完成開(kāi)關(guān)量、模擬量的輸入與輸出功能,同時(shí)終端設(shè)備需要具備至少一種通信接口。二是遠(yuǎn)程通信技術(shù),包括有線(xiàn)通信和無(wú)線(xiàn)通信,有線(xiàn)通信根據(jù)通信距離可以選擇不同通信介質(zhì)實(shí)現(xiàn),主要有雙絞線(xiàn)纜通信、以太網(wǎng)網(wǎng)線(xiàn)通信和光纖通信;目前主流無(wú)線(xiàn)通信有NB-IoT、LoRa、WiFi、ZigBee、Bluetooth 等。三是上位機(jī)監(jiān)控與管理系統(tǒng),隨大數(shù)據(jù)及云計(jì)算的發(fā)展高級(jí)語(yǔ)言正在發(fā)生著更迭變化,目前主要采用C#、C++、Python、Java編程語(yǔ)言與SQL Server、MySQL、Oracle、Access 數(shù)據(jù)庫(kù)結(jié)合實(shí)現(xiàn)上位機(jī)監(jiān)控、數(shù)據(jù)處理與數(shù)據(jù)存儲(chǔ)功能。
水源井是供水的源頭,水源井的主要設(shè)備為水泵,因此水源井遙控系統(tǒng)需要實(shí)現(xiàn)水泵電機(jī)的啟、停,過(guò)載故障判斷,三相電壓和電流的測(cè)量,出水壓力和流量監(jiān)測(cè)。遙控系統(tǒng)的控制命令需要從水廠(chǎng)控制中心上位機(jī)系統(tǒng)發(fā)出,再將采集到的測(cè)量參數(shù)回傳上位機(jī)系統(tǒng)顯示和存儲(chǔ)。
水源井遙控系統(tǒng)終端使用STM32 控制器為核心而設(shè)計(jì),依據(jù)上述控制要求系統(tǒng)由電源、數(shù)字量輸入、數(shù)字量輸出、模擬量輸入、RS485 通信和LoRa 模組六部分組成,水源井遙控系統(tǒng)框圖如圖1 所示。
圖1 水源井遙控終端系統(tǒng)框圖
在水源井遙控系統(tǒng)設(shè)計(jì)中為了保證模擬采集及串行通信的抗干擾性采用接地處理,數(shù)字開(kāi)關(guān)量采用光電隔離處理,保證強(qiáng)弱電壓間的隔離。模擬量信號(hào)以4 ~20mA 電流信號(hào)和0~10V 電壓信號(hào)為主,為適用不同模擬量信號(hào)采集,需要通過(guò)電路的設(shè)計(jì)實(shí)現(xiàn)4 ~20mA 電流信號(hào)和0~10V 電壓信號(hào)的自由選擇。設(shè)計(jì)方法其一在PCB 板上設(shè)置轉(zhuǎn)換跳線(xiàn),通過(guò)跳線(xiàn)實(shí)現(xiàn)同一AD 通道上電流與電壓信號(hào)復(fù)用,設(shè)計(jì)方法其二采用多路AD 通道,分別規(guī)劃模擬里電流輸入端和電壓輸入端,同一AD 通道上電流信號(hào)和電壓信號(hào)不可復(fù)用。具體設(shè)計(jì)如圖2 所示。
圖2 水源井遙控終端硬件設(shè)計(jì)圖
水源井遙控系統(tǒng)中較為關(guān)鍵的技術(shù)是把LoRa 無(wú)線(xiàn)網(wǎng)絡(luò)與NB-IoT 無(wú)線(xiàn)網(wǎng)絡(luò)的結(jié)合。水源井遙控系統(tǒng)設(shè)計(jì)的方法是在移動(dòng)基站信號(hào)無(wú)法覆蓋到控制區(qū)域的一種解決方案。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,各種無(wú)線(xiàn)通信技術(shù)不斷涌現(xiàn),其中目前使用較為廣泛的無(wú)線(xiàn)通信技術(shù)包括WiFi、ZigBee、Bluetooth、LoRa(低功耗廣域網(wǎng)絡(luò))以及NB-IoT(窄帶物聯(lián)網(wǎng))。WiFi、Zigbee 和Bluetooth 屬于局域網(wǎng)通信技術(shù),廣泛使用在室內(nèi)等短距離通信場(chǎng)所;LoRa 和NB-IoT屬于廣域網(wǎng)通信技術(shù),廣泛使用在室外等長(zhǎng)距離通信場(chǎng)所。LoRa 無(wú)線(xiàn)網(wǎng)絡(luò)其優(yōu)點(diǎn)是組網(wǎng)及網(wǎng)絡(luò)運(yùn)行成本較低,缺點(diǎn)是不適用于長(zhǎng)距離遠(yuǎn)程通信;NB-IoT 無(wú)線(xiàn)網(wǎng)絡(luò)其優(yōu)點(diǎn)是通信距離長(zhǎng),特別適合跨區(qū)域遠(yuǎn)程通信,缺點(diǎn)是不能自由組網(wǎng)及在通信數(shù)據(jù)量較大應(yīng)用背景下成本偏高。LoRa 無(wú)線(xiàn)網(wǎng)絡(luò)與NB-IoT 無(wú)線(xiàn)網(wǎng)絡(luò)的結(jié)合,可實(shí)現(xiàn)兩者間優(yōu)勢(shì)互補(bǔ)。LoRa 無(wú)線(xiàn)網(wǎng)絡(luò)與NB-IoT 無(wú)線(xiàn)網(wǎng)絡(luò)的結(jié)合要充分考慮兩者間通信速率問(wèn)題,要盡量減少收發(fā)時(shí)延,避免出現(xiàn)收發(fā)不同步。隨著LoRa 無(wú)線(xiàn)通信和NB-IoT 無(wú)線(xiàn)通信的廣泛,LoRa 無(wú)線(xiàn)通信和NB-IoT 無(wú)線(xiàn)通信所涉及電路均已模塊封裝,形成批量生產(chǎn)的模組。目前LoRa 和NB-IoT 以模組形式使用,兩種模組數(shù)據(jù)接口有UART 串口、SPI 和I2C 三種,其中UART 串口使用較為廣泛,可通過(guò)UART 串口與MCU 芯片的串口連接,根據(jù)控制工藝要求,實(shí)現(xiàn)無(wú)線(xiàn)通信數(shù)據(jù)的傳輸。LoRa 模組和NB-IoT 模組與MCU 芯片連接的電路原理如圖3 所示。
圖3 無(wú)線(xiàn)模組與MCU 硬件設(shè)計(jì)圖
LoRa 模組采用E32-422T20S2T 型號(hào)設(shè)備,設(shè)備為基于SX1278 射頻芯片的串口模塊,可工作在410~441MHz頻段,默認(rèn)頻率433MHz。E32-422T20S2T 型LoRa 模組具有定點(diǎn)發(fā)射和廣播發(fā)射兩種數(shù)據(jù)傳輸形式,定點(diǎn)發(fā)射時(shí),只有接收方設(shè)置的“目標(biāo)地址”和“信道號(hào)”與接收到的數(shù)據(jù)幀中包含的“目標(biāo)地址”和“信道號(hào)”一致才可接收發(fā)送方的數(shù)據(jù);廣播發(fā)射時(shí),只要接收方的“信道號(hào)”與接收到的數(shù)據(jù)幀中的“信道號(hào)”一致均可接收數(shù)據(jù)。E32-422T20S2T 型LoRa 模組可工作在四種模式下,分別為一般模式、喚醒模式、省電模式、休眠模式。四種模式的選擇由模組的M0 和M1 引腳電平狀態(tài)組合決定,具體模式選擇如表1 所示。
表1 E32-422T20S2T型LoRa模組工作模式選擇
在使用E32-422T20S2T 型LoRa 模組時(shí),M0 和M1 引腳不可懸空使用。在中繼設(shè)備與終端設(shè)備間的LoRa 無(wú)線(xiàn)通信時(shí),與NB-IoT 無(wú)線(xiàn)通信相比較,其安全框架可分為MAC層安全、傳輸層安全和應(yīng)用層安全。MAC 層安全保障終端設(shè)備與網(wǎng)絡(luò)服務(wù)器之間的雙向認(rèn)證以及MAC 控制命令的傳輸安全,傳輸層保障網(wǎng)關(guān)與網(wǎng)絡(luò)服務(wù)器以及網(wǎng)絡(luò)服務(wù)器與應(yīng)用服務(wù)器之間的數(shù)據(jù)傳輸安全,應(yīng)用層安全保障入網(wǎng)過(guò)程中的雙向認(rèn)證及數(shù)據(jù)載荷端到端的加/解密。[2]LoRa 無(wú)線(xiàn)通信的安全框架保證了端到端的安全。因此,終端設(shè)備上的數(shù)據(jù)傳輸?shù)陌踩灾饕ㄟ^(guò)端到端間的連接設(shè)置實(shí)現(xiàn),E32-422T20S2T 型LoRa 模組參數(shù)設(shè)置格式如表2 所示。
表2 E32-422T20S2T型LoRa模組參數(shù)設(shè)置格式
水源井遙控系統(tǒng)分為終端和中繼兩部分,均由MCU為核心組成控制系統(tǒng)來(lái)實(shí)現(xiàn)各自功能。水源井遙控系統(tǒng)設(shè)計(jì)的第二個(gè)關(guān)鍵技術(shù)環(huán)節(jié)是為MCU 控制器進(jìn)行程序設(shè)計(jì)。水源井遙控系統(tǒng)設(shè)計(jì)中所使用的MCU 型號(hào)為STM32F103ZET6,該MCU 內(nèi)核為Cortex-M3,采用了Thumb-2 指令集,Thumb-2 指令集的使用既獲得了傳統(tǒng)的32 位ARM 的性能,又具有16 位Thumb 代碼的高代碼密度,使得32 位ARM 代碼和16 位Thumb 代碼的編譯可在單一操作模式下處理完成,提高了both 的執(zhí)行時(shí)間、節(jié)省了指令存儲(chǔ)空間。
水源井主要任務(wù)是通過(guò)水泵抽取地下水,為水廠(chǎng)進(jìn)一步生產(chǎn)提供可持續(xù)的水原料。其主要控制對(duì)象為水泵電機(jī),監(jiān)測(cè)的參數(shù)有水泵電機(jī)三相電壓、三相電流、有功功率、井口出水壓力和流量。首先要實(shí)現(xiàn)接收遠(yuǎn)程信號(hào)對(duì)水泵電機(jī)的啟、??刂?,并且要能將水泵電機(jī)實(shí)際啟、停狀態(tài)反饋給信號(hào)發(fā)送端。其次對(duì)水源井出水壓力和流量?jī)蓚€(gè)模擬量通過(guò)MCU 模擬量通道采集,采集到的模擬量再通過(guò)MCU 的USART1 端口發(fā)送到上位機(jī)系統(tǒng)。最后MCU 通過(guò)Modbus RTU 協(xié)議與電量采集模塊通信測(cè)量水泵電機(jī)三相電壓、三相電流和有功功率。依據(jù)水源井控制要求對(duì)MCU 進(jìn)行程序設(shè)計(jì),程序流程圖如圖4 所示。
圖4 水源井遙控終端程序流程圖
水源井無(wú)線(xiàn)中繼主要實(shí)現(xiàn)LoRa 無(wú)線(xiàn)通信與NB-IoT 無(wú)線(xiàn)通信的互轉(zhuǎn),兩者無(wú)線(xiàn)通信轉(zhuǎn)換的關(guān)鍵是MCU 控制器,因此需對(duì)MCU 進(jìn)行相對(duì)應(yīng)的程序設(shè)計(jì)。LoRa 模組和NBIoT 模組分別與MCU 的USART1 和USART2 兩個(gè)端口連接,通過(guò)對(duì)MCU 的USART1 和USART2 編程,完成從USART1到USART2 及以及從USART2 到USART1 的數(shù)據(jù)雙向轉(zhuǎn)發(fā),可通過(guò)使用USART1 和USART2 的串行接收中斷,可降低USART1 與USART2 間的數(shù)據(jù)轉(zhuǎn)發(fā)延時(shí),實(shí)現(xiàn)低延時(shí)轉(zhuǎn)發(fā)。此外,在接收和發(fā)送時(shí)均采用了CRC 校驗(yàn),保證了從接收到發(fā)送的中轉(zhuǎn)過(guò)程數(shù)據(jù)的準(zhǔn)確性。根據(jù)以上控制要求,水源井無(wú)線(xiàn)中繼程序設(shè)計(jì)流程如圖5 所示。
圖5 水源井無(wú)線(xiàn)中繼程序設(shè)計(jì)流程圖
水源井遙控系統(tǒng)其功能主要實(shí)現(xiàn)水源井水泵電機(jī)的啟停、出水壓力和流量、水泵能耗電量的監(jiān)測(cè)等。上位機(jī)需要通過(guò)遠(yuǎn)程通信完成對(duì)水泵電機(jī)、出水壓力和流量、水泵能耗電量的監(jiān)控,根據(jù)功能需要上位機(jī)系統(tǒng)劃分為用戶(hù)登錄模塊、通信設(shè)備監(jiān)測(cè)模塊、運(yùn)行監(jiān)控模塊、數(shù)據(jù)記錄模塊和故障顯示模塊。上位機(jī)系統(tǒng)采用C#語(yǔ)言設(shè)計(jì),C#語(yǔ)言是物聯(lián)網(wǎng)監(jiān)控系統(tǒng)常用的編程語(yǔ)言,以.NET Framework 為基礎(chǔ)在各種類(lèi)型應(yīng)用程序編寫(xiě)方面發(fā)揮著十分重要的作用,具有很高的安全性與穩(wěn)定性,同時(shí)C#還具備完善錯(cuò)誤的機(jī)制、異常處理的機(jī)制[3]。
通過(guò)點(diǎn)擊選擇站點(diǎn),系統(tǒng)連接前端設(shè)備,將實(shí)時(shí)數(shù)據(jù)顯示在監(jiān)控畫(huà)面中,如圖6 所示是運(yùn)行監(jiān)控畫(huà)面顯示。
圖6 運(yùn)行監(jiān)控模塊
(1)服務(wù)器代碼
Server.RegisterArea(S7Server.srvAreaDB,1, ref DB1,DB1.Length);
Server.RegisterArea(S7Server.srvAreaDB,2, ref DB2,DB2.Length); Server.RegisterArea(S7Server.srvAreaDB,3,ref DB3, DB3.Length);
TheEventCallBack = new S7Server.TSrvCallback(EventCallback);
TheReadCallBack = new S7Server.TSrvCallback(Rea dEventCallback);
Server.EventMask = ~S7Server.evcDataRead;Server.SetEventsCallBack(TheEventCallBack, IntPtr.Zero); Server.SetReadEventsCallBack(TheReadCallBack,IntPtr.Zero);
int Error=Server.Start();
if (Error == 0)
{
Console.ReadKey();
Server.Stop();
}
else {
Console.WriteLine(Server.ErrorText(Error));}
(2)客戶(hù)端代碼
byte[]Buffer = new byte[0x10000];
資料分析是確定技術(shù)方案的基礎(chǔ)性工作,將各種資料中的有用信息充分合理地利用起來(lái),可以使更新后的協(xié)議書(shū)及附圖等成果資料內(nèi)容更全面、權(quán)威,為鄉(xiāng)級(jí)行政區(qū)域界線(xiàn)勘定工作的順利開(kāi)展提供可靠的依據(jù)。
int Size = Buffer.Length;
int res = Client.AsUpload(S7Client.Block_SDB, 0,Buffer, ref Size);
if (res == 0)
{
res = Client.WaitAsCompletion(3000);
};
{
Console.WriteLine(“Dump : “ + Size.ToString ()+ “ bytes”);
HexDump(Buffer, Size);
}
通過(guò)某水廠(chǎng)的水源井遙控系統(tǒng)實(shí)地軟硬件測(cè)試,達(dá)到預(yù)期控制效果,測(cè)試結(jié)果如下:
(1)LoRa 無(wú)線(xiàn)信號(hào)對(duì)水源井區(qū)域覆蓋率到100%,無(wú)掉線(xiàn)情況出現(xiàn),信號(hào)強(qiáng)度穩(wěn)定。
(2)壓力、流量等模擬量數(shù)據(jù)采集誤差在5%,水泵電壓、電流和有功功率誤差在1%,水泵啟停反饋信號(hào)延時(shí)在300ms~500ms 之間。
(3)水源井無(wú)線(xiàn)中繼與水源井終端間數(shù)據(jù)傳輸誤碼率低,CRC 校驗(yàn)效果明顯。
水源井遙控系統(tǒng)設(shè)計(jì)以意法半導(dǎo)體公司的STM32F103 ZET6 為控制器,分別設(shè)計(jì)水源井終端設(shè)備和水源井中繼設(shè)備,水源井中繼設(shè)備的MCU 將LoRa 模組與NB-IoT 模組相結(jié)合,實(shí)現(xiàn)了LoRa 無(wú)線(xiàn)通信組網(wǎng)與NB-IoT 無(wú)線(xiàn)組網(wǎng)無(wú)縫對(duì)接,解決了水源井處無(wú)線(xiàn)通信信號(hào)的覆蓋強(qiáng)度低的問(wèn)題。此外,采用C#語(yǔ)言設(shè)計(jì)的上位機(jī)可控制水源井水泵電機(jī)啟停,監(jiān)控水泵運(yùn)行狀態(tài),水泵電機(jī)的能耗,水源井出水壓力和流量。水源井遙控系統(tǒng)的設(shè)計(jì)為無(wú)線(xiàn)通信信號(hào)較差的鄉(xiāng)村供水工程提供了一種數(shù)據(jù)采集的方案,且方案有較強(qiáng)的擴(kuò)展性,可為跨區(qū)域水資源統(tǒng)籌套配及大數(shù)據(jù)統(tǒng)計(jì)提供基礎(chǔ)。