ABBrobotstudio使用详细步骤
- 格式:doc
- 大小:1.58 MB
- 文档页数:32
ABB机器人操作手册(中文版)ABB操作手册(中文版)概述采用模块化设计,可根据不同的需求和场合选择合适的机械臂、控制柜、控制器和软件。
采用IRC5控制系统,具有强大的计算能力、通信能力和扩展能力,支持多种编程语言和接口。
采用RobotStudio软件,可实现对的仿真、编程、调试和优化。
支持多种安全功能,如安全区域、安全速度、安全住手等,保障人员和设备的安全。
组成机械臂:是的执行部份,由多个关节和驱动器组成,可实现多自由度的运动。
控制柜:是的控制部份,包含了电源模块、CPU模块、I/O模块、驱动模块等,负责对进行控制和管理。
控制器:是的操作部份,是一种便携式的触摸屏设备,可通过有线或者无线方式与控制柜连接,用于对进行设置、操作和监控。
软件:是的程序部份,包括了运行在控制柜上的操作系统和应用程序,以及运行在PC上的仿真和编程软件。
操作本节介绍了如何对ABB进行基本的操作,包括了启动、住手、复位、手动操作、自动操作等。
启动机械臂处于空载状态,没有任何工具或者物品附着在末端执行器上。
机械臂周围没有任何障碍物或者危(wei)险物品。
控制柜已经连接好电源,并且电源开关处于关闭状态。
控制器已经连接好控制柜,并且电池电量充足。
PC已经连接好控制柜,并且安装好RobotStudio软件。
启动的步骤如下:1. 打开控制柜的电源开关,等待控制柜自检完成。
2. 打开控制器的电源开关,等待控制器启动完成。
3. 在控制器上选择“系统”菜单,并选择“启动”选项。
5. 等待系统提示“启动成功”,并显示主界面。
住手机械臂处于空载状态,没有任何工具或者物品附着在末端执行器上。
机械臂周围没有任何障碍物或者危(wei)险物品。
处于住手状态,没有任何运动或者动作。
住手的步骤如下:1. 在控制器上选择“系统”菜单,并选择“住手”选项。
3. 等待系统提示“住手成功”,并显示主界面。
4. 关闭控制器的电源开关。
5. 关闭控制柜的电源开关。
复位机械臂处于空载状态,没有任何工具或者物品附着在末端执行器上。
搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、工作站逻辑连接5、添加IO(设置好需重启)6、示教目标点(同步到RAPID)7、RAPID编程一、创建机器人系统1、创建空工作站2、导入IRB 260机器人模型3、从布局创建机器人系统,勾选Chinese和709-1网络二、创建动态输送链1、添加输送链并修改位置2、创建600*400*200的物料并修改位置3、添加一个smart组件4、添加source组件5、设置物料本地原点6、添加LINEMOVER和QUEUE组件7设置LINEMOVER属性8、添加面传感器组件9、设置输送链不能被传感器检测10、设置SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发source进行copy14、传感器与SC输送链的输出联系15、添加仿真开始结束组件,用于激活传感器16、添加置位复位组件,对仿真开始结束信号进行保持17、18、进行仿真设定选择SC——输送链进行验证三、创建动态夹具1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘2、添加SMART组件3、添加ATTACHER和DETACHER组件4、设置属性5、添加一个线传感器组件6、线传感器设置属性7、设置吸盘工具不能被传感器检测8、把线传感器安装到吸盘(不更新位置,保持当前位置)9、设置属性连接10、添加信号及连接11、添加信号处理取非和锁定组件12、继续信号连接13、添加一个示教物料14、应用手动线性验证SC_工具四、工作站逻辑连接五、参考代码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 robtargetpPick1:=[[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()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;ENDIFENDPROCTEST 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: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);CASE 18:pPlace1:=Offs(pBase1_90,0,0,600);CASE 19:pPlace1:=Offs(pBase1_90,400+10,0,600);CASE 20:pPlace1:=Offs(pBase1_90,800+20,0,600);DEFAULT:TPErase;TPWrite "the Counter of line 1 is error,please check it!"; Stop;ENDTESTENDPROCPROC rPosition2()TEST nCount2CASE 1:pPlace2:=Offs(pBase2_0,0,0,0);CASE 2:pPlace2:=Offs(pBase2_0,600+10,0,0);CASE 3:pPlace2:=Offs(pBase2_90,0,400+10,0);CASE 4:CASE 5:pPlace2:=Offs(pBase2_90,800+20,400+10,0); CASE 6:pPlace2:=Offs(pBase2_0,0,600+10,200);CASE 7:pPlace2:=Offs(pBase2_0,600+10,600+10,200); CASE 8:pPlace2:=Offs(pBase2_90,0,0,200);CASE 9:pPlace2:=Offs(pBase2_90,400+10,0,200);CASE 10:pPlace2:=Offs(pBase2_90,800+20,0,200);CASE 11:pPlace2:=Offs(pBase2_0,0,0,400);CASE 12:pPlace2:=Offs(pBase2_0,600+10,0,400);CASE 13:pPlace2:=Offs(pBase2_90,0,400+10,400);CASE 14:pPlace2:=Offs(pBase2_90,400+10,400+10,400); CASE 15:pPlace2:=Offs(pBase2_90,800+20,400+10,400); CASE 16:pPlace2:=Offs(pBase2_0,0,600+10,600);CASE 17:pPlace2:=Offs(pBase2_0,600+10,600+10,600); CASE 18:pPlace2:=Offs(pBase2_90,0,0,600);CASE 19:pPlace2:=Offs(pBase2_90,400+10,0,600);CASE 20:pPlace2:=Offs(pBase2_90,800+20,0,600);DEFAULT:TPErase;TPWrite "the Counter of line 1 is 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。
ABB机器人操作手册中文版ABB机器人操作手册一、引言机器人操作手册是为了帮助操作员正确使用ABB机器人并充分发挥其功能而编写的。
本手册详细介绍了ABB机器人的基本操作流程、安全注意事项以及常见故障排查方法。
通过仔细阅读和理解本手册,您将能够熟练操作ABB机器人,确保工作的高效性和安全性。
二、机器人基本操作流程1. 启动机器人1.1 检查电源和电气连接是否正常1.2 打开机器人控制器电源开关1.3 按下启动按钮,等待机器人系统启动完成2. 安全操作2.1 穿戴正确的个人防护装备2.2 确保工作区域清洁整洁,无杂物和障碍物2.3 确保操作环境良好,并避免机器人在危险区域工作3. 机器人操作3.1 了解机器人的基本结构和组件3.2 使用机器人控制器进行精确的运动控制3.3 学习编程语言和指令,以实现各种自动化任务3.4 掌握机器人的手动操作和远程控制方法4. 故障排查和维护4.1 快速识别和解决常见的机器人故障问题4.2 定期检查机器人的机械结构和电气系统4.3 做好机器人的日常维护工作,保持其正常运行状态三、安全注意事项1. 操作员必须接受专业的培训和认证,熟悉机器人的工作原理和操作流程。
2. 操作员必须遵守机器人的操作规范和相关法律法规,确保自身安全和设备安全。
3. 在机器人工作期间,任何人员都不得进入工作区域,以免发生意外。
4. 在机器人操作过程中,严禁随意更改或调整机器人的参数和程序,以免引发故障或事故。
5. 在机器人运行前,必须对机器人及其周围的工作区域进行安全检查,确保无隐患。
四、常见故障排查方法1. 机器人无法启动1.1 检查机器人控制器的电源连接是否正常1.2 检查机器人控制器的开关和按钮是否正确设置和操作2. 机器人无法动作2.1 检查机器人的运动控制面板是否处于正确的模式和状态2.2 检查机器人周围是否有障碍物或阻碍其运动的物体3. 机器人运动异常3.1 检查机器人的传感器和执行器是否正常工作3.2 检查机器人的运动路径和轨迹是否正确五、结语本操作手册旨在帮助操作员更好地理解和使用ABB机器人,并在工作中提高效率和安全性。
Abb robotstudio安装教程
1、各个版本的robot安装方式是一样的。
2、解压安装包
3、
4、选择语言为中文
5、
6、选择安装产品
7、
8、首先安装
robotware
9、点击下一步
10、点击下一步
11、在选择安装路径时只需要把C改为D就可以了。
12、安装robot完毕后安装robotstudio回到初始界面
13、
14、安装robotstudio
15、点击下一步
16、下一步
17、将路径的C改为D,方法如上
18、64位windows系统会出现两个图标,
19、可以同时使用
20、32位系统只有一个图标,还是正常使用。
21、打开软件点击选项
22、点击授权
23、查看软件使用到期时间。
24、关闭软件,破解开始。
25、在开始下输入regedit回车
26、进入注册表编辑器
27、
28、在这里32位系统和64位系统注册表文件路径有所不
同,现在以64位系统为例
29、
30、
31、
32、
33、双击打开后进入编辑
34、
35、破解完毕打开robot
36、选项---》授权- 查看已安装许可证
37、时间变为2029年破解成功.
38、注意:32位系统没有此步骤直接跳到下
一步。
ABB机器人操作员使用手册关于本手册本手册供首次启动系统时使用。
它包含机器人系统出厂附带文档中的摘录信息。
手册用法本手册包含在完成物理安装后首次启动IRC5 机器人控制器时的指示说明。
本手册的阅读对象本手册面向:•调试人员操作前提读者应该熟悉的内容:•机器人硬件的机械安装。
•受过机器人操作方面的培训。
本手册内容假定所有硬件(操纵器、控制器等)均已正确安装并互相连接妥当。
本手册由以下各章组成:1操作步骤 设置和启动 IRC5 机器人系统的步骤。
2概述 介绍 IRC5 机器人系统中的部件。
一:安全1.1 安全术语安全信号简介:本节将明确说明执行此手册中描述的工作时,可能会出现的所有危险。
每种危险包括:• 标题,指明危险等级(危险、警告或小心)和危险类型。
• 简要描述,描述操作/维修人员未排除险情时会出现什么情况。
• 有关如何消除危险以简化工作执行的说明。
危险等级标志 名称含义危险 警告,如果不依照说明操作,就会发生事故,并导致严重或致命的人员伤害和/或严重的产品损坏。
该标志适用于以下险情:碰触高压电气装置、爆炸或火灾、有毒气体、压轧、撞击和从高处跌落等。
电击 针对可能会导致严重的人身伤害或死亡的电气危险的警告小心警告如果不依照说明操作,可能会发生能造成伤害和/或产品损坏的事故。
该标志适用于以下险情:灼伤、眼部伤害、皮肤伤害、听力损伤、挤压或滑倒、跌倒、撞击、高空坠落等。
此外,它还适用于某些涉及功能要求的警告消息,即在装配和移除设备过程中出现有可能损坏产品或引起产品故障的情况时,就会采用这一标志。
静电放电(ESD)针对可能会导致严重产品损坏的电气危险的警告注意 描述重要的事实和条件1.2 操纵器标签上的安全符号本节描述操纵器标签上使用的安全标志。
标志在标签上组合使用,描述每个具体的警告。
本节介绍的是常规内容,标签上可以包含附加信息(如,值)。
必须查看操纵器标签上的安全和健康标志,以及系统构建人员或集成人员提供的补充安全信息。
ABB手操器操作步骤1.打开手操器:首先,按下手操器上的电源按钮,等待一段时间,直到手操器的屏幕亮起来。
一旦屏幕亮起,手操器将进入启动界面。
2.登录:在启动界面上,输入您的用户名和密码,然后按下登录按钮来登录手操器控制系统。
如果您是第一次使用手操器,您可能需要先创建一个新用户。
3.选择机器人:一旦登录成功,手操器将显示一个机器人列表。
通过滚动屏幕或使用状态栏上的箭头按钮来选择您想要操作的机器人。
4.选择模式:在选择机器人后,手操器将显示可用的操作模式列表。
这些模式可能包括手动模式、自动模式和编程模式。
选择适当的模式,然后按下确认按钮。
5.手动模式:如果您选择手动模式,手操器将显示一个用于手动控制机器人的界面。
这个界面通常包括按钮、摇杆和轮廓盘等控制元素。
根据需要,使用这些控制元素来操作机器人的运动。
8.可选设置:除了上述基本操作模式外,手操器还提供了一些其他的可选设置。
例如,您可以调整屏幕亮度、声音和语言设置,配置通信和网络连接,以及更新和升级手操器的软件。
9.安全操作:在使用手操器时,务必遵循安全操作规程。
这包括正确使用手操器的控制元素,遵守机器人的工作空间限制,以及穿戴适当的个人保护装备。
10.关闭手操器:当您完成使用手操器时,按下手操器上的关机按钮,然后按照屏幕上的指示进行操作。
最后,手操器将关闭,并退回到启动界面。
以上是ABB手操器的操作步骤。
熟练掌握这些步骤可以帮助您有效地操作和编程ABB机器人。
由于ABB手操器的具体型号和软件版本可能有所不同,因此在实际应用中,还需要参考相关的操作手册和用户指南。
简述robotstudio中建立传输线的方法在ABB RobotStudio中,建立传输线主要涉及以下几个步骤:第一步:准备工作在建立传输线之前,需要进行一些准备工作,包括确定传输设备的类型和参数,确定传输线的起点和终点等。
第二步:创建传输设备在RobotStudio的库中,有一个传输设备库,包括了多种类型的传输设备,如传送带、滚筒输送机、AGV等。
用户可以从中选择适合自己需求的传输设备。
通过拖拽的方式将其添加到场景中。
第三步:设置传输设备参数在添加传输设备到场景中后,需要对其进行参数设置。
例如,对于传送带,需要设置其初始位置、速度、方向等。
用户可以通过选中传输设备,在属性窗口中进行参数设置。
第四步:连接机器人和传输设备将机器人和传输设备连接起来,使其能够在工作过程中共同协作。
在RobotStudio中,有两种方式可以实现机器人和传输设备的连接。
第一种方式是通过在场景中绘制路径来连接机器人和传输设备。
在画布中使用直线或曲线工具,绘制机器人和传输设备之间的路径。
然后,在机器人和传输设备的属性窗口中,将路径指定为机器人移动的方式。
第二种方式是通过使用IO信号来连接机器人和传输设备。
用户可以为机器人和传输设备分别定义输入和输出信号,并通过逻辑接线的方式将其连接起来。
在机器人程序中,可以使用IO信号的状态来判断传输设备的状态,并作出相应的动作。
第五步:设置传输线的起点和终点对于一些传输线来说,起点和终点是固定的,但对于一些可变线路,用户需要设置传输线的起点和终点。
在RobotStudio中,用户可以通过选中传输线,然后在属性窗口中指定起点和终点的位置。
第六步:设置传输线的规格和参数在建立传输线之后,需要对其进行规格和参数的设置。
例如,对于传送带,需要设置其长度、宽度、高度等。
用户可以通过选中传输线,在属性窗口中进行参数设置。
第七步:设置传输线的运动规划对于一些传输线来说,需要进行运动规划,以确保机器人在传输线上的移动是稳定和安全的。
项目一:焊接机器人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、添加IO(设置好需重启)6、示教目标点(同步到RAPID)7、RAPID编程一、创建机器人系统1、创建空工作站2、导入IRB 260机器人模型3、从布局创建机器人系统,勾选Chinese和709-1网络二、创建动态输送链1、添加输送链并修改位置2、创建600*400*200的物料并修改位置3、添加一个smart组件4、添加source组件5、设置物料本地原点6、添加LINEMOVER和QUEUE组件7设置LINEMOVER属性8、添加面传感器组件9、设置输送链不能被传感器检测10、设置SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发source进行copy14、传感器与SC输送链的输出联系15、添加仿真开始结束组件,用于激活传感器16、添加置位复位组件,对仿真开始结束信号进行保持17、18、进行仿真设定选择SC——输送链进行验证三、创建动态夹具1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘2、添加SMART组件3、添加ATTACHER和DETACHER组件4、设置属性5、添加一个线传感器组件6、线传感器设置属性7、设置吸盘工具不能被传感器检测8、把线传感器安装到吸盘(不更新位置,保持当前位置)9、设置属性连接10、添加信号及连接11、添加信号处理取非和锁定组件12、继续信号连接13、添加一个示教物料14、应用手动线性验证SC_工具四、工作站逻辑连接五、参考代码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 robtargetpPick1:=[[1488.007792464,376.826660408,476.964684195],[0,0.707106307,0.7 07107256,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+0 9,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); CASE 18:pPlace1:=Offs(pBase1_90,0,0,600);CASE 19:pPlace1:=Offs(pBase1_90,400+10,0,600);CASE 20:pPlace1:=Offs(pBase1_90,800+20,0,600);DEFAULT:TPErase;TPWrite "the Counter of line 1 is error,please check it!"; Stop;ENDTESTENDPROCPROC rPosition2()TEST nCount2CASE 1:pPlace2:=Offs(pBase2_0,0,0,0);CASE 2:pPlace2:=Offs(pBase2_0,600+10,0,0);CASE 3:pPlace2:=Offs(pBase2_90,0,400+10,0);CASE 4:pPlace2:=Offs(pBase2_90,400+10,400+10,0);CASE 5:pPlace2:=Offs(pBase2_90,800+20,400+10,0);CASE 6:pPlace2:=Offs(pBase2_0,0,600+10,200);CASE 7:pPlace2:=Offs(pBase2_0,600+10,600+10,200); CASE 8:pPlace2:=Offs(pBase2_90,0,0,200);CASE 9:pPlace2:=Offs(pBase2_90,400+10,0,200);CASE 10:pPlace2:=Offs(pBase2_90,800+20,0,200);CASE 11:pPlace2:=Offs(pBase2_0,0,0,400);CASE 12:pPlace2:=Offs(pBase2_0,600+10,0,400);CASE 13:pPlace2:=Offs(pBase2_90,0,400+10,400);CASE 14:pPlace2:=Offs(pBase2_90,400+10,400+10,400); CASE 15:pPlace2:=Offs(pBase2_90,800+20,400+10,400); CASE 16:pPlace2:=Offs(pBase2_0,0,600+10,600);CASE 17:pPlace2:=Offs(pBase2_0,600+10,600+10,600);CASE 18:pPlace2:=Offs(pBase2_90,0,0,600);CASE 19:pPlace2:=Offs(pBase2_90,400+10,0,600);CASE 20:pPlace2:=Offs(pBase2_90,800+20,0,600);DEFAULT:TPErase;TPWrite "the Counter of line 1 is 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。