文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181735
中文引用格式: 趙小強,陳玉兵,高強,等. 基于Modbus協議的農田氣象信息監測站設計[J].電子技術應用,2018,44(12):55-59,64.
英文引用格式: Zhao Xiaoqiang,Chen Yubing,Gao Qiang,et al. Design of farmland meteorological information monitoring station based on Modbus protocol[J]. Application of Electronic Technique,2018,44(12):55-59,64.
0 引言
隨著“互聯網+”現代農業高速發展,如何科學有效地提高農田的生產、經濟、環境效益已經成為現階段農業亟待解決的重大問題[1-2]。無線傳感器網絡作為信息感知和無線傳輸的橋梁,具有低功耗、易集成、低價格等特點,是農田規模化密集節點部署的首選方案[3-4]。通過各傳感器節點實時動態感知作物生長要素與環境信息,是實現高效農業的基礎[5-6]。美國、日本、荷蘭等發達國家在農田信息感知領域取得了長足發展,形成了精準農業網絡體系[7]。
精準農業對于農田環境信息獲取的實時性要求較高,但是一般各傳感器節點均采用電池供電,為了降低網絡負載,延長網絡生存周期,通常數據采集的周期過長,實時性較差,不能及時對作物生長環境信息進行評價與分析,無法保證最佳生長要素補給,是精準農業發展所面臨的壁壘之一[8-9]。考慮農田傳感器節點實際應用場景通常采用人為預設的確定性部署方式,本文提出將空氣濕度、光照度等傳感器掛載于串行總線,通過Modbus通信協議輪詢與各個傳感器進行數據交互,整套系統采用太陽能供電,既保障了數據采集以及傳輸實時性,也彌補了傳統監測方式下,單一節點測量參數單一的不足。最終將數據傳輸至云平臺進行統計分析與處理,對我國從傳統農業向現代農業的轉型升級具有重要的意義。
1 系統原理
農田氣象信息監測站采用RS485總線訪問控制策略,搭載Modbus RTU通信協議實現田間作物生長要素信息實時采集。Modbus串行鏈路協議采用主從(Master/Slave)方式,實現主站Master向從站Slave數據請求以及Slave端向Master端的響應請求,實現雙向數據交互[10]。通過設置不同的從站傳感器地址,達到主站輪詢訪問土壤溫度、土壤水分、土壤電導率、空氣溫度、空氣濕度、田間風速、田間風向、光照強度、輻射總量傳感器節點的目的,通信雙方使用CRC16循環冗余校驗,實現數據傳輸檢錯,保證數據傳輸的正確性和完整性。解析后的傳感器數據通過4G全網通模塊SIM7600CE采用EDP通信協議傳輸至OneNET云平臺,實現數據多樣化展示和分析處理。系統結構如圖1所示。
2 硬件設計
2.1 核心控制器電路
STM32F103RCT6是ST公司ARM 32位Cortex-M3內核CPU,最高工作頻率可達72 MHz,芯片內部外設與通信接口豐富。外圍核心電路主要包含RESET按鍵復位電路、8 MHz晶振電路、32.768 kHz RTC時鐘晶振電路、BOOT 啟動模式選擇電路、電源濾波電路,以及維持后備區域數據存儲和RTC運行的VBAT紐扣電池供電電路。核心控制器電路設計如圖2所示。
2.2 Modbus RS485采集電路
采用8路RS485接口掛載到SP3485的驅動器同相輸出A端口和反向輸出B端口,并將阻值為120 Ω的終端匹配電阻并聯至A、B端口,同時,將兩個阻值為360 Ω的偏置電阻分別接入A、B端口線路中,保證電路在空閑狀態下,485總線維持在邏輯1狀態,避免開始接收時出現亂碼等不可預測情況。接收器輸出使能RE端口與驅動器輸出使能DE端口連接至核心控制器同一通用IO口,通過邏輯電平0或1的變化即可實現接收與發送控制。將RO輸出與DI輸入端口連線至STM32的串口2,主控器即可按照Modbus協議輪詢訪問各個傳感器,各傳感器通過總線上地址信息判斷是否與自身匹配實現對總線信息的響應。電路設計如圖3所示。
2.3 數據采集儀電源電路
電源電路采用TI公司LM2596系列開關電源調節器,支持最大40 V寬電壓輸入,3 A負載電流輸出。VIN輸入端并入680 μF低ESR高速鋁電解電容,抑制輸入端電壓突變,布線時需使用短連接,盡量使電容靠近器件VIN管腳。Out輸出端通過逆向電壓保護二極管SS54,防止逆向電壓對電路造成損毀。其額定工作電流為5 A,1.7倍于負載電流,滿足設計需求。Out輸出端對33 μH電感持續充電,通過電感為各負載進行穩定放電,保證負載供電穩定性與可靠性。再經過Feedback與Out端旁路電容濾波作用,即可得到5 V穩態電壓。由于主控器STM32為3.3 V供電,所以選取AMS公司低壓差線性穩壓LDO系列AMS117-3.3,通過濾波電容濾除尖峰和毛刺后就可獲得3.3 V平滑穩定電壓。電路設計如圖4所示。
2.4 網關節點核心電路
數據采集儀獲取各傳感器數據后,通過網關節點將數據傳輸至OneNET云平臺。網關節點選取SIM7600CE,低功耗實現SMS和海量數據信息高速傳輸。SIM7600CE支持GSM、TD-SCDMA、CDMA、WCDMA、TDD-LTE和FDD-LTE等頻段。設計實現了外部4G主天線MAIN_ANT、4G輔天線AUX_ANT和GPS天線GNSS_ANT,在模塊和天線之間的走線必須保證50 Ω走線阻抗。模塊通過3.8 V VBAT接口為內部射頻和基帶電路供電。為確保耗電流達到2 A時VBAT電壓跌落不低于3.4 V,在VBAT輸入端加入旁路0.1 μF陶瓷電容,以改善射頻性能及系統穩定性,并通過NET指示燈顯示網絡連接狀態。為避免浪涌和過壓對模塊造成損壞,在VBAT引腳并聯了100 μF/6 V的電解電容以實現模塊保護。模塊自帶VDD_EXT LDO可調電壓輸出,最大支持150 mA電流,用于其他電路供電。VDD_1V8為內部1.8 V穩態電壓輸出,可為電平轉化電路供電。核心電路設計如圖5所示。
2.5 USIM卡接口電路設計
為實現USIM卡靜電防護,選取SRV05-4瞬態抑制TVS陣列,實現對IO、SCK、RST 3條I/O高速數據線和VCC的靜電防護處理。其內部集成8只控向二極管,構成兩個“橋”式整流電路,并通過共用一只“雪崩二極管”構成ESD防護電路。該電路可將正ESD經導向由雪崩二極管進行箝位,對負ESD由控向二極管箝位,具有良好的ESD防護特性。USIM卡接口靜電防護性能,直接影響網絡通信的穩定性與可靠性,這也是農田氣象信息監測站設計時網關節點必須具備的特性。電路設計如圖6所示。
3 軟件設計
3.1 Modbus協議03H功能碼
主控板通過Modbus協議讀取各個傳感器數據時,使用功能碼03H,通過STM32串口2進行通信,通信波特率設置為9 600 b/s,無硬件流控。通過03H功能碼對從機訪問時,數據格式為:從機地址+功能碼+寄存器首地址+寄存器數量+校驗碼。發送03H指令,查詢1個或多個保持寄存器程序如下:
void MOD_Send03H(u8 addr, u16 reg, u16 num)
{Mod.TxCount = 0;
Mod.TxBuf[Mod.TxCount++] = addr;
Mod.TxBuf[Mod.TxCount++] = 0x03;
Mod.TxBuf[Mod.TxCount++] = reg >> 8;
Mod.TxBuf[Mod.TxCount++] = reg;
Mod.TxBuf[Mod.TxCount++] = num >> 8;
Mod.TxBuf[Mod.TxCount++] = num;
MOD_SendAckWithCRC();}
3.2 串口空閑中斷+DMA接收
針對微處理器串口接收方式的優缺點,結合Modbus通信幀格式,本文提出采用串口空閑中斷+DMA接收方式實現串口數據接收。采用此方式時,處理器在接收到一個字節時,不會產生串口中斷,而是通過DMA在后臺把數據搬到指定的緩沖區里面,當接收空閑時隙超過一字節時間,默認一幀數據接收完成,才產生一次中斷,進而啟動串口狀態機,計算幀長度,進行相應解析處理。這也滿足Modbus RTU報文幀有著嚴格的幀間t3.5和幀內t1.5空閑時隙間隔的要求。該方式也可實現不定長數據的接收,極大增加了串口接收程序的通用性以及處理器效率。
3.3 傳感器輪詢采集實現
通過不同的RTU串行總線地址,依次實現對各個傳感器的訪問。程序中利用定時器定時10 min,開啟數據采集操作,定時器中斷時間設置為0.5 s,每進中斷一次,進行一次“喂狗”操作。自定義采集函數中設置靜態變量I,默認取值為0時,發送采集指令;值為1時,解析串口接收到的傳感器數據。在開啟數據采集操作后,每次進入定時器中斷,就進行一次I取值判斷。靜態變量J用來記錄單個傳感器訪問出錯次數,如果連續3次訪問出現錯誤,則認為傳感器故障,轉向下一個傳感器數據采集。靜態變量K表示當前采集的傳感器標號,如果對應傳感器數據采集成功,則主動訪問下一個標號傳感器。
3.4 網關節點數據上傳
網關節點SIM7600CE 4G通信模塊主要負責將感知層采集單元處理后的農田環境信息發送到物聯網OneNET云平臺以及接收云平臺下發的控制指令。一般情況下,各種物聯網設備接入服務器采用HTTP協議實現,在接收服務器下發的消息時,必須通過主動輪詢訪問服務器的方式,存在效率低和實時性較差等不足。采用EDP協議后,網關節點通過心跳幀與服務器建立雙向連接,實現及時的數據上傳以及接受平臺下發的指令。感知層單元與網絡層云平臺建立通信連接并完成數據上傳和云端存儲的流程如下:
(1)與OneNET服務器建立TCP連接:首先,串口發送“+++”使模塊退出透傳模式,接下來依次發送對應AT指令與服務器建立連接。
(2)發送設備連接請求:將設備編號ID和鑒權碼APIKey按照EDP請求格式打包為二進制數據包,向OneNET發送數據,通過設備鑒權后才能對平臺中對應設備下的數據流上傳數據。
(3)發送用戶數據:EDP協議封裝的數據包分為兩部分,一部分為設備連接請求,另一部分為設備所發送的數據。將采集到的數據按JSON格式放到對應數據流,并按照EDP協議進行封裝打包成相應的二進制數據包,再發送給至OneNET云平臺。
4 數據測試及分析
4.1 數據采集上傳
選取陜西乾縣羅家嶺雙矮蘋果園區進行設備實驗測試。設定10 min進行一次數據采集,并將數據傳輸至云平臺服務器對應的土壤溫度、土壤濕度、電導率等數據流,通過云平臺的解析,即可得如圖7所示的田間各環境信息的Web網頁端實時顯示。
4.2 數據校準測試
對設備進行為期一周的實驗數據記錄,記錄時刻為:每日5:00~21:00。以光照度傳感器數據為例,獲取如表1所示的30組從小到大排序的具有代表性的光照傳感器數據(單位:kLx)。
其中,標準值來源于AR823光照儀,對比發現,隨著光照度不斷增強,測量值與標準值的誤差也逐漸增大。采用BP神經網絡對數據進行校準,由于數據量較少,故設置訓練樣本與測試樣本相同。經BP擬合后的曲線圖以及校準值與標準值的誤差曲線分別如圖8(a)、(b)所示。校正后的數據誤差穩定在-1.5 kLx與1.5 kLx之間,遠小于擬合之前的誤差,擬合優度達到0.979 6。
5 結論
本文針對高效精準農業設計了農田氣象信息監測站,實時動態感知作物生長環境信息。監測站信息采集電路采用Modbus通信協議與各傳感器進行信息交互,方便了后期系統集成拓展,實現了單一站點的多參數采集。采集后的數據通過4G網關傳輸至物聯網云平臺進行統計分析與決策。針對各傳感器采集數據存在的誤差,利用BP神經網絡進行數據校正,提高了監測數據的可靠性與精確性。該系統運行穩定可靠,魯棒性強,滿足農田環境監測的需要,對于提高農業精細管理與生產自動化具有一定的參考意義。
參考文獻
[1] 崔敏.農業物聯網研究與應用現狀及發展對策[J].計算機與網絡,2016,42(15):42-42.
[2] 李道亮,楊昊.農業物聯網技術研究進展與發展趨勢分析[J].農業機械學報,2018(1):1-20.
[3] 劉媛媛,朱路,黃德昌.基于GPRS與無線傳感器網絡的農田環境監測系統設計[J].農機化研究,2013(7):229-232.
[4] 孫玉文.基于無線傳感器網絡的農田環境監測系統研究與實現[D].南京:南京農業大學,2013.
[5] 王凡,楊亮.基于開源硬件與虛擬儀器的智能農業監測系統設計[J].電子技術應用,2015,41(4):73-76.
[6] 孫智權,周煒彬,趙不賄.基于云存儲的農業環境參數監控系統設計[J].電子技術應用,2016,42(8):94-97.
[7] 陳曉棟,原向陽,郭平毅,等.農業物聯網研究進展與前景展望[J].中國農業科技導報,2015,17(2):8-16.
[8] GAO X,YUAN M B,RAO D,et al.Research on the application of the low-power sleeping algorithm for agricultural wireless sensor network[J].Journal of Shandong Agricultural University,2015,73(4):1137-1141.
[9] 王培丞.用于環境監測的低功耗無線傳感器網絡最優化設計[D].成都:電子科技大學,2016.
[10] 顧海勤,楊奕,全毅,等.基于MODBUS協議的智能儀表與PC機雙向通訊設計[J].儀表技術與傳感器,2013(12):33-35.
作者信息:
趙小強1,2,陳玉兵1,2,高 強1,權 恒1,韓亞洲1
(1.西安郵電大學 通信與信息工程學院,陜西 西安710121;2.陜西省信息通信網絡及安全重點實驗室,陜西 西安710121)