机械专业综合课程设计说明书-产品码垛作业工业机器人离线编程与虚拟仿真_第1页
机械专业综合课程设计说明书-产品码垛作业工业机器人离线编程与虚拟仿真_第2页
机械专业综合课程设计说明书-产品码垛作业工业机器人离线编程与虚拟仿真_第3页
机械专业综合课程设计说明书-产品码垛作业工业机器人离线编程与虚拟仿真_第4页
机械专业综合课程设计说明书-产品码垛作业工业机器人离线编程与虚拟仿真_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机械专业综合课程设计说明书

产品码垛作业工业机器人离线编程与

虚拟仿真

学院(系):机电信息工程学院

专业:___________机械___________

1拆垛机器人工作站构成

自动化物流系统中,与码垛应用相对应的为拆跺应用,即把成垛

的产品依次搬运至流水线上,例如烟草物流系统中出人智能仓库时的码

垛拆垛、袋装原材料拆垛并开袋、汽车零部件的拆垛上料等应用。

本工作站为箱类产品拆垛应用,成垛的原料摆放在枝板上,随枝板

流动至枝板输送链拆垛工位处,利用ABB公司的IRB6700机器人将

产品从枝板上搬运至产品输送链上,以便流至下工位进行处理,如图

6—I所示。

I)枝板输送链载有产品的枝板经由左侧的进料输送链流转至末

端拆垛工位,并且对末端设有至lj位检测传感器,当机器人完成该校

板的拆垛任务后,空枝板经由右侧输出线传至下一士位,便于空枝板的

回收,之后进料输送链传送下一个载有产品的枝板,依次循环

2)吸盘工具机器人末端法兰盘装有吸盘工具(图6-3),利用

真空发生器产生真空,对产品进行拾取处理,机器人利用输出信号控制

真空的产生与关闭,从而实现产品盒的拾取与释放,该工具采用16个

吸盘,气路分为4蹈,利用机器人4路数字输出端口分别进行控制,

3)产品输送链I机器人将拆垛产品按照指定的方式放置在产品输

送链前端,经由该输送链传送至下工位;在该输送链前端设有传感器,

用于枪测当前位置是否有物料,当没有物料时才允许机器人执行下一个

物料的放置,如图6-5所示。

2、信号组的设置与用法

在使用多个数字输出端口进行传输附,使用信号组的形式会让信号的处理变得艮

单,例如图6-6中需要处建3个数字箱出端口,假设命名为dol、do2、do3,地址夕

为I、2、3,则在系统中需要依次定义3个数字输出信号,并且在程序中每次控制主

个信号,均需要使用3条指令进行话何,如果将该3个输出端口并为一组,统一设后

个信号组改1,地址为1~3,则在程序中只需要按照二进制的排列规则对gol进行胃

即可,大大简化输出控制。如:

SetGogol.7.等同于Scidol;Setdo2;Setdo3;

SetGogol.5.当可干SetdolResetdo2,Setdo3e

3、数组的应用

在定义程序数据时,可以将同种类型、同种用途的数值存放在同

一个数据中,当调用该数据时需要写明索引号来指定我们调用的是该

数据中的哪个数值,这就是所谓的数

组。在RAPID申可以定义维数组、二维数组以及三维数组。

1.一维数组

VARnumregl{3|:=[5.7.MJ;!定义一维致SBregI

reg2:»regl(2);被赋值为7

2.二维数组

VARnumregl(3,4}:="1.2.3.4].[5.6,7,8].[9.10."J2)b!定义二维数组regl

reg2:=regl{3.2};!reg2-赋值为10

3.三维数组

VARnumreglI.2]43,4)M(5,6]J7,8]]1;!定义三维孩组regl

reg2:=regl{2.1.2).!reg2被赋值为6

在程序嫔写过程中,当需要调用大量的同种类型、同种用处的数据时,在创建数据

时可以利用数组来存放这些数据,这样便于在编程过程中对其进行灵活调用。

其至在大尾I/O信号调用过程中.也可以先将I/O进行别名的操作.格I/O信号与信

号数据关联起来,之后将这些信号数据定义为数组类型,在程序编写中便于对同类型、

同用处的信号进行调用

4、写屏指令的运用

在编写例行程序时,将该程序中的某些数据设置为参数,这样在

调用该程序时输入不同的参数数据,贝lj可对应执行在当前数据值情况

下机器人对应执行的任务。

例如,在切割应用中,频繁使用切割正方形的程序,切割正方

形的指令及算法是一致的,只是正方形的顶点位置、边长不一致,这

样可以将这两个变量设为参数。

PROCrSquare(robtargetpBase,numnSideSize)

Move

LpBase,vI000,fine,toolI\WObj:=wobjO;

MoveOffs(pBase,nSideSize,0,0),vI000,fine,toolI\

LWObj:=wobjO;

MoveOffs(pBase,nSideSize,nSideSize,的,v1000,fine,

LtoolI\WObj:=wobjO;

MoveOffs(pBase,0,nSideSi罚,0),vI000,fine,toolI\

LWObj:=wobjO;

Move

LpBase,vI000,fine,toolI\WObj:=wobjO;

ENDPRO

C

PROCMAIN()

rSqu

arepI,I00;

rSqu

arep2,200;

ENDPRO

C

在调用该切割正方形的程序时,再指定当前正方形的顶点以及边

长即可在对应位置切割对应边长大小的正方形。上述程序中,机器人

先后切割了2个正方形,以pl为顶点、100为边长的正方形,以p2

为顶点、200为边长的正方形。

在机器人应用过程中,节拍经常是我们关注的一个焦点,在RAPID

中有专门用于计时的时钟数据以及一系列的计时指令和函数。

5、记时指令的应用

在机器人应用过程中,节拍经常是我们关注的一个焦点,在RAPID卬自专门用于计

时的时钟数据以及一系列的诘时指令和函数。

时钟数据:Clock,必须定义为变单类型,最小计时单位为0.001s。

计时指令和函数:

ClkStart

.开始计时,

ClkStop

,停止计时,

ClkRes

et.时钟复位,

ClkRead.读取时钟数

值。

案例:

VARclockclockI;

PERSnumCycleTIme;

PROCrMove()

MoveLpl,vlOO,fi时,tooJO,

ClkResetclockI;

ClkStartclockI,

MoveLp2,vI00,fine,toolO;

ClkStopclockI吨

CycleTime'=ClkRead(clockI),

ENDPROC

上述案例中,机器人到达pl点后开始计时,至lj达p2点后停止计

时,之后利用CkReadi卖取当前时钟数值,并将其赋值给数值型变

量CycleTime,贝!J当前CycleTime的值即为机器人从pl点至ljp2

点的运动时间。

6、拆垛程序编写

MODULEMainMoudlePERStooldata

tVacuum:=[TRUE,[[0,0,200],[1,0,0,0)],[30,[0,0,

130],[1,0,0,0],0,0,0));I定义工具坐标系数据

tVacuum

PERSrobtarget

pPickBase:=[[1520.639271586,310.000414148,-49.999926686),[-0_

000000328,0,1,-0.000000068],[0,-1,0,0),(9E9,9E9,

9E9,9E9,9E9,9E9]];

I定义拆垛工位拾取基准点,以6.4.4节中所描述的第2种拾取情况♦

为准

PERSrobtarget

pP!aceType1:=[[353.779984371,1371.090215836,498_624386673),

[0_707I06815,0_000000588,0.707106747,0.000000435),[1,-1,

1,0),[9E9,9E9,9E9,9E9,9E9,9E9)),

I定义在产品结上放置产品的位置,第I种情况

00543,0.00000072,1,-0.000000I

27),(0,050,0),(9E9,9E9,9E9,9E9,9E9,9E9));

I定义在产品线上放置产品的位置,第2种情况

PERSrobtarget

pPlaceType3:=((654.92,1393.57,999.29),(3.86561

E-07,0.706048,-0.708164,-3.24774E-07),[0,0,-I,0),[9E+O

9,9E+09,9E+09,9E+09,9E+09,9E+09));

1定义在产品线上放置产品的位置,第3种情况

PERSrobtarget

pHo

me:=((96l.98463257,0,1800],[-0.000000365,0,1,0],[0,0,0,0],[9E9,9E

9,9E9,9E9,9E9,9E9]];

I定义机器人工作原点

PERSrobtarget

pPick:=((l515.64,310,950),(-3.28i07,0,1,-6.8巳

08],[0,-I,0,0),[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09)

I定义机器人拾取位置,此位置以pPickBase为基准计算得出

PERSrobtarget

pPickAfter:=[[1015.64,810,I600],[-3.28E-07,0,1,-6.8巳

08),(0,-I,0,0],(9E+09,9EH-09,9E+09,9E+09,9E+09,9

E+09));

I定义机器人拾取产品后的抬高位置

PERSspeeddataMinSpeed:=[500,I00,5000,I000);

PERSspeeddataMidSpeed:=[1500,200,5000,I000);

PERSspeeddataMaxSpeed:=(3000,300,5000,1000);

!定义不同的速度数捱,用于不同的运动过程

PERSloaddataLoadEmpty:=(O.O1,(0,0,1],[1,0,0,0],0儿。];

1定义机器人空负载时的有效载荷数据,重量设为O.OIkg,可

将其视为空载荷

PERSloaddata

LoadSingle:=[20,[0,0,150]5[1505

0,0],0,0,0];I定义机器人拾取I

个产品时的负载数据

PERSloaddata

LoadDouble:=[40,(0,0,500),(1,0,

0,0)夕,0,0);1定义机器人拾取

2个产品时的负载数据

PERSnumnCounter:=1;

I定义拆垛计数器

PERSnum

nCycleTime:=6.84

8,I定义数值型数

据,用于表示节拍

时间

VARclock

Timer;1定义

时钟数据,用

于计算节拍

PERSnumnPos{10,4}:=[[310,0,1300,I),(310,-610,1300,

I],[-5,0,1000,3),(-5,-620,1000,3),(605,0,1000,2),(605,-610,10

00,2),[0,0,0,2),(0,-610,0,2),[615,0,0,3),(615,-620,0,3));

1定义位置数组,第一维为10,依次对应产品垛中的I0个拾

取位置I第二维为4,分别对应单个

拾取位置中的四项属性值,依次为X偏移值、丫偏移值、Z偏移值、

拾取情况种类,拾取位置以示教的第2种情况中的拾取位置为基准,

结合该数组申的位置偏移量,最终计算出每次拾取产品时的具体位

置,从而依次完成各产品的拾取1最上面一层的两个拾取位置I、2,

如图6-34所示

中间层的4个拾取位置3'4、56,如图6・35所示最下面一层

的4个拾取位置7、8、9、10,如图636所示,其中7是

拾取基准点,其他位置均

PROCMain()

1声明主程序

rlnitAII-

I程序起始位置调用初始化程序,用于复位机器人位置、信号、

数据等

WHILETRUEDO

1采用WHILETRUEDO无限循环结构,将机器人需要重复运行

的动作与初始化程序隔离开

rPick;

I调用拾取产品的程序

rPlace;

I调用放置产品的程序

ENDWHILE

ENDPROC

PR

OC

rlnit

AH()

1声

明初

始化

程序

rMoveHome,,

I调用回工作原点HOME的程序

SetGOgoGrip,O;

1复位所有吸盘真空

1前面加上英文字符感叹号“!”贝IJ表示当前行为注释行,此处是

用于比较单端口的数字输出信号与信号组在使用上面的差别,此处使

用信号组较为方便

nCounter:=I'

I复位计数器

ENDPROC

PROCrPick()

I声明拾取产品程序

ClkResetTimer;

I复位计时器

ClkStartTimer;

I开始计时

WaitDIdiPalletlnPosI

1拆垛工位处的到位检测信号,等待产品垛到位,否则一直等待

pPick:=Offs(pPickBase,nPos{nCounter,I},nPos

{nCounter,2},nPos{nCounter,3});

I利用Offs函数以及位置数据计算当前计

数器值下的拾取位置pPickA仇

er.trans.x:=pPick.trans.x-500;

mmpPickA仇er.trans.y:=pPick.trans,y+500,

6度爷盟嗝"襄既般停置,其?值相对于PPick料兑沿着工件坐

pPickA仇er.trans.z:=1600;1计算

拾取后的中间过渡位置,其Z值为

固定值1600mm

MoveJOffs(pPick,0,0,500),MaxSpeed,z50,tVacuum\

WObj:=wobjO;

!利用MoveJ移动至当前拾取位置正上方500mm处

MoveLpPick,MinSpeed,tine,tVacuum\WObj:=wobjO;

I利用MoveL直线移动至当前拾取位置

SetGOgoGrip,15;

I置位吸盘动作,所有吸盘全部建立真空

I注释,不被执行

WaitTime0.3:

1等待0.3s,保证产品已被拾取

IFnPos{nCounter,4}=1THEN

I判断当前拾取类型,若为情况I贝lj

GripLoadLoadSingle:

I加载单个产品的负载数据

ELSE

GripLoadLoadDouble;I其他情

,况即情况2、3,贝lj加载两个

产品的负载数据

ENDIF

MOVELOffs(pPick,0,0,200),MinSpeed,z50,tVacuum\

WObj:=wobjO;

I利用MoveL直线移动至拾取位置上方200mm处

MoveLpPickAfter,MidSpeed,zI00,tVacuum\WObj:=wobjO,

1利用MoveL移动至拾取后中间过渡点

IFnCounter>=l0PulseDOdoPalletOut-

I判断当前计数是否大于等于10,即是否全部完成了当前枝板的

拆垛任务,若满足条件则发出移除当前枝板信号,将空枝板移走,并移

入下一个载有产品的校板,此处为简化版的旧用法,该指令只适用

于判断一种条件,条件满足时只执行一旬指令的特殊情况

ENDPROC

PROCrPlace()

I声明放置程序

TESTnPos{nCounter,4}

I判断当前是哪种情况

CASEI:

rPlaceTypeI;

1若是情况I,贝lj调用放置程序I

CASE3:

rPlaceTy

pe3;

I若是情况3,贝lj调用放置程序3

DEFAULT:

TPErase;

TPWrite飞hevalueoftypeiseqor,pleasecheckit!”,

Stop;

!若不为上述三种情况,贝lj清屏并写屏显示相关错误信号,并停止程

序运行

ENOTEST

IFnCounter>IOTHEN

I判断当前计数是否大于10,每个钱板上共拾取放置10次

MoveJpHome,MidSpeed,

fine,tVacuum\WObj:=wobjO;I若满足条

件则移动至HOME位置

nCounter:

=l;!计数

器复位

IF

END

;

imer

opT

ClkSt

计时

I停止

er);

d(Tim

lkRea

e:=C

leTim

nCyc

赋值

将其

,并

的数值

时器中

当前计

I读取

e

leTim

nCyc

ase,

TPEr

”\

is:

time

cycle

st

riteTa

TPW

tme;

ycleT

:=nC

Num

置的

取放

次拾

上一

显示

并写屏

屏,

I清

是多

节拍

C

PRO

用END

()

ype1

laceT

CrP

工PRO

程序I

放置

应I声明

,0;

nPos

lteml

DIdi

型Wait

中产

过程

放置

止在

品,防

没有产

置处己

放置位

线前端

产品

典!等待

生碰

间发

槌品之

zI

eed,

idSp

,M

000)

I

1,0,0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论