中圖分類號:TP311.52 文獻標志碼:A 文章編號: 1000-5013(2025)04-0455-07
Design and Implementation of Real-Time Soil Data Monitoring Software Based on UDP Multicast Protocol
MEI Xiaohua,HUANG Caihong,DONG Yuying (School of Information Science and Engineering,Huaqiao University,Xiamen 36lO21,China)
Abstract:To address the requirements of generality and scalability in real-time data monitoring of mainstream soil monitoring systems,a hierarchical visualization software design framework for Model-View-View Model (MVVM) based on user datagram protocol (UDP) multicast real-time data stream is proposed. The framework adopts UDP multicast at the external interface layer to achieve“one to many”client extension capability. Meanwhile,an improved MVVM model is adopted at the human-computer interaction layer to achieve universal visualization of multi-dimensional soil data. Experimental results show that the proposed software can meet the real-time soil monitoring needs of agricultural experts and farmers,overcoming the limitations of traditional offline guidance,efectively resucing labor costs,and contributing to the advancement of smart agriculture.
Keywords:soil monitoring;user datagram protocol; Model-View-View Model; smart agriculture
土壤信息的實時獲取有助于掌握農田土壤生態(tài)質量狀況,在土壤質量評估和農業(yè)可持續(xù)發(fā)展中發(fā)揮著重要作用。通過對土壤實時監(jiān)測,能夠及時了解土壤中水分、氮磷鉀等養(yǎng)分含量、酸堿度和有機質含量等數(shù)據(jù)。通過土壤濕度數(shù)據(jù)的變化趨勢可以預測未來的土壤水分狀況,從而合理安排灌溉計劃;通過土壤養(yǎng)分含量數(shù)據(jù),可以提供科學的施肥建議,保證農作物可持續(xù)化生長,優(yōu)化農業(yè)產(chǎn)量和質量,降低能耗。因此,需要通過數(shù)字化的技術手段實現(xiàn)更精確、更智能的土壤數(shù)據(jù)實時監(jiān)測,助力智慧農業(yè)[1]?;诖耍疚奶岢鲆环N基于用戶數(shù)據(jù)報協(xié)議(UDP)組播協(xié)議的土壤數(shù)據(jù)監(jiān)測軟件。
土壤監(jiān)測系統(tǒng)概述
1.1 設計原則
土壤監(jiān)測系統(tǒng)的設計目標主要是精準實時地檢測土壤狀況,并將監(jiān)測系統(tǒng)中各類傳感器的數(shù)據(jù)傳輸至各監(jiān)測終端軟件,以供專家分析和農戶跟蹤,從而進行有針對性地施肥[2]。其設計原則主要包括:1)土壤監(jiān)測系統(tǒng)由軟、硬件系統(tǒng)集成,硬件系統(tǒng)主要實現(xiàn)傳感器采集,軟件系統(tǒng)主要實現(xiàn)數(shù)據(jù)的處理和可視化;2)發(fā)揮軟件遠程數(shù)據(jù)可視化的優(yōu)勢,將各節(jié)點的傳感器數(shù)據(jù)以曲線或圖表的方式展示給領域專家和農戶;3)軟件與各傳感器之間通過一對多的網(wǎng)絡通信方式實現(xiàn)實時數(shù)據(jù)的最大化共享[3-4]。
1. 2 系統(tǒng)部署
土壤監(jiān)測系統(tǒng)主要由前端數(shù)據(jù)采集子單元和后端實時監(jiān)測子單元組成[5-6],其中,前端數(shù)據(jù)采集子系統(tǒng)包括主控模塊、土壤參數(shù)檢測模塊、網(wǎng)絡通信模塊,后端實時監(jiān)測子系統(tǒng)主要由數(shù)據(jù)采集計算機、數(shù)據(jù)處理計算機、終端顯示計算機和數(shù)據(jù)管理服務器組成。土壤監(jiān)測系統(tǒng)硬件部署圖,如圖1所示。
傳感器組用于對氮磷鉀含量、土壤濕度、pH值和電導率等土壤參數(shù)進行實時監(jiān)測[7};主控模塊用于數(shù)據(jù)采集和組包;通信模塊通過網(wǎng)絡協(xié)議將組包后的土壤數(shù)據(jù)和設備工作狀態(tài)數(shù)據(jù)傳輸至后端實時監(jiān)測子系統(tǒng)的交換機。數(shù)據(jù)采集計算機通過交換機獲取通信模塊傳輸過來的數(shù)據(jù)包分離出土壤數(shù)據(jù)和設備工作狀態(tài)數(shù)據(jù),解析設備工作狀態(tài)數(shù)據(jù)后,將土壤數(shù)據(jù)發(fā)送至數(shù)據(jù)處理計算機進行解析處理,處理后的設備工作狀態(tài)數(shù)據(jù)、土壤數(shù)據(jù)均發(fā)送至終端顯示計算機,解析后的設備工作狀態(tài)數(shù)據(jù)、土壤數(shù)據(jù)及各類原始數(shù)據(jù)均存人數(shù)據(jù)管理服務器。
后端實時監(jiān)測子單元由土壤監(jiān)測系統(tǒng)的多個軟件組成,包括土壤數(shù)據(jù)采集軟件、土壤數(shù)據(jù)處理軟件、土壤數(shù)據(jù)歸檔軟件及土壤數(shù)據(jù)實時監(jiān)測軟件。土壤監(jiān)測系統(tǒng)軟件部署,如表1所示。
2 土壤數(shù)據(jù)實時監(jiān)測軟件的設計與實現(xiàn)
在土壤監(jiān)測系統(tǒng)中,土壤數(shù)據(jù)實時監(jiān)測軟件作為核心部件,不僅能為農業(yè)專家、農戶提供實時測試數(shù)據(jù),還能在專家、農戶需要的時候提供歷史土壤數(shù)據(jù)的查詢和下載。RDS軟件通過網(wǎng)絡接收來自前端數(shù)據(jù)采集設備(數(shù)據(jù)采集計算機、數(shù)據(jù)處理計算機)的物理量參數(shù),包括土壤數(shù)據(jù)(氮磷鉀含量、土壤濕度、pH值和電導率等)和設備工作狀態(tài)(設備數(shù)據(jù)采集是否正常、數(shù)據(jù)通信是否正常等)數(shù)據(jù),并將解析后的物理量參數(shù)以曲線、表格的方式形象直觀地提供給農業(yè)專家、農戶進行參考和分析,方便用戶及時了解土壤狀況及土壤監(jiān)測設備的工作狀態(tài)。為了實現(xiàn)友好的人機交互效果,RDS軟件采用基于 C? 語言的WPF框架進行開發(fā)。
2.1 軟件設計思想
RDS軟件在設計上需要直接面對用戶進行數(shù)據(jù)展示,因此,采用基于 C? 語言的WPF框架,利用軟件分層與模塊化設計,增加軟件的通用性,使開發(fā)人員只需修改軟件配置文件,就可適用不同項目的有效載荷測試需求[8-9]。RDS軟件功能模塊結構圖,如圖2所示。
1)外部接口層。實現(xiàn)RDS 軟件與前端設備、數(shù)據(jù)庫和本地硬盤的數(shù)據(jù)存儲與讀取,RDS 軟件通過網(wǎng)絡接收來自前端數(shù)據(jù)采集設備的土壤實時監(jiān)測數(shù)據(jù)和設備工作狀態(tài)數(shù)據(jù),并且為用戶提供數(shù)據(jù)庫的檢索功能,從數(shù)據(jù)庫中讀取歷史數(shù)據(jù)文件路徑、歷史土壤監(jiān)測數(shù)據(jù)及解析方法等信息,下載需要的歷史數(shù)據(jù)和文件。
2)數(shù)據(jù)校驗層。該層主要完成對實時數(shù)據(jù)的差錯校驗與恢復。由于RDS軟件與前端設備的數(shù)據(jù)鏈路采用UDP組播通信的方式,可能存在數(shù)據(jù)幀丟失或解析錯誤的情況,并且對數(shù)據(jù)庫的數(shù)據(jù)檢索也需要進行必要的日期、字段等校驗,所以,數(shù)據(jù)校驗層要提供傳輸幀校驗、檢索指令和數(shù)據(jù)校驗等功能。
3)數(shù)據(jù)解析層。根據(jù)土壤監(jiān)測系統(tǒng)內部數(shù)據(jù)接口協(xié)議,按照偏移位置、解析值和源碼等字段對經(jīng)過校驗的實時數(shù)據(jù)幀進行處理,提取工程參數(shù)、遙測參數(shù)和設備工作狀態(tài)數(shù)據(jù)等物理量,同時根據(jù)用戶的檢索條件,將歷史數(shù)據(jù)和文件的檢索條件轉換成結構化查詢語言(SQL),或將檢索到的歷史數(shù)據(jù)和數(shù)據(jù)文件目錄發(fā)送至人機交互層進行顯示。
4)人機交互層。將數(shù)據(jù)解析層的計算結果、歷史數(shù)據(jù)和文件的檢索結果通過圖表等方式實時顯示給農業(yè)專家和農戶,該部分采用面向實時數(shù)據(jù)流的模型-視圖-視圖模型(Model-View-ViewModel,MV-VM)設計模式,通過ViewModel與View的數(shù)據(jù)綁定模型,提高測試數(shù)據(jù)的可視化程度。
2.2 外部接口層設計
外部接口層包括UDP 組播通信模塊、數(shù)據(jù)庫通信模塊和硬盤輸人/輸出(IO)讀寫模塊,其中,UDP組播通信模塊采用UDP組播的方式實時接收來自前端設備的各類測試數(shù)據(jù),數(shù)據(jù)庫通信模塊采用ADO技術進行數(shù)據(jù)通信。
2.2.1 UDP組播通信RDS軟件部署在多臺終端顯示計算機上,通過網(wǎng)絡接收從接收數(shù)據(jù)采集計算機、數(shù)據(jù)處理計算機發(fā)送的設備工作狀態(tài)數(shù)據(jù)和土壤實時監(jiān)測數(shù)據(jù),支持農業(yè)專家、農戶實時監(jiān)視土壤監(jiān)測數(shù)據(jù)和系統(tǒng)各傳感器的工作狀態(tài)。RDS 軟件與前端數(shù)據(jù)采集設備的通信采用UDP 組播技術,而不是傳統(tǒng)的傳輸控制協(xié)議(TCP)或UDP 點對點通信方式,這樣可以避免傳統(tǒng)通信方式在“一對多”的情況下出現(xiàn)的網(wǎng)絡擁塞,減少前端數(shù)據(jù)采集設備的計算負荷[0-11]。
WPF 中實現(xiàn)組播技術有2種編程模式:一種是傳統(tǒng)的 socket編程;另一種是封裝后的UdpClient類,后者對前者進行封裝,編程上更簡潔,RDS 軟件采用UdpClient類以輪詢的方式接收組播數(shù)據(jù)[12-13]。組播數(shù)據(jù)接收功能程序塊,如圖3所示。
上述組播發(fā)送函數(shù)中,UdpClient 類初始化后得到實例 receiveUdp,receiveUdp 的 receive方法以阻塞的形式讀取組播數(shù)據(jù),接收到一個完整的有效載荷工程參數(shù)幀或遙測參數(shù)幀后,退出receive方法,并將接收到的數(shù)據(jù)通過緩沖區(qū)送到數(shù)據(jù)解析層。
2.2.2數(shù)據(jù)庫通信土壤監(jiān)測系統(tǒng)的數(shù)據(jù)庫部署在Windows Server2OO8 的數(shù)據(jù)管理服務器上,管理
服務器上裝有Oracle數(shù)據(jù)庫軟件,RDS軟件采用ActiveX數(shù)據(jù)對象(ADO)技術與數(shù)據(jù)庫進行通信,ADO是微軟提出的應用程序接口(API),用以實現(xiàn)訪問關系或非關系數(shù)據(jù)庫中的數(shù)據(jù),Ora-cle數(shù)據(jù)庫提供對ADO框架的托管封裝ODP.NET驅動,在實際使用過程中,無需安裝整個ODP.NET驅動套件,RDS軟件只需引用其中的Oracle.ManagedDataAccess.dll即可與數(shù)據(jù)庫進行通信[14]。數(shù)據(jù)庫訪問功能程序,如圖4所示。
由于RDS軟件對數(shù)據(jù)庫的訪問頻次不高,農業(yè)專家、農戶一般根據(jù)需要查看數(shù)據(jù)文件,因此在查詢前連通數(shù)據(jù)庫,查詢結果后返回關閉連接,從而有效減少數(shù)據(jù)庫在線維護的新連接數(shù)量。
2.3 數(shù)據(jù)校驗層設計
數(shù)據(jù)校驗層提供了對接收到的各類土壤實時監(jiān)測數(shù)據(jù)幀、歷史數(shù)據(jù)文件名和字段信息合法性的校驗,其中,由于前端數(shù)據(jù)采集設備與RDS 軟件采用UDP 組播連接,監(jiān)視過程中實時接收到的土壤實時監(jiān)測數(shù)據(jù)幀不存在干擾導致的數(shù)據(jù)錯誤,所以不用進行糾錯碼校驗,但要按照數(shù)據(jù)幀格式進行必要的幀頭、幀長及幀類型等校驗。土壤實時監(jiān)測數(shù)據(jù)幀字段信息說明,如表2所示。
2.4數(shù)據(jù)解析層設計
數(shù)據(jù)解析層對接收到的各類土壤實時監(jiān)測數(shù)據(jù)幀按照應用數(shù)據(jù)段的解析配置信息進行解析,同時對用戶檢索到的歷史數(shù)據(jù)和歷史數(shù)據(jù)文件按字段進行解析,解析后將結果發(fā)送至人機交互層進行顯示。
其中,實時參數(shù)對土壤實時監(jiān)測數(shù)據(jù)幀的解析采用數(shù)據(jù)幀驅動的方式,接收到一幀完整數(shù)據(jù)幀后才進行解析。RDS軟件數(shù)據(jù)解析流程圖,如圖5所示。
2.5 人機交互層設計
RDS軟件作為土壤實時監(jiān)測數(shù)據(jù)、設備工作狀態(tài)的顯示部件,要求提供友好的數(shù)據(jù)顯示與操作交互界面,便于有效農業(yè)專家、農戶直觀地監(jiān)視土壤狀態(tài)、設備的工作狀態(tài),及時發(fā)現(xiàn)存在的異常信息,因此人機交互層的設計對數(shù)據(jù)可視化程度和操作安全性要求較高等。
目前主流的軟件前端設計模式主要有3類:模型-視圖-控制器(Model-View-Controller,MVC)、模型-視圖-表示模式(Model-View-Presenter,MVP)和MVVM。Model提供數(shù)據(jù),View負責顯示,Con-troller/Presenter負責邏輯的處理,MVP和MVVM是基于MVC模式的改進,其主要改進思想是將View與Model層徹底分離。
MVVM由微軟 WPF和 Silverlight 的架構師Ken Cooper 和 TedPeters 開發(fā),是一種簡化用戶界面的事件驅動編程方式,由John Gossman 于2005年發(fā)表[15]。它利用數(shù)據(jù)綁定、屬性依賴、路由事件、命令等特性實現(xiàn)高效靈活的架構,不同于傳統(tǒng) C? 語言的WinForm架構,MVVM的核心是數(shù)據(jù)驅動即ViewModel,ViewModel是View和Model的關系映射。典型的MV-VM軟件設計模式,如圖6所示。
由圖6可知:傳統(tǒng)的MVVM設計模式在Model層除了有數(shù)據(jù)實體Entity(一般采用Hibernate持久化技術生成)外,還有大量的業(yè)務邏輯。因此,目前MVVM主要大量用于Web項目的建設,在面向實時數(shù)據(jù)流的項目
領域應用不多,RDS軟件為了實現(xiàn)實時數(shù)據(jù)流和數(shù)據(jù)庫數(shù)據(jù)在用戶界面(UI)交互上的統(tǒng)一,將所有業(yè)務邏輯放置至數(shù)據(jù)解析層,而Model層僅保留數(shù)據(jù)實體,從而實現(xiàn)實時數(shù)據(jù)流和數(shù)據(jù)庫數(shù)據(jù)的實時交互,并支持頁面數(shù)據(jù)顯示的自定義布局。RDS軟件實際MVVM設計模式圖,如圖7所示。RDS 軟件MVVM類功能說明,如表3所示。
因此,RDS軟件在人機交互層具體實現(xiàn)MVVM設計模式時,根據(jù)外部接口層的特點,采用與傳統(tǒng)MVVM不同的方式,主要有以下2點不同。
1)傳統(tǒng)MVVM中Model層包含了業(yè)務邏輯和實體,而RDS軟件將Model層中的大部分業(yè)務邏輯剔除,劃分至數(shù)據(jù)解析層。
2)ViewModel與View采用了一對多的設計,可以有多個View共享一個ViewModel。
此外,農業(yè)專家、農戶可根據(jù)自身需要選取關注的數(shù)據(jù),組成新的頁面進行顯示。該頁面不僅提供表格和曲線兩種顯示方式,還配備越界報警功能。RDS軟件人機交互界面,如圖 8~11 所示。
3結束語
土壤數(shù)據(jù)實時監(jiān)測軟件是土壤監(jiān)測系統(tǒng)與用戶的主要交互部件,提供土壤實時監(jiān)測數(shù)據(jù)(氮磷鉀含量、土壤濕度、pH值和電導率等土壤參數(shù))和系統(tǒng)硬件設備工作狀態(tài)的顯示,以及支持歷史數(shù)據(jù)及其文件的查詢。該軟件通過分層模塊化設計,并在人機交互層采用MVVM設計模式,提高了土壤數(shù)據(jù)的可視化程度。采用UDP組播的數(shù)據(jù)通信方式,便于顯示終端的靈活組網(wǎng)與擴展,具有較好的通用性和可擴展性。土壤監(jiān)測系統(tǒng)的長期實際運行效果表明,該軟件能夠滿足農業(yè)專家、農戶對土壤實時狀態(tài)的監(jiān)測需求。
參考文獻:
[1]張志穎,李虬,何雅彤,等.基于物聯(lián)網(wǎng)的大承包地土壤數(shù)據(jù)實時分析監(jiān)測系統(tǒng)[J].電腦知識與技術,2024,20(26):86-90.
[2]強云濤,楊家桂.基于多傳感器技術土壤質量在線監(jiān)測系統(tǒng)設計[J].電子制作,2024,32(14):15-18.DOI:10.3969/j. issn. 1006-5059.2024.14.004.
[3]劉曉霞,李航,商國旭,等.基于云平臺的大田農業(yè)土壤摘情數(shù)據(jù)采集監(jiān)測系統(tǒng)設計[J].赤峰學院學報(自然科學版),2023,39(10):75-82.DO1:10.3969/j.issn.1673-260X.2023.10.013.
[4]李從宏,陳楊淵.基于 c? 的土壤滲透系數(shù)測量系統(tǒng)上位機軟件設計[J].電腦編程技巧與維護,2024(11):40-42.DOI:10.3969/j.issn.1006-4052.2024.11.012.
[5]謝亮,陳天偉.數(shù)據(jù)采集分析軟件的設計與實現(xiàn)[J].自動化與儀器儀表,2021(12):129-133.DOI:10.14016/j.cnki.1001-9227.2021.10.129.
[6]張春美,全釗鋒,吳樹添,等.基于物聯(lián)網(wǎng)技術的智慧農業(yè)環(huán)境監(jiān)測系統(tǒng)設計[J].電子制作,2024,32(15):37-40.DOI:10.3969/ j.issn.1006-5059.2024.15.010.
[7]鐘國財,郝澤亮,謝東東,等.土壤熵情遠程監(jiān)測系統(tǒng)軟件設計[J].物聯(lián)網(wǎng)技術,2018,8(3):26-28.DOI:10.16667/j.issn. 2095-1302.2018.03.004.
[8]張玉民,何鑫,楊百川.基于WPF技術的無人機地面站軟件設計與實現(xiàn)[J].計算機工程與設計,2019,40(4):1167-1173.DO1:10.16208/j. issn1000-7024.2019.04.043.
[9]陳帥.基于網(wǎng)絡/WPF技術的無人機地空數(shù)據(jù)傳輸與監(jiān)視系統(tǒng)設計[D].南京:南京航空航天大學,2020.
[10]SAMPAIO A,SOUSA P.An adaptable and ISP-friendly multicast overlay network[J].Peer-to-Peer Networkingand Applicati0ns,2018,12(4) :809-829. DOI:10.1007/s12083-018-0680-y.
[11]AL HASROUTY C,LAMALI M L,AUTEFAGE V,et al. Adaptive multicast streaming for videoconferences onsoftware-defined networks[J]. Computer Communications,2018,132:42-55.DOI:10.1016/j.comcom.2018.09.009.
[12]吳小鋒,劉曉波,趙逸飛,等.UDP協(xié)議及IP組播通信模型在水電廠監(jiān)控系統(tǒng)中的應用研究[J].中國水利水電科學研究院學報(中英文),2024,22(6):632-639.DOI:10.13244/j.cnki.jiwhr.20240055.
[13]諸堅彬,秦會斌,崔佳冬,等.基于組播技術的信息傳遞[J].計算機應用與軟件,2016,33(8):172-174,205.DOI:10.3969/j.issn.1000-386x.2016.08.038.
[14]李遠文,耿富強.基于ODP.NET訪問Oracle空間數(shù)據(jù)[J].礦山測量,2014(3):96-98.DOI:10.3969/j.issn.1001-358X.2014.03.33.
[15]柴青山.基于MVVM模式的Vue.js框架在物流軟件自動化測試系統(tǒng)中的應用研究[D].北京:北京郵電大學,2019.
(責任編輯:黃曉楠 英文審校:陳婧)