1 引言
機械手可在空間抓放物體,動作靈活多樣,適用于可變換生產(chǎn)品種的中、小批量自動化生產(chǎn),廣泛應(yīng)用于柔性自動線。我們開發(fā)的用于熱處理淬火加工的物料搬運機械手,是一種按預先設(shè)定的程序進行工件分揀、搬運和淬火加工的自動化裝置,可部分代替人工在高溫和危險的作業(yè)區(qū)進行單調(diào)持久的作業(yè),并可根據(jù)工件的變化以及淬火工藝的要求隨時更改相關(guān)控制參數(shù)。由于目前許多商品化的工業(yè)機器人(或機械手)大都采用封閉結(jié)構(gòu)的專用控制系統(tǒng),一般采用專用計算機(如PUMA工業(yè)機器人使用PDP-11)作為上層主控計算機,使用專用機器人語言(如VAL)作為離線編程工具,采用專用微處理器,并將控制算法固化在EPROM中[1],這種專用系統(tǒng)很難進行擴展、修改或再集成外部硬件(如傳感器)和軟件。因此,我們自行開發(fā)了氣、電混合驅(qū)動的三自由度圓柱坐標型機械手以及相應(yīng)的物料分揀裝置,并根據(jù)其控制要求設(shè)計了基于CAN總線的分式布開放結(jié)構(gòu)機械手控制系統(tǒng)。
本文重點闡述了該機械手控制系統(tǒng)的結(jié)構(gòu)組成,并從多個方面對控制系統(tǒng)軟件的設(shè)計方法作了進一步分析。
2 機械手基本結(jié)構(gòu)
物料搬運機械手由機械手和物料分揀兩部分裝置組成。如圖1所示,機械手主要由機座(采用步進電機驅(qū)動旋轉(zhuǎn))、水平手臂(采用直線坐標氣缸HMP-20-200)、垂直手臂(采用滑塊氣缸SLT-16-50)、氣爪(采用平行氣爪HGP-10-A)等部分組成。物料分揀裝置則由三個普通氣缸構(gòu)成,用以將不同長度的工件送至不同的軌道中,供機械手分別抓取和搬運。
圖1 物料搬運機械手結(jié)構(gòu)簡圖
3 基于CAN總線的機械手控制系統(tǒng)組成
在機械手控制系統(tǒng)的開發(fā)中,我們始終立足于開放結(jié)構(gòu)機械手控制器的設(shè)計思想,主要體現(xiàn)在以下幾方面:
?。?) 硬件基于標準總線結(jié)構(gòu),能實現(xiàn)現(xiàn)場設(shè)備之間、設(shè)備與各種傳感器之間以及現(xiàn)場設(shè)備與控制室之間的數(shù)據(jù)通信。
現(xiàn)場總線是當今自動化領(lǐng)域技術(shù)發(fā)展的熱點之一,被譽為自動化領(lǐng)域的計算機局域網(wǎng)。CAN(Controller Area Network)總線是現(xiàn)場總線的一個分支,是應(yīng)用于生產(chǎn)現(xiàn)場控制設(shè)備之間實現(xiàn)雙向串行多節(jié)點數(shù)字通信的系統(tǒng),是開放式、數(shù)字式的底層控制網(wǎng)絡(luò)。因其具有很高的可靠性和性能價格比,已經(jīng)成為國際標準,受到工業(yè)界的廣泛重視,并已被公認為幾種最有前途的現(xiàn)場總線之一。機械手控制系統(tǒng)建立在CAN總線網(wǎng)絡(luò)基礎(chǔ)上,能夠更好地滿足其開放性和可靠性的要求。
如圖2所示,控制系統(tǒng)中上位機采用PC機,在上位機的PCI總線插槽中安裝了瑞隆德公司的CANPCA單口CAN總線適配卡。下位機則采用若干CAN總線智能節(jié)點,分別與氣閥、步進電機驅(qū)動器、傳感器、開關(guān)等相連。上、下位機間的數(shù)據(jù)通信都是通過各自的CAN總線控制器SJA1000芯片和CAN總線收發(fā)器82C250芯片來實現(xiàn)的。其中,SJA1000具有完成CAN總線通信協(xié)議所要求的全部特性,它與獨立CAN總線控制器82C200完全兼容,并有支持CAN2.0B協(xié)議、擴展接收緩沖器、增強錯誤處理能力和增強驗收濾波等新增功能。四個下位機智能節(jié)點各自獨立完成現(xiàn)場數(shù)據(jù)采集和運行控制任務(wù),并通過SJA1000實現(xiàn)與上位機間的數(shù)據(jù)接收和發(fā)送。而上位機則通過PCI橋和接口控制電路來訪問CAN控制器,從而實現(xiàn)與下位機間的數(shù)據(jù)通信。
圖2 物料搬運機械手CAN總線控制系統(tǒng)示意圖
(2)使用基于非專用計算機平臺的開發(fā)系統(tǒng)(本控制系統(tǒng)中采用PC機)。
?。?)使用標準的操作系統(tǒng)和標準的控制語言。
機械手控制系統(tǒng)監(jiān)控軟件采用Visual C++6.0作為開發(fā)工具,運行于Windows98平臺上。VC是一種面向?qū)ο蟮木幊陶Z言,它提供了可視化編程環(huán)境,特別是提供了MFC類庫,封裝了Windows API接口函數(shù),并建立了應(yīng)用程序框架,使程序開發(fā)人員可以將主要精力集中于所要解決的具體問題上。
另外,在機械手的水平手臂氣缸伺服控制中,采用德國Festo公司的伺服定位控制器SPC200以及與之配套的內(nèi)置位移傳感器MLO-POT-0225、伺服定位控制連接器SPC-AIF-POT和比例方向流量閥MPYE-5-1/8-LF-010-B等裝置。機械手的回轉(zhuǎn)控制則采用北京凱恩帝數(shù)控公司的BD-3Y三相混和式步進電機驅(qū)動器。
4 機械手控制系統(tǒng)監(jiān)控軟件設(shè)計
4.1 監(jiān)控軟件基本結(jié)構(gòu)
機械手監(jiān)控軟件采用VC++6.0作為開發(fā)工具,應(yīng)用其提供的MFC類庫和APPWizard功能生成SDI單文檔界面應(yīng)用程序。VC++6.0提供了現(xiàn)成的窗口、工具條等制作手段,大大簡化了界面的開發(fā)過程,并且使得開發(fā)出的界面具有組態(tài)軟件風格,使用起來方便、靈活。如圖3所示,監(jiān)控軟件主要由系統(tǒng)界面、CAN總線通信、機械手監(jiān)控以及運行狀態(tài)顯示等模塊組成。下面就其中的數(shù)據(jù)通信、運行監(jiān)控及動態(tài)顯示部分作進一步分析。
圖3 機械手監(jiān)控軟件功能框圖
4.2 CAN總線數(shù)據(jù)通信
CAN總線是一種有效支持分布式控制及實時控制的多主串行總線,它具有短報文幀收發(fā)靈活、非破壞性基于優(yōu)先權(quán)的總線仲裁技術(shù)等多種優(yōu)越性能。在機械手控制系統(tǒng)中,CAN總線數(shù)據(jù)通信是通過與CANPCA適配卡一起提供Pcicandrv.LIB(CAN總線函數(shù)庫)中的相關(guān)函數(shù)調(diào)用實現(xiàn)的[5]。為了及時準確地了解CAN總線狀態(tài),并盡可能減少故障和縮小故障范圍,在控制軟件中專門設(shè)計了測試程序,負責CAN總線接口及通信部分的調(diào)試、運行任務(wù)。只有在測試正常的前提下,才能進一步運用CAN總線對機械手進行控制。CAN總線數(shù)據(jù)有標準幀和擴展幀之分,它們都是由信息和數(shù)據(jù)兩部分組成的,只是地址標識符的位數(shù)不同。下面是CAN總線初始化及CAN標準幀數(shù)據(jù)收發(fā)的部分代碼。
//CAN總線初始化
void CWuLiao::InitCAN()
?。?/p>
int retval;
retval =CAN_Open(); //打開PCI適配卡函數(shù)
if(retval!=1) AfxMessageBox("打開PCI卡失敗!");
ptrConfig = &Config;
ptrStruct = &Struct; //定義CAN數(shù)據(jù)幀結(jié)構(gòu)指針
ptrConfig->timer0=0x3f;
ptrConfig->timer1=0xff; //設(shè)置波特率為5K
ptrConfig->workMode=0; //使用11位的CAN節(jié)點地址
ptrStruct->card=0; //PCI適配卡卡號
ptrConfig->accCode=0; //CAN接收碼
ptrConfig->accMask=0xff; //CAN屏蔽碼
ptrConfig->control=1; //開放中斷
ptrConfig->filterMode=0; //CAN控制器采用單濾波方式
retval =CAN_Init(ptrStruct,ptrConfig); //調(diào)CAN初始化函數(shù)
if(retval!=1) AfxMessageBox("初始化失敗!");
?。?/p>
//CAN數(shù)據(jù)發(fā)送
void CWuLiao::OutputCAN(unsigned int CanID,unsigned ch ar H8B,unsigned ch ar L8B)
{
int retval;
ptrPacket = &Packet;
ptrStruct = &Struct;
ptrStruct->card=0;<