创建动态夹具
- 格式:pptx
- 大小:6.86 MB
- 文档页数:15
基于ABB搬运工业机器人离线编程与仿真研究作者:田小龙王国章来源:《科技风》2022年第34期摘要:针对工业机器人在线编程低效和碰撞等问题,本文采用离线编程解决这些问题。
在实际应用中离线编程也便于修改,满足不同设计需要。
在RobotStudio中,搭建搬运工作站,规划搬运路径设计动作流程,根据搬运设计要求编制相关程序。
图形仿真优化路径,避免碰撞和优化程序,达到最优效果。
离线编程实现最优路径编程,避免在线编程碰撞,达到高效和安全的效果。
ABB搬运工业机器人离线编程为解决工业机器人搬用问题提供了一定参考。
关键词:工业机器人;工作站;路径;离线编程;仿真中图分类号:TP242.2文献标识码:AThe Research on Off-line Programming andSimulation of Handling Industrial Robot Based on ABBTian XiaolongWang GuozhangHebei professional technology institute of Machinery and ElectricityHebeiXingtai054000Abstract:Aiming at the problems of inefficiency and collision in online programming of industrial robots,offline programming is adopted to solve these problems.In practical applications,offline programming is also easy to modify to meet different design needs.In RobotStudio,the handling workstation is built,the transportation path is planed,the action process is designed and the relevant procedures is compiled according to the transportation design requirements.The graphics simulation optimizes the path,avoids collision and optimizes the program,to achieve the optimal results.Off-line programming realizes optimal path programming,avoids online programming collision,and achieves the effect of high efficiency and safety.ABB offline programming provides some reference for solving the problem of industrial robot.Keywords:Industrial robot;Workstation;Path;Off-line programming;Simulation工业机器人具有自动化程度高、生产率高、运行可靠等优点,同时随着人力的成本越来越高,工业机器人取代工人进行生产成为一种趋势。
机床夹具设计步骤和实例机床夹具是用于在机床上夹持工件或刀具的装置,用于保持工件的位置稳定,使其能够被加工。
机床夹具设计的步骤主要包括需求分析、夹具类型选择、夹具基础结构设计、夹具强度计算、夹具定位系统设计、夹具操作系统设计、夹具零件设计和夹具组装等。
以下为机床夹具设计步骤和一个实例:步骤1:需求分析首先,需要了解加工工件的要求和工艺流程。
通过与工艺人员或工程师的交流,了解工件的形状、材料、尺寸等特性,以及工件的精度要求、加工工艺和工时要求等。
根据需求分析,明确夹具的基本功能、定位方式和操作方式。
步骤2:夹具类型选择根据加工工件的特性和加工工艺的要求,通过参考手册或专业书籍选择合适的夹具类型。
常见的夹具类型包括平板夹具、顶升夹具、转角夹具、滑块夹具、气垫夹具等。
根据不同的工件形状和加工要求,选择适合的夹具类型。
步骤3:夹具基础结构设计根据工件的形状和夹持要求,设计夹具的基础结构。
夹具的基础结构通常由夹紧装置、支撑装置和定位装置组成。
夹紧装置主要用于夹持工件,支撑装置用于保持工件的平衡和稳定,定位装置用于确保工件的位置准确。
步骤4:夹具强度计算根据夹具类型和加工工件的特性,计算夹具的强度。
夹具的强度计算包括静态强度和动态强度两个方面。
静态强度主要考虑夹具在夹持工件时的受力情况,包括切削力、惯性力等;动态强度主要考虑夹具在工件加工过程中的振动和冲击力,保证夹具结构能够承受夹持工件时的各种力。
步骤5:夹具定位系统设计根据工件的定位要求,设计夹具的定位系统。
夹具的定位系统应能够满足工件的精度要求,并确保工件的位置准确。
定位系统常采用定位销、定位块等形式,根据工件的形状和加工特点选择合适的定位方式。
步骤6:夹具操作系统设计根据夹具的使用要求,设计夹具的操作系统。
夹具的操作系统主要包括夹紧装置的控制方式和操作机构的设计。
根据夹紧力的大小和控制精度的要求,选择合适的液压夹紧系统或气动夹紧系统。
步骤7:夹具零件设计根据夹具的基础结构、定位系统和操作系统的设计要求,设计夹具的各个零件。
搬运码垛工作站建模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);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。
《工业机器人仿真应用教程》课程标准1.课程概述本课程旨在提高学生在机器人方面的综合素质,着重使学生掌握从事机器人加工类企业中机器人工作所必备的知识和基本技能,初步形成处理实际问题的能力。
培养其分析问题和解决问题的学习能力,具备继续学习专业技术的能力;在本课程的学习中渗透思想道德和职业素养等方面的教育,使学生形成认真负责的工作态度和严谨的工作作风,为后续课程学习和职业生涯的发展奠定基础。
1.1课程定位《工业机器人仿真应用教程》课程是高级技工学校工业机器人应用与维护专业的专业课。
主要内容包括:Robot Studio软件的操作、建模、Smart组建的使用、轨迹离线编程、动画效果的制作、模拟工作站的构建、仿真验证以及在线操作。
1.2设计思路本课程教学最好采用理论与实际相结合的一体化教学方式,借助多媒体网络教室,一人一机,使用多媒体课件讲解与软件操作相结合。
理论教学中应帮助学生总结并灵活运用所学的相关知识,本着够用的原则讲授,切忌面面俱到。
对工业机器人仿真操作不作深入探讨,仅作一般性了解。
实践教学环节中对工业机器人Robot Studio仿真软件常用功能作简单介绍,重点培养学生使用软件对工业机器人进行基本操作、功能设置、二次开发、在线监控与编程、方案设计和检验。
教师教学中多联系生产实际并选用一些工业上经典的工业机器人使用案例进行讲解,提高学生对工业机器人进行应用开发、调试、现场维护的能力。
2.课程目标2.1知识目标1、了解机器人仿真软件,了解机器人仿真软件的应用。
2、掌握构建基本仿真工业机器人工作站的方法。
3、掌握码垛机器人工作站、焊接机器人工作站、打磨抛光机器人工作站的设计理念和设计方法。
4、掌握ABB 机器人仿真软件RobotStudio 中的建模功能,能运用所学制图软件在RobotStudio中进行建模。
5、掌握ABB 工业机器人离线轨迹编程方法。
6、了解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 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。
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)创建框架,设定为表面的法线方向。
《工业机器人工程应用虚拟仿真》课程标准学时:72学分:4适用专业及学制:三年制、机电技术应用(机器人方向)、全日制审定:机电技术教学部一、制定依据本课程是机电技术应用(机器人方向)专业核心课程。
本标准依据《中职国家专业教学标准》而制定。
二、课程性质在本课程中,通过项目主导、任务驱动教学的方法,对ABB公司的RObotStUdiO软件的操作、建模Smart组件的使用、轨迹离线编程、动画效果的制作、模拟工作站的构建、仿真验证以及在线操作进行全面的讲解。
本课程适合从事工业机器人应用开发、调试、现场维护的工程技术人员学习和参考,特别是已掌握ABB机器人基本操作,需要进一步掌握工业机器人工程应用模拟仿真的工程技术人员参考。
三、课程教学目标本课程旨在提高学生在机器人方面的综合素质,着重使学生掌握从事机器人加工类企业中机器人工作所必备的知识和基本技能,初步形成处理实际问题的能力。
培养其分析问题和解决问题的学习能力,具备继续学习专业技术的能力;在本课程的学习中渗透思想道德和职业素养等方面的教育,使学生形成认真负责的工作态度和严谨的工作作风,为后续课程学习和职业生涯的发展奠定基础。
(一)知识目标1.能认识、安装工业机器人仿真软件。
2.会构建基本仿真工业机器人工作站。
3.能较熟练运用仿真软件RobotStudio中的建模功能。
4.能较熟练运用仿真软件RobotStudio对工业机器人离线轨迹编程。
5.会运用RobotStudio中Smart组件的应用。
6.会带导轨和变位机的机器人系统的创建与应用。
7.会SCreenMaker示教器用户自定义界面使用。
(二)能力目标1.本课程是操作性很强的,对于这种类型的课程,必须加强平时的练习,在重复操作练习中提高熟练软件,并掌握其中的操作原理2.能运用虚拟软件进行在线编辑I/O信号的操作、正确编程运动轨迹、正确布局机器人工作站。
3.学会举一反三的方法,能在课外学习新的编程指令,并能学习使用。
RobotStudioSmart组件创建动态夹具⼀、创建动态夹具的smart组件⼆、添加组件☆Attacher—安装⼀个对象属性:Parent—安装的⽗对象Flange:机械装置或⼯具数据安装到Child:安装对象Mount:移动对象到其⽗对象Offset:当进⾏安装时位置与安装的⽗对象相对应Orientation:当进⾏安装时,⽅向与安装的⽗对象相对应输⼊:Execute:设为high(1)时去安装输出:Executed:设为high(1)时当此操作完成☆Detacher—拆装⼀个已安装的对象属性:Child:安装对象KeepPosition:如果是false,已安装对象回到原始的位置输⼊:Execute:设为high(1)时去取消安装输出:Executed:设为high(1)时当此操作完成☆LinSensor—检测是否有任何对象与两点之间的线段相交属性:Start:起点End:结束点Radius:感应半径SensorPart:已有的部件已靠近开始点SensorPoint:包含的点是线段与接近的部件相交输⼊:Active:设为1时去激活传感器输出:SensorOut:设为high(1)时当对象与线段相交时三、属性连结线传感器检测到的对象即为安装的⼦对象。
拆除的⼦对象即为安装的⼦对象。
四、IO信号diGripper:真空吸盘动作信号doVacuumOK:真空反馈信号五、IO连结吸盘SC_Gripper⼯作信号diGripper为“1”时,线传感器LineSensor开始激活(输⼊信号Active为“1”),线传感器⼀旦检测到对象,输出信号SensorOut即为“1”,开始执⾏安装Attacher动作(输⼊信号Execute为“1”),安装执⾏完成后(Executed为“1”),真空反馈信号doVacuumOK为“1”,程序部分执⾏拾取动作,吸盘⼯作信号diGripper为“0”时,即线传感器检测到的对象取反时,开始执⾏拆除Detacher动作(输⼊信号Execute为“1”),拆除执⾏完成后(Executed为“0”),真空反馈信号doVacuumOK为“0”。
搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、工作站逻辑连接567、12312345、设置物料本地原点6、添加LINEMOVER和QUEUE组件7设置LINEMOVER属性8、添加面传感器组件9、设置输送链不能被传感器检测10、设置SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发source进行copy14151617、18、进行仿真设定选择SC——输送链进行验证三、创建动态夹具1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘2、添加SMART组件3、添加ATTACHER和DETACHER组件4、设置属性5、添加一个线传感器组件678910111213140],0,0,0]];!吸盘工具数据PERSloaddataLoadEmpty:=[0.01,[0,0,1],[1,0,0,0],0,0,0]; PERSloaddataLoadFull:=[40,[0,0,50],[1,0,0,0],0,0,0];!有效载荷数据PERSrobtargetpHome:=[[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]];!基准点PERSrobtargetpActualPos:=[[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]];!实际点!1路拾取目标点PERSrobtargetpPlace1:=[[-292.446,1263.27,55.4492],[0,0.707107,0.707106,0],[1,0,2,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];!1!1!1PROCMain()rInitAll;WHILETRUEDOIFdiBoxInPos1=1ANDdiPalletInPos1=1ANDbPalletFull1=FALSETHENrPick1;rPlace1;ENDIFIFdiBoxInPos2=1ANDdiPalletInPos2=1ANDbPalletFull2=FALSETHEN rPick2;rPlace2;ENDIFWaitTime0.1;ENDWHILEENDPROCENDPROCGripLoadLoadFull;MoveLOffs(pPick1,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROCPROCrPick2()MoveJOffs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; MoveLpPick2,MinSpeed,fine,tGrip\WObj:=wobj0;SetdoGrip;WaitTime0.3;GripLoadLoadFull;MoveLOffs(pPick2,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROCPROCrPlace1()rPosition1;ENDIFENDPROCMoveLpPlace2,MinSpeed,fine,tGrip\WObj:=wobj0; ResetdoGrip;WaitTime0.3;GripLoadLoadEmpty;MoveLOffs(pPlace2,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveJOffs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;nCount2:=nCount2+1;IFnCount2>20THENbPalletFull2:=TRUE;ENDIFENDPROCPROCrPosition1()TESTnCount1CASE1:CASE2:CASE3:CASE4:CASE5:CASE6:CASE7:CASE8:pPlace1:=Offs(pBase1_90,0,0,200); CASE9:pPlace1:=Offs(pBase1_90,400+10,0,200); CASE10:pPlace1:=Offs(pBase1_90,800+20,0,200); CASE11:CASE12:pPlace1:=Offs(pBase1_0,600+10,0,400); CASE13:pPlace1:=Offs(pBase1_90,0,400+10,400); CASE14:pPlace1:=Offs(pBase1_90,400+10,400+10,400);CASE15:CASE16:CASE17:CASE18:CASE19:CASE20:Stop;ENDTESTENDPROCPROCrPosition2()TESTnCount2CASE1: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:CASE6:CASE7:CASE8:CASE9:CASE10:CASE11: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:CASE20:Stop;ENDTESTENDPROCMoveJpPick2,MinSpeed,fine,tGrip\WObj:=wobj0; MoveJpBase2_0,MinSpeed,fine,tGrip\WObj:=wobj0; MoveJpBase2_90,MinSpeed,fine,tGrip\WObj:=wobj0; ENDPROCENDMODULE。
UG中夹具运动分析制作过程1.进入motion模块,并取消随后出现的对话框。
2. 打开装配树,右键单击装配文件名,新建运动构件。
3.取消运动过程中的装配约束关系。
4.单击图标定义LINK。
(1)一节旋转销LINK 的定义 压板及其上面的运动件 —— LINK01 气缸头 —— LINK02 气缸体 —— LINK03 (2)两节旋转销LINK 的定义 压板及其上面的运动件 —— LINK01 连杆 —— LINK02 气缸头 —— LINK035. 单击图标 定义JOINT 。
LINK 名(1) 一节旋转销JOINT 的定义A. 固定转动副 —— 压板旋转销与气缸体安装销 选择旋转点后单击JOINT 菜单中的APPLY 。
B. 相对转动副 —— 气缸头与压板连接销选择一个LINK 的旋转点,单击LINK2图标选择另一个LINK 的旋转点,再单击APPLY 确认。
C. 相对移动副 —— 气缸头与气缸体之间 单击平移图标,LINK1选择气缸头,LINK2选择气缸体,运动方式选择constant :displacement 为0,Velocity 为-10(或10,旋转平移LINK1LINK2运动方式JOINT 名JOINT 显示比例主要看运动方向标示,定义后可以编辑修改),单击APPLY确认。
(2)两节旋转销JOINT的定义A. 固定转动副——连杆与连接板的旋转点B. 相对转动副——气缸头与压板连接销,连杆与压板连接销C. 固定移动副——气缸头单击平移图标,选择气缸头,运动方式选择constant:displacement为0,Velocity为-10(或10),单击APPLY确认。
6.单击图标可以编辑修改LINK和JOINT。
7. 单击图标进行运动过程模拟。
A. 首先出现分析选项对话框,设置好运动时间和步数后单击OK 。
B. 出现分析的信息窗口和运动对话框。
C. 将压板打开状态及气缸摆动最大状态的运动轨迹保存。