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