程怡安 王忠慶 程怡垣 沈 喆 趙祺婷
(1.中北大學(xué)信息商務(wù)學(xué)院,山西 晉中 030600;2.中北大學(xué)計算機與控制工程學(xué)院,山西 太原 030051)
中國是14億人口的大國,隨著人們生活水平的不斷提高,人們對美食的追求也越來越高,作為美食中不可或缺的豬肉也越來越受人們的喜愛;作為世界人口大國,我國也是世界上最大的豬肉生產(chǎn)和消費大國?,F(xiàn)在隨著中國產(chǎn)業(yè)化的不斷集中,大量的人才與資金投入到規(guī)模化養(yǎng)豬業(yè)的發(fā)展計劃中,中國養(yǎng)豬業(yè)的整體技術(shù)水平在不斷提高,養(yǎng)豬業(yè)的生產(chǎn)力也得到很大的發(fā)展。
由于規(guī)?;B(yǎng)豬所消耗的資源比較大,而母豬智能化控制系統(tǒng)從自動上料到自動飼喂,以及到母豬數(shù)據(jù)的采集與統(tǒng)計,都是由計算機來處理,相比之前的人力勞動,不僅減少了統(tǒng)計數(shù)據(jù)的誤差,而且還節(jié)省了大量的人力物力,同時也節(jié)約了大量的環(huán)境資源,大大減少了環(huán)境的負(fù)擔(dān)[1]。
綜上所述,母豬飼喂控制系統(tǒng)的應(yīng)用必然會促進中國養(yǎng)豬業(yè)生產(chǎn)力的飛速發(fā)展,進而給中國養(yǎng)豬農(nóng)戶帶來巨大的經(jīng)濟效益。
母豬飼喂控制系統(tǒng)主要由上位機系統(tǒng)與下位機系統(tǒng)組成。上位機系統(tǒng)是由應(yīng)用程序與數(shù)據(jù)庫組成。應(yīng)用程序用于實現(xiàn)人機對話、自動飼喂、數(shù)據(jù)存儲以及處理、母豬異常報警等功能;數(shù)據(jù)庫是用來存儲數(shù)據(jù),方便管理人員對數(shù)據(jù)進行查詢與備份。下位機系統(tǒng)由RFID模塊、ZigBee無線通信模塊、控制模塊等組成,實現(xiàn)母豬耳標(biāo)的自動識別、門控開關(guān)的控制、自動下料的控制等[2]。
圖1 系統(tǒng)模塊的功能圖
圖2為硬件系統(tǒng)的功能框圖。
圖2 硬件系統(tǒng)的功能框圖
當(dāng)母豬經(jīng)過門口時經(jīng)常會發(fā)生拱門事件,系統(tǒng)根據(jù)讀取到的母豬信息來判斷該豬是否應(yīng)該進食。如果應(yīng)該進食,ARM9控制直流電機正轉(zhuǎn),打開門鎖,母豬進入飼喂區(qū)域,當(dāng)門達到開門限位后,自動關(guān)門,達到關(guān)門限位后,電機反轉(zhuǎn)鎖門;如果母豬不應(yīng)該進食,則不做任何動作,直到下一次讀取母豬信息開始[3]。
圖3 門控開關(guān)的控制流程圖
飼喂電機的控制是本系統(tǒng)中非常重要的一部分,直接關(guān)系到母豬的飼喂及營養(yǎng)問題。飼喂器中的存料是根據(jù)母豬的生理及營養(yǎng)狀況,存有A料和B料兩種營養(yǎng)飼料。當(dāng)閱讀器將讀取到母豬電子耳標(biāo)的電子編碼與服務(wù)器數(shù)據(jù)庫所存儲該母豬的生理指標(biāo)進行比對提取,通過系統(tǒng)設(shè)定的公式計算出下料的多少、進食的時間、A料還是B料等進食的具體參數(shù)來做出判斷。然后通過ARM9主控板對飼喂器下料模塊中的步進電機進行控制。若下A料,則控制步進電機A轉(zhuǎn)動,若為B料,則控制電機B轉(zhuǎn)動[4]。下料的數(shù)量通過制定步進電機的步距角和步數(shù)來精確控制,下料的時間則通過步進電機的轉(zhuǎn)速來控制。在下料過程中,每15秒閱讀器就要讀取一次電子耳標(biāo),以檢測母豬是否仍在進食,若檢測不到,則判定母豬已離開,飼喂器不再下料,電機停止轉(zhuǎn)動。若母豬始終在進食,則下料完畢后,電機停止轉(zhuǎn)動,進入等待階段。飼喂器的母豬飼喂軟件控制流程圖4所示。
圖4 飼喂電機控制流程圖
母豬進食完畢后進入分離器通道,通道中同樣裝有閱讀器,上位機系統(tǒng)判斷該電子編碼對應(yīng)的母豬是否正常,若正常,則控制分離門電機正轉(zhuǎn),門向左開通向大群;若不正常,則噴墨后,電機反轉(zhuǎn),門開向隔離區(qū)[5]。控制流程圖如圖5所示。
圖5 分離門電機控制
在ARM9接收到監(jiān)控終端采集的數(shù)據(jù)后,ARM9在對數(shù)據(jù)處理后通過串口通信將數(shù)據(jù)發(fā)送到ZigBee無線模塊,由ZigBee無線網(wǎng)絡(luò)負(fù)責(zé)將數(shù)據(jù)發(fā)送給上位機系統(tǒng),進行數(shù)據(jù)傳輸時,優(yōu)先使用數(shù)據(jù)透明方式發(fā)送數(shù)據(jù)[6]。
程序的具體流程是:首先是初始化操作,初始化操作包括串口初始化、創(chuàng)建數(shù)據(jù)監(jiān)聽線程、數(shù)據(jù)處理線程、收發(fā)數(shù)據(jù)的初始化和ZigBee數(shù)據(jù)透明傳輸初始化;然后程序循環(huán)往復(fù)監(jiān)測判斷有無接數(shù)據(jù)到達,若有數(shù)據(jù)到達,調(diào)用接收數(shù)據(jù)包的子函數(shù)接收數(shù)據(jù);若沒有數(shù)據(jù)到達,就判斷當(dāng)前是否需要發(fā)送數(shù)據(jù),若需要發(fā)送數(shù)據(jù),則調(diào)用發(fā)送數(shù)據(jù)的子函數(shù)來進行發(fā)送,不發(fā)送數(shù)據(jù)則進入最初的監(jiān)聽狀態(tài)。
ZigBee無線模塊的工作流程:首先進入應(yīng)用層,在應(yīng)用層中UART串口與ZigBee無線收發(fā)接口都在等待有可能接收到的數(shù)據(jù),兩者都處于等待狀態(tài),如果等待超時,UART串口與ZigBee無線收發(fā)接口二者均進入睡眠模式,系統(tǒng)會通過休眠計時器喚醒和串口中斷喚醒兩種方式來喚醒ZigBee無線模塊和UART串口[7]。工作流程圖如圖6所示。
圖6 ZigBee串口通信流程圖
通過上位機中友好的人機見面來保存和處理養(yǎng)豬場所有母豬的信息,并且通過上位機可以直接控制下位機系統(tǒng)的工作,進而達到飼喂的數(shù)字化與智能化,并根據(jù)母豬的身體情況及時作出科學(xué)的管理[8]。通過對養(yǎng)豬場的管理人員養(yǎng)殖經(jīng)驗來分析,本系統(tǒng)上位機應(yīng)該具有以下主要功能:母豬數(shù)據(jù)信息的采集功能,數(shù)據(jù)信息的統(tǒng)計與分析功能,與下位機之間的通信等功能,并可根據(jù)母豬的具體情況適當(dāng)調(diào)整系統(tǒng)的部分參數(shù)。
本系統(tǒng)軟件整體結(jié)構(gòu)按功能可劃分為六大模塊:飼喂管理模塊,發(fā)情檢測模塊,防疫與疾病治療模塊,數(shù)據(jù)初始化模塊,統(tǒng)計分析模塊,系統(tǒng)維護模塊。
Visual C++6.0是微軟公司推出的開發(fā)Win32應(yīng)用程序的,面向?qū)ο蟮目梢暬晒ぞ?是一種基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境。Visual C++6.0為Windows應(yīng)用程序的開發(fā)提供了最方便的方法[9]。
Oracle是甲骨文公司研發(fā)的一款關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在如今的數(shù)據(jù)庫市場中占有舉足輕重的地位[10]。Oracle數(shù)據(jù)庫管理系統(tǒng)不僅有完備的關(guān)系產(chǎn)品,還具有完整的數(shù)據(jù)管理功能與數(shù)據(jù)的分布式處理功能。
以下兩種訪問數(shù)據(jù)庫的方式:在DOS窗口中訪問Oracle數(shù)據(jù)庫時,首先要將Oracle數(shù)據(jù)庫的監(jiān)聽進程手動啟動,如圖7所示,然后在DOS命令窗口中輸入sqlplus,接著輸入要訪問的數(shù)據(jù)庫的用戶名與密碼,如圖8所示;在SQL Developer中訪問數(shù)據(jù)庫時,首先也要手動啟動數(shù)據(jù)庫的監(jiān)聽進程,然后點擊連接按鈕,在對話框中輸入要訪問的數(shù)據(jù)庫的用戶名與密碼即可,如圖9所示。
圖7 數(shù)據(jù)庫監(jiān)聽進程的啟動
圖8 DOS窗口中連接數(shù)據(jù)庫
圖9 SQL Developer中連接數(shù)據(jù)庫
Visual C++6.0提供了ADO、ODBC、DAO和RDO等多種豐富的數(shù)據(jù)庫訪問技術(shù),由于ADO技術(shù)使用起來更加簡單靈活,所以本系統(tǒng)使用ADO來訪問數(shù)據(jù)庫。
在VC++開發(fā)環(huán)境中利用MFC向?qū)?添加一個MSComm類型的控件變量(m_contrComm),下面是串口參數(shù)設(shè)置的實現(xiàn):
Void SetComm()
{
m_contrComm.SetCommPort(nPort);
if(!m_contrComm.Getport()Pen());
m_contrComm.SetPort()Pen(TRUE);/*打開串口*/
m_contrComm.SetInPutMode(1);/*設(shè)置從接收緩沖區(qū)讀取數(shù)據(jù)的格式*/
m_contrComm.SetinBufferSize(1024);/*設(shè)置接收緩沖區(qū)的大小*/
m_contrComm.SetoutBufferSize(512);/*設(shè)置發(fā)送緩沖區(qū)的大小*/
m_contrComm.Setsettings(strBaud+strCheckBit+strDataBit+strStopBit);
/*串口參數(shù)設(shè)置*/
m_contrComm.SetRThreshold(1);/*每接受一個字符則激發(fā)OnComm()事件*/
m_contrComm.SetInPutIn(0);/*從接收緩沖區(qū)讀取數(shù)據(jù)*/
}
其中,nPort,strBaud(波特率),strCheckBit(校驗位),strDataBit(字節(jié)有效位數(shù)),strStopBit(停止位)是串口屬性組合框設(shè)置的值。
系統(tǒng)的界面能夠很友好地實現(xiàn)人機互話,它主要負(fù)責(zé)母豬數(shù)據(jù)信息的顯示和存儲以及對母豬數(shù)據(jù)的處理等,下面具體介紹各個功能模塊:
在上位機系統(tǒng)中,操作人員通過瀏覽器訪問母豬智能化控制系統(tǒng),首先需要經(jīng)過用戶身份信息認(rèn)證,在窗口中輸入自己的用戶名和密碼(由數(shù)據(jù)庫管理員分配),然后系統(tǒng)根據(jù)輸入的信息進行驗證,如果驗證無誤,則該用戶成功登錄,從系統(tǒng)的數(shù)據(jù)庫中得到當(dāng)前用戶的角色信息和權(quán)限信息,并顯示該用戶登錄后所能使用的各項功能;若驗證失敗,系統(tǒng)提示登錄失敗,繼續(xù)保持在登錄界面。
圖10 系統(tǒng)界面設(shè)計流程圖
圖11 系統(tǒng)登錄主界面
本論文通過對國內(nèi)外養(yǎng)豬業(yè)的現(xiàn)狀分析,提出了我國在養(yǎng)豬業(yè)生產(chǎn)力上存在很大的不足,進而說明本論文設(shè)計的母豬智能化控制系統(tǒng)的必要性與重要性。
本系統(tǒng)利用目前比較先進的RFID技術(shù)和ZigBee無線通信技術(shù),并與核心控制板ARM9進行互相通信,通過對ARM9的控制實現(xiàn)了硬件系統(tǒng)的設(shè)計,其中包括直流電機對門控開關(guān)的控制,以及步進電機對自動下料的控制,使用C#語言編寫了系統(tǒng)的軟件程序,在軟件部分完成了上位機系統(tǒng)的開發(fā),其中包括在VC++中編寫了系統(tǒng)界面的程序設(shè)計,并利用ADO訪問上位機系統(tǒng)的數(shù)據(jù)庫,最終完成了上位機與下位機總體設(shè)計的實現(xiàn),達到了豬規(guī)模化養(yǎng)殖健康精準(zhǔn)技術(shù)體系研究項目的要求。
[1]彭樹峰,王云新,葉富良,等.國內(nèi)外工廠化飼喂簡述[J].2007(2):12-13.
[2]郭忠利.規(guī)模化養(yǎng)豬場群體母豬精細(xì)飼喂控制系統(tǒng)的研究與設(shè)計[D].哈爾濱:東北農(nóng)業(yè)大學(xué),2012.
[3]郭忠利,戚國強,王立舒.種豬場群體母豬精細(xì)飼養(yǎng)管理系統(tǒng)的研究與應(yīng)用[J].農(nóng)機化研究,2013.
[4]周道雷,李陸欽.規(guī)?;B(yǎng)豬工程技術(shù)的發(fā)展現(xiàn)狀和趨勢[J].飼喂與飼料,2005(7):45-49.
[5]趙希彥.基于福利的新型多元化豬生產(chǎn)系統(tǒng)[J].中國畜牧獸醫(yī),2012,39(12):225-230.
[6]黃成亮.圖像式自動機運動參數(shù)測試系統(tǒng)研究[D].太原:中北大學(xué),2011.
[7]黃朝斌.嵌入式Internet設(shè)備遠程管理技術(shù)研究與應(yīng)用[D].沈陽:沈陽工業(yè)大學(xué),2012.
[8]趙顯臣.RFID數(shù)據(jù)采集和處理系統(tǒng)中間件的研究與實現(xiàn)[D].包頭:內(nèi)蒙古科技大學(xué),2008.
[9]陳大偉.點式應(yīng)答設(shè)備在高速條件下的性能研究[D].北京:北京交通大學(xué),2011.
[10]朱文佳.射頻識別在上海郵政普郵總包分揀系統(tǒng)中的研究與應(yīng)用[D].上海:上海交通大學(xué),2008.