abb机器人仿真步骤
- 格式:doc
- 大小:5.18 MB
- 文档页数:12
abb仿真步骤abb仿真步骤:1、引言1.1 目的1.2 背景1.3 术语定义- ABB: 全球领先的工业自动化和技术提供商- 仿真: 使用计算机模拟技术来模拟现实世界中的实际情况- : 能够自主执行任务的自动化设备2、系统需求2.1 硬件需求2.2 软件需求2.3 附件需求3、安装和配置3.1 安装ABB仿真软件3.2 配置仿真环境3.2.1 定义参数3.2.2 设置工作空间3.2.3 导入模型4、创建模型4.1 基础模型4.1.1 创建基座4.1.2 添加关节和连杆4.1.3 设置关节参数4.2 传感器模型4.2.1 添加传感器设备4.2.2 设置传感器参数4.3 环境模型4.3.1 添加工作环境模型4.3.2 设置物体属性和碰撞检测5、程序编写与调试5.1 编写控制程序5.2 调试程序5.3 仿真运行6、结果分析与优化6.1 分析仿真结果6.2 优化运动轨迹6.3 优化碰撞检测和避障策略7、实验验证7.1 准备实验场地和设备7.2 实施仿真实验7.3 分析实验结果8、总结与展望8.1 本文档的贡献8.2 可能的改进方向附件:- 仿真软件安装文件- 仿真环境模型文件- 实验结果分析数据表格法律名词及注释:1、仿真:在计算机上对实际系统进行虚拟仿真,以检验系统的性能、优化设计和预测行为。
2、:能够自主执行任务的自动化设备。
3、模型:在仿真中使用的虚拟对象,可以是、传感器设备或环境物体。
4、避障策略:在遇到障碍物时采取的规定动作,以避免碰撞。
ABB机器人离线编程与仿真-原程序详解(搬运火花塞项目)本次的任务是在已经构建好的工作站里面将火花塞从左侧工件托盘上搬运到右侧摆台上。
在工作站配置中所使用的机器人是ABB IRB1410型机器人,并且事先已经使用Smart组件构建完成机器人所使用的工具的夹取和放置的动态效果。
程序注释:MODULE MainMoudle程序主模块PERS tooldata tGripper:=[TRUE,[[0,0,123],[1,0,0,0]],[1,[0,0,60],[1,0,0,0],0,0,0]];定义工具数据TASK PERS wobjdata WobjPick:=[FALSE,TRUE,'',[[812.92,-380,554],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];定义左侧托盘工件坐标数据TASK PERS wobjdata WobjPlace:=[FALSE,TRUE,'',[[812.112,131.704,629],[1,0,0,0]],[[0,0, 0],[1,0,0,0]]];定义右侧托盘工件坐标数据PERS loaddata LoadEmpty:=[0.001,[0,0,0.001],[1,0,0,0],0,0,0];定义空载载荷数据PERS loaddata LoadFull:=[0.1,[0,0,5],[1,0,0,0],0,0,0];定义抓取工件后的载荷数据PERS robtarget pPick:=[[226.448,104.769,13.931],[0.00734292,-1.6E-08,0.999973,-1E-09],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];定义抓取数据,此数据随着抓取位置的不同而变化,是变量PERS robtarget pPlace:=[[223.781,102.869,13.3023],[0.00656 412,0.698111,0.71593,-0.00649543],[0,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];定义放置数据,此数据随着抓取位置的不同而变化,是变量CONSTrobtargetpHome:=[[873.054605526,0,764.656133294],[0.007342891,0 ,0.999973041,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+ 09]];定义安全点CONSTrobtargetpPickBase:=[[66.447802087,24.768906099,13.931002806],[0. 007342918,-0.000000016,0.99997304,-0.000000001], [-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];定义抓取基准点CONSTrobtargetpPlaceBase:=[[63.7807864,22.868891847,13.302282874],[0.0 06564124,0.698111195,0.715929802,-0.006495435],[0,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];定义放置基准点PERS num nPickH:=150; 定义抓取位置的安全距离PERS num nPlaceH:=100; 定义放置位置的安全距离PERS num nOffsX:=40; 定义X方向偏移数值PERS num nOffsY:=40; 定义Y方向偏移数值PERS num nCount:=16; 定义搬运数量并赋初始值为1,此数值随着搬运数量的变化而变化,是变量PERS speeddata vMinSpeed:=[200,100,1000,5000];PERS speeddata vMidSpeed:=[500,200,1000,5000];PERS speeddata vMaxSpeed:=[800,300,1000,5000];定义高中低3种不同的运行速度,根据不同情况选择不同的运行速度PROC Main()主程序rInitAll; 调用初始化子程序WHILE TRUE DO条件语句,通过这样的的调用方式,只运行初始化程序一次rPick; 调用抓取子程序rPlace; 调用放置子程序ENDWHILEENDPROCPROC rInitAll()初始化子程序ConfL\Off;关闭线性运动和圆弧运动时的轴配置参数,使机器人能自由选择轴运动方式接近目标点,预防报警ConfJ\Off;关闭关节运动时的轴配置参数,使机器人能自由选择轴运动方式接近目标点,预防报警AccSet 100,100; 设置加速度数据VelSet 100,5000; 设置速度数据Reset doGrip; 复位启动信号nCount:=1; 搬运计数数值置1MoveJ pHome,vMinSpeed,fine,tGripper\WObj:=wobj0;利用关节运动指令移动TCP到安全点pHomeENDPROCPROC rPick()抓取子程序rCalPos; 调用计算位置子程序MoveJOffs(pPick,0,0,nPickH),vMaxSpeed,z50,tGripper\WObj:=wobjPick;以关节运动方式高速运动到抓取点工件上方150mm处MoveL pPick,vMinSpeed,fine,tGripper\WObj:=wobjPick;以直线运动方式低速运动到待抓取工件位置Set doGrip; 启动抓取操作WaitTime 0.5; 等待0.5秒,确保抓取动作高质量完成GripLoad LoadFull; 机器人满载MoveLOffs(pPick,0,0,nPickH),vMidSpeed,z50,tGripper\WObj:=wobjPick;以直线运动方式中速运动到待抓取工件上方150mmENDPROCPROC rPlace()放置子程序MoveJOffs(pPlace,0,0,nPlaceH),vMidSpeed,z50,tGripper\WObj:=wobjPl ace;以关节运动方式中速运动到待抓取工件上方100mmMoveL pPlace,vMinSpeed,fine,tGripper\WObj:=wobjPlace;以直线运动方式低速运动到待放置位置处Reset doGrip;复位启动信号,放下火花塞WaitTime 0.5;等待0.5秒,确保放置动作完成GripLoad LoadEmpty;机器人空载MoveLOffs(pPlace,0,0,nPickH),vMidSpeed,z50,tGripper\WObj:=wobjPla ce;以直线运动方式中速运动抬起100mmrPlaceRD; 调用计数子程序ENDPROCPROC rPlaceRD()计数子程序nCount:=nCount+1;搬运火花塞数量自增IF nCount>32 THENIF条件判断指令,当计数变量大于32的时候向下执行TPErase; 清屏TPWrite 'Pick&Place done,the robot will stop!';在触摸屏上显示'Pick&Place done,the robot will stop!' nCount:=1; 计数变量置1Reset doGrip;启动复位信号MoveJ pHome,vMinSpeed,fine,tGripper\WObj:=wobj0; 以关节运动形式低速运动到安全点Stop;机器人停止ENDIFENDPROCPROC rCalPos()计算位置子程序!Row 1TEST nCount测量nCount变量,与CASE的数值作对比CASE 1:pPick:=Offs(pPickBase,0,0,0);pPlace:=Offs(pPlaceBase,0,0,0);CASE 2:pPick:=Offs(pPickBase,nOffsX,0,0);pPlace:=Offs(pPlaceBase,nOffsX,0,0);CASE 3:pPick:=Offs(pPickBase,2*nOffsX,0,0);pPlace:=Offs(pPlaceBase,2*nOffsX,0,0);CASE 4:pPick:=Offs(pPickBase,3*nOffsX,0,0);pPlace:=Offs(pPlaceBase,3*nOffsX,0,0);!Row 2CASE 5:pPick:=Offs(pPickBase,-nOffsX,nOffsY,0); pPlace:=Offs(pPlaceBase,-nOffsX,nOffsY,0); CASE 6:pPick:=Offs(pPickBase,0,nOffsY,0); pPlace:=Offs(pPlaceBase,0,nOffsY,0);CASE 7:pPick:=Offs(pPickBase,nOffsX,nOffsY,0); pPlace:=Offs(pPlaceBase,nOffsX,nOffsY,0); CASE 8:pPick:=Offs(pPickBase,2*nOffsX,nOffsY,0); pPlace:=Offs(pPlaceBase,2*nOffsX,nOffsY,0); CASE 9:pPick:=Offs(pPickBase,3*nOffsX,nOffsY,0); pPlace:=Offs(pPlaceBase,3*nOffsX,nOffsY,0); CASE 10:pPick:=Offs(pPickBase,4*nOffsX,nOffsY,0); pPlace:=Offs(pPlaceBase,4*nOffsX,nOffsY,0); !Row 3CASE 11:pPick:=Offs(pPickBase,-nOffsX,2*nOffsY,0); pPlace:=Offs(pPlaceBase,-nOffsX,2*nOffsY,0); CASE 12:pPick:=Offs(pPickBase,0,2*nOffsY,0); pPlace:=Offs(pPlaceBase,0,2*nOffsY,0); CASE 13:pPick:=Offs(pPickBase,nOffsX,2*nOffsY,0); pPlace:=Offs(pPlaceBase,nOffsX,2*nOffsY,0);CASE 14:pPick:=Offs(pPickBase,2*nOffsX,2*nOffsY,0); pPlace:=Offs(pPlaceBase,2*nOffsX,2*nOffsY,0); CASE 15:pPick:=Offs(pPickBase,3*nOffsX,2*nOffsY,0); pPlace:=Offs(pPlaceBase,3*nOffsX,2*nOffsY,0); CASE 16:pPick:=Offs(pPickBase,4*nOffsX,2*nOffsY,0); pPlace:=Offs(pPlaceBase,4*nOffsX,2*nOffsY,0); !Row 4CASE 17:pPick:=Offs(pPickBase,-nOffsX,3*nOffsY,0); pPlace:=Offs(pPlaceBase,-nOffsX,3*nOffsY,0); CASE 18:pPick:=Offs(pPickBase,0,3*nOffsY,0); pPlace:=Offs(pPlaceBase,0,3*nOffsY,0); CASE 19:pPick:=Offs(pPickBase,nOffsX,3*nOffsY,0); pPlace:=Offs(pPlaceBase,nOffsX,3*nOffsY,0); CASE 20:pPick:=Offs(pPickBase,2*nOffsX,3*nOffsY,0); pPlace:=Offs(pPlaceBase,2*nOffsX,3*nOffsY,0); CASE 21:pPick:=Offs(pPickBase,3*nOffsX,3*nOffsY,0); pPlace:=Offs(pPlaceBase,3*nOffsX,3*nOffsY,0); CASE 22:pPick:=Offs(pPickBase,4*nOffsX,3*nOffsY,0); pPlace:=Offs(pPlaceBase,4*nOffsX,3*nOffsY,0); !Row 5CASE 23:pPick:=Offs(pPickBase,-nOffsX,4*nOffsY,0); pPlace:=Offs(pPlaceBase,-nOffsX,4*nOffsY,0); CASE 24:pPick:=Offs(pPickBase,0,4*nOffsY,0); pPlace:=Offs(pPlaceBase,0,4*nOffsY,0); CASE 25:pPick:=Offs(pPickBase,nOffsX,4*nOffsY,0); pPlace:=Offs(pPlaceBase,nOffsX,4*nOffsY,0); CASE 26:pPick:=Offs(pPickBase,2*nOffsX,4*nOffsY,0); pPlace:=Offs(pPlaceBase,2*nOffsX,4*nOffsY,0); CASE 27:pPick:=Offs(pPickBase,3*nOffsX,4*nOffsY,0); pPlace:=Offs(pPlaceBase,3*nOffsX,4*nOffsY,0); CASE 28:pPick:=Offs(pPickBase,4*nOffsX,4*nOffsY,0); pPlace:=Offs(pPlaceBase,4*nOffsX,4*nOffsY,0); !Row 6CASE 29:pPick:=Offs(pPickBase,0,5*nOffsY,0); pPlace:=Offs(pPlaceBase,0,5*nOffsY,0); CASE 30:pPick:=Offs(pPickBase,nOffsX,5*nOffsY,0); pPlace:=Offs(pPlaceBase,nOffsX,5*nOffsY,0); CASE 31:pPick:=Offs(pPickBase,2*nOffsX,5*nOffsY,0); pPlace:=Offs(pPlaceBase,2*nOffsX,5*nOffsY,0); CASE 32:pPick:=Offs(pPickBase,3*nOffsX,5*nOffsY,0); pPlace:=Offs(pPlaceBase,3*nOffsX,5*nOffsY,0);计算火花塞抓取和放置位置数据DEFAULT:TPErase;清屏TPWrite 'the counter is error,please check it!';在屏幕上显示'the counter is error,please check it!'Stop;机器人停止ENDPROCPROC rTeachPos()示教位置子程序MoveL pHome,v1000,z100,tGripper\WObj:=wobj0;示教安全点MoveL pPickBase,v1000,z100,tGripper\WObj:=WobjPick; 示教抓取基准点MoveL pPlaceBase,v1000,z100,tGripper\WObj:=WobjPlace; 示教放置基准点ENDPROCENDMODULE。
abb机器人仿真步骤ABB 机器人仿真步骤嘿,朋友们!今天咱们来聊聊 ABB 机器人仿真那些事儿。
先来说说为啥要搞这个仿真,就好比你要去一个陌生的地方旅行,提前在地图上看看路线,心里有个底,这仿真就跟提前探路差不多。
那咱们开始第一步,得先把机器人的模型给整出来。
这就像是给机器人画个画像,得画得像、画得准。
我之前在操作的时候,就有一次模型没弄好,结果仿真的时候机器人的动作那叫一个别扭,就好像一个人手脚不协调,别提多搞笑了。
模型弄好了,接下来就是设置环境。
想象一下机器人要在一个什么样的场景里工作,是在工厂车间,还是在仓库里搬东西?这环境设置可得仔细,有一回我就忽略了一个小小的障碍物,结果机器人在仿真中撞上去了,那场面,真让我哭笑不得。
然后就是给机器人编程啦,这就像是给机器人下达指令,告诉它该怎么做。
编程的时候得思路清晰,每一个动作、每一个时间点都要考虑到。
我记得有一次,因为一个指令的时间设置错了,机器人的动作快了一拍,整个流程都乱套了。
编程完成,就到了调试环节。
这就像是给机器人做体检,看看有没有啥毛病。
调试的时候要特别有耐心,一点点地找问题,解决问题。
有一次我调试了好久,都快没信心了,结果最后发现只是一个参数设置错了,改过来之后,那叫一个顺畅。
再然后,就是运行仿真啦。
看着机器人按照我们设定的程序动作,那感觉真的很棒。
不过有时候也会出现意外,比如机器人的动作不够流畅,或者没有达到预期的效果。
这时候就得返回去,重新检查各个环节,直到满意为止。
最后,对仿真的结果进行评估和优化。
看看机器人的工作效率怎么样,动作是否合理。
如果有需要,就再调整调整,让它变得更完美。
总之,ABB 机器人仿真可不是一件简单的事儿,每一个步骤都需要我们认真对待,仔细操作。
就像搭积木一样,一块一块地搭好,才能搭出漂亮的城堡。
希望大家在操作的时候都能顺顺利利,让机器人乖乖听话,为我们工作!。
作图步骤:1、双击桌面ROBOTSTUDIO 5.15图标,如下图所示。
点击左侧选项栏,选择授权。
然后选择激活向导,选择如下:2、点击创建文件,出现如下界面。
3、选择机器人模型,点击ABB模型库,出现如下界面,选择IRB2600.把承重能力改为20KG.IRB2600-20-165-01,机器人上自动安装了喷头工具。
5、然后点击机器人系统菜单,选择从布局创建系统。
在此项目中,可以在名称处修改系统的名称,尤其在系统多的情况下。
在主菜单中,一定要修改工具,把原始的tool10改为mytool。
或者,在放入机器人时,即完成此项设置,可以不需要修改此项。
成功后,屏幕右下角变为绿色。
5、选择建模,在菜单中选择固体,再选择矩形体。
6、选择矩形体后,设置矩形体的长宽高参数为400、500、400后,点击创建,后关闭,即可在屏幕上看到矩形体。
在此项中选择左侧布局后,双击部件1,修改名称为box 。
7、点击菜单中大地坐标中的移动,即可移动矩形体。
8、点击基本菜单中的路径。
一种路径就设置为PATH10,如果有其他,就要多设置几个路径。
后选择捕捉末端和手动线性,并把屏幕右下方的几个参数设置为MOVEJ,V300,Z为fine,准备设置示教指令。
9、做6个示教指令,第一个和最后一个为MOVEJ,其他都为MOVEL。
每移动一个点,点一次示教指令。
10、设置完示教指令后,点击基本菜单下同步,选择同步到VC然后,所有同步下选项都选择,点击确定即可。
然后确定。
12、设定好后,点击播放,即可进行仿真。
13、如需要录像,则应该先点击仿真录像,后在点击播放,即可进行仿真录像。
先点击文件菜单,然后选择保存。
保存后,在点击“共享”,后选择第一个选项“打包”。
至此,所有过程完成。
项目一:焊接机器人1.打开Robot studio软件,单击创建新建空工作站,同时保存一下,如下图所示;2.选择ABB机器人模型IRB1600,单击添加,选择承重能力和到达距离,选择确定,如下图所示:3.导入设备-tools-Binzel air 22,并拖动安装在机器人法兰盘上:4.选择建模-固体-矩形体,设定长宽高,点击创建:5.选择基本-机器人系统-从布局创建系统-下一步-下一步-完成;6.控制器启动完成后,选择路径-创建一个空路径,7.创建成功后,修改下方参数:moveJ ,V1000,Z1008.激活当前路径,选择机器人起点,单击示教指令9.开启捕捉末端或角点,同时将机器人的移动模式设为手动线性,将机器人工具移到矩形体的一个角点上,单击示教指令,形成第一条路径,依次示教四个角点,形成路径,右击路径,选择查看机器人目标,可将机器人移动到当前位置10.路径制作完成后,选择基本-同步到VC,在弹出的对话框中全部勾选,并点击确定,同步完成后选择仿真-仿真设定-将路径添加到主队列,选择应用--确定;11.选择仿真录像,点击播放,开始仿真录像。
项目二:搬运机器人1.新建空工作站--导入机器人IRB4600--选择最大承重能力,选择建模-固体-圆柱体,添加两个圆柱体,半径为200mm,高度分别为60mm和500mm,把其中一个作为工具添加到法兰盘上,同时导入两个设备Euro pallet如下图所示:2.右击物体或在左侧布局窗口中右击物体名称,在下拉菜单中选择设定颜色来更改颜色:3.根据布局创建机器人系统,细节与项目一相同,系统完全启动后,选择控制器-配置编辑器,在下拉菜单中选择I/O,在弹出窗口中新建Unit,细节如下图所示;4.Unit新建完毕后,右击新建signal,新建do1和do2,细节如下图所示:5.新建完毕后,重启控制器6.重启完毕后,选择仿真-配置-事件管理器-添加事件,细节如下图所示:7.事件添加完成后,开始创建路径啊,依次示教,机器人到达指定位置时,右击插入逻辑指令,如图所示:8.路径创建完成后,同步到VC,仿真设定,然后进行仿真录像项目三:叉车搬运1.打开软件,新建空工作站,导入机器人模型IRB4600,选择最大承重能力,然后选择基本--导入几何体--浏览几何体--选择本地几何体--打开,如下图所示:2.利用平移和旋转指令,将不同几何体按下图位置摆放整齐:3.创建一个300*300*70的方体分别作为tool,将其创建为工具,具体操作如下图所示:4.设定tool的本地原点为它的中心点,如下图所示:5.选中tool,点击创建工具,将tool创建为工具,具体操作如下:6.创建完成后将其安装在机器人法兰盘上,右击机器人选择显示机器人工作范围,可看到机器人最大到达距离,再次选择取消显示:4.创建四个200*200*200的方体分别作为Box1~Box4,设定为不同颜色,将Box2~Box4设为不可见5.布局结束,如下图所示:,6.根据布局创建机器人系统,待系统启动完毕后,选择控制器--配置编辑器-新建Unit --新建signal,包括do1~do 15,如下图所示:7.设置完成后,重启控制器,打开事件管理器,添加所需事件,包括显示对象,附加对象,提取对象,移动对象四类事件,具体如下:显示对象具体设置如下:附加对象具体设置如下提取对象设置如下:移动对象设置如下:8.事件添加完成后,创建路径,分别将Box1,Box2,Box3,Box4移动到垛板上,并排列整齐,路径如下图所示9.路径创建完成后,同步到VC :10.同步完成后进行仿真设定,按下图顺序添加路径,之后进行仿真录像:。
界面分几大块:1. 机器人系统建立,打开,打包等标签。
2. 基本标签---外界模型的导入,位置调整,机器人点的示教,工件,工具坐标系的建立等,是个很重要的内容,后续会详细讲解。
3. 建模----建立一些简单的模型,一般复杂的模型都在第三方软件建立好后导入系统。
4. 仿真----对系统离线仿真的一些设置。
5. 离线----离线编程,或者离线修改程序。
6. 在线----与控制柜连接,在线传递数据,修改程序,重装机器人系统等。
7. Add-Ins-----软件的二次开发以及一些插件的启动。
单击标签1,选择【新建工作站】可以看到有3中建立工作站的方法:【模板系统】【已存在的系统】【空工作站】这三种方法分别讲解,各有各的用处。
I. 模板系统-----用的比较多的一种方法。
系统右边列表提供了一些列A BB的标准机器人供你选择。
在这里你选择一种符合你要求的机器人,然后点击确认,等右下角的控制器状态变为绿色,系统就建立好了。
如果遇到有的机器人负载和臂长选定的情况下,弹出上图的询问框,表示库中有不止一个符合条件的模型,你随便选择一个即可。
然后,选择的机器人会进入系统,底座中心与世界坐标系中心重合。
【模板系统建立总结】用模板建立的系统优点是:方便,快捷,不需要其它的设置即可直接建立系统。
缺点是:建立的系统,都是默认配置,是裸机系统。
何谓裸机系统?就是机器人配置为出厂最基本配置,只能做基本的运动,信号的建立与使用,只能做一些轨迹的简单模拟。
如果你想做高级切割(wrist move),想实现两台机器人的联动控制(multimo ve),弧焊,点焊指令的使用,机器人到Hom e点自动触发信号(Wordzon e)等等功能都不能实现。
因为你没有这些功能的选项。
要使用这些选项,现实中你要向A BB 公司购买。
数控机床smart组件动画制作1 1打开robotstudio6.01软件.建立空工作站
2、插入几何体-浏览几何体,导入数控机床及数控机床门
3、建模-创建smart组件,改名字为SC_数控机床
4、添加组件linearmove2并更名为linearmove关,设置如图
5继续添加组件linearmove2并更名为linearmove开,设置如图
6添加组件LogicGate,设置如图
7、打开设计窗口。
添加输入信号di_star
8、组件之间连接如图
9、打开仿真界面,双击SC_数控机床,出现distar信号框
10、点击播放-点击distar信号变为以1.机床门缓慢右移,移动结束,再次点击信号变为0,机床门恢复原位。
11、动画制作完毕。
需要指出的是logicgate设置不要设置错了。
搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、工作站逻辑连接5、添加 IO(设置好需重启)6、示教目标点(同步到RAPID )7、RAPID 编程一、创建机器人系统1、创建空工作站2、导入 IRB 260 机器人模型二、创建动态输送链1、添加输送链并修改位置2、创建 600*400*200 的物料并修改位置3、添加一个 smart 组件4、添加 source 组件5、设置物料本地原点6、添加LINEMOVER 和 QUEUE 组件8、添加面传感器组件10、设置 SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿14、传感器与 SC 输送链的输出联系16、添加置位复位组件,对仿真开始结束信号进行保持17、18、进行仿真设定选择SC——输送链进行验证三、创建动态夹具1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘2、添加SMART 组件3、添加ATTACHER 和DETACHER 组件5、添加一个线传感器组件7、设置吸盘工具不能被传感器检测9、设置属性连接11、添加信号处理取非和锁定组件13、添加一个示教物料四、工作站逻辑连接五、参考代码MODULE MainMoudlePERS tooldatatGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327,116.889],[1,0,0,0],0,0,0]];!吸盘工具数据PERS loaddata LoadEmpty:=[0.01,[0,0,1],[1,0,0,0],0,0,0];PERS loaddata LoadFull:=[40,[0,0,50],[1,0,0,0],0,0,0];!有效载荷数据PERS robtarget pHome:=[[1620.00,-0.00,1331.59],[1.27986E-06,-0.707107,- 0.707107,1.27986E-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];!基准点PERS robtarget pActualPos:=[[1620,-1.87531E-14,1331.59],[1.27986E-06,- 0.707107,-0.707107,1.27986E- 06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];!实际点PERS robtarget pPick1:=[[1488.007792464,376.826660408,476.964684195],[0,0.707106307,0.7071 07256,0],[0,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];!1 路拾取目标点PERS robtarget pPlace1:=[[- 292.446,1263.27,55.4492],[0,0.707107,0.707106,0],[1,0,2,0],[9E+09,9E+09,9E+09, 9E+09,9E+09,9E+09]];!1 路放置基准点PERS robtarget pBase1_0:=[[- 292.446294945,1263.272085268,55.449220723],[0,0.707107387,0.707106176,0],[1, 0,2,0],[9E9,9E9,9E9,9E9,9E9,9E9]];!1 路放置 0 度姿态PERS robtarget pBase1_90:=[[-391.976797324,1362.469634994,55.449159414],[0,1,-0.000030621,0],[1,0,3,0],[9E9,9E9,9E9,9E9,9E9,9E9]];!1 路放置 90 度姿态PERS robtarget pPick2:=[[1488.013130905,-358.406014736,476.965039287],[0,0.707106307,0.707107256,0],[-1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERS robtarget pPlace2:=[[-317.378,-1857.99,55.449],[0,0.707108,0.707106,0],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERS robtarget pBase2_0:=[[-317.378137718,-1857.993871961,55.448967354],[0,0.707107745,0.707105817,0],[-2,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERS robtarget pBase2_90:=[[-407.525988074,-1755.902485322,55.449282402],[0,1,-0.000031217,0],[-2,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERS speeddata MinSpeed:=[1000,300,5000,1000];PERS speeddata MidSpeed:=[2500,400,5000,1000];PERS speeddata MaxSpeed:=[4000,500,5000,1000];!搬运速度定义PERS bool bPalletFull1:=FALSE;PERS bool bPalletFull2:=FALSE;!逻辑布尔量,拾取后为UE ,放置后为FALSEPERS num nCount1:=1;PERS num nCount2:=1;!输送链计数PROC Main()rInitAll;WHILE TRUE DOIF diBoxInPos1=1 AND diPalletInPos1=1 AND bPalletFull1=FALSE THENrPick1;rPlace1;ENDIFIF diBoxInPos2=1 AND diPalletInPos2=1 AND bPalletFull2=FALSE THENrPick2;rPlace2;ENDIFWaitTime 0.1;ENDWHILEENDPROCPROC rInitAll()Reset doGrip;pActualPos:=CRobT(\tool:=tGrip);pActualPos.trans.z:=pHome.trans.z;MoveL pActualPos,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pHome,MidSpeed,fine,tGrip\WObj:=wobj0;bPalletFull1:=FALSE;nCount1:=1;bPalletFull2:=FALSE;nCount2:=1;ENDPROCPROC rPick1()MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; MoveL pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;Set doGrip;WaitTime 0.3;GripLoad LoadFull;MoveL Offs(pPick1,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROCPROC rPick2()MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; MoveL pPick2,MinSpeed,fine,tGrip\WObj:=wobj0;Set doGrip;WaitTime 0.3;GripLoad LoadFull;MoveL Offs(pPick2,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROCPROC rPlace1()rPosition1;MoveJ Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveL pPlace1,MinSpeed,fine,tGrip\WObj:=wobj0;Reset doGrip;WaitTime 0.3;GripLoad LoadEmpty;MoveL Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; nCount1:=nCount1+1;IF nCount1>20 THENbPalletFull1:=TRUE;ENDIFENDPROCPROC rPlace2()rPosition2;MoveJ Offs(pPlace2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; MoveL pPlace2,MinSpeed,fine,tGrip\WObj:=wobj0;Reset doGrip;WaitTime 0.3;GripLoad LoadEmpty;MoveL Offs(pPlace2,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; nCount2:=nCount2+1;IF nCount2>20 THENbPalletFull2:=TRUE;ENDIFENDPROCPROC rPosition1()TEST nCount1CASE 1:pPlace1:=Offs(pBase1_0,0,0,0);CASE 2:pPlace1:=Offs(pBase1_0,600+10,0,0);CASE 3:pPlace1:=Offs(pBase1_90,0,400+10,0);CASE 4:pPlace1:=Offs(pBase1_90,400+10,400+10,0);CASE 5:pPlace1:=Offs(pBase1_90,800+20,400+10,0);CASE 6:pPlace1:=Offs(pBase1_0,0,600+10,200);CASE 7:pPlace1:=Offs(pBase1_0,600+10,600+10,200);CASE 8:pPlace1:=Offs(pBase1_90,0,0,200);CASE 9:pPlace1:=Offs(pBase1_90,400+10,0,200);CASE 10:pPlace1:=Offs(pBase1_90,800+20,0,200);CASE 11:pPlace1:=Offs(pBase1_0,0,0,400);CASE 12:pPlace1:=Offs(pBase1_0,600+10,0,400);CASE 13:pPlace1:=Offs(pBase1_90,0,400+10,400);CASE 14:pPlace1:=Offs(pBase1_90,400+10,400+10,400);CASE 15:pPlace1:=Offs(pBase1_90,800+20,400+10,400); CASE 16:pPlace1:=Offs(pBase1_0,0,600+10,600);CASE 17:pPlace1:=Offs(pBase1_0,600+10,600+10,600);pPlace1:=Offs(pBase1_90,0,0,600);CASE19:pPlace1:=Offs(pBase1_90,400+10,0,600);CASE20:pPlace1:=Offs(pBase1_90,800+20,0,600);DEFAULT:TPErase;TPWrite"the Counter of line1is error,please check it!";Stop;ENDTESTENDPROCPROC rPosition2()TEST nCount2CASE1:pPlace2:=Offs(pBase2_0,0,0,0);CASE2:pPlace2:=Offs(pBase2_0,600+10,0,0);CASE3:pPlace2:=Offs(pBase2_90,0,400+10,0);CASE4:pPlace2:=Offs(pBase2_90,400+10,400+10,0);CASE5:pPlace2:=Offs(pBase2_90,800+20,400+10,0);CASE6:pPlace2:=Offs(pBase2_0,0,600+10,200);pPlace2:=Offs(pBase2_0,600+10,600+10,200); CASE8:pPlace2:=Offs(pBase2_90,0,0,200);CASE9:pPlace2:=Offs(pBase2_90,400+10,0,200);CASE10:pPlace2:=Offs(pBase2_90,800+20,0,200);CASE11:pPlace2:=Offs(pBase2_0,0,0,400);CASE12:pPlace2:=Offs(pBase2_0,600+10,0,400);CASE13:pPlace2:=Offs(pBase2_90,0,400+10,400);CASE14:pPlace2:=Offs(pBase2_90,400+10,400+10,400);CASE15:pPlace2:=Offs(pBase2_90,800+20,400+10,400);CASE16:pPlace2:=Offs(pBase2_0,0,600+10,600);CASE17:pPlace2:=Offs(pBase2_0,600+10,600+10,600);CASE18:pPlace2:=Offs(pBase2_90,0,0,600);CASE19:pPlace2:=Offs(pBase2_90,400+10,0,600);CASE20:pPlace2:=Offs(pBase2_90,800+20,0,600);DEFAULT:TPErase;TPWrite"the Counter of line1is error,please check it!";Stop;ENDTESTENDPROCPROC rModify()MoveJ pHome,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase1_0,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase1_90,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pPick2,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase2_0,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase2_90,MinSpeed,fine,tGrip\WObj:=wobj0;ENDPROCENDMODULE。
1.如何安装RS6(1)介绍了如何在robotstudio官网下载软件已经安装步骤2.版本说明(1)介绍了软件的使用和权限情况已经激活的方法(2)介绍了高级版和基础班的区别3.软件菜单栏的介绍(1)介绍了菜单栏中文件/基本/建模/仿真/控制器/RAPID/Add-Ins菜单栏的作用和按钮的作用。
4.导入机器人(1)创建一个空工作站(2)机器人导入和工具的添加5.为机器人安装工具6.放置周边的对象(1)在机器人周围放置工作台propeller table(2)如何显示机器人当前工具的工作区域(3)如何移动工作台到合适位置(4)添加盒子Curve_thing(与工作台的长宽一致)并用两点法将盒子放置到工作台上。
7.建立机器人系统(1)将工作站保存到自定义位置(2)从布局创建系统(目录最好不要有中文)。
8.手动操纵机器人(1)在非要的情况下如何移动工业机器人在移动框架询问中要选择是。
(2)手动关节移动机器人各轴。
(3)工具的线性移动、重定位移动。
(4)回到机器人原点。
(5)手动关节运动、手动线性运动。
9.创建工件坐标(1)用户框架下用三点法创建工件坐标10.创建运动轨迹(1)创建一个空路径(z轴下去走方形)(2)如何在路径中示教各个点。
(3)检查路径的到达能力。
(4)自动配置参数(轴配置)。
(5)沿着路径移动。
11.建模功能的使用及模型的导入(1)在软件中利用托盘基本尺寸创建一个矩形并导出几何体。
(2)将第三方软件创建的模型导入rs。
12.测量工具的使用(1)直线测量/角度测量/直径测量/最短距离测量13.创建机械装置(1)创建滑台滑块机械装置(设备)(2)将滑台滑块添加到链接(3)定义轴和运动范围(4)创建姿态和原点位置姿态(5)设置姿态之间的转换时间(6)保存为库文件14.创建用户工具(1)将导入的3D模型创建为工具。
(2)调整模型的位置并修改本地原点与大地坐标系一致①三点法放置模型②设定位置③旋转模型(3)创建框架,设定为表面的法线方向。
作图步骤:
1、双击桌面ROBOTSTUDIO 5.15图标,如下图所示。
点击左侧选项栏,选择授权。
然后选择激活向导,选择如下:
2、点击创建文件,出现如下界面。
3、选择机器人模型,点击ABB模型库,出现如下界面,选择IRB2600.把承重能力改为20KG.
4、然后点击导入模型库,下拖选择MYTOOL后,然后把左侧边mytool工具拖到IRB2600-20-165-01,机器人上自动安装了喷头工具。
5、然后点击机器人系统菜单,选择从布局创建系统。
在此项目中,可以在名称处修改系统的名称,尤其在系统多的情况下。
在主菜单中,一定要修改工具,把原始的tool10改为mytool。
或者,在放入机器人时,即完成此项设置,可以不需要修改此项。
一直选择下一个,即可成功。
成功后,屏幕右下角变为绿色。
5、选择建模,在菜单中选择固体,再选择矩形体。
6、选择矩形体后,设置矩形体的长宽高参数为400、500、400后,点击创建,后关闭,即可在屏幕上看到矩形体。
在此项中选择左侧布局后,双击部件1,修改名称为box。
7、点击菜单中大地坐标中的移动,即可移动矩形体。
此项中一定要注意看俯视图,使正方体在机器人运动范围内,否则出错。
8、点击基本菜单中的路径。
一种路径就设置为PATH10,如果有其他,就要多设置几个路径。
后选择捕捉末端和手动线性,并把屏幕右下方的几个参数设置为MOVEJ,V300,Z为fine,准备设置示教指令。
9、做6个示教指令,第一个和最后一个为MOVEJ,其他都为MOVEL。
每移动一个点,点一次示教指令。
10、设置完示教指令后,点击基本菜单下同步,选择同步到VC
然后,所有同步下选项都选择,点击确定即可。
11、然后选择仿真菜单。
首先点击仿真设定,把原有路径删除,把新的路径添加到主队列中,然后确定。
12、设定好后,点击播放,即可进行仿真。
13、如需要录像,则应该先点击仿真录像,后在点击播放,即可进行仿真录像。
14、最终保存和打包。
先点击文件菜单,然后选择保存。
保存后,在点击“共享”,后选择第一个选项“打包”。
即可完成文件程序打包。
至此,所有过程完成。