楊 欣 ,鄭 祿 ,帖 軍 ,解 偉
(1.中南民族大學 計算機科學學院,湖北 武漢 430076;2.湖北省制造企業智能管理工程技術研究中心,湖北 武漢 430076)
近年來,隨著物聯網在農業領域的應用,現代農業快速向智慧農業發展[1]。在“鄉村振興”戰略的推動下,農業物聯網將進一步推廣到廣泛的農村地區,以加快農業的轉型升級和高質量發展[2]。通過物聯網技術獲取的農業環境數據信息是智慧農業的基石,但部分農村地區存在通信問題,如有線網絡尚未建設且建設成本大、時間長;移動網絡信號不穩定,甚至沒有被覆蓋,這些情況給數據采集帶來極大的不便。
目前,利用常規通信方式實現數據采集方面,許多專家學者進行了深入研究,并取得相應的研究成果。文獻[3]提出采用以太網進行遠程、實時數據采集與傳輸;文獻[4]應用GPRS 等無線通信方式進行數據的遠程傳輸;文獻[5]在采集端結合ZigBee、LoRa 等WSN 技術延伸了數據采集的深度。上述研究成果在遠程數據采集工作中發揮了重要作用,但無法應用到通信盲區的區域。相比于受地區限制的通信方式,衛星通信的覆蓋范圍更廣,不存在通信盲區。
北斗短報文是北斗衛星導航系統的獨特功能,不依靠移動通信信號,利用衛星進行雙向通信,能夠提供全天候無盲區服務[6],目前已經用于森林防護[7]、電力調度[8]、應急搜救[9]等領域。北斗短報文通信覆蓋范圍大,不受地理位置限制,是現有通信網絡的有益補充;同時,北斗短報文也存在通信容量、頻率限制以及不可靠通信三方面的不足。文獻[10]結合ZigBee 與北斗短報文技術,在網關節點上嵌入北斗短報文模塊用于數據傳輸,但沒有對北斗短報文通信的不可靠性提出解決方案;文獻[11]提出并建立雙指揮機架構的自動氣象站數據傳輸系統,針對北斗短報文通信的不可靠問題采用重復發送策略,但沒有較好地利用通信資源;文獻[12]提出一種分布傳輸方法提高可靠性,但沒有充分利用北斗通信容量,小數據不能填滿電文內容,造成傳輸效率降低;文獻[13]提出采用丟包反饋重傳機制完善數據傳輸的可靠性,運用粘包機制提高小數據傳輸效率,根據分包機制實現大數據的正確傳輸,但沒有考慮多個發送端時接收端的反饋機制。
本文針對北斗短報文通信的特點,提出在發送端基于概率判斷的請求確認機制,使得發送端在不同環境中都能可靠傳輸且最大化傳輸效率;在接收端采用動態累積確認機制,保證在多對一通信場景下的可靠通信。本設計基于以上機制采用北斗短報文通信實現了偏遠地區等通信盲區的農業環境數據采集。
系統由多個環境數據監測站(包含北斗通信模塊)、數據處理服務器及云數據庫構成,如圖1 所示。系統實現基于北斗短報文的農業環境數據采集。環境數據監測站通過北斗通信模塊將數據發出,數據經過衛星的中轉被接收端的北斗通信模塊接收,數據解碼后存入云數據庫,完成數據采集。

圖1 農業環境數據采集系統框架
環境數據監測站由終端控制器、供電系統、傳感器組、北斗通信模塊構成,如圖2 所示。

圖2 系統硬件結構圖
終端控制器是環境數據監測站控制和數據處理的核心,由中央處理器、存儲器等構成。同時,為控制器配置ADC、UART、I2C 和RS485 等多種通信方式的軟硬件,可以與多種類型的傳感器進行通信。
系統采用太陽能電池板和儲能裝置為系統供電,提供直流5 V 和24 V 電壓,其終端斷控制器的供電電壓為5 V,傳感器的供電電壓為5 V 和24 V 兩種。
系統開發與測試中使用的北斗通信模塊為GYT2015C型北斗短報文一體機。該一體機采用北斗用戶數據接口協議4.0,其通信申請指令為“$TXSQ”。
農業環境數據是指農作物生長環境中的空氣溫度、濕度、光照、土壤濕度、土壤pH 值、二氧化碳含量、風速風向等影響作物生長和農事活動的環境數據。本系統中的環境數據監測站配備了12 項環境數據傳感器,可以滿足多種作物的種植需要。
農業種植中,作物的種植周期一般較長,對環境數據的采樣頻率要求較低,一般為5 min/次。因此,短報文的1 min 通信間隔可以滿足農業環境數據傳輸要求。同時,監測站會根據北斗同步的時間為每組環境數據添加時間戳。
北斗短報文通信具有全天候、無盲區通信的優勢,但在民用領域使用中存在通信容量、頻率以及不可靠通信3 方面的限制[14]。具體表現為:
(1)頻率限制:同一設備2 次發送數據之間必須等待一段時間,時間間隔大于等于1 min,所以通信頻率小于等于1 Hz。
(2)容量限制:民用終端單次有效通信的內容長度最大為78 B,因此只能傳輸較少的信息。
(3)通信不可靠:北斗衛星通信鏈路不可靠,表現為接收端接收短報文后不發回執信息,發送端無法確定數據是否發送成功。
對于不同的民用IC 卡,上述的限制條件可能不同。
為了滿足北斗短報文通信容量的要求,需要對北斗數據包的用戶數據部分進行協議設計。
2.3.1 發送端協議
環境數據發送端協議分為環境數據部分和標志位部分,協議格式如圖3 所示。

圖3 農業環境數據北斗傳輸協議封裝格式
環境數據部分根據不同數據項的大小分配字節數,在保證不損失數據的情況下,盡可能少地占用通信容量。為了進一步減少數據長度,采用如下規則:
(1)環境數據項的先后次序固定,每個數據項占用固定長度,不使用分隔符區分,接收端按照編碼順序即可對數據進行解碼和提取;
(2)每個環境數據項由2 個整數組成,分別代表實際數據值的整數和小數部分,其中小數部分保留2 位;
(3)每項環境數據只傳輸數值,不傳輸單位,數值為十六進制。
環境數據的字節分配如表1 所示。

表1 環境數據編碼格式
如溫度數據用2 B 表示,第1 字節最高位為符號位,0 為正,1 為負,其 余位表示數值;第2 字節表示小數部分,-25.25 ℃對應的編碼為0x99 0x19。
為實現基于北斗短報文的可靠傳輸,需要在有限的通信容量中拿出一部分用于傳遞非環境數據,即輔助標志位。標志位部分占用一定長度的字節,用來記錄數據的檢查控制信息,如表2 所示。

表2 環境數據發送端標志位編碼格式
2.3.2 接收端協議
接收端主要對發送端進行確認,返回丟失的數據編號、發送端的成功率以及等待回復的最長時間。發送端編碼如表3 所示。

表3 環境數據接收端標志位編碼格式
其中丟失編號用不定長度字節表示,表明自上一次確認后丟失的北斗數據包的序號,由用戶數據的時間戳來確認是否丟失,第一個字節表示丟失數據的個數,以后每個字節表示丟失數據的序號,最多記錄60 個丟失序號。
在環境數據發送端,環境數據加上標志位共43 B,小于78 B,滿足通信容量要求,并且為以后的擴展留有充足的容量。在環境數據接收端,確認數據包最長為72 B,小于78 B,也滿足通信容量要求。
為解決北斗短報文通信不可靠的問題,在滿足通信容量限制的情況下提出一套擴展功能的應用協議。結合北斗短報文通信的特點,本文采用改進的丟失重傳機制提高數據傳輸的可靠性,包括數據發送端基于概率判斷的請求確認機制和數據接收端的動態累計確認機制。
在現實場景中,北斗短報文一體機進行通信時會受天氣、障礙物、雜波等影響,使其通信成功率在60%~95%范圍內較大波動[15]。本文提出基于概率判斷的請求確認機制,依據通信成功率動態地調整請求的頻率。
北斗短報文一體機會設置初始的成功率,在通信過程中持續進行成功率統計,并保持對成功率的更新。該功能在接收端實現,再同步到發送端。
設某北斗短報文一體機通信的成功率為p,根據發送端本地是否存儲歷史環境數據,分為2 種模式。一種是本地未存儲數據模式,另一種是本地存儲數據模式。
當本地沒有存儲數據,即所有數據都已發送出去,此時通信次數充足,只要有數據就能立即發送出去。數據采樣的時間間隔為5 min,考慮到通信延遲以及設備處理需要的時間,則在5 min 內可以進行4 次通信,1 次用來發送最新產生的數據,3 次用來發送丟失的數據,則滿足:

其中,p 為通信的成功率,n′為發送端請求確認的間隔。由于n′為整數,對式(1)中n′向上取整:

即本地沒有存儲數據的發送端每發送n′次數據,向接收端請求1 次確認。
當本地存儲了若干數據時,發送端則會以最快的頻率(1 min/次)連續地發送數據。此時需要盡快地知道數據丟失的情況,從而盡快重發,則滿足:

其中,n″為發送端請求確認的間隔。同樣,n″為整數,對式(3)中n″向上取整:

即本地存儲數據的發送端每發送n″次數據,向接收端請求一次確認。
因此,根據發送端的成功率p,可以得出向接收端申請確認的間隔數。X 為本輪發送次數計數,當X<n 時,繼續發送數據;當X=n,即在本次發送數據時申請確認,X 在發送申請確認后置零。
在接收端,采用一個短報文一體機接收多個發送端的數據,并對每個發送端進行確認應答,因此每個發送端等待接收端確認的時間與發送端的總數量相關。本文提出接收端動態累積確認機制,根據數據發送端的數量動態調整應答頻率,并將最大等待時間發送給每個發送端,避免發送端等待超時而重復發送。
若有m 個發送端向1 個接收端發送數據,每個發送端的單次通信成功概率為pi,根據每個發送端的發送頻率可知其本地是否有存儲數據,通過式(2)或者式(4)可以得出每個發送端的發送間隔n。則對于沒有存儲數據的發送端,其申請確認的頻率為:

其中,f1為沒有存儲數據的發送端申請確認的頻率。
對于有存儲數據的發送端,其申請確認的頻率為:

其中,f2為有存儲數據的發送端申請確認的頻率。
所有的請求都會累積到接收端,所以接收端的確認頻率為:

其中,f 為接收端的確認頻率,m1為沒有存儲數據的發送端數量,m2為有存儲數據的發送端數量,且m1+m2=m。
最大等待確認的時間間隔為:

其中,Tmax表示最大等待確認的時間間隔,表示沒有存儲數據的第i 個發送端的請求確認間隔次數,表示有存儲數據的第j 個發送端的請求確認間隔次數。
接收端在每次向發送端進行確認時,會將當前實時計算的最大等待時間也一起發送給發送端。當發送端接收到之后立即更新本地最大等待時間。
為驗證本文提出的通信機制的有效性,在網絡仿真平臺OMNeT++(Objective Modular Network TestBed in C++)上進行仿真實驗,通過實際重傳率與理論重傳率對比來評估改進機制的可行性。在北斗短報文通信中,北斗短報文一體機發送的數據需要北斗通信衛星轉發,再被接收端接收。
本文仿真實驗實驗中定義了BDClient、BDServer 和BDSatellite 網元模塊,分別表示發送端、接收端和北斗衛星,其中北斗通信的不可靠特性由BDSatellite 單元實現。client、server 和satellite 分別是3 個網元模塊的實例,構成BDNet1 仿真網絡,如圖4、圖5 所示。

圖4 一對一通信仿真網絡

圖5 多對一通信仿真網絡
通過實驗重傳率和理論重傳率對比可以驗證基于概率判斷的請求確認機制。實際重傳率為:

其中,R1為時間重傳率,N1為實驗中統計的發送端發送數據包數量,N2為接收端接收數據包數量。在傳輸大量數據包時實際要傳輸的數據量等于接收端接收數據包數量N2。
在未設定最大重傳次數的情況下,理論重傳次數為:

其中,N3為理論重傳次數,C 為傳輸的數據包個數,q(0≤q≤1)為發送端理論單次通信成功率。
理論重傳率為:

其中,R2表示理論重傳率。
一對一通信仿真實驗共進行了8 次,每次傳輸超過2 000 個的數據包,單次通信的成功率設置為60%~95%,每次遞增5%。實驗結果如表4 所示。

表4 仿真實驗結果
一對多通信仿真實驗中,發送端的數量逐漸增加,當出現某個發送端等待確認的時間大于10 min 時,不再增加發送端的數據,此時發送端的數量即為最大值。實驗條件分兩種極端情況進行,最好的情況是每個發送端的通信成功率為0.95,且本地未存儲環境數據,此時接收端平均可以與73 個發送端完成數據傳輸;最壞的情況是每個發送端的通信成功率為0.60,且本地存儲環境數據,此時接收端平均可以與12 個發送端完成數據傳輸。
一對一通信網絡仿真實驗驗證發送端基于概率判斷的請求確認機制。在仿真實驗開始前,設置發送端的通信的成功率。實驗進行8 次,每次傳輸超過2 000 個數據包,單次通信的成功率設為60%~95%,每次遞增5%。根據表4 中的實驗結果,可得到如圖6 實驗重傳率與理論重傳率的對比圖。

圖6 實驗重傳率與理論重對比圖
從圖6 中可以得出,實際重傳率的折線與理論重傳率的折線趨勢相同,重傳率的平均差為0.95%。證明了本文提出的數據傳輸協議能保證北斗短報文通信的可靠性。
多對一通信網絡仿真實驗驗證接收端動態累積確認機制。在最好情況下,接收端平均可以與73 個發送端進行數據通信;在最壞情況下,接收端平均可以與12 個發送端進行數據通信。當發送端的情況介于最好和最壞情況之間,接收端平均可以為12~73 個發送端提供數據通信服務。
為了進一步驗證本文提出的改進機制的有效性,將基于北斗短報文通信的環境數據監測設備在湖北省宜昌市長陽土家族自治縣內2 個農業種植基地(都鎮灣鎮茶葉基地和漁峽口椪柑基地)進行部署和測試,如圖7所示。

圖7 湖北長陽種植基地環境數據監測站
由于地處偏僻山區,設備A 所處位置移動通信網絡信號不穩定,設備B 所處位置沒有移動通信網絡信號。
在測試中,2 臺設備持續運行,每臺設備分別統計3個時間段內的數據發送和接收信息,進而計算出設備的單次通信成功率和數據傳輸成功率。數據如表5 所示。
在實地測試中,不同地點的單次通信成功率受環境影響而不同,同一地點的單次通信成功率不同時間段受環境影響也會不同。如表5 所示,設備A 在不同時段的測試下,其多次通信的平均成功率分別為90.98%、86.90%、91.99%;設備B 在不同時段的測試下,其多次通信的平均的成功率分別為88.96%、83.02%、81.49%。采用改進的通信機制后,其數據傳輸的成功率均能達到99%以上。

表5 實際測試結果
隨著北斗全球衛星導航系統建成,北斗衛星通信將為全球提供定位、導航和通信服務。北斗短報文通信將為偏遠地區農業環境數據采集傳輸提供便捷的低成本通信服務。本文基于北斗短報文的可靠農業環境數據傳輸機制,針對北斗短報文的通信容量限制,對農業環境數據進行編碼節省通信容量;針對北斗短報文的不可靠通信,提出基于概率判斷的請求確認機制和動態累積確認機制,并通過仿真實驗驗證了系統機制的可行性。在湖北長陽縣內進行實地試驗,使發送端的傳輸成功率隨環境動態變化情況下也能使數據傳輸的成功率提升至99%以上。本文提出的基于北斗短報文的農業環境數據采集機制為偏遠地區的農業環境數據采集提供了經濟、便捷、可靠的方案,具有一定的應用和推廣的價值。