趙毅 趙爾迪 王偉 安鶴峰
摘要:根據(jù)國(guó)內(nèi)奶牛飼喂技術(shù)的特點(diǎn)及發(fā)展現(xiàn)狀,采用PLC驅(qū)動(dòng)飼喂機(jī)器人完成定位、給料、前后行走、轉(zhuǎn)彎等動(dòng)作。介紹PLC技術(shù)的主要特點(diǎn)、控制原理,以及PLC技術(shù)與計(jì)算機(jī)的通信程序,為提高飼喂機(jī)器人的給料精度提供參考。
關(guān)鍵詞:PLC;奶牛飼喂;設(shè)計(jì);機(jī)器人;通信
中圖分類號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-1161(2016)02-0030-03
奶牛業(yè)在我國(guó)畜牧業(yè)中占有舉足輕重的地位。奶牛飼喂分為傳統(tǒng)飼喂技術(shù)、TMR飼喂技術(shù)和飼喂機(jī)器人技術(shù)3種,與這3種飼喂技術(shù)配套的設(shè)備都有各自的優(yōu)點(diǎn)和不足。
1 奶牛飼喂技術(shù)發(fā)展現(xiàn)狀
目前,國(guó)內(nèi)牛場(chǎng)普遍采用傳統(tǒng)飼喂技術(shù)。傳統(tǒng)飼喂技術(shù)有兩種方式:一是粗精飼料分類喂飼,將青貯、干草、塊根、糟渣類和精飼料分別喂給奶牛,每日3次擠奶、3次上槽飼喂。我國(guó)絕大部分奶牛場(chǎng)仍采用這種飼喂方式。二是經(jīng)機(jī)械或人工攪拌后混合喂飼。傳統(tǒng)飼喂技術(shù)易造成奶牛挑食和搶食現(xiàn)象,且飼喂過程繁瑣,機(jī)械化作業(yè)困難,需要大量人工,生產(chǎn)率低。針對(duì)這一問題,國(guó)外一些發(fā)達(dá)國(guó)家于20世紀(jì)60年代開始推廣應(yīng)用一種新的飼喂技術(shù)——全混合日糧飼喂方式(TOTAL Mixed Ration,TMR),我國(guó)于20世紀(jì)80年代引入該技術(shù)。TMR飼喂采用先進(jìn)的控制方式,將奶牛的精飼料和粗飼料加工調(diào)制、攪拌混合、送料及喂料連成一體化,能夠使不同階段的牛群飼養(yǎng)實(shí)現(xiàn)機(jī)械化、自動(dòng)化、定量化和營(yíng)養(yǎng)均衡化。研究表明:該技術(shù)可以有效增加奶牛對(duì)飼料中干物質(zhì)的需求,提高牛奶中蛋白質(zhì)和脂肪的含量,簡(jiǎn)化飼養(yǎng)程序,提高生產(chǎn)效率,提高產(chǎn)奶量約10%;受精/懷孕比從1.63提高至2.27;懷孕時(shí)間從395 d縮短到372 d。該飼喂方式也存在一些缺點(diǎn),如成本過高、無(wú)法實(shí)現(xiàn)個(gè)體奶牛的飼喂等。而利用飼喂機(jī)器人(如圖1所示)代替人工作業(yè),就可以有效地解決這個(gè)難題。通過PLC的精確自動(dòng)控制,可以提高飼料利用率以及產(chǎn)奶率,降低勞動(dòng)強(qiáng)度,減少浪費(fèi),進(jìn)一步提高牛場(chǎng)的投入產(chǎn)出比。 2 PLC技術(shù)的主要特點(diǎn)及控制原理
2.1 PLC技術(shù)的主要特點(diǎn)
可編程序控制器(PLC)因具有功能性強(qiáng)、可靠性高、使用靈活方便、易于編程及適應(yīng)工業(yè)環(huán)境下應(yīng)用等一系列優(yōu)點(diǎn)而被廣泛應(yīng)用于工業(yè)控制。使用其作為系統(tǒng)的核心,不僅可使控制系統(tǒng)體積減小、功能易于擴(kuò)展、系統(tǒng)工作更加穩(wěn)定,還可大幅降低成本。PLC的主要特點(diǎn)為:1) 可靠性高,抗干擾能力強(qiáng);2) 控制程序編程簡(jiǎn)單,多數(shù)采用繼電器控制線路的梯形圖形式,具有很好的柔性;3) 豐富的I/O接口模塊,與外部設(shè)備連接方便,功能完善;4) 適應(yīng)性強(qiáng),應(yīng)用靈活;5) 體積小、質(zhì)量輕,是“機(jī)電一體化”特有的產(chǎn)品。
2.2 PLC飼喂控制原理
控制電路以PLC為核心。PLC接收嵌入式計(jì)算機(jī)的指令(同時(shí)向計(jì)算機(jī)發(fā)送相應(yīng)響應(yīng)),驅(qū)動(dòng)周邊控制器件,以完成機(jī)器人的定位、給料、前后行走、轉(zhuǎn)彎等動(dòng)作。采用PLC控制伺服電機(jī),可使伺服電機(jī)控制螺旋桿更加精確地完成給料動(dòng)作。該種方式的工作流程為:計(jì)算機(jī)負(fù)責(zé)將飼喂量數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)字符串→數(shù)據(jù)字符串指令發(fā)送給PLC→PLC驅(qū)動(dòng)步進(jìn)電機(jī)完成給定的步進(jìn)量,完成飼喂過程。流程如圖2所示。
通過軌道運(yùn)行的飼喂機(jī)器人按奶牛個(gè)體體況飼喂相應(yīng)的飼料。機(jī)器人由一個(gè)精料料斗和一個(gè)青貯料倉(cāng)組成,懸掛于牛舍上部的工字鋼上,使用完全免維護(hù)的長(zhǎng)效電池驅(qū)動(dòng),可以實(shí)現(xiàn)在工字鋼上運(yùn)行到牛上方進(jìn)行給料。
3 PLC與嵌入式計(jì)算機(jī)的通信程序設(shè)計(jì)
在現(xiàn)代工業(yè)控制領(lǐng)域,PLC已得到廣泛而深入的應(yīng)用,然而它也存在一些固有的缺點(diǎn),如數(shù)據(jù)的計(jì)算處理和管理能力較弱、無(wú)法提供人性化的交互界面等。將PLC與計(jì)算機(jī)結(jié)合起來(lái)能彌補(bǔ)這些不足,兩者結(jié)合的橋梁為PLC與計(jì)算機(jī)之間的通信。現(xiàn)以松下PLC-FP0為例,討論P(yáng)LC與計(jì)算機(jī)通信的規(guī)范和程序設(shè)計(jì)。
3.1 通信原理及規(guī)范
計(jì)算機(jī)與PLC間的通信一般采用RS485或RS232接口,信息交換以“幀”的格式進(jìn)行。信息幀由ASCII字符串組成,其通信規(guī)范采用松下電工公司專用通信協(xié)議——MEWTOCOL-COM標(biāo)準(zhǔn)協(xié)議。在以計(jì)算機(jī)作為主站、PLC為從站的通信網(wǎng)絡(luò)中,通信由主站發(fā)起,將命令幀發(fā)向從站,從站以響應(yīng)幀或錯(cuò)誤幀作應(yīng)答。MEWTOCOL-COM協(xié)議對(duì)命令幀、響應(yīng)幀及錯(cuò)誤幀格式做了嚴(yán)格規(guī)定。
在圖3所示的命令幀格式中:%OR<為MEWTOCOL-COM的命令幀開始標(biāo)志,以%開頭的信息幀單幀最大長(zhǎng)度為118字節(jié),<為擴(kuò)展頭,單幀最大長(zhǎng)度可達(dá)2048字節(jié);H,L為站地址的高位與低位;#為命令幀標(biāo)識(shí)碼;命令代碼由兩個(gè)字節(jié)組成,讀寫IR/SR區(qū)時(shí)為RR和WR,讀寫DM區(qū)時(shí)為RD和WD;BCC為兩個(gè)字節(jié)的塊檢查碼,由從幀開始標(biāo)志起到文本數(shù)據(jù)最后一個(gè)字節(jié)止的各字節(jié)相或得到;CR為回車結(jié)束符。在發(fā)送多幀命令時(shí)用字符“&”連接。
值得注意的是,在多幀命令發(fā)送的過程中,一幀發(fā)送后,只有當(dāng)PLC發(fā)回響應(yīng)消息后,下一幀才能發(fā)送。
圖4所示為錯(cuò)誤幀格式,其中“!”為錯(cuò)誤幀標(biāo)識(shí)碼;“Err”為兩字節(jié)的錯(cuò)誤標(biāo)識(shí)碼。
計(jì)算機(jī)運(yùn)用MEWTOCOL-COM協(xié)議提供的命令對(duì)PLC的寄存器(X)、寄存器(Y)、數(shù)據(jù)寄存器(D)、定時(shí)器(T)、輔助寄存器(R)、計(jì)數(shù)器(C)進(jìn)行讀寫及監(jiān)控。不同的命令將通過命令幀中的命令代碼來(lái)區(qū)別,MEWTOCOL-COM指令見表1。
3.2 通信程序的設(shè)計(jì)
上位機(jī)的通信程序基于C++語(yǔ)言編寫,將各PLC讀寫命令以函數(shù)的形式封裝到一個(gè)串行通信類CAccessPLC中。
3.2.1 CAN總線 CAN是Controller Area Network的縮寫,是ISO*1國(guó)際標(biāo)準(zhǔn)化的串行通信協(xié)議,被廣泛地應(yīng)用于工業(yè)自動(dòng)化、船舶、醫(yī)療設(shè)備、工業(yè)設(shè)備等領(lǐng)域。飼喂機(jī)器人的通信控制程序?yàn)椋?/p>
voidCAccessCan::StartAccessCan()
{if(IsRun()) return;
m_CANRecv.m_pAccessCan = this;
StartThread();}
voidCAccessCan::StopAccessCan()
{StopThread();}
DWORD CAccessCan::RunThread()
while(!IsThreadAborted())
{Sleep(50);
m_CANRecv.Start();
WriteStationIDs();}
return 0;}
voidCAccessCan::WriteStationIDs()
{m_CANRecv.Start();
for (size_ti=0; i
CAN_PACKET Pkt;
//設(shè)置CAN Packet
memset(&Pkt;, sizeof(CAN_PACKET), 0 );
Pkt.dwType = CAN_PACKET_TYPE_STANDARD;
Pkt.dwID = 1;
Pkt.dwPrio = 0;
Pkt.dwDatLen = 8;
m_CANRecv.WriteCAN(&Pkt;);
strcpy(command, commandstr);
//定義BCC的高位和低位字符
char BCC_H, BCC_L;
3.2.2 生成BCC函數(shù)
charCAccessPLC:: exor(const char*rs, intlen, char*pH, char*pL)
{if (len<=0) return -1;
chareo;
if (len==1) eo =*rs;
elseeo = (*rs)^exor(rs+1,len-1, NULL, NULL);
if(pH &&pL;)
{if ( (eo>>4) < 0xA ) *pH = (eo>>4) + 0x30;
Else*pH = (eo>>4) + 0x37;
if ( (eo& 0x0F) < 0xA )
*pL = (eo& 0x0F) + 0x30;
Else*pL = (eo& 0x0F) + 0x37;}
returneo;}
3.2.3 接收響應(yīng) 由于PLC與計(jì)算機(jī)的串行通信有一定延遲,所以在發(fā)送完一條指令后,應(yīng)該等待一段時(shí)間再進(jìn)行響應(yīng)數(shù)據(jù)接收。
4 結(jié)論
機(jī)器人控制系統(tǒng)采用上、下機(jī)的控制結(jié)構(gòu),將管理和控制分離開來(lái)。機(jī)器人的控制作為下位機(jī)以嵌入式微處理實(shí)現(xiàn)控制任務(wù)。上位機(jī)為工業(yè)PC,主要實(shí)施奶牛場(chǎng)的管理。通過在牛舍安裝軌道,簡(jiǎn)化移動(dòng)式飼喂機(jī)器人的自主導(dǎo)航和定位,降低其控制系統(tǒng)的復(fù)雜程度和成本,為低價(jià)格飼喂機(jī)器人的推廣和應(yīng)用奠定基礎(chǔ)。飼喂機(jī)器人的研究和開發(fā),能夠推進(jìn)畜牧業(yè)的自動(dòng)化和奶牛場(chǎng)的科學(xué)管理,提高奶牛的產(chǎn)奶量和身體健康水平,可在奶牛場(chǎng)廣泛推廣應(yīng)用。
參考文獻(xiàn)
[1] 范冠雄.基于Visual C++的數(shù)據(jù)庫(kù)訪問技術(shù)比較研究[J].計(jì)算機(jī)與數(shù)字工程,2010(1):54-57.
[2] 楊存志,李源源,楊旭,等.FR-200型奶牛智能化精確飼喂機(jī)器人的研制[J].農(nóng)機(jī)化研究,2014(2):120-122.
[3] 李源源,王軍,閆景鳳,等.奶牛精確飼喂機(jī)器人的設(shè)計(jì)[J].農(nóng)業(yè)科技與裝備,2013(11):36-37.