關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于CAN總線的機械手控制系統(tǒng)

基于CAN總線的機械手控制系統(tǒng)

作者: 時間:2009-09-29 來源:網(wǎng)絡(luò) 收藏

1引言

本文引用地址:http://2s4d.com/article/163547.htm

  可在空間抓放物體,動作靈活多樣,適用于可變換生產(chǎn)品種的中、小批量自動化生產(chǎn),廣泛應(yīng)用于柔性自動線。我們開發(fā)的用于熱處理淬火加工的物料搬運,是一種按預(yù)先設(shè)定的程序進行工件分揀、搬運和淬火加工的自動化裝置,可部分代替人工在高溫和危險的作業(yè)區(qū)進行單調(diào)持久的作業(yè),并可根據(jù)工件的變化以及淬火工藝的要求隨時更改相關(guān)控制參數(shù)。由于目前許多商品化的工業(yè)機器人(或)大都采用封閉結(jié)構(gòu)的專用,一般采用專用計算機(如PUMA工業(yè)機器人使用PDP-11)作為上層主控計算機,使用專用機器人語言(如VAL)作為離線編程工具,采用專用微處理器,并將控制算法固化在EPROM中[1],這種專用系統(tǒng)很難進行擴展、修改或再集成外部硬件(如傳感器)和軟件。因此,我們自行開發(fā)了氣、電混合驅(qū)動的三自由度圓柱坐標(biāo)型機械手以及相應(yīng)的物料分揀裝置,并根據(jù)其控制要求設(shè)計了的分式布開放結(jié)構(gòu)機械手。

  本文重點闡述了該機械手的結(jié)構(gòu)組成,并從多個方面對控制系統(tǒng)軟件的設(shè)計方法作了進一步分析。

2機械手基本結(jié)構(gòu)

  物料搬運機械手由機械手和物料分揀兩部分裝置組成。如圖1所示,機械手主要由機座(采用步進電機驅(qū)動旋轉(zhuǎn))、水平手臂(采用直線坐標(biāo)氣缸HMP-20-200)、垂直手臂(采用滑塊氣缸SLT-16-50)、氣爪(采用平行氣爪HGP-10-A)等部分組成。物料分揀裝置則由三個普通氣缸構(gòu)成,用以將不同長度的工件送至不同的軌道中,供機械手分別抓取和搬運。


圖1物料搬運機械手結(jié)構(gòu)簡圖

3的機械手控制系統(tǒng)組成

  在機械手控制系統(tǒng)的開發(fā)中,我們始終立足于開放結(jié)構(gòu)機械手控制器的設(shè)計思想,主要體現(xiàn)在以下幾方面:

 ?。?)硬件標(biāo)準(zhǔn)結(jié)構(gòu),能實現(xiàn)現(xiàn)場設(shè)備之間、設(shè)備與各種傳感器之間以及現(xiàn)場設(shè)備與控制室之間的數(shù)據(jù)通信。

  現(xiàn)場總線是當(dāng)今自動化領(lǐng)域技術(shù)發(fā)展的熱點之一,被譽為自動化領(lǐng)域的計算機局域網(wǎng)。(ControllerAreaNetwork)總線是現(xiàn)場總線的一個分支,是應(yīng)用于生產(chǎn)現(xiàn)場控制設(shè)備之間實現(xiàn)雙向串行多節(jié)點數(shù)字通信的系統(tǒng),是開放式、數(shù)字式的底層控制網(wǎng)絡(luò)。因其具有很高的可靠性和性能價格比,已經(jīng)成為國際標(biāo)準(zhǔn),受到工業(yè)界的廣泛重視,并已被公認(rèn)為幾種最有前途的現(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)示意圖

 ?。?)使用基于非專用計算機平臺的開發(fā)系統(tǒng)(本控制系統(tǒng)中采用PC機)。

  (3)使用標(biāo)準(zhǔn)的操作系統(tǒng)和標(biāo)準(zhǔn)的控制語言。

  機械手控制系統(tǒng)監(jiān)控軟件采用VisualC++6.0作為開發(fā)工具,運行于Windows98平臺上。VC是一種面向?qū)ο蟮木幊陶Z言,它提供了可視化編程環(huán)境,特別是提供了MFC類庫,封裝了WindowsAPI接口函數(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)軟件風(fēng)格,使用起來方便、靈活。如圖3所示,監(jiān)控軟件主要由系統(tǒng)界面、CAN總線通信、機械手監(jiān)控以及運行狀態(tài)顯示等模塊組成。下面就其中的數(shù)據(jù)通信、運行監(jiān)控及動態(tài)顯示部分作進一步分析。


圖3機械手監(jiān)控軟件功能框圖

  4.2CAN總線數(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]。為了及時準(zhǔn)確地了解CAN總線狀態(tài),并盡可能減少故障和縮小故障范圍,在控制軟件中專門設(shè)計了測試程序,負(fù)責(zé)CAN總線接口及通信部分的調(diào)試、運行任務(wù)。只有在測試正常的前提下,才能進一步運用CAN總線對機械手進行控制。CAN總線數(shù)據(jù)有標(biāo)準(zhǔn)幀和擴展幀之分,它們都是由信息和數(shù)據(jù)兩部分組成的,只是地址標(biāo)識符的位數(shù)不同。下面是CAN總線初始化及CAN標(biāo)準(zhǔn)幀數(shù)據(jù)收發(fā)的部分代碼。

  //CAN總線初始化

  voidCWuLiao::InitCAN()

  {

  intretval;

  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ā)送

  voidCWuLiao::OutputCAN(unsignedintCanID,unsignedcharH8B,unsignedcharL8B)

 ?。?/p>

  intretval;

  ptrPacket=Packet;

  ptrStruct=Struct;

  ptrStruct->card=0;

  ptrPacket->length=4;//發(fā)送數(shù)據(jù)長度4個字節(jié)

  ptrPacket->rtr=0;//表示發(fā)送的是數(shù)據(jù)幀,而非遠(yuǎn)程幀

  ptrPacket->CAN_ID=CanID;//定義CAN節(jié)點地址

  ptrPacket->data[0]=0x44;

  ptrPacket->data[1]=0x4f;//CAN數(shù)據(jù)發(fā)送命令字

  ptrPacket->data[2]=H8B;

  ptrPacket->data[3]=L8B;//要發(fā)送的高、低字節(jié)

 


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉