沈斌
(1.蘇州高等職業技術學校,江蘇蘇州,215000;2.江蘇聯合職業技術學院蘇州分院,江蘇蘇州,215000)
當今社會科學技術日新月異,傳統的農業大棚在規模化、智能化、無人化上已經無法滿足要求。本設計基于MODBUS通信協議設計了一套數據采集無線傳輸系統,將傳感器、智能儀表、無線傳輸設備、智能控制設備(PLC)引入到農業大棚中,通過農業大棚中的各類傳感器和智能儀表自動采集數據,無線傳輸給幾公里外的控制室智能控制系統,智能控制接收數據進行處理后,自動發出各類控制指令,傳輸給農業大棚中的執行機構,完成溫度、濕度、光照度等參數和作業的自動調節。極大地提高了農作物的生產效率及產品質量。
本設計中通過攜帶MODBUS通信協議的溫濕度傳感器、光照度傳感器、智能儀表(數字電壓表、數字電流表),實時采集多個農業大棚中的溫度、濕度、光照度及相關設備的電壓、電流的數據。通過農業大棚內本地LORA無線透傳模塊傳輸到幾公里外的控制室內LORA無線透傳模塊中,進而LORA無線透傳模塊把數據傳送至控制室內PLC中,經過數據轉換處理后,在人機上顯示出來。同時PLC內的智能程序會根據這些數據的變化遠距離驅動風扇、水泵、照明燈的運行,進而完成通風、增濕、輔助照明等功能,從而實現農業大棚遠距離數據采集及智能控制,使得農業大棚的環境滿足植物的生長需要,原理框圖如圖1所示。

圖1 遠距離智能農業大棚數據采集系統原理框圖
本設計所采用的智能儀表為AOB195U-9TY DC30V數字電壓表和AOB195I-9TY DC5A數字電流表,這兩個儀表都自帶MODBUS標準通信協議,如圖2所示。本設計智能儀表由兩組構成(一個電壓表和電流表為一組)。其中一組智能儀表安裝在農業大棚中,主要監控各類傳感器、風機、水泵、照明燈等設備的用電量。另一組安裝在控制室中,監測PLC、人機等控制設備的用電量。兩組智能儀表的數據也是通過RS-485總線傳送至PLC中,進行數據轉換處理,進行顯示。智能儀表1、2腳接AC220V供電,7、8腳INPUT接待監測的直流電壓/直流電流(0~30V/0~5A),61、62腳接RS-485總線A、B線。其通訊參數設置如下:波特率bAud設置在9600bps,通訊格式pAr設置為n8.1(無校驗,8個數據位,一個停止位),通訊地址Adr設置為2~247(地址1被光照度傳感器所單獨占有)的其他數值。本設計用到兩個數字電壓表和兩個數字電流表,故而通訊地址設置為2(農業大棚電壓表)、3(農業大棚電流表)、4(控制室電壓表)、5(控制室電流表)。在上述通訊參數設置下通過MODBUS標準通信協議進行通信。

圖2 智能儀表(數字電壓表、數字電流表)實物、接線圖
無線通信模塊采用LORA無線透傳模塊,型號為F8L10T,兩個一組進行配對完成數據交互功能,如圖3所示。該組LORA無線透傳模塊均采用DC24V供電。一個安裝在農業大棚中,通過RS-485總線A、B線與智能儀表及傳感器相連,另一個安裝在控制室,與PLC數據通信端相連。參數設置時,波特率設置在9600bps。ID和透傳地址為不同的數值,且配對的兩個LORA無線透傳模塊互為相反,例如:LORA無線透傳模塊A,ID為0,透傳地址為1。那么LORA無線透傳模塊B則ID為1,透傳地址為0。工作頻率則應該根據允許范圍內自行設定,如果有多組LORA無線透傳模塊,則每組的工作頻率應該區分開來,通過實踐我們得出建議間隔1MHz。發射功率一般在5~20W之間設置,原則上距離越遠功率越大,在城市范圍內一組LoRa無線透傳模塊可以傳輸的距離在2~5km,如果在開闊無遮擋的區域,則傳輸范圍更大。

圖3 LORA無線透傳模塊實物、參數設置圖
本設計數據采集系統的核心為光照、溫濕度傳感器,這兩個傳感器均自帶MODBUS通信協議,且由DC24V供電,安裝在農業大棚中,實時采樣數據,如圖4所示。其中光照度傳感器選用型號為HYDZ-GZD,溫濕度傳感器選用型號為AW1485B。他們都通過RS-485總線A、B線(并聯)與LORA無線透傳模塊A相連。

圖4 光照度、溫濕度傳感器實物圖
傳感器設置方面,光照度傳感器通訊地址默認設置為1。溫度和濕度傳感器地址設置為6,在傳輸數據時在地址中同時讀取溫度和濕度兩個數據。
PLCI/O模塊設計如表1所示。

表1 I/O模塊設計
PLC輸入采用6按鍵組合按鈕。包括手動模式I0.0、自動模式I0.1、手動照明I0.2、手動報警I0.3、手動風機I0.4、手動水泵I0.5。
PLC輸出有六盞指示燈(過濕報警Q0.4、高溫報警Q0.5、過干報警Q0.6、低溫報警Q0.7、手動模式Q1.0、自動模式Q1.1),一個獨立的帶蜂鳴器的閃爍報警燈Q1.3,風機Q0.2,水泵Q0.0,LED照明燈Q1.2。
本設計利用MODBUS通訊協議在PLC內部編寫通信程序,通過程序輪詢多個智能儀表(數字電壓表、數字電流表)以及光照度、溫濕度傳感器,把農業大棚的各項數據進行實時采集、監控、調節,完成智能化的控制。
要訪問各個智能儀表以及傳感器,采集相關的數據,則需要根據MODBUS協議的要求,構建數據幀結構,讀取指令構成如表2所示。

表2 MODBUS協議數據幀結構
表2中指令由從機地址、功能碼、數據、校驗四部分組成。從機地址即為前文所提的通訊地址。功能碼03則為讀保持寄存器即讀取儀表、傳感器內部數據。數據部分分兩段,前一半為儀表、傳感器內部數據所存放的地址,后一半為讀取的字節數。校驗采用MODBUS CRC16校驗。在調試階段我們可通過485轉USB接口,通過電腦端串口調試助手來檢測所有智能儀表和傳感器是否正常工作。
在完成檢測后,編寫PLC端的MODBUS通訊協議。PLC我們可選擇三菱、西門子等品牌的各類支持MODBUS通訊協議的型號,本設計選擇運用較廣泛的西門子進行舉例。
編寫通訊協議時分為四步。
第一步,創建一個名字為MODBUS的子程序,如圖5所示。在子程序中編寫整個MODBUS通訊協議來訪問智能儀表及傳感器。這里需要指出的是在主程序中始終接通這個子程序,這樣子程序所采集的數據能夠實時的被PLC所記錄。

圖5 MODBUS子程序圖
第二步,進行MODBUS通訊程序初始化設定(MBUS_CTRL指令),如圖6所示。MBUS_CTRL指令中EN和MODE始終處于接通狀態。Baud波特率設置為9600,與智能儀表和傳感器保持一致。Parity設置為0。Timeout設置為1000~1500(根據經驗超時時間大約1~1.5s之間),這個數值太小則智能儀表和傳感器以及LORA無線透傳模塊來不及把數據傳輸過來,如果太長則實時數據更新太慢。Done設置為L0.0即完成該功能后的L0.0標志位置1。Error出現錯誤后存儲在LB0區域。

圖6 MODBUS初始化設定圖
第三步,進行智能儀表及傳感器的數據讀取程序設置(MBUS_MSG指令),如圖7所示。數據讀取程序采用的輪詢的方式,即同一時間段只讀取和傳輸一個智能儀表和傳感器的數據,完成一個關閉一個,隨即打開下一個,以此循環。MBUS_MSG指令中,Slave為從機地址(例如光照度傳感器從機地址為1)。RW為讀寫指令,讀為0,寫為1,本設計為讀取儀表數據,設置為0。Addr為讀取數據的地址,在PLC的程序中地址與智能儀表和傳感器中數據存儲地址不同,前者是從0開始計算地址,后者是從1開始計算地址。以數字電壓、流表為例,數據存儲在29(十進制)里,在PLC程序中該地址為30。所以地址的正確數值應為40030。Count為讀取幾位,一般只讀一個數據故而為1。如果像溫濕度傳感器,溫度和濕度數據在一起,則需要讀取2個,應設置為2。DataPtr為讀取的數據在PLC內的存儲區域,一般情況下,存儲在V區,應該用指針來填寫,例如:&VB XXXX。Done為完成數據讀取后的標志位,我們這里為了能夠實現輪詢,使用M0.0~M0.6,將上一個智能儀表或傳感器讀取程序標志位復位的同時,打開下一個智能儀表或傳感器讀取程序。Error出現錯誤后存儲在LB1~LB7區域。

圖7 MODBUS數據讀取程序(部分程序)圖
第四步,數據處理程序,如圖8所示。該部分程序分成數據轉換、數據處理、數據運算三部分。

圖8 MODBUS數據處理程序圖
(1)數據轉換,主要功能是把讀取的數據類型由整數轉化成實數。例如西門子PLC沒有直接把整型轉換成實數的指令,所以轉換過程中先把整型轉換成雙整型,再轉換成實數。
(2)數據處理,主要是在數據上保留多位小數,方便進行計算和顯示。主要方式是使用乘法、取整和除法指令實現。例如將電壓24.5678V要保留兩位小數進行顯示的話,則需要先將數據乘以100,得到2456.78,然后取整得到2456,再除以100得到24.56V。
(3)數據運算。主要是實現數據之間的計算。例如電功率的計算,就是由電壓乘以電流。
(1)手動模式和自動模式切換程序,如圖9所示。

圖9 手動、自動模式切換程序圖
本設計中為了提高手動和自動模式切換的便利性,不僅設置了實體按鈕而且在人機里設置了虛擬按鈕M2.0。按下手動模式(I0.0或M2.0),對應指示燈點亮,操作人員可以根據此時的溫度、濕度、光照度進行通風、加濕、照明操作。按下自動模式(I0.1或M2.0),對應指示燈點亮,自動程序根據傳感器傳輸數據進行自動調節。由于手動模式和自動模式是互斥條件,故而在編程的時候采用RS觸發器。同時為了防止被干擾,采用邊沿觸發。
(2)溫濕度、光照度自動報警程序,如圖10所示。

圖10 溫濕度、光照度自動報警程序圖
自動模式下,Q1.1常開觸點閉合,比較指令將土壤濕度VD6500與濕度上限VD6700進行比較,高于設定的濕度上限時,過濕報警指示燈亮起;低于設定的濕度下限VD6800時,過干報警指示燈亮起。當比較指令將土壤溫度VD6900與溫度上限VD6100進行比較,高于設定的溫度上限時,高溫報警指示燈亮起;低于設定的溫度下限VD6300時,低溫報警指示燈亮起。當光照度VD4000低于光照度設定值VD7000時,M1.2照明燈間接控制線圈得電,進行輔助照明。
(3)輸出控制程序,如圖11所示。

圖11 輸出控制程序圖
本段程序為手動模式和自動模式下實現水泵、風機和照明燈的雙控。先分析手動模式下控制方式,其功能為按下相應的按鈕,對應的設備工作,再按一次就停止,水泵為例。當前系統處于手動模式下,RS觸發器R1和S兩輸入端口從左母線開始:Q1.0常開觸點閉合,按下手動水泵按鈕I0.5,兩個I0.5常開觸點閉合,觸發上升沿P,S端口水泵Q0.0常閉觸點閉合,R1端口常開觸點斷開,故而只有S端口接通,Q0.0置位,水泵啟動。同時Q0.0常開觸點閉合,常閉觸點斷開,為下一次Q0.0復位做好準備。當再次按下手動水泵按鈕I0.5后,RS觸發器R1端口接通,Q0.0復位,水泵停止,其觸點復位。
自動模式下,還是以水泵為例。當過干報警Q0.6時,其常開觸點接通,觸發上升沿P,使得RS觸發器S輸入端口接通,Q0.0置位,水泵啟動。當過濕報警啟動或者過干報警停止,都接通RS觸發器R1端口接通,Q0.0復位,水泵停止。實現水泵的手動和自動模式的雙控。
風機和照明燈的雙控類似。
本設計人機設計3個界面分別是:主界面、電量控制界面和管理員界面。
(1)主界面完成實時采集的溫度、濕度和光照度數據,以及風扇、水泵、照明燈、報警燈的狀態,如圖12所示。

圖12 人機主界面
(2)電量控制界面顯示設備的實時用電數據,如圖13所示。

圖13 人機電量控制界面
(3)管理員界面設計以下功能,如圖14所示。

圖14 人機管理員界面
可進行手動模式和自動模式的切換。
輸入溫濕度的偏移量,用于校準溫濕度模塊采集的溫濕度值,即實際溫濕度值=傳感器采集的溫濕度值+溫濕度偏移量。
溫濕度上下限的設置。當實際溫濕度處于設定的溫濕度上下限范圍內時,對應 LED 指示燈和報警燈熄滅,風扇和水泵均停止工作。反之則啟動。
得益于MODBUS通信協議及智能控制設備(PLC)的數據處理能力,使得我們最多能夠帶247個從站,接收幾百個傳感器的數據,因此可以實現多個農業大棚管理的智能化、規模化和無人化,進而不斷提高生產效率及產品質量。但本設計也有一些需要改進的地方,比如由于采用輪詢訪問從站時的數據更新的速度較慢。此外5公里以上的數據傳輸問題等,我們會在今后的設計中進行升級和改進。