文獻(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è)亟待解決的重大問(wèn)題[1-2]。無(wú)線傳感器網(wǎng)絡(luò)作為信息感知和無(wú)線傳輸?shù)臉蛄海哂械凸?、易集成、低價(jià)格等特點(diǎn),是農(nóng)田規(guī)?;芗?jié)點(diǎn)部署的首選方案[3-4]。通過(guò)各傳感器節(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ù)采集的周期過(guò)長(zhǎng),實(shí)時(shí)性較差,不能及時(shí)對(duì)作物生長(zhǎng)環(huán)境信息進(jìn)行評(píng)價(jià)與分析,無(wú)法保證最佳生長(zhǎng)要素補(bǔ)給,是精準(zhǔn)農(nóng)業(yè)發(fā)展所面臨的壁壘之一[8-9]??紤]農(nóng)田傳感器節(jié)點(diǎn)實(shí)際應(yīng)用場(chǎng)景通常采用人為預(yù)設(shè)的確定性部署方式,本文提出將空氣濕度、光照度等傳感器掛載于串行總線,通過(guò)Modbus通信協(xié)議輪詢與各個(gè)傳感器進(jìn)行數(shù)據(jù)交互,整套系統(tǒng)采用太陽(yá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總線訪問(wèn)控制策略,搭載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]。通過(guò)設(shè)置不同的從站傳感器地址,達(dá)到主站輪詢?cè)L問(wèn)土壤溫度、土壤水分、土壤電導(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ù)通過(guò)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口,通過(guò)邏輯電平0或1的變化即可實(shí)現(xiàn)接收與發(fā)送控制。將RO輸出與DI輸入端口連線至STM32的串口2,主控器即可按照Modbus協(xié)議輪詢?cè)L問(wèn)各個(gè)傳感器,各傳感器通過(guò)總線上地址信息判斷是否與自身匹配實(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輸出端通過(guò)逆向電壓保護(hù)二極管SS54,防止逆向電壓對(duì)電路造成損毀。其額定工作電流為5 A,1.7倍于負(fù)載電流,滿足設(shè)計(jì)需求。Out輸出端對(duì)33 μH電感持續(xù)充電,通過(guò)電感為各負(fù)載進(jìn)行穩(wěn)定放電,保證負(fù)載供電穩(wěn)定性與可靠性。再經(jīng)過(guò)Feedback與Out端旁路電容濾波作用,即可得到5 V穩(wěn)態(tài)電壓。由于主控器STM32為3.3 V供電,所以選取AMS公司低壓差線性穩(wěn)壓LDO系列AMS117-3.3,通過(guò)濾波電容濾除尖峰和毛刺后就可獲得3.3 V平滑穩(wěn)定電壓。電路設(shè)計(jì)如圖4所示。
2.4 網(wǎng)關(guān)節(jié)點(diǎn)核心電路
數(shù)據(jù)采集儀獲取各傳感器數(shù)據(jù)后,通過(guò)網(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 Ω走線阻抗。模塊通過(guò)3.8 V VBAT接口為內(nèi)部射頻和基帶電路供電。為確保耗電流達(dá)到2 A時(shí)VBAT電壓跌落不低于3.4 V,在VBAT輸入端加入旁路0.1 μF陶瓷電容,以改善射頻性能及系統(tǒng)穩(wěn)定性,并通過(guò)NET指示燈顯示網(wǎng)絡(luò)連接狀態(tài)。為避免浪涌和過(guò)壓對(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è)“橋”式整流電路,并通過(guò)共用一只“雪崩二極管”構(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功能碼
主控板通過(guò)Modbus協(xié)議讀取各個(gè)傳感器數(shù)據(jù)時(shí),使用功能碼03H,通過(guò)STM32串口2進(jìn)行通信,通信波特率設(shè)置為9 600 b/s,無(wú)硬件流控。通過(guò)03H功能碼對(duì)從機(jī)訪問(wèn)時(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)生串口中斷,而是通過(guò)DMA在后臺(tái)把數(shù)據(jù)搬到指定的緩沖區(qū)里面,當(dāng)接收空閑時(shí)隙超過(guò)一字節(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)
通過(guò)不同的RTU串行總線地址,依次實(shí)現(xiàn)對(duì)各個(gè)傳感器的訪問(wèn)。程序中利用定時(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用來(lái)記錄單個(gè)傳感器訪問(wèn)出錯(cuò)次數(shù),如果連續(xù)3次訪問(wèn)出現(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)訪問(wèn)下一個(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í),必須通過(guò)主動(dòng)輪詢?cè)L問(wèn)服務(wù)器的方式,存在效率低和實(shí)時(shí)性較差等不足。采用EDP協(xié)議后,網(wǎng)關(guān)節(jié)點(diǎn)通過(guò)心跳幀與服務(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?,接下?lái)依次發(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ù),通過(guò)設(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ù)流,通過(guò)云平臺(tái)的解析,即可得如圖7所示的田間各環(huán)境信息的Web網(wǎng)頁(yè)端實(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)值來(lái)源于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ù)通過(guò)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ú)線傳感器網(wǎng)絡(luò)的農(nóng)田環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].農(nóng)機(jī)化研究,2013(7):229-232.
[4] 孫玉文.基于無(wú)線傳感器網(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] 陳曉棟,原向陽(yáng),郭平毅,等.農(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ú)線傳感器網(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)