<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

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

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

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

          1引言

          本文引用地址:http://www.ex-cimer.com/article/163547.htm

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

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

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

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


          圖1物料搬運(yùn)機(jī)械手結(jié)構(gòu)簡圖

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

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

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

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

            如圖2所示,控制系統(tǒng)中上位機(jī)采用PC機(jī),在上位機(jī)的PCI總線插槽中安裝了瑞隆德公司的CANPCA單口CAN總線適配卡。下位機(jī)則采用若干CAN總線智能節(jié)點(diǎn),分別與氣閥、步進(jìn)電機(jī)驅(qū)動(dòng)器、傳感器、開關(guān)等相連。上、下位機(jī)間的數(shù)據(jù)通信都是通過各自的CAN總線控制器SJA1000芯片和CAN總線收發(fā)器82C250芯片來實(shí)現(xiàn)的。其中,SJA1000具有完成CAN總線通信協(xié)議所要求的全部特性,它與獨(dú)立CAN總線控制器82C200完全兼容,并有支持CAN2.0B協(xié)議、擴(kuò)展接收緩沖器、增強(qiáng)錯(cuò)誤處理能力和增強(qiáng)驗(yàn)收濾波等新增功能。四個(gè)下位機(jī)智能節(jié)點(diǎn)各自獨(dú)立完成現(xiàn)場數(shù)據(jù)采集和運(yùn)行控制任務(wù),并通過SJA1000實(shí)現(xiàn)與上位機(jī)間的數(shù)據(jù)接收和發(fā)送。而上位機(jī)則通過PCI橋和接口控制電路來訪問CAN控制器,從而實(shí)現(xiàn)與下位機(jī)間的數(shù)據(jù)通信。


          圖2物料搬運(yùn)機(jī)械手CAN總線控制系統(tǒng)示意圖

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

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

            機(jī)械手控制系統(tǒng)監(jiān)控軟件采用VisualC++6.0作為開發(fā)工具,運(yùn)行于Windows98平臺(tái)上。VC是一種面向?qū)ο蟮木幊陶Z言,它提供了可視化編程環(huán)境,特別是提供了MFC類庫,封裝了WindowsAPI接口函數(shù),并建立了應(yīng)用程序框架,使程序開發(fā)人員可以將主要精力集中于所要解決的具體問題上。

            另外,在機(jī)械手的水平手臂氣缸伺服控制中,采用德國Festo公司的伺服定位控制器SPC200以及與之配套的內(nèi)置位移傳感器MLO-POT-0225、伺服定位控制連接器SPC-AIF-POT和比例方向流量閥MPYE-5-1/8-LF-010-B等裝置。機(jī)械手的回轉(zhuǎn)控制則采用北京凱恩帝數(shù)控公司的BD-3Y三相混和式步進(jìn)電機(jī)驅(qū)動(dòng)器。

          4機(jī)械手控制系統(tǒng)監(jiān)控軟件設(shè)計(jì)

            4.1監(jiān)控軟件基本結(jié)構(gòu)

            機(jī)械手監(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總線通信、機(jī)械手監(jiān)控以及運(yùn)行狀態(tài)顯示等模塊組成。下面就其中的數(shù)據(jù)通信、運(yùn)行監(jiān)控及動(dòng)態(tài)顯示部分作進(jìn)一步分析。


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

            4.2CAN總線數(shù)據(jù)通信

            CAN總線是一種有效支持分布式控制及實(shí)時(shí)控制的多主串行總線,它具有短報(bào)文幀收發(fā)靈活、非破壞性基于優(yōu)先權(quán)的總線仲裁技術(shù)等多種優(yōu)越性能。在機(jī)械手控制系統(tǒng)中,CAN總線數(shù)據(jù)通信是通過與CANPCA適配卡一起提供Pcicandrv.LIB(CAN總線函數(shù)庫)中的相關(guān)函數(shù)調(diào)用實(shí)現(xiàn)的[5]。為了及時(shí)準(zhǔn)確地了解CAN總線狀態(tài),并盡可能減少故障和縮小故障范圍,在控制軟件中專門設(shè)計(jì)了測試程序,負(fù)責(zé)CAN總線接口及通信部分的調(diào)試、運(yùn)行任務(wù)。只有在測試正常的前提下,才能進(jìn)一步運(yùn)用CAN總線對(duì)機(jī)械手進(jìn)行控制。CAN總線數(shù)據(jù)有標(biāo)準(zhǔn)幀和擴(kuò)展幀之分,它們都是由信息和數(shù)據(jù)兩部分組成的,只是地址標(biāo)識(shí)符的位數(shù)不同。下面是CAN總線初始化及CAN標(biāo)準(zhǔn)幀數(shù)據(jù)收發(fā)的部分代碼。

            //CAN總線初始化

            voidCWuLiao::InitCAN()

           ?。?/p>

            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é)點(diǎn)地址

            ptrStruct->card=0;//PCI適配卡卡號(hào)

            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(初始化失敗!);

            }

            //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個(gè)字節(jié)

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

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

            ptrPacket->data[0]=0x44;

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

            ptrPacket->data[2]=H8B;

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

           


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();