玻璃搬运工业机器人离线编程与虚拟仿真.docx
- 文档编号:23958424
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:23
- 大小:2.04MB
玻璃搬运工业机器人离线编程与虚拟仿真.docx
《玻璃搬运工业机器人离线编程与虚拟仿真.docx》由会员分享,可在线阅读,更多相关《玻璃搬运工业机器人离线编程与虚拟仿真.docx(23页珍藏版)》请在冰豆网上搜索。
玻璃搬运工业机器人离线编程与虚拟仿真
机械专业综合课程设计说明书
玻璃搬运工业机器人离线编程与虚拟仿真
学院(系):
机电信息工程学院
专业:
机械设计制造及其自动化
学生姓名:
学号:
指导老师:
完成日期:
2016年12月10日
第一章、搬运工作站任务描述和构成....................1
第二章、轴配置监控指令..............................5
第三章、运动触发指令.................................6
第四章、复杂程序数据赋值.............................7
第五章、转弯半径的选取...............................8
第六章、玻璃搬运任务实施.............................10
第七章、录制机器人作业虚拟仿真视频...................25
第一章、搬运工作站任务描述和构成
1、搬运工作站任务描述
采用工业机器人进行玻璃搬运,能大大提高玻璃生产线的产能,定位精度,降低不良率和人工成本。
汽车玻璃搬运工作站布局如下图所示。
系统利用IRBl41O机器人将汽车玻璃从侧的工装支架I二搬运至另侧,本工作站中已经预设搬运动作效果,需要依次完成1/0配置、程序数据创建、目标点示教、程序编写及调试,最终完成整个汽车玻璃的搬运过程。
2、搬运工作站的构成
搬运工作站由机器人、夹具、围栏、工作台、底座、控制器、玻璃组成。
各部件如下图所示:
(1)机器人
(2)夹具
(3)围栏
(4)工作台
(5)底座
(6)控制器
(7)玻璃
第二章、轴配置监控指令
轴配置监控指令指定机器人在线性运动及圆弧运动过程中是否严格遵循程序中已设定的轴配置参数。
默认情况下轴配置监控是打开的,当关闭轴配置监控后,机器人在运动过程中采取最接近当前轴配置数据的配置到达指定目标点。
例如目标点P10中,数据【1,0,1,0】就是此目标点的轴配置数据。
CONSTrobtargetP10=[1,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PR()CrMove()
ConfL\Off;
MoveLp10,v1000,fine,tool();
ENDPR()C
机器人自动匹配一组最接近当前各关节轴姿态的轴配置数据移动至目标点P10,到达该点时,轴配置数据不一定为程序中指定的[1,0,1,0].
在某些应用场合,如离线编程创建目标点或手动示教相邻两目标点间轴配置数据相差较大时,在机器人运动过程中容易出现报誓“轴配置错误”而造成停机,此种情况下,若对轴配置要求较高,则一般通过添加中间过渡点,若对轴配置要求不高,则可通过指令ConfL\Off关闭轴监控,使机器人自动匹配可行的轴配置来到达指定目标点。
第三章、运动触发指令
在线性运动过程中,在指定位置准确地触发事件(如置位输出信号、激活中断等)。
可以定义多种类型的触发事件,如Triggl/()(触发信号)、TriggEquip(触发装置动作)、Trigglnt(触发中断)等。
在准确的位置触发机器人夹具的动作,通常采用此种类型的触发事件。
VARTiggdataGripOpen;
!
定义触发数据GripOpen
定义触发事件GripOpen在距离指定目标点前10mm处,并提前0.1S(用于抵消设备动作延迟时间)触发指定事件将数字输出信号doGrip()n置为1。
!
执行指令TriggL
例如,在控制吸盘夹具动作过程中,在吸取产品的需要提前打开真空,在放置产品时需要提前释放真空,为了能够准确地触发吸盘夹具的动作,通常采用TriggL指令来对其进行精准控制。
第四章、复杂程序数据赋值
多数类型的程序数据均是组合型数据,即里面包含了多项数值或字符串。
可以对其中的任何一项参数进行赋值。
常见的目标点数据如下所示:
PERSrobtarget
pI0:
=[[0,0,0],[I,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERSrobtargetp20·=[[I00,0,0),[0,0,I,OJ,[1,0,I,0],[9E9,9E9,9E9,9E9,9E9,9E9]),
目标点数据里面包含了四组数据,依次为TCP位置数据trans:
[0,0,0]、TCP姿态数据rot:
[1,0,0,1]、轴自己置数据robconf:
[1,0,1,0]、外部轴数据extax[9E9,9E9,9E9,9E9,9E9,9E9]
我们可以分别对该数据的各项数值或者数值组进行操作,如
p1O.trans.x:
=p20.trans.x+50,
p10.trans.y:
=p20.trans.y-50,
p1O.trans.z:
=p20.trans.z+I00,
p1O.rot:
=p20.rot『
pIO.robconf:
=p20.robconf,
赋值后,则p1O为
PERSrobtargetp10=[[150,-50,100),[0,0,1,0],[1,0,1,0),[9E9,9E9,9E9,9E9,9E9,9E9]]。
第五章、转弯半径的选取
在机器人运行轨迹过程中经常会有一些中间过渡点,例如拾取正上方位置点、放置正上方位置点,绕开障碍物而设置的一些位置点,机器人在该位置不会触发具体事件。
在运动至这些位置点时,应将转弯半径设置得相应大一些,这样可以减少机器人在转角时的速度衰减,可使机器人运行轨迹更加圆滑,可有效提升机器人节拍。
但是转弯半径不是越大越好,需要根据当前运动指令实际运行的距离来设置,设置的转弯半径数值不可大于运动指令运行的距离,否则会出现“转弯路径故障”等警告。
例如在拾取放置动作过程中,机器人在拾取和放置之前需要先移动至其正上方处,之后竖直上下对工件进行拾取放置动作。
程序如下:
MoveJpPrepick,vEmptyMax,z50,tGripper;
MoveLpPick,vEmptyMin,fine,tGripper;
SetdoGripper
...
MoveJpPreplace,vLoadMax,z50,tGripper;
MoveLpPplace,vLoadMin,fine,tGripper;
SetdoGripper
在机器人TCP运动至pPrepick和pPrepplace点位的运动指令中写人转弯半径z50,这样机器人可在此两点处以半径为50mm的轨迹圆滑过渡,速度衰减较小,但在pPick和pPlace点位处需要置位夹具动作,所以一般情况下使用fine,即完全到达该目标点处再控制夹具动作。
在机器人运行轨迹过秤申,经常会有一些中间过渡点,例如拾取正上方位置点、放置正上方位置点、绕开障碍物而设置的一些位置点,机器人在该位置不会触发具体事件。
在运动至这些位置点时,应将转弯半径设置得相应大一些,这样可以减少机器人在转角时的速度衰减,可使机器人运行轨迹更加圆滑,可有效提升机器人节拍。
但是转弯半径不是越大越好,需要根据当前运动指令实际运行的距离来设置,设置的转弯半径数值不可大于运动指令运行的距离,否则会出现“转弯路径故障”等警告。
例如在拾取放置动作过程中,机器人在拾取和放置之前需要先移动至其正上方处,之后竖直上下对工件进行拾取放置动作。
程序如下:
MoveJpPrepick,vEmptyMax,z50,tGripper;
MoveLpPick,vEmptyMin,fine,tGripper;
SetdoGripper
...
MoveJpPreplace,vLoadMax,z50,tGripper;
MoveLpPplace,vLoadMin,fine,tGripper;
SetdoGripper
在机器人TCP运动至pPrepick和pPrepplace点位的运动指令中写人转弯半径z50,这样机器人可在此两点处以半径为50mm的轨迹圆滑过渡,速度衰减较小,但在pPick和pPlace点位处需要置位夹具动作,所以一般情况下使用fine,即完全到达该目标点处再控制夹具动作。
第六章、玻璃搬运任务实施
双击附件“ST_GlassCarry”压缩包文件,如图所示:
根据解压向导的相关提示解压该工作站,解压完成之后可进行仿真运行,查看该机器人工作站的运行情况,如图所示:
继续点击下一个:
点击下一个:
点击完成:
点击仿真:
点击播放:
播放完成:
仿真过程中,机器人控制吸盘夹具动作进行拾取放置,将汽车玻璃从右侧支架搬运至左侧,完成之后,可重置该工作站,机器人及玻璃全部复位。
复位只可复位至上次开始前的状态。
恢复己保存状态可复位至之前已保存的状态。
点击“显示例行程序:
即可显示对应程序,注解如下:
MODULEMainMoudle
PERStooldatatGripper:
=[TRUE,[[0,0,208],[0.707107,0,0,0.707107]],[1,[0,0,120],[1,0,0,0],0,0,0]];
!
定义工具数据tGripper
PERSloaddataLoadEmpty:
=[0.001,[0,0,0.001],[1,0,0,0],0,0,0];
!
定义空载时的有效载荷数据,得序白也可直接使用系统默认空载数据load()
PERSloaddataLoadFull:
=[0.1,[0,0,5],[1,0,0,0],0,0,0];
!
定义有效载荷数据
PERSrobtargetpHome:
=[[870,0,987],[1.57E-07,0,1,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
定义机器人工作原理pHome
PERSrobtargetpPickBase:
=[[985.653,210.818,637.932],[-2.94E-07,-0.704489,0.709714,1.89E-07],[0,0,2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
定义拾取玻璃基准位置,价于右侧支架最上层玻璃仿置处
PERSrobtargetpPlaceBase:
=[[910,-215.541,460],[5.64E-07,0.709707,0.704497,3.5E-07],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
定义拾取玻璃基准位置,价于右侧支架最下层玻璃仿置处
PERSrobtargetpPick:
=[[985.653,210.818,457.932],[-2.94E-07,-0.704489,0.709714,1.89E-07],[0,0,2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
走义拾取玻璃仿置,在秤序运行中会以pPickBase为基准赋予不同的位置数据
PERSrobtargetpPlace:
=[[910,-215.541,640],[5.64E-07,0.709707,0.704497,3.5E-07],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
定义放置玻璃位筐,在程序运行中会以pPlaceBase为基准赋予不同的位置数据
PERSrobtargetpSafe:
=[[985,210,750],[1.69E-07,4.99E-07,1,2.9E-08],[0,0,2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
定义玻璃旋转时的安全位置,左侧拾取玻璃后提升到一定的安全高度进行旋转并运行到放置前的高度,此处定义该位置数据的目的是在程序运行过程申定义一个玻璃旋转的安全高度,用以保证玻璃旋
转过程中不会与左右两侧支架发生碰撞
PERSrobtargetpPickSafe:
=[[935.653,110.818,750],[-2.94E-07,-0.704489,0.709714,1.89E-07],[0,0,2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
定义拾取玻璃之前以及之后的安全位置,两者使用同个安全位置
PERSrobtargetpPlaceSafe:
=[[960,-115.541,750],[5.64E-07,0.709707,0.704497,3.5E-07],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!
定义放雪玻璃之前以及之后的安全位置,两者使用同个安全位置
PERSnumnOffsX:
=50;
!
定义X方向偏移值,之前所描述的两个安全位置数据其实是以基准点偏移计算得出的,无需单独示教,此数值即为偏移计算时所使用的,在后续的程序中有详细的介绍
PERSnumnOffsY:
=100;
!
定义Y方向的偏移值,用法同上
PERSnumnOffsZ:
=15;
!
定义Z方向的偏移值,用法同上
PERSnumnInterval:
=60;
!
定义玻璃间隔数值,同一支架上的玻璃只是存坚直方向上依次可隅60mm摆放
PERSnumnCount:
=1;
!
定义搬运计数器,运行过程中根据此数值的变化从而赋值不同的位置数据
VARtriggdataVacuumOn;
!
定义触发数据,用于提前开启真空,这样有利于减少拾取过得所需时间
VARtriggdataVacuumOff;
!
定义触发数据,用于提前关闭真空,这样有利于咸少放置过程所需时间
PERSspeeddatavMinSpeed:
=[150,100,1000,5000];
PERSspeeddatavMidSpeed:
=[250,200,1000,5000];
PERSspeeddatavMaxSpeed:
=[500,300,1000,5000];
!
定义不同的速度数据,便于在程序中针对不同的动作过将采用合适的速度数据
ONSTrobtarget
pSafe10:
=[[870.00,-0.00,987.00],[2.01662E-07,5.96244E-09,1,1.13832E-15],[0,0,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PROCMAIN()
!
主程序
rInitAll;
!
程序起始位置调用初始化程序,用于复位机器人位置、信号、数据等
WHILETRUEDO
!
采用WHILETRUEDO死循环结构,将机器人需要重复运行的动作与初始化程序隔离开
rPick;
!
调用拾取玻璃程序
rPlace;
!
调用放置玻璃程序
ENDWHILE
ENDPROC
PROCrInitAll()
!
初始化程序
ConfL\Off;
ConfJ\Off;
!
关闭MoveLMoveJ运动过程中的轴配置监控,目的是使机器人在MoveL,MoveJ运动过得中能够自动选取合适的轴配置数据进行运动,在搬运码垛应用中可有放避免轴配置报警等问题
AccSet80,80;
!
设置机器人运行加速度,第个值为最大加速度百分比,第二个值为坡度百分比
VelSet80,1000;
!
设置机器人运行速度,第个值为速度百分比,第二个值为最大速度限制
ResetdoVacuum;
!
复位真空信号
nCount:
=1;
!
计数复位,从第一个物料开始重新处理
TriggEquipVacuumOn,0,0.2\DOp:
=doVacuum,1;
!
定义真空打开触发事件,在本案例中假设当前使用的真空系统其置位真空信号后需要0.2s方可达到建主真空的条件,及真空打开延迟o.2s.此处采用触发数据进行补偿,以便减少真空建立所需时间
TriggEquipVacuumOff,0,0.2\DOp:
=doVacuum,0;
!
定义真空关闭触发事件,本案例中假设当前使用的真空系统其复位真空信号后需要0.2s方可达完全释放真空,及真空关闭延迟0.2s.此处采用触发数据进行补偿,以便减少真空释放所需时间
pPickSafe:
=Offs(pPickBase,-nOffsX,-nOffsY,0);
pPickSafe.trans.z:
=pSafe.trans.z;
!
计算放置前后的安全位置pPlaceSafe:
=Offs(pPlaceBase,nOffsX,nOffsY,0);
pPlaceSafe.trans.z:
=pSafe.trans.z;
!
计算放置前后的安全
MoveJpHome,vMinSpeed,fine,tGripper\WObj:
=wobj0;
!
机器人位置复位,移动至工作原位pHome
ENDPROC
PROCrPick()
!
拾取程序
rCalPos;
!
调用位置计算程序,计算出当前机器人的拾取、放置等各目标位置
MoveJpPickSafe,vMaxSpeed,z20,tGripper\WObj:
=wobj0;
!
利用MoveJ快速移动至放置安全高度位MoveLOffs(pPick,-nOffsX,-nOffsY,nOffsZ),vMidSpeed,z10,tGripper\WObj:
=wobj0;
!
利用MoveL运动至拾取前位置
MoveLOffs(pPick,0,0,nOffsZ),vMinSpeed,z5,tGripper\WObj:
=wobj0;
!
利用MoveL运动至拾取位置正上方
TriggLpPick,vMinSpeed,VacuumOn,fine,tGripper\WObj:
=wobj0;
!
利用TriggL运动至放置位置,并且在到达位置之前0.2s提前置为真空打开信号
WaitTime0.2;
!
等待定的时间,用以保证完全吸附
GripLoadLoadFull;
!
拾取完成后加载有效载荷数据MoveLOffs(pPick,0,0,nOffsZ),vMinSpeed,z5,tGripper\WObj:
=wobj0;
!
利用MoveL运动至拾取正上方MoveLOffs(pPick,-nOffsX,-nOffsY,nOffsZ),vMidSpeed,z10,tGripper\WObj:
=wobj0;
!
利用MoveL横移至拾取后位置
MoveLpPickSafe,vMaxSpeed,z20,tGripper\WObj:
=wobj0;
!
利用MoveL运动至拾取安全高度处
ENDPROC
PROCrPlace()
!
放置程序
MoveJpPlaceSafe,vMaxSpeed,z20,tGripper\WObj:
=wobj0;
!
利用MoveJ快速移动至放置安全高度处MoveLOffs(pPlace,nOffsX,nOffsY,nOffsZ),vMidSpeed,z10,tGripper\WObj:
=wobj0;
MoveLOffs(pPlace,0,0,nOffsZ),vMinSpeed,z5,tGripper\WObj:
=wobj0;
!
利用MoveL运动至放置前位置处
TriggLpPlace,vMinSpeed,VacuumOff,fine,tGripper\WObj:
=wobj0;
!
利用TriggL运动至放置位置,并且在到达放置位置之前0.2s提前关闭真空,复位真空信号
WaitTime0.2;
!
等待一定时间,用以保证完全释放
GripLoadLoadEmpty;
!
释放玻璃后,加载空载数据
MoveLOffs(pPlace,0,0,nOffsZ),vMinSpeed,z5,tGripper\WObj:
=wobj0;
!
利用MoveL运动至放置正上方
MoveLOffs(pPlace,nOffsX,nOffsY,nOffsZ),vMidSpeed,z10,tGripper\WObj:
=wobj0;
!
利用MoveL运动至放置后位置
MoveLpPlaceSafe,vMaxSpeed,z20,tGripper\WObj:
=wobj0;
!
利用MoveL运动至放置安全高度位置
rPlaceRD;
!
调用计数程序,计数累计加l并检查是否已全部完成
ENDPROC
PROCrPlaceRD()
!
计数程序
nCount:
=nCount+1;
!
计数累计加l
IFnCount>4THEN
!
当前仔务只是搬运4块玻璃,此处检测是否已全部完成
TPErase;
TPWrite"Pick&Placedone,therobotwillstop!
";
!
若己全部完成,则写屏显示当前任务已完成
nCount:
=1;
!
将计数器复位
ResetdoVacuum;
!
复位真空信号
MoveJpHome,vMinSpeed,fine,tGripper\WObj:
=wobj0;
!
复位机器人位置,移动至工作原位pHome
Stop;
!
停止程序,等待下一次启动
ENDIF
ENDPROC
PROCrCalPos()
!
位置计算程序
TESTnCount
!
判断计数器的值,从而为拾取、放贵点、赋予不同的位置数据
CASE1:
pPick:
=Offs(pPickBase,0,0,0);
pPlace:
=Offs(pPlaceBase,0,0,0);
!
计算第l次的拾取、放置位置
CASE2:
pPick:
=Offs(pPickBase,0,0,-nInterval);
pPlace:
=Offs(pPlaceBase,0,0,nInterval);
!
计算第2次的拾取、放置位置
CASE3:
pPick:
=Offs(pPickBase,0,0,-2*nInterval);
pPlace:
=Offs(pPlaceBase,0,0,2*nInterval);
!
计算第3次的拾取、放置位置
CASE4:
pPick:
=Offs(pPickBase,0,0,-3*nInterval);
pPlace:
=Offs(pPlaceBase,0,0,3*nInterval);
!
计算第4次的拾取、放置位置
DEFAULT:
TPErase;
TPWrite"thecounteriserror,pleasecheckit!
";
Stop;
!
理论
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 玻璃 搬运 工业 机器人 离线 编程 虚拟 仿真
![提示](https://static.bdocx.com/images/bang_tan.gif)