張洪波,李相白,李建春
(1.云南馳宏鋅鍺股份有限公司曲靖鋅廠,曲靖 655000;2.云南馳宏資源綜合利用開發(fā)有限公司,曲靖 655000)
目前,如何引導(dǎo)溫室種植戶根據(jù)作物的生長要求進行環(huán)境因子的調(diào)節(jié)以獲得作物產(chǎn)量和質(zhì)量的提高,是溫室環(huán)境因子監(jiān)控系統(tǒng)的主要目標(biāo)和研究方向[1]。如何利用自動控制系統(tǒng)對溫室環(huán)境進行有效的控制,是目前我國溫室研究的重要課題之一,對我國溫室產(chǎn)業(yè)水平的提高有著重大的現(xiàn)實意義[2]。以微機為核心的溫室綜合環(huán)境控制系統(tǒng)獲得了長足發(fā)展,并逐步邁入網(wǎng)絡(luò)化、智能化階段[3]。
在寧夏國家經(jīng)濟林木種苗快繁工程技術(shù)研究中心的溫室監(jiān)控系統(tǒng)中,為保證溫室控制系統(tǒng)的可靠性,將系統(tǒng)設(shè)計為三級主從控制系統(tǒng)。以ARM系列單片機為中間主控制器的模塊化下位機數(shù)據(jù)采集和控制單元以便于系統(tǒng)的擴展。上位機服務(wù)器直接面向網(wǎng)絡(luò),保存下位機采集的數(shù)據(jù)。選用主控器自帶TCP/IP功能與服務(wù)器通信,自帶RS485通信功能連接下位機的數(shù)據(jù)采集與控制單元。具體結(jié)構(gòu)如圖1所示。
數(shù)據(jù)傳輸?shù)臏?zhǔn)確性至關(guān)重要。確保主控制器和下位機之間進行及時、準(zhǔn)確、可靠的數(shù)據(jù)通訊是系統(tǒng)可靠運行的關(guān)鍵[4]。
系統(tǒng)通信幀分為指令幀和數(shù)據(jù)幀,其幀組成格式相同,數(shù)據(jù)校驗均采用CRC16校驗,校驗內(nèi)容包括地址、指令、數(shù)據(jù)3個部分,數(shù)據(jù)部分可根據(jù)實際需要使用0~N個字節(jié)。數(shù)據(jù)是固定長度的。接收端只要發(fā)出指令就可以了,使用固定長度數(shù)據(jù),最大限度的預(yù)留數(shù)據(jù)空間。一個采集器采集的數(shù)據(jù)包括溫度(3個字節(jié))、濕度(3個字節(jié))、土壤濕度、土壤溫度、空氣濕度、空氣溫度、光照強度。通信幀由以下部分組成:地址(A) 指令(C) 數(shù)據(jù)(D) 校驗(V)1個字節(jié) 1個字節(jié) N個字節(jié) 2個字節(jié)
圖1 系統(tǒng)結(jié)構(gòu)圖
采集器上位下發(fā)命令(2個字節(jié)地址+01+$),采集器返回數(shù)據(jù)格式:(由下位提供給上位共15字節(jié)數(shù)據(jù))
控制器下位回發(fā)(本機地址+0x66+$),系統(tǒng)主要指令說明見表1。
表1 系統(tǒng)主要指令說明
下位機地址原則上可以自由設(shè)置,設(shè)置范圍為0~255。但是由于采集的數(shù)據(jù)范圍是(0~100),有可能和地址沖突,因此地址一律用128以上的編號。另外可以用一個比特來說明該下位是采集器還是控制器,這樣會占用72個地址11000000(控制),10000000(采集)。
下位機起始狀態(tài)為接收地址信息,控制485的DE端子非通信態(tài)一直處在接收態(tài),地址信息通過命令字來設(shè)置。設(shè)置好的地址保存在ROM里。每個下位機起始地址設(shè)置為255,呼喚下位地址如果為255則重新設(shè)置自己需要的地址,并做標(biāo)識,這種只能一個一個安裝,不能同時安裝2個或以上。
在系統(tǒng)的通信過程中,由于受外界干擾,可能會出現(xiàn)數(shù)據(jù)/命令幀丟失或出錯的情況,這種情況有時會導(dǎo)致雙方都處在等待對方數(shù)據(jù)/命令的狀態(tài),即進入死鎖狀態(tài)。為消除死鎖現(xiàn)象的出現(xiàn),采取了限定時間片的方法來限制上位機與每個下位機的通信時間。針對不同的等待狀態(tài),規(guī)定了不同的等待時間。
1)上位機等待回應(yīng)命令幀時間:查詢命令幀在總線上傳輸?shù)臅r間+下位機接收比較處理的時間+[Ti=t*i]+回應(yīng)命令幀在總線上的傳輸時間+彈性時間。
2)下位機等待發(fā)送命令幀時間:回應(yīng)命令幀在總線上傳輸?shù)臅r間+上位機接收比較處理的時間+發(fā)送命令幀在總線上的傳輸時間+彈性時間。
3)上位機等待數(shù)據(jù)幀的時間:發(fā)送命令幀在總線上的傳輸時間+下位機接收比較處理的時間+數(shù)據(jù)幀在總線上的傳輸時間+彈性時間。
上位機在當(dāng)前等待時間內(nèi)沒有收到回應(yīng)命令,則重發(fā)查詢命令幀,若重發(fā)超過3次,則向系統(tǒng)報告下位機出故障。上位機在等待數(shù)據(jù)幀限制時間內(nèi)沒有收到數(shù)據(jù)幀,則把已經(jīng)收完的數(shù)據(jù)送到其它模塊處理,并且結(jié)束本次通信,開始訪問下一個下位機。下位機準(zhǔn)備發(fā)送回應(yīng)命令幀/數(shù)據(jù)幀的時間<(上位機等待命令幀/數(shù)據(jù)幀的時間-回應(yīng)命令幀/數(shù)據(jù)幀在總線上傳輸?shù)臅r間),一旦準(zhǔn)備發(fā)送命令的時間≥(上位機等待命令幀/數(shù)據(jù)幀的時間-回應(yīng)命令幀/數(shù)據(jù)幀在總線上傳輸?shù)臅r間),下位機就自動放棄發(fā)送而重新發(fā)送請求,若重發(fā)超過3次仍然都是時間過時,則放棄,進入其他工作。
溫室控制系統(tǒng)軟件主要包括下位機數(shù)據(jù)采集模塊、下位繼電器輸出模塊、上下位通信模塊以及主控制器控制模塊的軟件設(shè)計。依據(jù)系統(tǒng)和硬件需求,確保設(shè)計功能的完成。
因系統(tǒng)測量設(shè)計使用的傳感器都是模擬信號,需要下位采集系統(tǒng)進行A/D變換來控制采集,并通過相應(yīng)的濾波處理后進行存儲或者數(shù)據(jù)的通信傳送。系統(tǒng)對溫室環(huán)境溫度、濕度,土壤溫度、濕度,光照強度等參量不停的循環(huán)采集,進行簡單的濾波處理后,瞬時值放在變量中。采集控制流程圖如圖2所示。
圖2 采集控制流程圖
繼電器控制的主要目的是為了使執(zhí)行機構(gòu)準(zhǔn)確、及時、有效的響應(yīng)主控制器的控制指令,繼電器控制主要是通過時間和控制數(shù)目來實現(xiàn)控制作用。其中時間遞減是以時間片為單元進行,控制的倍數(shù)以及對哪幾個端口進行控制由主控制器發(fā)送。控制單元軟件流程如圖3所示。
其中KFlag為控制結(jié)束判斷指令,GFlag為控制信息更新標(biāo)志。
通信模塊主要是為了完成主控制器和下位采集單元及控制單元的信息交換。它包括主控制器向控制單元發(fā)送控制指令,控制單元回饋控制信息。主控制器向采集單元發(fā)送采集指令,采集單元接收信息上傳采集數(shù)據(jù)幾個部分。
主控制器控制指令發(fā)送流程如圖4所示。該動作由主控制器發(fā)起,首先給下位采集、控制單元發(fā)送地址信息,采集、控制單元以中斷方式進行接收,進行地址解析后判斷切合與否,當(dāng)控制單元做好接收準(zhǔn)備后,回發(fā)確認信息。主控制器判斷后以設(shè)定好的數(shù)據(jù)幀格式編輯控制指令,進行發(fā)送。當(dāng)超過一定次數(shù)沒有接收時則進行丟棄。
數(shù)據(jù)采集單元串行通信采用中斷方式,485一直處于接收狀態(tài),當(dāng)判斷到主控制器發(fā)來的地址是自己的地址時,解析指令,將對應(yīng)變量中的數(shù)據(jù)發(fā)送出去。具體流程如圖5所示。
圖5 采集單元指令接收流程
主控制器為多線程工作機制,這里對其控制主線程進行流程說明。溫室智能控制系統(tǒng)主要的控制理論依據(jù)以專家系統(tǒng)知識存儲,在進行相關(guān)項目控制之時,獲取控制模式信息。依據(jù)不同的生物生長特性需求以及生長階段制定相應(yīng)的控制目標(biāo),從而進行溫室參數(shù)控制。主控器主要控制流程如圖6所示。
圖6 主控器主要控制流程
軟件抗干擾設(shè)計就是在軟件環(huán)節(jié)盡可能的消除不正常狀態(tài)出現(xiàn)的影響。根據(jù)干擾進入系統(tǒng)后所造成后果的不同,軟件抗干擾所采取的措施也不同[5-7]。
(1)為提高實時數(shù)據(jù)采集系統(tǒng)檢測數(shù)據(jù)的準(zhǔn)確性和檢測精度,采用數(shù)字濾波技術(shù)。因系統(tǒng)測量的溫室環(huán)境溫度、濕度,土壤溫度、濕度數(shù)據(jù)都是屬于變化緩慢的信號,系統(tǒng)選擇中值平均濾波。
(2)控制輸出在本系統(tǒng)中主要為RS485通信和控制單元的繼電器控制環(huán)節(jié)。為避免因干擾而造成的系統(tǒng)控制失常,采取軟件冗余、設(shè)置當(dāng)前輸出狀態(tài)寄存單元以及設(shè)置自檢程序等措施。
(3)在下位單片機的采集單元和控制單元軟件編程過程中,通過適當(dāng)?shù)脑O(shè)置程序陷阱,來強迫程序重新開始運行,以保證程序工作在正常的運行狀態(tài)。
根據(jù)溫室控制系統(tǒng)的設(shè)計功能需求,詳細設(shè)計了溫室監(jiān)控系統(tǒng)的下位機RS485通信、數(shù)據(jù)采集及控制器的軟件流程。確定了通信幀格式、地址分配方案以及通信超時處理措施。實現(xiàn)了溫室控制系統(tǒng)的下位機軟件功能。系統(tǒng)自2010年4月份在寧夏國家經(jīng)濟林木種苗快繁工程技術(shù)研究中心E溫室投入運行以來,數(shù)據(jù)通信采集精度都達到了設(shè)計要求,效果良好。
[1]張曾科.模糊數(shù)學(xué)在自動化技術(shù)中的應(yīng)用[M].北京:清華大學(xué)出版社,1997:9-26.
[2]龍慶華,智能溫室計算機自動監(jiān)控系統(tǒng)[J].華南師范大學(xué)學(xué)報(自然科學(xué)版),2002(1):5-8.
[3]張智.基于單片機的日光溫室控制系統(tǒng)的設(shè)計[J].微計算機信息,2006,22(12):77 -78.
[4]辛萌萌.RS-485通信接口芯片的lC設(shè)計與實現(xiàn)[D].大連:大連理工大學(xué),2007.
[5]趙明,劉海江.單片機應(yīng)用系統(tǒng)中的抗干擾措施[J].儀表技術(shù),2002(6):48-49.
[6]顧慧燕.計算機系統(tǒng)的抗干擾技術(shù)[J].信息技術(shù),2003,27(6):61 -62.
[7]李雪松,許峰.單片機應(yīng)用系統(tǒng)抗干擾問題的解決方案[J].信息技術(shù),2002(2):9-12.