張 冰, 余艷偉, 魯紹坤, 李正風, 張 銘, 紀 霖, 張天順
(1.云南農業大學,云南昆明 650201; 2.河南機電職業學院,河南鄭州 451191; 3.云南中煙工業責任有限公司,云南昆明 650231)
隨著現代化種植朝著產業化、規模化方向的發展,現代化溫室越來越多,而現階段我國農業生產以家庭為主,且各溫室控制系統相互獨立,這就使得對各個溫室的管理變得費時費力,并存在對溫室監管不到位的問題,進而影響規模化種植;此外,種植對象朝著多樣性、多變性的方向發展,實現對不同作物生長環境的差異化監測與控制對保證其產量與質量具有顯著影響,為此提出一種基于物聯網的集散控制系統[1-2]。
隨著計算機技術、信息通信技術、電子技術的發展,集散控制系統以其控制分散、管理集中、系統規模可大可小、配置靈活、組態方便等優點在不同學科領域得到廣泛的發展應用。在應用研究中,比較典型的有基于個人計算機(PC)的集散控制系統[3-5]、基于可編程邏輯控制器(PLC)的工業集散控制系統[6-7]、基于總線技術的集散控制系統[8-10],而農業應用低成本、易操作的要求阻礙了上述系統在溫室群中的廣泛應用與推廣;并且由于農業生產環境具有高溫高濕且變化復雜的特點,這就要求所設計的系統要有很高的穩定性與可靠性[11-12]。鑒于普通的單機系統一旦出現故障整個系統都將癱瘓,而多機系統的數據采集與控制是由各個終端設備來完成的,1個終端設備出現故障,其余設備依舊能夠正常工作,這是系統可靠性明顯較高的原因,設計一種基于單片機的多機集散控制系統,利用單片機代替PC具有操作簡單、經濟高效的優點;采用多終端的硬件系統,構建任務分級控制系統,降低終端故障對系統總體的影響;同時借助物聯網技術[13-14],通過GPRS無線通信[15]方式搭建多級管理平臺,實現遠程控制與管理,以提高溫室的智能化、信息化管理水平。
系統總體由集散控制系統、GPRS無線數據通信系統、服務器系統3個部分組成。利用單片機多機通信技術[16]構建1主2從的集散控制系統,完成對各個溫室環境的監測與控制并將采集到的數據傳送到主機集中顯示,方便主機對從機的控制與參數的設置,同時主機通過SIM900A模塊建立GPRS無線數據通信,為保證數據傳輸的準確性與穩定性,通過TCP/IP協議建立與服務器的連接,利用HTTP文件傳輸協議[17]將數據傳送到服務器,搭建1個物聯網監控系統作為環境數據的終端展示平臺。遠程客戶端可以通過PC或者手機端瀏覽器查看實時的環境數據信息并可實現遠程控制。其系統總體設計如圖1所示。
集散控制系統包括主機系統與從機系統等2個部分,其硬件系統如圖2所示。其中,主機、從機的控制芯片采用宏晶科技生產的單時鐘/機器周期單片機STC12C5A60S2,其片內數據存儲區為 1 280 字節,應用程序空間達到60 kB,指令代碼完全兼容傳統8051,但速度快8~12倍,并且具有低功耗、超強抗干擾的優點,能夠完成復雜系統開發的要求;傳感器模塊為DHT11數字式溫濕度傳感器,具有運行穩定可靠、功耗低、不受電源噪音及電壓波動等干擾影響的優點;執行元器件通過單片機控制繼電器模塊來實現對風機水泵等的控制;由于RS485[18]總線具有抗干擾性強、通信距離遠、安裝操作方便的優點,能夠實現各溫室間的穩定通信,所以各系統之間通過RS485總線進行連接。
集散控制系統各模塊單元的核心為單片機系統,通過多機通信技術利用2根數據線、1根地線即可將各個系統采集到的數據發送至主機, 具有布線簡單、費用低、維護方便的優點。本系統采用1主2從的模式,利用STC12C5A60S2單片機的串口1進行多機通信,主從機串行口操作模式均設置為模式3,即1位起始位,1位停止位,1位校驗位,8位數據位,多機通信控制位SM2都為1,允許接收位REN都為1,串行口中斷允許位、中斷總允許位都為1,波特率均設置為 9 600 B/s。主機、從機電路如圖3、圖4所示。


運行時,主機通過讀取時鐘芯片DS1302的時間值,每隔2 min與從機建立1次通信。通信時主機串行控制寄存器TB8置位1,將從機1的地址傳送至串行數據緩沖器(SBUF),此時從機處于多機通信模式,且接收到的第9位數據RB8為1,置位中斷標志位RI,這樣每臺從機都檢查一下所接收到的地址是否與本機相符,若為本機地址則清除SM2位,而其余從機則保持SM2位為1的狀態,接著主機清除TB8位并發送設定的參數給從機,由于各從機接收到的第9位數據RB8為0,只有SM2位為0的從機即從機1才會置中斷標志RI為1,接收主機的數據。
當主機給從機1發送完數據之后,置位從機1的數據上傳標志位(程序里定義),從機1在主函數中判斷數據上傳標志位是否為1,一旦數據上傳標志位為1,則進行數據上傳發送函數,從機1將發送的第9位數據TB8置為1,將主機的地址送入SBUF,由于主機接收到的第9位數據RB8為1,且地址與本機相符,則主機清除SM2位,此時從機1清除TB8位并發送數據給主機,實現主機、從機之間數據的雙向傳遞,數據發送完之后將主機、從機的SM2都置為1,為下一次數據收發作準備。主機與從機2的通信和主機與從機1的通信類似,區別在于從機2的地址與從機1不同。


數據通過GPRS無線通信方式進行傳輸,其中GPRS模塊采用SIMCOM公司的工業級雙頻GPRS模塊SIM900A[19],工作雙頻頻段為900/1 800 MHz,內嵌TCP/IP協議棧,可以低功耗實現語音、手機短信服務以及數據和傳真信息的傳輸,并且通過晶體管-晶體管邏輯電平(TTL)方式無需電平轉換便可與STC12C5A60S2單片機的串口2進行通信。通信波特率設置為9 600 B/s,8位數據位,1位起始位,1位停止位。電路如圖5所示。
1.4.1 利用TCP/IP建立與服務器的連接 傳輸控制協議(TCP)是一個面向連接的可靠協議,能夠保證一臺主機上的數據準確無誤地傳輸到另一臺主機上,通過GPRS模塊調用TCP/IP協議建立與服務器的連接,必須按照特定的格式要求發送AT指令[20]。AT指令必須以“AT”或“at”開頭,以回車(
利用GPRS模塊建立與服務器的連接,其過程步驟:
(1)發送指令“AT+CPIN?”查詢SIM900A模塊是否正常工作;
(2)發送指令“AT+CSQ”查詢SIM卡信號質量;
(3)發送分別表示請求承載、設置承載參數為因特網類型GPRS連接、設置接入點為中國移動GPRS網絡、打開GPRS分組數據承載業務等的指令“AT+SAPBR=2,1”“AT+SAPBR=3,1”“Contype”“GPRS”“AT+SAPBR=3,1”“APN”“CMNET”“AT+SAPBR=1,1”;
(4)發送指令“AT+CIPSTART=“mode”“IP address”“port””,其中“mode”設置為TCP連接,“IP address”為對應的服務器IP地址、“port”為服務器端口號,當與服務器連接成功后返回“connect ok”;
(5)發送指令“AT+CIPSEND”進行數據發送請求;當數據發送成功時,返回“send ok”;
(6)按照HTTP協議發送“POST”“GET”請求,數據輸入完成后,輸入十六進制的“0X1A”,啟動發送數據,在數據發送完成后,模塊返回“send ok”。
1.4.2 利用HTTP協議傳輸數據 HTTP協議是一種應用層協議,在可靠網絡層協議——TCP/IP的基礎上提供客戶端與服務器之間進行信息傳輸的一種機制,并規定了客戶端與服務器之間交互的各種消息。通過TCP/IP協議建立客戶機與服務器的連接后,發送HTTP請求給服務器,請求的內容包括請求方法、統一資源標識符、協議版本號、MIME格式的信息等。其中,MIME信息又包括請求修飾符、客戶機信息和可能的內容等。服務器接到請求后,給予相應的響應信息,其格式為1個狀態行和MIME格式信息。狀態行包括信息的協議版本號、1個成功或錯誤的代碼;MIME信息包括服務器信息、實體信息和可能的內容。
發送POST請求進行數據的傳輸過程:
(1)請求行利用POST方法向指定的資源提交處理請求,指定請求的HTTP協議版本與服務器的域名和端口號;
(2)發送“Accept:*/* ”指定客戶端能夠接收的內容類型;
(3)發送“U-ApiKey:xxxx-ffff-zzzz ”提供數據操作的權限;
(4)發送“Content-Length:size ”指定請求的內容長度;
(5)發送“Content-Type:application/x-www-form-urlencoded ”請求與實體對應的MIME信息;
(6)發送“Connection:close ”指定是否須要持久連接;
(7)發送HTTP內容。
由于終端設備采用單片機進行數據處理,請求頭域“Accept”設置為“*/*”,只負責接收,不管文件格式。“Content-Type”設置為“application/x-www-form-urlencoded”,為標準的編碼格式。“Content-length”以Form中數據經編碼后的長度而定,HTTP請求消息的頭域必須攜帶api-key字段, 服務器依據api-key字段判別該用戶是否具有對應操作權限。HTTP內容中包含需要上傳的數據,數據采用Key-Value格式,其中Key值由設備id、數據流id、時間等信息組成,Value部分是JSON[21]類型數據。其中 是2個字符,表示ASCII碼里面的回車換行,請求行和標題必須以回車換行作為結尾,空行內必須只有回車換行而無其他空格。當返回“HTTP/1.1 200 ok”,則表示數據上傳成功。

通過頁面實現遠程控制,其過程與發送POST請求實現數據上傳過程類似,先建立與服務器的連接,接著采用GET方法向指定的資源提交處理請求,實現頁面的下載,利用strstr(char *s,char *sub)函數對頁面數據進行自動抽取[22-23],判斷是否含有代表控制信息的字符串,如果含有則發送控制信息給從機,從機執行相應的控制動作。
服務器系統采用瀏覽器/服務器(B/S)模式,支持通過PC端或者手機端瀏覽器進行數據查看;支持通過POST、PUT、GET、DELETE等方法發送HTTP請求,以實現數據點的創建、編輯、查詢、刪除等操作;采用統一資源定位符(URL)方式將不同傳感器數據進行區分,數據以JSON的格式進行傳輸,支持1次發送多個數據流,也支持多傳感器數據的上傳,并能夠實現對各現場數據分類實時顯示與可視化展示。
下位機程序利用C語言進行編程,從機程序主要包括顯示屏、串口的初始化,傳感器數據的讀取與執行元器件的控制,主從機之間的通信等,主函數不斷讀取傳感器的數據并與設定的參數值進行對比判斷,當現場環境值不在設定范圍內時執行相應控制動作,其工作流程如圖6所示。

主機程序主要包括顯示屏、時鐘芯片、串口、從機參數的初始化,按鍵程序、GPRS通信、主從機通信等,在主函數里不斷掃描按鍵電路,當設置鍵按下時進入參數設置界面,若要對其中某個從機的參數進行修改,則須主機將修改過的參數通過串口1發送給從機,設置鍵被按下4次時退出參數設置界面;循環讀取時鐘芯片的時間值,進行判斷,每隔2 min讀取從機采集的數據[24-25]并上傳到服務器。其程序流程如圖7所示。
在溫室群現場搭建1主2從集散控制系統,通過主機實現對2個溫室的集中管理與分散控制,并將數據上傳到服務器,從而實現對溫室的遠程監控與管理。遠程監控系統如圖8所示。
農田環境的監控是實現農業高效可持續發展的重要基礎性工作,而如何實現對農田的高效便捷管理制約著農業的產業化、規模化發展。本研究開發了一種基于物聯網的集散控制系統,實現了對溫室群的集中管理與差異化控制。與獨立的溫室控制系統相比,該系統降低了維護、管理溫室系統的時間與勞動強度,增強了對溫室環境的掌控與管理水平,對農田的信息化、智能化管理具有一定推廣應用價值。

