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