ABB激光切割工业机器人的离线编程与仿真文档格式.docx
《ABB激光切割工业机器人的离线编程与仿真文档格式.docx》由会员分享,可在线阅读,更多相关《ABB激光切割工业机器人的离线编程与仿真文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
![ABB激光切割工业机器人的离线编程与仿真文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/28/2bca739b-f4ed-48a1-8fa9-4b7215d3e1c3/2bca739b-f4ed-48a1-8fa9-4b7215d3e1c31.gif)
2.IRB120机器人的载荷 6
第四章机器人的程序 8
1.程序的编写与注解 8
2.程序修改 16
第五章示教目标点与仿真 17
1.三个目标点的示教 17
2.机器人仿真 19
第六章Robotstudio共享打包与解包 20
1.工作站共享功能 20
2.工作站打包 20
结 论 23
参考文献 24
致谢 25
第一章绪论
1.设计背景
科技的进步与革新推动着生产力的不断发展,促使生产关系产生变革。
自工业革命以来,人力劳动已经逐渐被机械所取代,而这种变革为人类社会创造出巨大的财富,极大地推动了人类社会的进步。
如今,机电体化、机械智能化等技术应运而生。
多功能机器人实训台,包括ABBIRB120型机器人,三菱FX3U-48MR型PLC,模式选择控制面板模块,送料模块,模拟压铸模块,输送带模块,物料检测模块,搬运、码垛模块和几何轨迹模块等。
同时,现代生产的高效率、柔性化需求也促使了工业机器人离线编程软件产品的产生。
机器人离线编程系统,是利用计算机图形学技术,建立起机器人及其工作环境的模型,利用机器人语言及相关算法,通过对图形的控制和操作在离线的情况下进行轨迹规划。
离线编程技术具有传统的在线示教技术无法比拟的优势,比如:
可减少停机时间、可提前验证作业程序,进行复杂的轨迹规划等。
2.工业机器人发展现状
工业机器人的出现将人类从繁重、单一的劳动中解放出来,它还能够从事一些不适合人类甚至超越人类能力的劳动,如在强辐射、强污染的环境下作业。
工业机器人技术已经广泛地进入人们的生产和生活领域。
机器人自20世纪
60年代初问世以来,已取得了实质性的进步和成果。
在机械制造领域,工业机器人在经历了从诞生、成长、成熟期后,己成为不可缺少的核心自动化装备,目前世界上约有近百万向工业机器人正在各种生产现场工作。
在非制造领域,上至
2
太空舱、宇宙飞船、月球探险,下至极限环境作业、医疗手术、日常生活服务,机器人技术的应用己拓展到什会经济发展的诸多领域。
机器人技术作为当今科学技术发展的前沿学科,已成为未来社会生产和生活中不可缺少的一门核心技术。
可以预见,我们已经进入一个崭新的机器人技术时代。
第二章Robotstudio机器人
1.机器人的选用
根据要设计的程序,选用IRB120工业机器人,IRB120是ABB新型第四代机器人家族的最新成员,也是迄今为止ABB制造的最小机器人。
IRB120具有敏捷、紧凑、轻量的特点,控制精度与路径精度俱优,是物料搬运与装配应用的理想选择。
它的特点是:
(1)紧凑轻量,作为ABB目前最小的机器人,IRB120在紧凑空间内凝聚了ABB产品系列的全部功能与技术。
其重量减至仅25kg,结构设计紧凑,几乎可安装在任何地方,比如工作站内部,机械设备上方,或生产线上其他机器人的近旁。
(2)IRB120广泛适用于电子、食品饮料、机械、太阳能、制药、医疗、研究等领域,进一步增强了ABB新型第四代机器人家族的实力。
采用白色涂层的洁净室ISO5级机型适用于高标准洁净生产环境,开辟了全新应用领域。
这款6轴机器人最高荷重3kg(手腕(五轴)垂直向下时为4kg),工作范围达580mm,能通过柔性(非刚性)自动化解决方案执行一系列作业。
IRB120是实现高成本效益生产的完美之选,在有限的生产空间其优势尤为明显。
(3)IRB120仅重25kg,出色的便携性与集成性,使其成为同类产品中的佼佼者。
该机器人的安装角度不受任何限制。
机身表面光洁,便于清洗;
空气管线与用户信号线缆从底脚至手腕全部嵌入机身内部,易于机器人集成。
(4)除水平工作范围达580mm以外,IRB120还具有一流的工作行程,底座下方拾取距离为112mm。
IRB120采用对称结构,第2轴无外凸,回转半径极小,可靠近其他设备安装,纤细的手腕进一步增强了手臂的可达性。
(5)IRB120配备轻型铝合金马达,结构轻巧、功率强劲,可实现机器人高加速运行,在任何应用中都能确保优异的精准度与敏捷性。
(6)ABB新推出的这款紧凑型控制器高度浓缩了IRC5的顶尖功能,将以往大型设备“专享”的精度与运动控制引入了更广阔的应用空间。
除节省空间之外,新型控制器还通过设置单相电源输入、外置式信号接头(全部信号)及内置式可扩展16路I/O系统,简化了调试步骤。
离线编程软件RobotStudio可用于生产工作站模拟,为机器人设定最佳位置;
还可执行离线编程,避免发生代价高昂的生产中断或延误。
(7)紧凑化、轻量化的IRB120机器人与IRC5紧
`
4
凑型控制器这两种新产品的完美结合,显著缩小了占地面积,最适合空间紧张的应用场合,如下图2-1。
图2-1IRB120机器人
2.IRB120机器人的载荷
如图2-2所示为IRB120的载荷关系图。
其中,Z为安装工具的重心沿Z轴到第六轴法兰盘中心的距离,L为安装工具的重心到Z轴的距离。
为保证机械臂在带载后仍可以保证运动的稳定性和准确性,随着载荷的增大,要求载荷心必须更接近第六轴法兰盘的中心。
此外,IRB120载荷的最大限定为3kg。
图2-2机器人载荷关系
25
第三章程序数据创建与I/O信号配置
1.工具数据创建
在虚拟示教器中,根据以下参数设定工具数据tGripper,示例如下表3.1所示
参数名称 参数数值
robhold TRUE
tframe.trans.x 0
tframe.trans.x 115
tload.mass 1
tload.cog.x 0
tload.cog.y 0
tload.cog.z 100
表3.1工具数据tGripper参数
图3-1工具数据tGripper示意图
在本工作站中,坐标系均采用用户三点法创建。
在虚拟示教器中,根据下面图3-2和3-3所示位置设定工件坐标
图3-2WobjCNV
图3-3 WobjBuffer
第四章机器人的程序
1.程序的编写与注解
以下是实现机器人逻辑和动作控制的RAPID程序:
数据定义:
MODULEMainMoudleCONSTrobtargetpPick:
=[[394.997607159,132.703199388,12.734872184],[0.005862588,-0.00300065,0.999966662,0.004827206],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONSTrobtarget
pHome:
=[[-548.424175962,-238.61219249,801.420966892],[-0.000000012,-0
.707106781,0.707106781,-0.000000012],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONSTrobtargetpPlaceBase:
=[[100.088594059,77.835146221,158.046135973],[0.000000
04,-0.000623424,0.999999806,-0.000000001],[-1,0,-1,0],[9E9,9E9,9E9,9E
9,9E9,9E9]];
!
需要示教的目标点数据,抓取点pPick,HOME点pHome、放置基准点pPlaceBase
PERSrobtargetpPlace;
放置目标点,类型为PERS,在程序中被赋予不同的数值,用以实现多点位放置
CONSTjointtargetjposHome:
=[[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9
]];
关节目标点数据,各关节轴度数为0,即机器人回到各关节轴机械刻度零
位
CONSTspeeddatavLoadMax:
=[3000,300,5000,1000];
CONSTspeeddatavLoadMin:
=[500,200,5000,1000];
CONSTspeeddatavEmptyMax:
=[5000,500,5000,1000];
CONSTspeeddatavEmptyMin:
=[1000,200,5000,1000];
速度数据,根据实际需求定义多种速度数据,以便于控制机器人各动作的速度
PERSnumnCount:
=1;
数字型变量nCount,此数据用于太阳能薄板计数,根据此数据的数值赋予放置目标点pPlace不同的位置数据,以实现多点位放置
PERSnumnXoffset:
=145;
PERSnumnYoffset:
=148;
数字型变量,用做放置位置偏移数值,即太阳能薄板摆放位置之间在X、Y
方向的单个间隔距离
VARboolbPickOK:
=False;
布尔量,当拾取动作完成后将其置为True,放置完成后将其置为False,以作逻辑控制之用
TASK PERS tooldatatGripper:
=[TRUE,[[0,0,115],[1,0,0,0]],[1,[0,0,100],[0,1,0,0],0,0,0]];
定义工具坐标系数据tGripperTASKPERSwobjdata
WobjBuffer:
=[FALSE,TRUE,"
"
[[-350.365,-355.079,418.761],[0.707547,0,0
0.706666]],[[0,0,0],[1,0,0,0]]];
定义暂存盒工件坐标系WobjBufferTASKPERSwobjdata
WobjCNV:
[[-726.207,-645.04,600.015],[0.709205,-0.0075
588,0.000732113,0.704961]],[[0,0,0],[1,0,0,0]]];
定义输送带工件坐标系WobjCNV
TASKPERSloaddataLoadFull:
=[0.5,[0,0,3],[1,0,0,0],0,0,0];
定义有效载荷数据LoadFull
主程序运行程序
PROCMain()
rInitialize;
调用初始化程序WHILETRUEDO
利用WHILE循环将初始化程序隔开
rPickPanel;
调用拾取程序rPlaceInBuffer;
调用放置程序
Waittime0.3;
循环等待时间,防止不满足机器人动作情况下程序扫描过快,造成CPU过负荷
ENDWHILEENDPROC
PROCrInitialize()
初始化程序
rCheckHomePos;
机器人位置初始化,调用检测是否在Home位置点程序,检测当前机器人位置是否在HOME点,若在HOME点的话则继续执行之后的初始化相关指令;
若不在HOME点,则先返回至HOME点
nCount:
计数初始化,将用于太阳能薄板的计数数值设置为1,即从放置的第一个位置开始摆放
resetdo32_VacuumOpen;
信号初始化,复位真空信号,关闭真空
bPickOK:
布尔量初始化,将拾取布尔量置为False
ENDPROC
PROCrPickPanel()
拾取太阳能薄板程序
IFbPickOK=FalseTHEN
当拾取布尔量bPickOK为False时,则执行IF条件下的拾取动作指令,否则执行ELSE中出错处理的指令,因为当机器人去拾取太阳能薄板时,需保证其真空夹具上面没有太阳能薄板
MoveJoffs(pPick,0,0,100),vEmptyMax,z20,tGripper\WObj:
=WobjCNV
;
利用MoveJ指令移至拾取位置pPick点正上方Z轴正方向100mm处
WaitDIdi01_PanelInPickPos,1;
等待产品到位信号di01_PanelInPickPos变为1,即太阳能薄板已到位MoveLpPick,vEmptyMin,fine,tGripper\WObj:
=WobjCNV;
产品到位后,利用MoveL移至拾取位置pPick点
Setdo32_VacuumOpen;
将真空信号置为1,控制真空吸盘产生真空,将太阳能薄板拾起
WaitDIdi02_VacuumOK,1;
!
等待真空反馈信号为1,即真空夹具产生的
真空度达到需求后才认为已将产品完全拾起。
若真空夹具上面没有真空反馈信号,则可以使用固定等待时间,如Waittime0.3
=TRUE;
真空建立后,将拾取的布尔量置为TRUE,表示机器人夹具上面已拾取一个产品,以便在放置程序中判断夹具的当前状态
GripLoadLoadFull;
加载载荷数据LoadFull
MoveLoffs(pPick,0,0,100),vLoadMin,z10,tGripper\WObj:
=WobjCNV;
利用MoveL移至拾取位置pPick点正上方100mm处
ELSE
TPERASE;
TPWRITE"
CycleRestartError"
Cyclecan'
tstartwithSolarPanelonGripper"
TPWRITE"
PleasechecktheGripperandthenpressthestartbutton"
stop;
如果在拾取开始之前拾取布尔量已经为TRUE,则表示夹具上面已有产品,此种情况下机器人不能再去拾取另一个产品。
此时通过写屏指令描述当前错误状态,并提示操作员检查当前夹具状态,排除错误状态后再开始下一个循环。
同时利用Stop指令,停止程序运行
ENDIFENDPROC
PROCrPlaceInBuffer()!
放置程序IFbPickOK=TRUETHEN
rCalculatePos;
调用计算放置位置程序。
此程序中会通过判断当前计数nCount的值,从而对放置点pPlace赋予不同的放置
MoveJoffs(pPlace,0,0,100),vLoadMax,z50,tGripper\WObj:
=WobjBuffer;
利用MoveJ移至放置位置pPlace点正上方100mm处
MoveLoffs(pPlace,0,0,0),vLoadMin,fine,tGripper\WObj:
=WobjBuffer;
利用MoveL移至放置位置pPlace处
Resetdo32_VacuumOpen;
复位真空信号,控制真空夹具关闭真空,将产品放下
WaitTime0.3;
等待0.3s,以防止刚放置的产品被剩余的真空带起
WaitDIdi02_VacuumOK,0;
GripLoadload0;
加载载荷数据load0bPickOK:
=FALSE;
此时真空夹具已将产品放下,需要将拾取布尔量置
为FALSE,以便在下一个循环的拾取程序中判断夹具的当前状态
MoveLoffs(pPlace,0,0,100),vEmptyMin,z10,tGripper\WObj:
利用MoveL移至放置位pPlace点正上方100mm处
=nCount+1;
产品计数nCount加1,通过累积nCount的数值,在计算放置位置的程序rCalculatePos中赋予放置点pPlace不同的位置数据
IFnCount>
4THEN!
判断计数nCount是否大于4,此处演示的状况是放置4个产品,即表示已满载,需要更换暂存盒以及其他的复位操作,如计数nCount、满载信号等
计数复位,将nCount赋值为1
MoveJpHome,v100,fine,tGripper;
机器人移至Home点,此处可根据实际情况来设置机器人的动作,例如若是多工位放置,那么机器人可继续去其他的放置工位进行产品的放置任务
PROCrCalculatePos()
计算位置子程序,检测当前计数nCount的数值,以pPlaceBase为基准点,利用Offs指令在坐标系WobjBuffer中沿着X、Y、Z方向偏移相应的数值
TESTnCountCASE1:
pPlace:
=offs(pPlaceBase,0,0,0);
若nCount为1,pPlaceBase点就是第一个放置位置,所以X、Y、Z偏移值均为0,也可以直接写成:
=pPlaceBase;
CASE 2:
=offs(pPlaceBase,nXoffset,0,0);
若nCount为2,位置2相对于放置基准点pPlaceBase点在X正方向偏移了一个产品间隔
CASE3:
=offs(pPlaceBase,0,nYoffset,0);
若nCount为3,位置3相对于放置基准点pPlaceBase点在Y正方向偏移了一个产品间隔
CASE4:
=offs(pPlaceBase,nXoffset,nXoffset,0);
若nCount为4,位置4相对于放置基准点pPlaceBase点在X、Y正方向各偏移了一个产品间隔
DEFAULT:
TheCountNumberiserror,pleasecheckit!
STOP;
若nCount数值不为Case中所列的数值,则视为计数出错,写屏提示错误信息,并利用Stop指令停止程序循环
ENDTEST
ENDPROC
PROCrCheckHomePos()!
检测是否在Home点程序
VARrobtargetpActualPos;
!
定义目标点数据
IF NOTCurrentPos(pHome,tGripper)THEN !
调用功能程序
pActualpos:
=CRobT(\Tool:
=tGripper\WObj:
=wobj0);
利用
CrobT功能读取机器人目标位置并赋值给目标点数据
pActualpos.trans.z:
=pHome.trans.z;
!
赋值
MoveLpActualpos,v100,z10,tGripper;
移动赋值点MoveLpHome,v100,fine,tGripper;
!
移至pHome点
FUNCboolCurrentPos(robtargetComparePos,INOUTtooldataTCP