ABB-robotstudio使用详细步骤
ABB robotstudio使用详细步骤

搬运码垛工作站建模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机器人创建信号及关联信号步骤1. 首先,准备好ABB机器人的编程软件。
ABB机器人使用的编程软件是RobotStudio,它可以用来编写、仿真和调试ABB机器人的程序。
2. 打开RobotStudio,创建一个新的工程,并选择ABB机器人的类型和型号。
3. 在RobotStudio中创建一个新的动作程序。
动作程序是ABB机器人执行任务的主要程序。
4.在动作程序中,首先需要创建一个信号。
信号可以是数字信号,也可以是模拟信号。
数字信号通常用于控制机器人的逻辑操作,例如打开或关闭一个装置。
模拟信号通常用于控制机器人的运动,例如控制机器人的速度或力量。
5.创建一个数字信号时,需要指定信号的名称和类型。
信号的类型可以是输入信号或输出信号。
输入信号是由机器人外部设备或传感器发送给机器人的信号,输出信号是机器人将发送给外部设备的信号。
请注意,机器人在工作过程中可以同时接收和发送多个信号。
6.创建一个模拟信号时,需要指定信号的名称、类型以及取值范围。
模拟信号的类型可以是速度信号、力信号或位置信号。
速度信号用于控制机器人的运动速度,力信号用于控制机器人施加的力量,位置信号用于控制机器人的运动位置。
7.当信号创建完成后,可以将信号与机器人的动作程序关联起来。
关联信号是告诉机器人在接收到指定的信号后执行何种动作。
8.在动作程序中,选择一个动作步骤,并选择信号。
然后,指定机器人在接收到信号后执行的动作。
这可以是机器人的运动动作,例如移动到一个指定的位置;也可以是机器人的逻辑动作,例如打开一个装置。
9.关联信号是根据信号的类型和值来确定的。
对于数字信号,可以将其与机器人动作程序中的条件判断语句关联起来。
例如,如果数字信号的值为1,则机器人执行指定的动作;如果数字信号的值为0,则机器人不执行任何动作。
对于模拟信号,可以将其与机器人的运动指令关联起来。
例如,如果模拟信号的值大于指定的阈值,机器人以指定的速度运动。
10.完成关联信号后,保存动作程序,并将其上传到ABB机器人。
3.ABB机器人RobotStudio创建SMART方法

精心整理RobotStudio创建SMART组件
1.打开RobotStudio软件,创建一个新工作站,导入做好的机械装置
2.导入机械装置后,断开库文件。
打开做好的机械装置
3.创建SMART组件右键机械装置---点击断开与库的连接
1.点击Smart组件--创建SMART 组件
2.修改SMART 组件名称
3.把机械装置拖进SMART里
4.建模--右键机械装置--设置为
4.添加组件
击添加组
注:机械
有几个运
态就添加
)
2.选择本体---PoseMov er 注意:还有其他功能组件,根据实际应用选择。
5.定义机械装置的运动姿态
注:当有几个SMART组件时,按上述步骤定义几个运动姿态。
6.添加运动姿态的信号1.右击SMA 件--属性--对话框
择机械装择机动的续时
1.点击信号和连
2.添加
I/OSignals--跳
4.选择信号类型
5.填写信号名称
6.填写信号值
注:机械装置有几个运动姿态就添加几个信号。
7.信号关联
1.点击添加
I/OConnection--跳
出对话框
源对象---选择SMART
信号---选择添加的信号di_YD
标对象---选择该信号所对应的运动
态
标对象---选择Execute
注:同上,有几个运动姿态就关联几个信号。
8.信号关联完成后,保存为库文件。
以便调用。
ABB机器人操作手册 中文版

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)3-2 RobotStudio离线编程软件各菜单功能认识

2)确认计算机上设置了正确的网络设置。DHCP被启用,指定了正确的IP地址。
3)单击一键连接。
二、实践操作
1、RobotStudio离线编程软件各菜单主要功能
“文件”功能选项卡 • 在线:连接到控制器→添加控制器(图3-27) 1)单击添加控制器打开一个对话框,其中将列出所有可用的控制器。
“文件”功能选项卡 选项:包含概述、机器人、在线、图形、仿真等选项,主要是对RobotStudio软件进 行相应的设置,具体每项设置在此就不再累述,详情参阅使用手册,如图3-29~32所 示。
二、实践操作
1、RobotStudio离线编程软件各菜单主要功能
“基本”功能选项卡:包含构建工作站,创建系统,编辑路径以及摆放项目等,具体 应用后续章节展开,如图3-33所示。
3)可以按照事件类别或根据所显示细节中的任何文本对事件日志列表进行过滤。 • 要按照任何所需的文本对列表进行过滤,请在文本框中指定文本。 • 要按照事件类别进行过滤,请使用类别下拉列表。
二、实践操作
1、RobotStudio离线编程软件各菜单主要功能
“控制器”功能选项卡:I/O系统,可以查看并设置输入输出信号,如图3-43、44所示。
二、实践操作
1、RobotStudio离线编程软件各菜单主要功能
“控制器”功能选项卡:包含用于管理真实控制器(IR5C)的控制措施,以及用于虚 拟控制器(VC)的同步、配置和分配给它的任务的控制措施,如图3-36所示。
二、实践操作
1、RobotStudio离线编程软件各菜单主要功能
“控制器”功能选项卡:使用添加控制器按钮,可以连接到真实或虚拟控制器,主要 有以下两种方法(图3-37): • 一键连接- 连接控制器服务端口 • 添加控制器- 添加网络上可用的控制器添加控制器 该操作方法与前述“文件”功能选项卡—在线—添加控制器方法一致,在此不再累述。
(项目管理)ABBRobotstudio仿真软件项目式使用说明

项目一:焊接机器人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.同步完成后进行仿真设定,按下图顺序添加路径,之后进行仿真录像:。
ABB机器人RobotStudio创建机械装置方法

ABB机器人RobotStudio创建机械装置方法RobotStudio创建机械装置方法1.打开RobotStudio软件,创建一个新工作站。
(此处省略)2.导入几何体(导入需要创建成机械装置的几何体,此处使用2个简单的几何体为例创建机械装置)3.创建机械装置。
1.点击建模--创建2.更改机械装置名机械装置--跳出对3.创建装置类型--此处以创建外轴为4.链接,接点,框架,校准的设置1.双击链接--跳出对话2.链接名3.选择部4.点击按5:勾选基链接(把其中一固定部件作5.按照上一步把其他部件都添加到链接里去。
(此处省略)7.框架和校准的设置(同样点击框架和校准,跳出对话框)8.编译机械装置。
1.点击接点--跳出对话2.关节名称3.选择关节类型4.选择子链5.设置关节轴6.可以通过操纵轴来设定关7.设定限制类型1.框架名称2.属于链接3.框架位置4.或直接选择5.选择是否设置1.选择校准2.校准位置注:A :若一个机械装置上有多个运动关节,则添加相应的关节(注意父链接和子链接要选择对)。
B :关节轴第一个位置:选中旋转轴心的点,第二格位1.点击下拉按钮--选择浮动2.浮动后下拉框架--出现编译机械装置3.点击编译4.点击添加姿态按钮--跳出创建姿态对话框。
(按要求可5.姿态名称6.关节值(可通过滑块调节各个姿态的位置)9.点击关闭,跳出对话框,点击“是”10.保存为库文件,以便调用----完成。
ABB机器人使用robotstudio系统安装步骤

ABB机器人系统安装步骤
在工业机器人维护与保养中,若出现机器人系统崩溃或者无法解决的错误,常常需要重新安装系统,介绍用robotstudio制作系统,方法如下:
1、机器人做”X”启动BOOT Application,进入系统引导界面
2、打开RobotStudio
3、点击安装管理器
4、点击打开
5、点击新建
6、编辑新系统的名称,选择系统备份路径,单击“下一步”
7、点击“下一步”
8、点击“添加”
9、选择系统秘钥,确定,下一步
10、核对系统选项,点击“下一步”,系统选项要与原系统选项一致,否则会出错。
11、点击“应用”
12、选择“是”机器人重启,自动进入新系统
系统安装过程中,请不要随意更改步骤,否则会安装失败,失败后,则无法重新安装,只能请ABB工程技术人员进行安装(代价不是一般的大)。
使用robotstubio和机器人建立连接

打开r软件
点击上方控制器功能选项卡
点击添加控制器
点击一键连接;
最后在左边的控制器视图中观察是否已连接上控制器;
连接在LAN所对应的网络端口中
连接在WAN所对应的端口
设置网络连接
网络与共享中心
适配器设置
选择本地连接
右键属性
找到IP4,双击
勾选第二个
我们需要将机器人的这前面三段要是一样的
以6.0示教器为例
使用robotstubio和机器人建立连接
使用robotstudio与机器人建立连接
ABB的robotstudio软件具有强大的虚拟仿真功能;
如图所示,找到贴在控制柜的标签,找到黄颜色标记的service;
设置网络连接
网络与共属性
找到IP4,双击
勾选为动态IP,DNS也需要是动态获取的
工业机器人RobotStudio软件入门

工业机器人RobotStudio软件入门在当今制造业快速发展的时代,工业机器人的应用越来越广泛。
而要有效地对工业机器人进行编程、模拟和调试,一款强大的软件是必不可少的,RobotStudio 就是其中的佼佼者。
对于初学者来说,掌握RobotStudio 软件的基本操作是迈入工业机器人领域的重要一步。
RobotStudio 是由瑞典 ABB 公司开发的一款工业机器人离线编程软件,它可以在虚拟环境中创建、模拟和调试机器人系统,从而减少实际生产中的错误和停机时间,提高生产效率和质量。
首先,我们来了解一下如何安装 RobotStudio 软件。
您可以从 ABB官方网站上下载最新版本的安装程序。
安装过程相对较为简单,按照提示逐步进行即可。
需要注意的是,安装过程中可能需要选择一些组件和功能,根据您的实际需求进行选择。
安装完成后,打开 RobotStudio 软件,您会看到一个简洁而直观的界面。
界面主要分为菜单栏、工具栏、视图窗口和状态栏等几个部分。
菜单栏包含了软件的各种功能选项,如文件操作、编辑、建模、仿真等。
工具栏则提供了一些常用工具的快捷按钮,方便您快速进行操作。
接下来,让我们创建一个新的机器人系统。
在菜单栏中选择“新建”,然后选择您所需要的机器人型号和控制器类型。
RobotStudio 提供了丰富的机器人型号库,涵盖了 ABB 公司的各种主流机器人产品。
创建好机器人系统后,就可以开始对机器人进行编程了。
RobotStudio 支持多种编程方式,其中示教编程是比较常用的一种。
示教编程就是通过手动操作机器人,让机器人记住各个关节的位置和运动轨迹,从而实现编程的目的。
在视图窗口中,您可以通过鼠标和键盘操作来移动机器人的关节,使其到达您想要的位置。
每到达一个位置,点击“添加位置”按钮,机器人就会记住这个位置。
除了示教编程,RobotStudio 还支持离线编程。
离线编程是在虚拟环境中通过编写程序代码来控制机器人的运动。
ABBRobotstudio仿真软件项目式使用说明

项目一:焊接机器人1.打开Robot studio软件,单击创建新建空工作站,同时保存一下,如下图所示;2.选择ABB机器人模型IRB1600,单击添加,选择承重能力和到达距离,选择确定,如下图所示:3.导入设备-tools-Binzel air 22,并拖动安装在机器人法兰盘上:4.选择建模-固体-矩形体,设定长宽高,点击创建:5.选择基本-机器人系统-从布局创建系统-下一步-下一步-完成;6.控制器启动完成后,选择路径-创建一个空路径,创建成功后,修改下方参数: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.同步完成后进行仿真设定,按下图顺序添加路径,之后进行仿真录像:。
RobotStudio教程ABB(中国)(2024)

案例三:多机器人协同作业系统构建
系统架构设计
设计多机器人协同作业系 统的整体架构,包括通信 协议、任务分配机制等。
2024/1/27
机器人协同控制
实现多个机器人之间的协 同控制,确保它们能够共 同完成复杂任务。
任务分配与优化
采用合适的任务分配算法 ,将任务分配给各个机器 人,并根据实际情况进行 优化调整。
通过传感器采集环境信息,并进行数据处 理和分析,提取有用特征。
环境感知
智能决策
利用处理后的传感器数据,实现机器人对 环境的感知能力,如识别物体、检测距离 等。
2024/1/27
基于环境感知结果,机器人可以进行智能决 策,如自适应调整路径、避障等。
26
05
实际案例分析与解决方案分享
2024/1/27
RobotStudio教程ABB( 中国)
2024/1/27
1
目录
contents
2024/1/27
• 机器人技术概述 • RobotStudio软件介绍 • 基本操作与仿真环境搭建 • 高级功能应用与拓展 • 实际案例分析与解决方案分享 • 总结回顾与未来展望
2
01
机器人技术概述
2024/1/27
2024/1/27
用于控制机器人的运动 ;
用于模拟机器人的实际 工作环境;
用于编写和调试机器人 程序。
13
常用工具栏与快捷键使用技巧
文件操作工具栏
包含新建、打开、保存等文件操作按 钮;
编辑工具栏
包含撤销、重做、复制、粘贴等编辑 操作按钮;
2024/1/27
14
常用工具栏与快捷验交流
学习心得与感悟
学员们纷纷表示,通过学习 RobotStudio教程,不仅对机器人技 术有了更深入的了解,还提升了自己 的实践能力和解决问题的能力。
ABB robotstudio使用详细顺序

搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、添加source组件5、设置物料本地原点6、添加LINEMOVER和QUEUE组件7设置LINEMOVER属性8、添加面传感器组件9、设置输送链不能被传感器检测10、设置SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发source进行copy17、11、添加信号处理取非和锁定组件12、继续信号连接13、添加一个示教物料14、应用手动线性验证SC_工具四、工作站逻辑连接五、参考代码MODULEMainMoudlePERStooldatatGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327, 116.889],[1,0,0,0],0,0,0]];!1路放置0度姿态!1路放置90度姿态PERSrobtargetpPlace2:=[[-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]];PERSspeeddataMinSpeed:=[1000,300,5000,1000];PERSspeeddataMidSpeed:=[2500,400,5000,1000];PERSspeeddataMaxSpeed:=[4000,500,5000,1000];!搬运速度定义PERSboolbPalletFull1:=FALSE;PERSboolbPalletFull2:=FALSE;!逻辑布尔量,拾取后为UE,放置后为FALSE PERSnumnCount1:=1;ENDPROCPROCrInitAll()ResetdoGrip;pActualPos:=CRobT(\tool:=tGrip); MoveLpActualPos,MinSpeed,fine,tGrip\WObj:=wobj0; MoveJpHome,MidSpeed,fine,tGrip\WObj:=wobj0;bPalletFull1:=FALSE;nCount1:=1;bPalletFull2:=FALSE;nCount2:=1;ENDPROCPROCrPick1()PROCrPlace1()rPosition1;MoveJOffs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveLpPlace1,MinSpeed,fine,tGrip\WObj:=wobj0; ResetdoGrip;WaitTime0.3;GripLoadLoadEmpty;MoveLOffs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveJOffs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; nCount1:=nCount1+1;IFnCount1>20THENbPalletFull1:=TRUE;ENDPROCPROCrPosition1()TESTnCount1CASE1:pPlace1:=Offs(pBase1_0,0,0,0);CASE2:pPlace1:=Offs(pBase1_0,600+10,0,0);CASE3:pPlace1:=Offs(pBase1_90,0,400+10,0);CASE4:pPlace1:=Offs(pBase1_90,400+10,400+10,0); CASE5:CASE13:pPlace1:=Offs(pBase1_90,0,400+10,400); CASE14:pPlace1:=Offs(pBase1_90,400+10,400+10,400); CASE15:pPlace1:=Offs(pBase1_90,800+20,400+10,400);CASE16:pPlace1:=Offs(pBase1_0,0,600+10,600); CASE17:pPlace1:=Offs(pBase1_0,600+10,600+10,600); CASE18:pPlace1:=Offs(pBase1_90,0,0,600);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); CASE7:pPlace2:=Offs(pBase2_0,600+10,600+10,200); CASE8: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;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
搬运码垛工作站建模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 THEN rPick1;rPlace1;ENDIFIF diBoxInPos2=1 AND diPalletInPos2=1 AND bPalletFull2=FALSE THEN rPick2;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);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);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。