朱永平,廖 洵
(湖北工業(yè)大學(xué)機(jī)電研究設(shè)計(jì)院,湖北 武漢430070)
隨著科技的發(fā)展,工業(yè)自動(dòng)化水平的不斷提高,如何應(yīng)對(duì)不斷增長(zhǎng)的人力成本,降低物流費(fèi)用,提高生產(chǎn)效率,提高制造業(yè)企業(yè)的效益,成為各個(gè)公司亟待解決的問(wèn)題.在汽車組裝車間使用AGV自動(dòng)導(dǎo)向車按順序運(yùn)送每臺(tái)汽車所需零部件到生產(chǎn)線,再由工人把零件組裝成整車,這是日產(chǎn)2005年引進(jìn)的IFA(Integrated Factory Automation)理念[1],確定了“零部件合理化”和“廉價(jià)自動(dòng)化”兩大主題.自動(dòng)導(dǎo)向車的廣泛使用,方便作業(yè)人員拿取零部件,減輕勞動(dòng)強(qiáng)度.通過(guò)生產(chǎn)、物流現(xiàn)場(chǎng)及設(shè)備制造等各個(gè)環(huán)節(jié),通過(guò)相互緊密協(xié)作,使得物流速度加快,物流時(shí)間縮短,占用空間縮小,大大節(jié)省成本,實(shí)現(xiàn)物流環(huán)節(jié)的合理銜接并取得最佳經(jīng)濟(jì)效益,從而增加企業(yè)利潤(rùn)[2].
AGV自動(dòng)導(dǎo)向車主要機(jī)械部分由車身、控制面板、驅(qū)動(dòng)輪、充電蓄電池組成.電氣部分由PLC、伺服電機(jī)、傳感器、喇叭、無(wú)線發(fā)射裝置組成(圖1).AGV自動(dòng)導(dǎo)向車采用固定導(dǎo)引線方式[3],原理是在AGV自動(dòng)導(dǎo)向車行駛路徑上埋設(shè)磁帶,通過(guò)安裝在底盤(pán)的磁感應(yīng)傳感器,AGV自動(dòng)導(dǎo)向車感知磁場(chǎng)強(qiáng)度的強(qiáng)弱,作為糾偏輸入信號(hào),進(jìn)而控制AGV自動(dòng)導(dǎo)向車的行駛.AGV自動(dòng)導(dǎo)向車運(yùn)行線路上垂直于主線路設(shè)置有3條不同磁極的短磁條,行駛過(guò)程中車身磁極感應(yīng)器將其轉(zhuǎn)化為減速、停止、加速等不同速度指令.車頭安裝有障礙物傳感器,實(shí)現(xiàn)對(duì)前方料車、人等障礙物的識(shí)別,當(dāng)遇到障礙物時(shí)發(fā)出停車指令從而保護(hù)人和車輛安全.目前大多數(shù)試驗(yàn)性AGV的研究都依賴于有線的通訊系統(tǒng)控制和反饋數(shù)據(jù),將上位機(jī)安裝在車體上,占用車體空間,且對(duì)硬件要求較高,導(dǎo)致了在AGV運(yùn)行時(shí)難以迅速有效地進(jìn)行人工干預(yù),控制方式不靈活[4],本文引入無(wú)線通訊技術(shù)從而提高了控制的靈活性,車載PLC把AGV自動(dòng)導(dǎo)向車所在位置、電池電量、故障信號(hào)通過(guò)無(wú)線局域網(wǎng)發(fā)送到上位工控機(jī),工控機(jī)可對(duì)AGV車進(jìn)行速度控制、狀態(tài)調(diào)整,實(shí)現(xiàn)計(jì)算機(jī)遠(yuǎn)程監(jiān)控.
圖1 自動(dòng)導(dǎo)向車結(jié)構(gòu)
可編程控制器(PLC)作為工業(yè)控制專用的電子設(shè)備,由于其結(jié)構(gòu)簡(jiǎn)單、可靠性高、易于編程、調(diào)試方便,成為工業(yè)現(xiàn)場(chǎng)最主要的控制裝置,在工業(yè)控制現(xiàn)場(chǎng)已廣泛應(yīng)用.同時(shí)PLC具有較好的通信功能,在工業(yè)現(xiàn)場(chǎng)設(shè)備分布分散,不具備架設(shè)線纜的條件下,利用無(wú)線通信功能可方便地將現(xiàn)場(chǎng)信號(hào)接入監(jiān)控管理系統(tǒng).
AGV自動(dòng)導(dǎo)向車控制系統(tǒng)采用OMRON公司的CP1H系列PLC.該P(yáng)LC帶有模擬量輸入/輸出,USB口可供上位計(jì)算機(jī)編程,還帶有2個(gè)可擴(kuò)展的串口接口,配合工業(yè)無(wú)線串口轉(zhuǎn)換設(shè)備實(shí)現(xiàn)數(shù)據(jù)接收發(fā)送.
在每臺(tái)AGV自動(dòng)導(dǎo)向車上安裝有無(wú)線串口轉(zhuǎn)換設(shè)備,負(fù)責(zé)PLC串口數(shù)據(jù)的轉(zhuǎn)換,并將數(shù)據(jù)通過(guò)無(wú)線信號(hào)發(fā)送至AGV行走軌道線路旁最近的無(wú)線接入點(diǎn)AP.環(huán)形軌道周圍可以布置多個(gè)鏈接到以太網(wǎng)的無(wú)線接入點(diǎn)AP,每臺(tái)AGV自動(dòng)導(dǎo)向車在沿軌道運(yùn)行中尋找最近的無(wú)線接入點(diǎn)AP,并且根據(jù)信號(hào)的強(qiáng)度自動(dòng)切換接入點(diǎn),實(shí)現(xiàn)無(wú)縫快速漫游功能.無(wú)線接入點(diǎn)AP負(fù)責(zé)接收PLC數(shù)據(jù)并通過(guò)交換機(jī)傳至上位計(jì)算機(jī).無(wú)線串口轉(zhuǎn)換設(shè)備和無(wú)線接入點(diǎn) AP 通過(guò)802.11a/b/g及 TCP/IP 協(xié)議實(shí) 現(xiàn)通訊,最終由上位機(jī)完成PLC監(jiān)控和AGV管理.
上位機(jī)的功能是用來(lái)監(jiān)控AGV車運(yùn)行狀態(tài)和控制PLC.上位機(jī)通信使用主從總線通信方式,以上位機(jī)作為工業(yè)局域網(wǎng)的主站,通過(guò)無(wú)線串口轉(zhuǎn)換設(shè)備及無(wú)線AP連入該網(wǎng)的所有AGV車上的PLC皆為從站(圖2).
圖2 系統(tǒng)結(jié)構(gòu)
在本系統(tǒng)中,上位機(jī)監(jiān)控各個(gè)AGV自動(dòng)導(dǎo)向車的運(yùn)行狀態(tài),由于AGV自動(dòng)導(dǎo)向車之間是獨(dú)立運(yùn)行的,它們之間無(wú)數(shù)據(jù)交換,故屬于主從通信.主站與從站建立好連接后,采用應(yīng)答方式進(jìn)行通信,主站發(fā)出命令幀,從站使用響應(yīng)幀應(yīng)答,命令幀或響應(yīng)幀中包含相應(yīng)的數(shù)據(jù)即可使需要交換的數(shù)據(jù)送至對(duì)方.上位機(jī)在正常運(yùn)行過(guò)程中使用輪詢方式進(jìn)行通信,以避免通信總線發(fā)生沖突,確保定時(shí)刷新從站PLC中的信息.對(duì)于PLC主動(dòng)發(fā)出的報(bào)警或者異常信息,上位機(jī)采用中斷方式進(jìn)行處理,實(shí)現(xiàn)通信.上位機(jī)向PLC發(fā)出接收數(shù)據(jù)的指令,PLC判斷是否正確,如果正確則向上位機(jī)傳送數(shù)據(jù),上位機(jī)接收到數(shù)據(jù)也同樣判斷是否來(lái)自PLC發(fā)出的正確指令,如果正確則上位機(jī)和PLC雙向?qū)崿F(xiàn)通信線路的建立.上位機(jī)控制流程如圖3所示.
圖3 上位機(jī)控制流程圖
用Visual C++實(shí)現(xiàn)端口初始化的源代碼[5]如下
BOOL Cserial::Open(int nPort) //nPort為計(jì)算機(jī)串行通信端口號(hào)nport=1為端口1,nport=2為端口2
{
Char szPort[15];
DCB dob;
m_h(yuǎn)IDCComDev=CreaterFile(szPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,F(xiàn)ILE_ATTRIBUTE_NOMAL|FILE_FLAG_OVERLAPPED,NULL);
dcb.DCBlength-sizeof(DCB);
GetCommState(m_h(yuǎn)IDComdev,&dcb);//取得通信資源當(dāng)前設(shè)置
dcb.BaudRate=9600;//設(shè)定數(shù)據(jù)傳輸速率為9600
dcb.Bytesize=7;//7數(shù)據(jù)位
dcb.Parity=2;//偶校驗(yàn)
dcb.StopBits=0;//設(shè)定1個(gè)停止位
if(SetCommState(m_h(yuǎn)IDComDev,&dcb))
return(TRUE);
else return(FALSE);//設(shè)置端口,若設(shè)置成功則返回TRUE,否則返回FALSE
}
握手聯(lián)絡(luò)Visual C++語(yǔ)言的源代碼如下
BOOL CNTJDlg::ReadFormPLC(char*Read_char char*Read_address,int Read_bytes)
{
Cserial Serial;//用戶串行通信的類
Char read_BUFFER;
if(Serial.Open(2))//初始化串行通信口COM2
{
Serial.SendData(&ENQ_request,1);//發(fā)送聯(lián)絡(luò)信號(hào)
Sleep(1000);//等待1s
Serial.ReadData(&read_BUFFER,1);//讀取 PLC響應(yīng)信號(hào)
If(read_BUFFER==ACK)//如果PLC響應(yīng)信號(hào)等于ACK,則對(duì)PLC進(jìn)行操作
{
Serial.Close();//操作完畢,關(guān)閉通信口
Return(TRUE);//成功
}
else
return(FALSE);//失敗
}
}
使用PLC無(wú)線通訊技術(shù)進(jìn)行監(jiān)控和控制,工作人員能及時(shí)準(zhǔn)確知道AGV自動(dòng)導(dǎo)向車故障位置與類型并加以解決,減少了因?yàn)槲锪鬟\(yùn)輸故障導(dǎo)致生產(chǎn)線停線對(duì)整個(gè)生產(chǎn)造成的影響.達(dá)到了企業(yè)提高物流運(yùn)轉(zhuǎn)效率、降低成本的目的,提高了企業(yè)的整體管理水平.
[1]《Material Flow》編輯部.日產(chǎn)汽車?yán)?AGV提高混流生產(chǎn)效率[J].張 毅譯.物流技術(shù)與應(yīng)用,2009(7):46-53.
[2]金玉萍,向光義.AGVS在現(xiàn)代生產(chǎn)物流系統(tǒng)中的應(yīng)用[J].物流技術(shù)與應(yīng)用,2005(8):90-94.
[3]于國(guó)英,高 峰,張小麗,等.現(xiàn)代制造車間AGV導(dǎo)航與控制的研究[J].科技信息,2011(20):204.
[4]汪焰恩,魏生民,王碧輝.無(wú)線傳輸?shù)囊曈X(jué)引導(dǎo)式AGV系統(tǒng)[J].西安工業(yè)大學(xué)學(xué)報(bào),2010,30(1):25-29.
[5]李現(xiàn)勇.Visual C++ 串口通信技術(shù)與工程實(shí)踐[M].北京:人民郵電出版社,2004:301-302.