沈斌
(1.蘇州高等職業(yè)技術(shù)學(xué)校,江蘇蘇州,215000;2.江蘇聯(lián)合職業(yè)技術(shù)學(xué)院蘇州分院,江蘇蘇州,215000)
當(dāng)今社會(huì)科學(xué)技術(shù)日新月異,傳統(tǒng)的農(nóng)業(yè)大棚在規(guī)?;?、智能化、無人化上已經(jīng)無法滿足要求。本設(shè)計(jì)基于MODBUS通信協(xié)議設(shè)計(jì)了一套數(shù)據(jù)采集無線傳輸系統(tǒng),將傳感器、智能儀表、無線傳輸設(shè)備、智能控制設(shè)備(PLC)引入到農(nóng)業(yè)大棚中,通過農(nóng)業(yè)大棚中的各類傳感器和智能儀表自動(dòng)采集數(shù)據(jù),無線傳輸給幾公里外的控制室智能控制系統(tǒng),智能控制接收數(shù)據(jù)進(jìn)行處理后,自動(dòng)發(fā)出各類控制指令,傳輸給農(nóng)業(yè)大棚中的執(zhí)行機(jī)構(gòu),完成溫度、濕度、光照度等參數(shù)和作業(yè)的自動(dòng)調(diào)節(jié)。極大地提高了農(nóng)作物的生產(chǎn)效率及產(chǎn)品質(zhì)量。
本設(shè)計(jì)中通過攜帶MODBUS通信協(xié)議的溫濕度傳感器、光照度傳感器、智能儀表(數(shù)字電壓表、數(shù)字電流表),實(shí)時(shí)采集多個(gè)農(nóng)業(yè)大棚中的溫度、濕度、光照度及相關(guān)設(shè)備的電壓、電流的數(shù)據(jù)。通過農(nóng)業(yè)大棚內(nèi)本地LORA無線透?jìng)髂K傳輸?shù)綆坠锿獾目刂剖覂?nèi)LORA無線透?jìng)髂K中,進(jìn)而LORA無線透?jìng)髂K把數(shù)據(jù)傳送至控制室內(nèi)PLC中,經(jīng)過數(shù)據(jù)轉(zhuǎn)換處理后,在人機(jī)上顯示出來。同時(shí)PLC內(nèi)的智能程序會(huì)根據(jù)這些數(shù)據(jù)的變化遠(yuǎn)距離驅(qū)動(dòng)風(fēng)扇、水泵、照明燈的運(yùn)行,進(jìn)而完成通風(fēng)、增濕、輔助照明等功能,從而實(shí)現(xiàn)農(nóng)業(yè)大棚遠(yuǎn)距離數(shù)據(jù)采集及智能控制,使得農(nóng)業(yè)大棚的環(huán)境滿足植物的生長需要,原理框圖如圖1所示。
圖1 遠(yuǎn)距離智能農(nóng)業(yè)大棚數(shù)據(jù)采集系統(tǒng)原理框圖
本設(shè)計(jì)所采用的智能儀表為AOB195U-9TY DC30V數(shù)字電壓表和AOB195I-9TY DC5A數(shù)字電流表,這兩個(gè)儀表都自帶MODBUS標(biāo)準(zhǔn)通信協(xié)議,如圖2所示。本設(shè)計(jì)智能儀表由兩組構(gòu)成(一個(gè)電壓表和電流表為一組)。其中一組智能儀表安裝在農(nóng)業(yè)大棚中,主要監(jiān)控各類傳感器、風(fēng)機(jī)、水泵、照明燈等設(shè)備的用電量。另一組安裝在控制室中,監(jiān)測(cè)PLC、人機(jī)等控制設(shè)備的用電量。兩組智能儀表的數(shù)據(jù)也是通過RS-485總線傳送至PLC中,進(jìn)行數(shù)據(jù)轉(zhuǎn)換處理,進(jìn)行顯示。智能儀表1、2腳接AC220V供電,7、8腳INPUT接待監(jiān)測(cè)的直流電壓/直流電流(0~30V/0~5A),61、62腳接RS-485總線A、B線。其通訊參數(shù)設(shè)置如下:波特率bAud設(shè)置在9600bps,通訊格式pAr設(shè)置為n8.1(無校驗(yàn),8個(gè)數(shù)據(jù)位,一個(gè)停止位),通訊地址Adr設(shè)置為2~247(地址1被光照度傳感器所單獨(dú)占有)的其他數(shù)值。本設(shè)計(jì)用到兩個(gè)數(shù)字電壓表和兩個(gè)數(shù)字電流表,故而通訊地址設(shè)置為2(農(nóng)業(yè)大棚電壓表)、3(農(nóng)業(yè)大棚電流表)、4(控制室電壓表)、5(控制室電流表)。在上述通訊參數(shù)設(shè)置下通過MODBUS標(biāo)準(zhǔn)通信協(xié)議進(jìn)行通信。
圖2 智能儀表(數(shù)字電壓表、數(shù)字電流表)實(shí)物、接線圖
無線通信模塊采用LORA無線透?jìng)髂K,型號(hào)為F8L10T,兩個(gè)一組進(jìn)行配對(duì)完成數(shù)據(jù)交互功能,如圖3所示。該組LORA無線透?jìng)髂K均采用DC24V供電。一個(gè)安裝在農(nóng)業(yè)大棚中,通過RS-485總線A、B線與智能儀表及傳感器相連,另一個(gè)安裝在控制室,與PLC數(shù)據(jù)通信端相連。參數(shù)設(shè)置時(shí),波特率設(shè)置在9600bps。ID和透?jìng)鞯刂窞椴煌臄?shù)值,且配對(duì)的兩個(gè)LORA無線透?jìng)髂K互為相反,例如:LORA無線透?jìng)髂KA,ID為0,透?jìng)鞯刂窞?。那么LORA無線透?jìng)髂KB則ID為1,透?jìng)鞯刂窞?。工作頻率則應(yīng)該根據(jù)允許范圍內(nèi)自行設(shè)定,如果有多組LORA無線透?jìng)髂K,則每組的工作頻率應(yīng)該區(qū)分開來,通過實(shí)踐我們得出建議間隔1MHz。發(fā)射功率一般在5~20W之間設(shè)置,原則上距離越遠(yuǎn)功率越大,在城市范圍內(nèi)一組LoRa無線透?jìng)髂K可以傳輸?shù)木嚯x在2~5km,如果在開闊無遮擋的區(qū)域,則傳輸范圍更大。
圖3 LORA無線透?jìng)髂K實(shí)物、參數(shù)設(shè)置圖
本設(shè)計(jì)數(shù)據(jù)采集系統(tǒng)的核心為光照、溫濕度傳感器,這兩個(gè)傳感器均自帶MODBUS通信協(xié)議,且由DC24V供電,安裝在農(nóng)業(yè)大棚中,實(shí)時(shí)采樣數(shù)據(jù),如圖4所示。其中光照度傳感器選用型號(hào)為HYDZ-GZD,溫濕度傳感器選用型號(hào)為AW1485B。他們都通過RS-485總線A、B線(并聯(lián))與LORA無線透?jìng)髂KA相連。
圖4 光照度、溫濕度傳感器實(shí)物圖
傳感器設(shè)置方面,光照度傳感器通訊地址默認(rèn)設(shè)置為1。溫度和濕度傳感器地址設(shè)置為6,在傳輸數(shù)據(jù)時(shí)在地址中同時(shí)讀取溫度和濕度兩個(gè)數(shù)據(jù)。
PLCI/O模塊設(shè)計(jì)如表1所示。
表1 I/O模塊設(shè)計(jì)
PLC輸入采用6按鍵組合按鈕。包括手動(dòng)模式I0.0、自動(dòng)模式I0.1、手動(dòng)照明I0.2、手動(dòng)報(bào)警I0.3、手動(dòng)風(fēng)機(jī)I0.4、手動(dòng)水泵I0.5。
PLC輸出有六盞指示燈(過濕報(bào)警Q0.4、高溫報(bào)警Q0.5、過干報(bào)警Q0.6、低溫報(bào)警Q0.7、手動(dòng)模式Q1.0、自動(dòng)模式Q1.1),一個(gè)獨(dú)立的帶蜂鳴器的閃爍報(bào)警燈Q1.3,風(fēng)機(jī)Q0.2,水泵Q0.0,LED照明燈Q1.2。
本設(shè)計(jì)利用MODBUS通訊協(xié)議在PLC內(nèi)部編寫通信程序,通過程序輪詢多個(gè)智能儀表(數(shù)字電壓表、數(shù)字電流表)以及光照度、溫濕度傳感器,把農(nóng)業(yè)大棚的各項(xiàng)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集、監(jiān)控、調(diào)節(jié),完成智能化的控制。
要訪問各個(gè)智能儀表以及傳感器,采集相關(guān)的數(shù)據(jù),則需要根據(jù)MODBUS協(xié)議的要求,構(gòu)建數(shù)據(jù)幀結(jié)構(gòu),讀取指令構(gòu)成如表2所示。
表2 MODBUS協(xié)議數(shù)據(jù)幀結(jié)構(gòu)
表2中指令由從機(jī)地址、功能碼、數(shù)據(jù)、校驗(yàn)四部分組成。從機(jī)地址即為前文所提的通訊地址。功能碼03則為讀保持寄存器即讀取儀表、傳感器內(nèi)部數(shù)據(jù)。數(shù)據(jù)部分分兩段,前一半為儀表、傳感器內(nèi)部數(shù)據(jù)所存放的地址,后一半為讀取的字節(jié)數(shù)。校驗(yàn)采用MODBUS CRC16校驗(yàn)。在調(diào)試階段我們可通過485轉(zhuǎn)USB接口,通過電腦端串口調(diào)試助手來檢測(cè)所有智能儀表和傳感器是否正常工作。
在完成檢測(cè)后,編寫PLC端的MODBUS通訊協(xié)議。PLC我們可選擇三菱、西門子等品牌的各類支持MODBUS通訊協(xié)議的型號(hào),本設(shè)計(jì)選擇運(yùn)用較廣泛的西門子進(jìn)行舉例。
編寫通訊協(xié)議時(shí)分為四步。
第一步,創(chuàng)建一個(gè)名字為MODBUS的子程序,如圖5所示。在子程序中編寫整個(gè)MODBUS通訊協(xié)議來訪問智能儀表及傳感器。這里需要指出的是在主程序中始終接通這個(gè)子程序,這樣子程序所采集的數(shù)據(jù)能夠?qū)崟r(shí)的被PLC所記錄。
圖5 MODBUS子程序圖
第二步,進(jìn)行MODBUS通訊程序初始化設(shè)定(MBUS_CTRL指令),如圖6所示。MBUS_CTRL指令中EN和MODE始終處于接通狀態(tài)。Baud波特率設(shè)置為9600,與智能儀表和傳感器保持一致。Parity設(shè)置為0。Timeout設(shè)置為1000~1500(根據(jù)經(jīng)驗(yàn)超時(shí)時(shí)間大約1~1.5s之間),這個(gè)數(shù)值太小則智能儀表和傳感器以及LORA無線透?jìng)髂K來不及把數(shù)據(jù)傳輸過來,如果太長則實(shí)時(shí)數(shù)據(jù)更新太慢。Done設(shè)置為L0.0即完成該功能后的L0.0標(biāo)志位置1。Error出現(xiàn)錯(cuò)誤后存儲(chǔ)在LB0區(qū)域。
圖6 MODBUS初始化設(shè)定圖
第三步,進(jìn)行智能儀表及傳感器的數(shù)據(jù)讀取程序設(shè)置(MBUS_MSG指令),如圖7所示。數(shù)據(jù)讀取程序采用的輪詢的方式,即同一時(shí)間段只讀取和傳輸一個(gè)智能儀表和傳感器的數(shù)據(jù),完成一個(gè)關(guān)閉一個(gè),隨即打開下一個(gè),以此循環(huán)。MBUS_MSG指令中,Slave為從機(jī)地址(例如光照度傳感器從機(jī)地址為1)。RW為讀寫指令,讀為0,寫為1,本設(shè)計(jì)為讀取儀表數(shù)據(jù),設(shè)置為0。Addr為讀取數(shù)據(jù)的地址,在PLC的程序中地址與智能儀表和傳感器中數(shù)據(jù)存儲(chǔ)地址不同,前者是從0開始計(jì)算地址,后者是從1開始計(jì)算地址。以數(shù)字電壓、流表為例,數(shù)據(jù)存儲(chǔ)在29(十進(jìn)制)里,在PLC程序中該地址為30。所以地址的正確數(shù)值應(yīng)為40030。Count為讀取幾位,一般只讀一個(gè)數(shù)據(jù)故而為1。如果像溫濕度傳感器,溫度和濕度數(shù)據(jù)在一起,則需要讀取2個(gè),應(yīng)設(shè)置為2。DataPtr為讀取的數(shù)據(jù)在PLC內(nèi)的存儲(chǔ)區(qū)域,一般情況下,存儲(chǔ)在V區(qū),應(yīng)該用指針來填寫,例如:&VB XXXX。Done為完成數(shù)據(jù)讀取后的標(biāo)志位,我們這里為了能夠?qū)崿F(xiàn)輪詢,使用M0.0~M0.6,將上一個(gè)智能儀表或傳感器讀取程序標(biāo)志位復(fù)位的同時(shí),打開下一個(gè)智能儀表或傳感器讀取程序。Error出現(xiàn)錯(cuò)誤后存儲(chǔ)在LB1~LB7區(qū)域。
圖7 MODBUS數(shù)據(jù)讀取程序(部分程序)圖
第四步,數(shù)據(jù)處理程序,如圖8所示。該部分程序分成數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)處理、數(shù)據(jù)運(yùn)算三部分。
圖8 MODBUS數(shù)據(jù)處理程序圖
(1)數(shù)據(jù)轉(zhuǎn)換,主要功能是把讀取的數(shù)據(jù)類型由整數(shù)轉(zhuǎn)化成實(shí)數(shù)。例如西門子PLC沒有直接把整型轉(zhuǎn)換成實(shí)數(shù)的指令,所以轉(zhuǎn)換過程中先把整型轉(zhuǎn)換成雙整型,再轉(zhuǎn)換成實(shí)數(shù)。
(2)數(shù)據(jù)處理,主要是在數(shù)據(jù)上保留多位小數(shù),方便進(jìn)行計(jì)算和顯示。主要方式是使用乘法、取整和除法指令實(shí)現(xiàn)。例如將電壓24.5678V要保留兩位小數(shù)進(jìn)行顯示的話,則需要先將數(shù)據(jù)乘以100,得到2456.78,然后取整得到2456,再除以100得到24.56V。
(3)數(shù)據(jù)運(yùn)算。主要是實(shí)現(xiàn)數(shù)據(jù)之間的計(jì)算。例如電功率的計(jì)算,就是由電壓乘以電流。
(1)手動(dòng)模式和自動(dòng)模式切換程序,如圖9所示。
圖9 手動(dòng)、自動(dòng)模式切換程序圖
本設(shè)計(jì)中為了提高手動(dòng)和自動(dòng)模式切換的便利性,不僅設(shè)置了實(shí)體按鈕而且在人機(jī)里設(shè)置了虛擬按鈕M2.0。按下手動(dòng)模式(I0.0或M2.0),對(duì)應(yīng)指示燈點(diǎn)亮,操作人員可以根據(jù)此時(shí)的溫度、濕度、光照度進(jìn)行通風(fēng)、加濕、照明操作。按下自動(dòng)模式(I0.1或M2.0),對(duì)應(yīng)指示燈點(diǎn)亮,自動(dòng)程序根據(jù)傳感器傳輸數(shù)據(jù)進(jìn)行自動(dòng)調(diào)節(jié)。由于手動(dòng)模式和自動(dòng)模式是互斥條件,故而在編程的時(shí)候采用RS觸發(fā)器。同時(shí)為了防止被干擾,采用邊沿觸發(fā)。
(2)溫濕度、光照度自動(dòng)報(bào)警程序,如圖10所示。
圖10 溫濕度、光照度自動(dòng)報(bào)警程序圖
自動(dòng)模式下,Q1.1常開觸點(diǎn)閉合,比較指令將土壤濕度VD6500與濕度上限VD6700進(jìn)行比較,高于設(shè)定的濕度上限時(shí),過濕報(bào)警指示燈亮起;低于設(shè)定的濕度下限VD6800時(shí),過干報(bào)警指示燈亮起。當(dāng)比較指令將土壤溫度VD6900與溫度上限VD6100進(jìn)行比較,高于設(shè)定的溫度上限時(shí),高溫報(bào)警指示燈亮起;低于設(shè)定的溫度下限VD6300時(shí),低溫報(bào)警指示燈亮起。當(dāng)光照度VD4000低于光照度設(shè)定值VD7000時(shí),M1.2照明燈間接控制線圈得電,進(jìn)行輔助照明。
(3)輸出控制程序,如圖11所示。
圖11 輸出控制程序圖
本段程序?yàn)槭謩?dòng)模式和自動(dòng)模式下實(shí)現(xiàn)水泵、風(fēng)機(jī)和照明燈的雙控。先分析手動(dòng)模式下控制方式,其功能為按下相應(yīng)的按鈕,對(duì)應(yīng)的設(shè)備工作,再按一次就停止,水泵為例。當(dāng)前系統(tǒng)處于手動(dòng)模式下,RS觸發(fā)器R1和S兩輸入端口從左母線開始:Q1.0常開觸點(diǎn)閉合,按下手動(dòng)水泵按鈕I0.5,兩個(gè)I0.5常開觸點(diǎn)閉合,觸發(fā)上升沿P,S端口水泵Q0.0常閉觸點(diǎn)閉合,R1端口常開觸點(diǎn)斷開,故而只有S端口接通,Q0.0置位,水泵啟動(dòng)。同時(shí)Q0.0常開觸點(diǎn)閉合,常閉觸點(diǎn)斷開,為下一次Q0.0復(fù)位做好準(zhǔn)備。當(dāng)再次按下手動(dòng)水泵按鈕I0.5后,RS觸發(fā)器R1端口接通,Q0.0復(fù)位,水泵停止,其觸點(diǎn)復(fù)位。
自動(dòng)模式下,還是以水泵為例。當(dāng)過干報(bào)警Q0.6時(shí),其常開觸點(diǎn)接通,觸發(fā)上升沿P,使得RS觸發(fā)器S輸入端口接通,Q0.0置位,水泵啟動(dòng)。當(dāng)過濕報(bào)警啟動(dòng)或者過干報(bào)警停止,都接通RS觸發(fā)器R1端口接通,Q0.0復(fù)位,水泵停止。實(shí)現(xiàn)水泵的手動(dòng)和自動(dòng)模式的雙控。
風(fēng)機(jī)和照明燈的雙控類似。
本設(shè)計(jì)人機(jī)設(shè)計(jì)3個(gè)界面分別是:主界面、電量控制界面和管理員界面。
(1)主界面完成實(shí)時(shí)采集的溫度、濕度和光照度數(shù)據(jù),以及風(fēng)扇、水泵、照明燈、報(bào)警燈的狀態(tài),如圖12所示。
圖12 人機(jī)主界面
(2)電量控制界面顯示設(shè)備的實(shí)時(shí)用電數(shù)據(jù),如圖13所示。
圖13 人機(jī)電量控制界面
(3)管理員界面設(shè)計(jì)以下功能,如圖14所示。
圖14 人機(jī)管理員界面
可進(jìn)行手動(dòng)模式和自動(dòng)模式的切換。
輸入溫濕度的偏移量,用于校準(zhǔn)溫濕度模塊采集的溫濕度值,即實(shí)際溫濕度值=傳感器采集的溫濕度值+溫濕度偏移量。
溫濕度上下限的設(shè)置。當(dāng)實(shí)際溫濕度處于設(shè)定的溫濕度上下限范圍內(nèi)時(shí),對(duì)應(yīng) LED 指示燈和報(bào)警燈熄滅,風(fēng)扇和水泵均停止工作。反之則啟動(dòng)。
得益于MODBUS通信協(xié)議及智能控制設(shè)備(PLC)的數(shù)據(jù)處理能力,使得我們最多能夠帶247個(gè)從站,接收幾百個(gè)傳感器的數(shù)據(jù),因此可以實(shí)現(xiàn)多個(gè)農(nóng)業(yè)大棚管理的智能化、規(guī)?;蜔o人化,進(jìn)而不斷提高生產(chǎn)效率及產(chǎn)品質(zhì)量。但本設(shè)計(jì)也有一些需要改進(jìn)的地方,比如由于采用輪詢?cè)L問從站時(shí)的數(shù)據(jù)更新的速度較慢。此外5公里以上的數(shù)據(jù)傳輸問題等,我們會(huì)在今后的設(shè)計(jì)中進(jìn)行升級(jí)和改進(jìn)。