劉玉倩,劉永進(jìn),宋文超
(中國(guó)電子科技集團(tuán)公司第四十五研究所,北京101601)
機(jī)械手可在空間抓放物體,動(dòng)作靈活,廣泛應(yīng)用于工業(yè)自動(dòng)化設(shè)備。目前許多商品化的機(jī)械手大都采用封閉結(jié)構(gòu)的專(zhuān)用控制系統(tǒng),一般采用專(zhuān)用計(jì)算機(jī)作為上層主控計(jì)算機(jī),使用專(zhuān)用語(yǔ)言作為離線編程工具,采用專(zhuān)用微處理器,并將控制算法固化在EPROM 中,這種專(zhuān)用系統(tǒng)很難進(jìn)行擴(kuò)展、修改或再集成外部硬件和軟件。本文所研究的機(jī)械手以半導(dǎo)體設(shè)備為應(yīng)用實(shí)例,開(kāi)發(fā)了氣、電混合驅(qū)動(dòng)的三自由度圓柱坐標(biāo)型機(jī)械手,并根據(jù)其控制要求設(shè)計(jì)了基于CAN 總線的機(jī)械手通信協(xié)議,可實(shí)現(xiàn)自動(dòng)運(yùn)送硅片或晶圓片到各個(gè)工藝位置,并且可根據(jù)晶圓片尺寸及工藝要求更改相關(guān)控制參數(shù)。
在自動(dòng)化生產(chǎn)線上,機(jī)械手一般由控制系統(tǒng),驅(qū)動(dòng)系統(tǒng)以及機(jī)械本體執(zhí)行系統(tǒng)組成。執(zhí)行和驅(qū)動(dòng)系統(tǒng)主要是通過(guò)啟動(dòng)或其他動(dòng)力來(lái)驅(qū)動(dòng)機(jī)械部件的運(yùn)轉(zhuǎn)來(lái)實(shí)現(xiàn)取件的功能??刂葡到y(tǒng)是通過(guò)對(duì)驅(qū)動(dòng)系統(tǒng)進(jìn)行控制,使執(zhí)行系統(tǒng)按照預(yù)定的工藝進(jìn)行操作。本文所研究的機(jī)械手結(jié)構(gòu)如圖1所示。
圖1 機(jī)械手結(jié)構(gòu)圖
本文所研究的機(jī)械手采用安川MP2300 運(yùn)動(dòng)控制卡作為下位機(jī),與上位機(jī)之間采用CANopen 總線通訊,其控制系統(tǒng)通信拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 機(jī)械手CAN 總線通信原理圖
CANopen 為基于CAN 總線的高層協(xié)議,它基于CAN 總線的數(shù)據(jù)鏈路層和物理層,對(duì)應(yīng)用層做出了相應(yīng)的規(guī)定。一個(gè)CANopen 設(shè)備模型分成三部分:通訊接口、對(duì)象字典、應(yīng)用程序。通訊接口提供在總線上發(fā)送和接收通訊對(duì)象的服務(wù)。對(duì)象字典描述了所有的數(shù)據(jù)類(lèi)型、通訊對(duì)象以及設(shè)備制定的對(duì)象,是連接應(yīng)用和通訊之間的媒介。應(yīng)用層提供了內(nèi)部控制功能,也提供了與硬件連接的接口。本文基于CANopen 協(xié)議實(shí)現(xiàn)機(jī)械手的通訊。
根據(jù)機(jī)械手的功能要求,設(shè)計(jì)PC 機(jī)與下位機(jī)之間的通信連接線,需要12 個(gè)輸入信號(hào)和12 個(gè)輸出信號(hào)來(lái)完成通信功能,具體的通信協(xié)議見(jiàn)下所述。PC 機(jī)輸出信號(hào)如表1所示。
PC 機(jī)輸入信號(hào)如表2所示。
軟件編程的實(shí)現(xiàn),在Windows 平臺(tái)下,使用VC++6.0 作為開(kāi)發(fā)工具。Copley 公司提供了功能強(qiáng)大的復(fù)層運(yùn)動(dòng)控制庫(kù)。本文主要使用CANopen類(lèi)、IOModule 類(lèi)以及Error 類(lèi)來(lái)實(shí)現(xiàn)。主要的功能實(shí)現(xiàn)函數(shù)如下:
CANOpen 總線通信程序,打開(kāi)CAN 卡并進(jìn)行相關(guān)參數(shù)設(shè)置:
表1 上位機(jī)-〉下位機(jī)指令
表2 下位機(jī)-〉上位機(jī)指令
上位機(jī)輸出執(zhí)行函數(shù):
int Down_QuickStop(); //機(jī)械手緊急停止
int Down_DontMove(); //機(jī)械手不動(dòng)作
int Down_LoadBoxGetWafer(UINT uLayer,UINT nSize); //送片盒取片
int Down_UnloadBoxSetWafer(UINT uLayer,UINT nSize); //放片盒放片
int Down_AjustGetWafer(UINT nSize); //定位機(jī)構(gòu)取片
int Down_AjustSetWafer(UINT nSize); //定位機(jī)構(gòu)放片
int Down_QiangGetWafer(UINT nSize); //腔體卡盤(pán)取片
int Down_QiangSetWafer(UINT nSize); //腔體卡盤(pán)放片
int Down_SearchHome(); //尋原點(diǎn)
int Down_GoHome(); //回原點(diǎn)
int Down_ScanWafer(UINT nSize); //硅片掃描
int Down_ALarmReset(); //報(bào)警復(fù)位
int Down_Vacum(bool m_bValue); //開(kāi)關(guān)真空
上位機(jī)輸入信號(hào)狀態(tài)函數(shù):
int Up_Error(); //機(jī)械手發(fā)生故障
int Up_Busy(); //機(jī)械手忙,不接受新指令
int Up_LoadBoxGetWaferSucess(UINT uLayer,UINT nSize); //送片盒取片成功
int Up_UnloadBoxSetWaferSucess(UINT uLayer,UINT nSize); //放片盒放片成功
int Up_AdjustGetWaferSucess(UINT nSize); //定位機(jī)構(gòu)取片成功
int Up_AdjustSetWaferSucess(UINT nSize); //定位機(jī)構(gòu)放片成功
int Up_QiangGetWaferSucess(UINT nSize); //腔體卡盤(pán)取片成功
int Up_QiangSetWaferSucess(UINT nSize); //腔體卡盤(pán)放片成功
int Up_SeachHomeSucess(); //尋原點(diǎn)成功
int Up_GoHomeSucess(); //回原點(diǎn)成功
int Up_ScanWaferSucess(UINT nSize); //硅片掃描成功
int Up_AlarmResetSucess(); //報(bào)警復(fù)位成功
int Up_ScanWaferResult(UINT nLayer); //硅片掃描結(jié)果
int Up_VacumSucess(bool m_bValue); //開(kāi)關(guān)真空成功標(biāo)志
利用CAN 總線技術(shù),在Windows 環(huán)境下使用VC++6.0 進(jìn)行軟件編程,提高了控制系統(tǒng)的實(shí)時(shí)性和可靠性。當(dāng)機(jī)械手工藝位置增加時(shí)可增加IO節(jié)點(diǎn),擴(kuò)展通信協(xié)議,滿(mǎn)足設(shè)備工藝要求。通過(guò)在半導(dǎo)體設(shè)備中的應(yīng)用表明,該機(jī)械手運(yùn)行可靠,能夠完全滿(mǎn)足設(shè)計(jì)要求。
[1]陽(yáng)憲惠.現(xiàn)場(chǎng)總線技術(shù)及應(yīng)用[M].北京:清華大學(xué)出版社,2008.
[2]鄔寬明.CAN 總線原理與應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1996.