搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、工作站逻辑连接5、添加IO(设置好需重启)6、示教目标点(同步到RAPID)7、RAPID编程一、创建机器人系统1、创建空工作站2、导入IRB260机器人模型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_工具四、工作站逻辑连接五、参考代码MODULEMainMoudlePERStooldatatGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327,116.889],[1,0,0,0],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]];!实际点PERSrobtargetpPick1:=[[1488.007792464,376.826660408,476.964684195],[0,0.707106307,0.707107256,0],[0,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];!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,9E+09,9E+09]];!1路放置基准点PERSrobtargetpBase1_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度姿态PERSrobtargetpBase1_90:=[[-391.976797324,1362.469634994,55.449159414],[0,1,-0.000030621,0],[1,0,3,0],[9E9,9E9,9E9,9E9,9E9,9E9]];!1路放置90度姿态PERSrobtargetpPick2:=[[1488.013130905,-358.406014736,476.965039287],[0,0.707106307,0.707107256,0],[-1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];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]];PERSrobtargetpBase2_0:=[[-317.378137718,-1857.993871961,55.448967354],[0,0.707107745,0.707105817,0],[-2,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERSrobtargetpBase2_90:=[[-407.525988074,-1755.902485322,55.449282402],[0,1,-0.000031217,0],[-2,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERSspeeddataMinSpeed:=[1000,300,5000,1000];PERSspeeddataMidSpeed:=[2500,400,5000,1000];PERSspeeddataMaxSpeed:=[4000,500,5000,1000];!搬运速度定义PERSboolbPalletFull1:=FALSE;PERSboolbPalletFull2:=FALSE;!逻辑布尔量,拾取后为UE,放置后为FALSEPERSnumnCount1:=1;PERSnumnCount2:=1;!输送链计数PROCMain()rInitAll;WHILETRUEDOIFdiBoxInPos1=1ANDdiPalletInPos1=1ANDbPalletFull1=FALSETHENrPick1;rPlace1;ENDIFIFdiBoxInPos2=1ANDdiPalletInPos2=1ANDbPalletFull2=FALSETHENrPick2;rPlace2;ENDIFWaitTime0.1;ENDWHILEENDPROCPROCrInitAll()ResetdoGrip;pActualPos:=CRobT(\tool:=tGrip);pActualPos.trans.z:=pHome.trans.z;MoveLpActualPos,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJpHome,MidSpeed,fine,tGrip\WObj:=wobj0;bPalletFull1:=FALSE;nCount1:=1;bPalletFull2:=FALSE;nCount2:=1;ENDPROCPROCrPick1()MoveJOffs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;MoveLpPick1,MinSpeed,fine,tGrip\WObj:=wobj0;SetdoGrip;WaitTime0.3;GripLoadLoadFull;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;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;IFnCount120THENbPalletFull1:=TRUE;ENDIFENDPROCPROCrPlace2()rPosition2;MoveJOffs(pPlace2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;MoveLpPlace2,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;IFnCount220THENbPalletFull2:=TRUE;ENDIFENDPROCPROCrPosition1()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:pPlace1:=Offs(pBase1_90,800+20,400+10,0);CASE6:pPlace1:=Offs(pBase1_0,0,600+10,200);CASE7:pPlace1:=Offs(pBase1_0,600+10,600+10,200);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:pPlace1:=Offs(pBase1_0,0,0,400);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: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);CASE19:pPlace1:=Offs(pBase1_90,400+10,0,