馬和平,王政
(包頭職業技術學院 電氣工程系,內蒙古包頭,014000)
鄉村供水工程一直都是解決“三農”問題的關鍵,隨著全面脫貧的結束鄉村振興的開啟,鄉村供水如何向智能化方向發展,則成為鞏固脫貧邁向振興的重要環節。而通信則是智能化中必不可少的組成。由于鄉村供水的水源所處地理位置有的較為偏僻,移動基站信號無法覆蓋,導致目前4G 或未來5G 通信在水廠遠程遙控汲水中直接使用受到限制。
根據村鎮所處地理位置,供水方式可采用單村獨立供水、聯村集中供水和城市管網延伸供水。內蒙古西部某鄉村供水工程依據《生活飲用水衛生標準》(GB5749-85)和《農村生活飲用水量衛生要求》(GB11730-89)選擇水源,由于該地區水資源缺乏,符合飲水標準的水源分布不均,多以就地打井,單村獨立供水或聯村集中供水為主。多數水源井處于移動基站信號無法覆蓋或信號較差區域,影響了鄉村供水從自動化向智能化邁進,也成為實施規模化供水工程建設,改善農民飲用水質量,完善農村水價水費機制和工程長效運營機制[1],以及實現跨區域水資源管理的障礙。
目前水源井遠程控制技術主要分為三部分,一是水源井終端設備,包括可編程控制器、分布式I/O、嵌入式系統控制器等終端控制及數據采集設備,主要完成開關量、模擬量的輸入與輸出功能,同時終端設備需要具備至少一種通信接口。二是遠程通信技術,包括有線通信和無線通信,有線通信根據通信距離可以選擇不同通信介質實現,主要有雙絞線纜通信、以太網網線通信和光纖通信;目前主流無線通信有NB-IoT、LoRa、WiFi、ZigBee、Bluetooth 等。三是上位機監控與管理系統,隨大數據及云計算的發展高級語言正在發生著更迭變化,目前主要采用C#、C++、Python、Java編程語言與SQL Server、MySQL、Oracle、Access 數據庫結合實現上位機監控、數據處理與數據存儲功能。
水源井是供水的源頭,水源井的主要設備為水泵,因此水源井遙控系統需要實現水泵電機的啟、停,過載故障判斷,三相電壓和電流的測量,出水壓力和流量監測。遙控系統的控制命令需要從水廠控制中心上位機系統發出,再將采集到的測量參數回傳上位機系統顯示和存儲。
水源井遙控系統終端使用STM32 控制器為核心而設計,依據上述控制要求系統由電源、數字量輸入、數字量輸出、模擬量輸入、RS485 通信和LoRa 模組六部分組成,水源井遙控系統框圖如圖1 所示。

圖1 水源井遙控終端系統框圖
在水源井遙控系統設計中為了保證模擬采集及串行通信的抗干擾性采用接地處理,數字開關量采用光電隔離處理,保證強弱電壓間的隔離。模擬量信號以4 ~20mA 電流信號和0~10V 電壓信號為主,為適用不同模擬量信號采集,需要通過電路的設計實現4 ~20mA 電流信號和0~10V 電壓信號的自由選擇。設計方法其一在PCB 板上設置轉換跳線,通過跳線實現同一AD 通道上電流與電壓信號復用,設計方法其二采用多路AD 通道,分別規劃模擬里電流輸入端和電壓輸入端,同一AD 通道上電流信號和電壓信號不可復用。具體設計如圖2 所示。

圖2 水源井遙控終端硬件設計圖
水源井遙控系統中較為關鍵的技術是把LoRa 無線網絡與NB-IoT 無線網絡的結合。水源井遙控系統設計的方法是在移動基站信號無法覆蓋到控制區域的一種解決方案。隨著物聯網技術的發展,各種無線通信技術不斷涌現,其中目前使用較為廣泛的無線通信技術包括WiFi、ZigBee、Bluetooth、LoRa(低功耗廣域網絡)以及NB-IoT(窄帶物聯網)。WiFi、Zigbee 和Bluetooth 屬于局域網通信技術,廣泛使用在室內等短距離通信場所;LoRa 和NB-IoT屬于廣域網通信技術,廣泛使用在室外等長距離通信場所。LoRa 無線網絡其優點是組網及網絡運行成本較低,缺點是不適用于長距離遠程通信;NB-IoT 無線網絡其優點是通信距離長,特別適合跨區域遠程通信,缺點是不能自由組網及在通信數據量較大應用背景下成本偏高。LoRa 無線網絡與NB-IoT 無線網絡的結合,可實現兩者間優勢互補。LoRa 無線網絡與NB-IoT 無線網絡的結合要充分考慮兩者間通信速率問題,要盡量減少收發時延,避免出現收發不同步。隨著LoRa 無線通信和NB-IoT 無線通信的廣泛,LoRa 無線通信和NB-IoT 無線通信所涉及電路均已模塊封裝,形成批量生產的模組。目前LoRa 和NB-IoT 以模組形式使用,兩種模組數據接口有UART 串口、SPI 和I2C 三種,其中UART 串口使用較為廣泛,可通過UART 串口與MCU 芯片的串口連接,根據控制工藝要求,實現無線通信數據的傳輸。LoRa 模組和NB-IoT 模組與MCU 芯片連接的電路原理如圖3 所示。

圖3 無線模組與MCU 硬件設計圖
LoRa 模組采用E32-422T20S2T 型號設備,設備為基于SX1278 射頻芯片的串口模塊,可工作在410~441MHz頻段,默認頻率433MHz。E32-422T20S2T 型LoRa 模組具有定點發射和廣播發射兩種數據傳輸形式,定點發射時,只有接收方設置的“目標地址”和“信道號”與接收到的數據幀中包含的“目標地址”和“信道號”一致才可接收發送方的數據;廣播發射時,只要接收方的“信道號”與接收到的數據幀中的“信道號”一致均可接收數據。E32-422T20S2T 型LoRa 模組可工作在四種模式下,分別為一般模式、喚醒模式、省電模式、休眠模式。四種模式的選擇由模組的M0 和M1 引腳電平狀態組合決定,具體模式選擇如表1 所示。

表1 E32-422T20S2T型LoRa模組工作模式選擇
在使用E32-422T20S2T 型LoRa 模組時,M0 和M1 引腳不可懸空使用。在中繼設備與終端設備間的LoRa 無線通信時,與NB-IoT 無線通信相比較,其安全框架可分為MAC層安全、傳輸層安全和應用層安全。MAC 層安全保障終端設備與網絡服務器之間的雙向認證以及MAC 控制命令的傳輸安全,傳輸層保障網關與網絡服務器以及網絡服務器與應用服務器之間的數據傳輸安全,應用層安全保障入網過程中的雙向認證及數據載荷端到端的加/解密。[2]LoRa 無線通信的安全框架保證了端到端的安全。因此,終端設備上的數據傳輸的安全性主要通過端到端間的連接設置實現,E32-422T20S2T 型LoRa 模組參數設置格式如表2 所示。

表2 E32-422T20S2T型LoRa模組參數設置格式
水源井遙控系統分為終端和中繼兩部分,均由MCU為核心組成控制系統來實現各自功能。水源井遙控系統設計的第二個關鍵技術環節是為MCU 控制器進行程序設計。水源井遙控系統設計中所使用的MCU 型號為STM32F103ZET6,該MCU 內核為Cortex-M3,采用了Thumb-2 指令集,Thumb-2 指令集的使用既獲得了傳統的32 位ARM 的性能,又具有16 位Thumb 代碼的高代碼密度,使得32 位ARM 代碼和16 位Thumb 代碼的編譯可在單一操作模式下處理完成,提高了both 的執行時間、節省了指令存儲空間。
水源井主要任務是通過水泵抽取地下水,為水廠進一步生產提供可持續的水原料。其主要控制對象為水泵電機,監測的參數有水泵電機三相電壓、三相電流、有功功率、井口出水壓力和流量。首先要實現接收遠程信號對水泵電機的啟、停控制,并且要能將水泵電機實際啟、停狀態反饋給信號發送端。其次對水源井出水壓力和流量兩個模擬量通過MCU 模擬量通道采集,采集到的模擬量再通過MCU 的USART1 端口發送到上位機系統。最后MCU 通過Modbus RTU 協議與電量采集模塊通信測量水泵電機三相電壓、三相電流和有功功率。依據水源井控制要求對MCU 進行程序設計,程序流程圖如圖4 所示。

圖4 水源井遙控終端程序流程圖
水源井無線中繼主要實現LoRa 無線通信與NB-IoT 無線通信的互轉,兩者無線通信轉換的關鍵是MCU 控制器,因此需對MCU 進行相對應的程序設計。LoRa 模組和NBIoT 模組分別與MCU 的USART1 和USART2 兩個端口連接,通過對MCU 的USART1 和USART2 編程,完成從USART1到USART2 及以及從USART2 到USART1 的數據雙向轉發,可通過使用USART1 和USART2 的串行接收中斷,可降低USART1 與USART2 間的數據轉發延時,實現低延時轉發。此外,在接收和發送時均采用了CRC 校驗,保證了從接收到發送的中轉過程數據的準確性。根據以上控制要求,水源井無線中繼程序設計流程如圖5 所示。

圖5 水源井無線中繼程序設計流程圖
水源井遙控系統其功能主要實現水源井水泵電機的啟停、出水壓力和流量、水泵能耗電量的監測等。上位機需要通過遠程通信完成對水泵電機、出水壓力和流量、水泵能耗電量的監控,根據功能需要上位機系統劃分為用戶登錄模塊、通信設備監測模塊、運行監控模塊、數據記錄模塊和故障顯示模塊。上位機系統采用C#語言設計,C#語言是物聯網監控系統常用的編程語言,以.NET Framework 為基礎在各種類型應用程序編寫方面發揮著十分重要的作用,具有很高的安全性與穩定性,同時C#還具備完善錯誤的機制、異常處理的機制[3]。
通過點擊選擇站點,系統連接前端設備,將實時數據顯示在監控畫面中,如圖6 所示是運行監控畫面顯示。

圖6 運行監控模塊
(1)服務器代碼
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)客戶端代碼
byte[]Buffer = new byte[0x10000];
資料分析是確定技術方案的基礎性工作,將各種資料中的有用信息充分合理地利用起來,可以使更新后的協議書及附圖等成果資料內容更全面、權威,為鄉級行政區域界線勘定工作的順利開展提供可靠的依據。
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);
}
通過某水廠的水源井遙控系統實地軟硬件測試,達到預期控制效果,測試結果如下:
(1)LoRa 無線信號對水源井區域覆蓋率到100%,無掉線情況出現,信號強度穩定。
(2)壓力、流量等模擬量數據采集誤差在5%,水泵電壓、電流和有功功率誤差在1%,水泵啟停反饋信號延時在300ms~500ms 之間。
(3)水源井無線中繼與水源井終端間數據傳輸誤碼率低,CRC 校驗效果明顯。
水源井遙控系統設計以意法半導體公司的STM32F103 ZET6 為控制器,分別設計水源井終端設備和水源井中繼設備,水源井中繼設備的MCU 將LoRa 模組與NB-IoT 模組相結合,實現了LoRa 無線通信組網與NB-IoT 無線組網無縫對接,解決了水源井處無線通信信號的覆蓋強度低的問題。此外,采用C#語言設計的上位機可控制水源井水泵電機啟停,監控水泵運行狀態,水泵電機的能耗,水源井出水壓力和流量。水源井遙控系統的設計為無線通信信號較差的鄉村供水工程提供了一種數據采集的方案,且方案有較強的擴展性,可為跨區域水資源統籌套配及大數據統計提供基礎。