ABB机器人程序实例ROBOT studio 6.01(附带与工业相机网络通讯实例)
- 格式:docx
- 大小:27.04 KB
- 文档页数:14
ABB机器人程序实例.docMODULE MainModuleCONST robtarget pHome:=[[1525.42,272.18,1873.69],[4.42963E-05,0.699969,-0.7141 73,-2.80277E-05],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtarget pPrePickMould:=[[1653.99,272.19,1779.41],[5.83312E-05,0.69997, -0.714172,-3.47922E-05],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtarget pPrePickClapboard:=[[2036.17,-741.24,1235.05],[0.678651,0.73435 ,-0.0119011,0.00467586],[-1,-2,2,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtarget pPickMould:=[[1943.13,173.08,630.89],[4.66987E-05,0.699977,-0.7 14166,-3.24109E-05],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+0 9,9E+09]];CONST robtarget pPickClapboard:=[[1943.19,173.08,620.72],[1.61422E-05,0.699977, -0.714165,-7.62858E-06],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtargetpPrePlace:=[[785.90,-957.40,1722.38],[0.00231652,0.0492402,-0.99 8779,-0.00310842],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePlace10:=[[-277.40,-1202.57,1621.17],[0.00183571,-0.0139794, -0.999895,-0.00341408],[-2,-1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePlace20:=[[-491.18,-1082.85,1505.90],[0.000663644,0.69408,0. 719887,0.00386364],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09 ,9E+09]];CONST robtarget pPlaceMould:=[[-92.13,-2580.19,1171.45],[0.000771646,0.713144,0 .701007,0.00383692], [-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+0 9,9E+09]];CONST robtarget pPlaceClapboard:=[[1585.08,1761.04,787.33],[0.00645323,-0.00552 996,-0.726358,-0.687263],[0,1,-1,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtarget pPrePlaceClapboard:=[[1017.30,955.85,1443.17],[1.0621E-05,-0.00 849593,-0.999964,4.01139E-05],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePickClapboard10:=[[2257.17,-841.03,1579.56],[0.667517,0.744 57,-0.00360206,0.00487631],[-1,-1,2,0],[9E+09,9E+09,9E+09,9E+0 9,9E+09,9E+09]];CONST robtarget pPrePickMould10:=[[530.24,-1703.27,1762.63],[5.07659E-05,0.961 61,0.274421,2.37287E-05],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST num nOffs:=100;PERS num nCurOffs:=100;CONST num nLayer:=0;PERS num nCurLayer:=0;CONST num nThickness:=40;V AR bool bTimeOut:=FALSE;PERS bool bDryCycle:=FALSE;V AR intnum iDryCycle;V AR intnum iResDryCycle;V AR intnum iVacuum;PERS tooldata tGripper:=[TRUE,[[0,0,100],[1,0,0,0]],[88.5,[-3.7,-1.4,132.1],[1,0,0,0],5.5,17.831,25.067]];PROC main()rInitAll;WHILE TRUE DOIF siDryCycle=1 or nCurLayer<1 thenrPickClapboard;ELSErPickMould;ENDIFWaittime 0.2;ENDWHILEENDPROCPROC rPickMould()DIWait diMouldready,1,3,"entrance Conveyer","ready for pick";DIWait diPlaceReady,1,3,"exit Conveyer","ready for remove";MoveJ pPrePickMould, v1500, z50, tGripper;IF BitCheck(nCurlayer,1) THENnCurOffs:=nOffs;ELSEnCurOffs:=-nOffs;ENDIFMoveLoffs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness),v1000, z50, tGripper;MoveLoffs(pPickMould,0,nCurOffs,(nCurLayer-1)*nThickness), v200, fine, tGripper;GripClose;Decr nCurLayer;MoveLoffs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness),v200, z50, tGripper;MoveJ pPrePickMould, v1000, z50, tGripper;DIWait diPlaceReady,1,3,"exit Conveyer","ready for remove";MoveJ pPrePlace10, v1500, z10, tGripper;MoveL offs(pPlaceMould,0,0,100), v1500, z10, tGripper;MoveL pPlaceMould, v200, fine, tGripper;GripOpen;MoveL offs(pPlaceMould,0,0,100), v200, z10, tGripper;MoveL pPrePlace10, v1500, z10, tGripper;MoveJ pPrePickMould, v1500, z10, tGripper;PulseDO\PLength:=2, doMouldPlaceOK;ENDPROCPROC rPickClapboard()DIWait diMouldready,1,3,"entrance Conveyer","ready for pick";MoveL offs(pPickClapboard,0,0,100), v1000, z50, tGripper;MoveL pPickClapboard, v200, fine, tGripper;GripClose;MoveL offs(pPickClapboard,0,0,100) ,v200, z50, tGripper;MoveL offs(pPickClapboard,0,0,500) ,v1000, z50, tGripper;MoveL pPrePlaceClapboard, v1000, z10, tGripper;DIWait diClapboardReady, 1, 3, "exit Conveyer", "ready for remove";MoveL offs(pPlaceClapboard,-700,-200,250), v1000, z10,tGripper;MoveL offs(pPlaceClapboard,00,-10,100), v1000, z10, tGripper;MoveL pPlaceClapboard, v100, fine, tGripper;GripOpen;MoveL offs(pPlaceClapboard,0,-50,100), v1000, z10, tGripper;MoveL offs(pPlaceClapboard,-700,-200,250), v1000, z10, tGripper;MoveL pPrePlaceClapboard, v1000, z10, tGripper;PulseDO\PLength:=1.0, doClapboardPickOK;MoveJ pHome, v1500, fine, tGripper;PulseDO\PLength:=1.0, doUnStackOk;WaitTime 2;DIWait diMouldready,0,3,"exit Conveyer","ready for remove";nCurLayer:=nLayer;ENDPROCPROC rInitAll()IF diVacuum1=0 THENWaitTime 1;ELSEErrWrite "The Rob1 gripper error! " ,"The gripper is not opened!"\RL2:="Check the gripper signal postion ."\RL3:=" open the gripper manually and take away the part from gripper.";Stop;Exit;ENDIFrMoveHome;nCurLayer:=nLayer;IDelete iVacuum;CONNECT iVacuum WITH tLostPart;ISignalDI diVacuum1, 1, iVacuum;ISleep iVacuum;ENDPROCROC GripClose()SetDO doVacuum,1;SetDO doBlow,0;WaitUntildiVacuum1=1\MaxTime:=10\TimeFlag:=bTimeOut;IF bTimeOut THENErrWrite "Rob Gripper Signal error ! " ,"Fatal error in Gripper"\RL2:="Check the gripper signal postion ."\RL3:=" change a new sensor .";Stop;ENDIFWaittime 0.5;IWatch iVacuum;ENDPROCPROC GripOpen()ISleep iVacuum;SetDO doVacuum,0;PulseDO \PLength:=2.0, doBlow;WaitUntil diVacuum1=0 \MaxTime:=5\TimeFlag:=bTimeOut;IF bTimeOut THENErrWrite "Rob Gripper Signal error ! " ,"Fatal error in Gripper"\RL2:="Check the gripper signal postion ."\RL3:=" change a new sensor .";Stop;ENDIFWaittime 0.5;ENDPROCPROC rMoveHome()V AR string HomeOffset;CONST num MinX:=-500;CONST num MaxX:=500;CONST num MinY:=-500;CONST num MaxY:=500;CONST num MinZ:=500;CONST num MaxZ:=1200;V AR robtarget ActualPos;VelSet 100,500;AccSet 70, 70;IF bCurrentPos(pHome,tGripper,50)=TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIF bCurrentPos(pPrePickMould,tGripper,50\wobj:=Wobj0)= TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIFbCurrentPos(pPrePickClapboard,tGripper,100\wobj:=Wobj0) = TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIF bCurrentPos(pPreplace,tGripper,100\wobj:=Wobj0)= TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIF bCurrentPos(pHome,tGripper,100)=FALSE THEN! If no known position is found, check if the robot is in a specified! window and move him to the first position in the program ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);IF ActualPos.trans.xMaxX OR ActualPos.trans.yMaxY OR ActualPos.trans.zMaxZ THENHomeOffset:="";IF ActualPos.trans.x<="">HomeOffset:=HomeOffset+"X :"+NumToStr(MinX-ActualPos.trans. x,0)+" ";ELSEIF ActualPos.trans.x>MaxX THENHomeOffset:=HomeOffset+"X :"+NumT oStr(MaxX-ActualPos.trans .x,0)+" ";ELSEHomeOffset:=HomeOffset+"X : OK ";ENDIFIF ActualPos.trans.y<="">HomeOffset:=HomeOffset+"Y :"+NumToStr(MinY-ActualPos.trans. y,0)+" ";ELSEIF ActualPos.trans.y>MaxY THENHomeOffset:=HomeOffset+"Y :"+NumT oStr(MaxY-ActualPos.trans .y,0)+" ";ELSEHomeOffset:=HomeOffset+"Y : OK ";ENDIFIF ActualPos.trans.z<="">HomeOffset:=HomeOffset+"Z :"+NumToStr(MinZ-ActualPos.trans. z,0)+" ";ELSEIF ActualPos.trans.z>MaxZ THENHomeOffset:=HomeOffset+"Z :"+NumT oStr(MaxZ-ActualPos.trans. z,0)+" ";ELSEHomeOffset:=HomeOffset+"Z : OK ";ENDIFErrWrite HomeOffset,"Move robot manually near homeposition";WHILE OpMode()<>OP_MAN_PROG DOTPErase;TPWrite "Please switch robot to Manual mode";!TPErase;Stop;ENDWHILEStop;MoveJ pHome,v500,fine,tGripper;!npallet:=4;ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);WHILE OpMode()<>OP_AUTO DOTPErase;TPWrite "Please switch robot to AUTO mode";!TPErase;Stop;ENDWHILEENDIFENDIFVelSet 100,3000;ENDPROCTRAP tLostPartErrWrite "Part lost!" ,"Fatal error inGripper"\RL2:="Check the gripper ."\RL3:=" check the vacuum .";Stop;ENDTRAPENDMODULE。
ABBrobotstudio使⽤详细步骤搬运码垛⼯作站建模
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进⾏copy
14、传感器与SC输送链的输出联系
15、添加仿真开始结束组件,⽤于激活传感器
16、添加置位复位组件,对仿真开始结束信号进⾏保持。
搬运码垛工作站建模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.707107256,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,9 E+09,9E+09]];!1路放置基准点PERS robtarget pBase1_0:=[[-292.446294945,1263.272085268,55.449220723],[0,0.707107387,0.707106176,0],[1,0,2,0],[9 E9,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;ENDPROCPROC 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);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。
A b b_r o b o t s t u d i o安
装教程
-CAL-FENGHAI.-(YICAI)-Company One1
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位系统没有此步骤直接跳到下
一步
11。
【最新整理,下载后即可编辑】ABB机器人(ROBOT studio 6.01)程序实例MODULE MainModulePERS tooldatatGripper:=[TRUE,[[0.533078,1.51617,583.739],[1,0,0,0]],[30,[0,0,50],[1, 0,0,0],0,0,0]];TASK PERS wobjdataVisionWobj:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[-934.534,1807.34,-7 6.7707],[0.400996,0.0128267,-0.0292473,-0.915523]]];TASK PERS wobjdataWobjCompressor1:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0 ,1]],[[686.651,296.298,-588.529],[0.917114,1.69419E-06,-7.35001E-05,-0.398626]]];TASK PERS wobjdataWobjCompressor2:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0 ,1]],[[-944.871,-657.402,-323.406],[0.918098,-1.98999E-05,-6.49686E-06 ,0.396353]]];PERS wobjdata WobjCompressor;VAR robtarget pActualPos;VAR socketdev server_socket;VAR socketdev client_socket;VAR string client_ip;VAR string stReceived;VAR num NumCharacters:=9;VAR bool bOK;PERS num nXOffs;PERS num nYOffs;PERS num nAngleOffs;VAR string XData:="";VAR string YData:="";VAR string AngleData:="";VAR num nPresenceOrAbsence; PERS num nPickH:=-400;PERS num nCountX;PERS num nCountY;PERS num nCountZ;PERS num nCount;VAR num nPlaceNo;PERS bool bSMPreOrAbs;PERS bool bInpos;VAR robtarget PVision;VAR robtarget Vision;VAR robtarget ppPick;VAR robtarget pPick;PERS robtarget Pick;PERS robtarget ErCiDingWeiPlace; PERS robtarget ErCiDingWeiPick; PERS robtarget pPlace;PERS robtarget PlaceVision; PERS robtarget PZhanban; PERS robtarget PZhanbanUp; PERS robtarget PZhanbanDown; PERS robtarget PlaceZhanban; PERS robtarget Place;PERS bool bKindChoose;VAR num nAngle;VAR num nX;VAR num nCamOut;VAR num nInpos;VAR num nTotalPalletHigh;VAR num nPalletHigh;PERS num nPalletHighUp;PERS num nPalletHighDown;VAR num Compensation{8,3};VAR num CompensationTwo{8,3};PERS numCompensationErr{8,3}:=[[999999,999999,999999],[999999,999999,999 999],[999999,999999,999999],[999999,999999,999999],[999999,999999, 999999],[999999,999999,999999],[999999,999999,999999],[999999,999 999,999999]];PERS jointtargetjposHome:=[[0,0,0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09 ]];CONST robtargetpHome:=[[621.23,-975.96,1166.44],[0.00703884,-0.385671,-0.922573,-0 .00826231],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanSafe:=[[-162.69,-1703.07,2270.38],[0.0109452,-0.955357,-0.2 95179,-0.00645602],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtargetVisionA:=[[-228.96,94.47,643.11],[0.00434955,-0.699954,0.714102,-0.0 101798],[-2,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickA:=[[90.09,79.65,61.29],[0.0102135,0.00299714,0.999935,-0.004170 93],[-2,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceA:=[[-644.46,-1019.60,396.56],[0.00841448,-0.692574,0.721298,0.000680825],[-1,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpA:=[[549.64,541.39,821.21],[0.000808037,-0.999985,-0.00 498684,-0.00209158],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09, 9E+09]];CONST robtargetPZhanbanDownA:=[[548.40,560.53,179.18],[0.00417276,0.999929,-0.0 0436864,0.0102239],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtargetPlaceZhanbanA:=[[2456.73,-1154.76,205.32],[0.0106126,-0.0247295,-0. 999603,0.00838785],[1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];PERS numCompensationA{8,3}:=[[0,0,0],[210,136,0],[430,264,99999999],[645,40 3,99999999],[855,533,99999999],[99999999,670,99999999],[99999999,8 00,99999999],[99999999,936,99999999]];PERS numCompensationA1{8,3}:=[[860,936,0],[0,0,0],[215,133,99999999],[430,2 64,99999999],[645,403,99999999],[99999999,533,99999999],[99999999, 670,99999999],[99999999,800,99999999]];PERS numCompensationA2{8,3}:=[[860,0,0],[0,133,0],[215,264,99999999],[430,4 03,99999999],[645,533,99999999],[99999999,670,99999999],[99999999, 800,99999999],[99999999,936,99999999]];CONST num nPalletHighUpA:=100;CONST num nPalletHighDownA:=200;CONST robtargetVisionB:=[[936.63,959.75,378.90],[0.00373262,0.105479,-0.994406,-0.0 0407233],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickB:=[[1180.22,1009.95,213.74],[0.00373443,0.1055,-0.994404,-0.004 06331],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceB:=[[-1194.30,-1552.83,582.17],[0.0062614,0.795938,-0.605346,-0. 000999941],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99 997,-0.000606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E +09]];CONST robtargetPZhanbanDownB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0. 99997,-0.000606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtargetPlaceZhanbanB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99 997,-0.000606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E +09]];PERS numCompensationB{8,3}:=[[0,0,300],[210,136,0],[430,264,99999999],[645, 403,99999999],[855,533,99999999],[99999999,670,99999999],[9999999 9,800,99999999],[99999999,936,99999999]];PERS numCompensationB1{8,3}:=[[860,936,300],[0,0,0],[215,133,99999999],[430 ,264,99999999],[645,403,99999999],[99999999,533,99999999],[9999999 9,670,99999999],[99999999,800,99999999]];PERS numCompensationB2{8,3}:=[[860,0,300],[0,133,0],[215,264,99999999],[430 ,403,99999999],[645,533,99999999],[99999999,670,99999999],[9999999 9,800,99999999],[99999999,936,99999999]];CONST num nPalletHighUpB:=100;CONST num nPalletHighDownB:=200;PERS speeddata vMinEmpty:=[1300,100,6000,1000];PERS speeddata vMidEmpty:=[1400,100,6000,1000];PERS speeddata vMaxEmpty:=[1500,100,6000,1000];PERS speeddata vBigMaxEmpty:=[1500,100,6000,1000];PERS speeddata vMinLoad:=[1200,100,6000,1000];PERS speeddata vMaxLoad:=[1300,100,6000,1000];PERS speeddata vBigMaxLoad:=[1400,100,6000,1000];TASK PERS wobjdatawobj1:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[1984.06,-1180.48,453.803] ,[0.661114,-0.659907,-0.252753,0.252124]]];PROC Main()rInitAll;WHILE TRUE DOrPickCal;rPick;ENDWHILEWaitTime 0.3;ENDPROCPROC rInitAll()AccSet 60,100;Compensation:=CompensationErr;CompensationTwo:=CompensationErr;reg1 :=0;reg2 :=0;nCountX:=1;nCountY:=1;nCount:=0;nCountZ:=1;nTotalPalletHigh:=0;nPalletHigh:=0;nInpos:=0;rKindChoose;rCheckHomePos;Reset do00_JawsOpen ;Reset do01_JawsClose ;Set do00_JawsOpen ;Reset do02_BigJaws1 ;WaitTime 0.3;Reset do03_BigJaws2;Reset do00_JawsOpen ;Reset do13_Placing;Reset do12_PlaceOK;ENDPROCPROC rPickCal ()Set do00_JawsOpen ;bSMPreOrAbs:=TRUE;IF nCount =0 THENrCompressorInPos;ENDIFWHILE bSMPreOrAbs=TRUE DOIncr nCount ;IF nCount =1 THENMoveL Offs(Vision ,0,0,Compensation{nCountZ,3}+100) ,vBigMaxEmpty ,z20 , tGripper\WObj:=WobjCompressor ;MoveJ Offs(Vision ,0,0,Compensation{nCountZ,3}),vBigMaxEmpty ,fine ,tGripper\WObj:=WobjCompressor ;GOTO C;ENDIFIncr reg2 ;rnXCal ;pVision:=Offs(Vision ,Compensation{nCountX,1} ,Compensation{nCountY,2} , Compensation{nCountZ,3});MoveLpVision,vMidEmpty ,fine,tGripper\WObj:=WobjCompressor;C:nPresenceOrAbsence:=1;! rServer;! socketsend client_socket \Str:="T1";! socketReceive client_socket \Str:=stReceived;! bOK:=StrToVal(stReceived,nPresenceOrAbsence);! IF nPresenceOrAbsence =2 OR nPresenceOrAbsence =3 THEN! bSMPreOrAbs:=FALSE ;! ELSEIF nPresenceOrAbsence =5 THEN! bSMPreOrAbs:=TRUE ;! IF di02_PhotoelectricSensor =1 THEN! TPErase ;! TPWrite "The camera get picture there is a problem, Please check it!(2) ";! SystemStopAction \Halt ;! ELSEIF di02_PhotoelectricSensor =0 THEN! reg2 :=0;! ENDIF! ELSEIF nPresenceOrAbsence =1 OR nPresenceOrAbsence =4 THEN! TPErase ;! TPWrite "The Camera is wrong, and camera will restart ,";! TPWrite "after a few seconds the robot will continue ";! Stop ;! ENDIFWaitTime 1;IF di02_PhotoelectricSensor =1 THENbSMPreOrAbs:=FALSE ;ELSEbSMPreOrAbs:=TRUE ;ENDIFIncr nCountX;! TEST di16_giBCD! CASE 1:IF nCountX=6 THENnCountX :=1;Incr nCountY;IF nCountY=9 THENnCountY :=1;SystemStopAction \Halt;ENDIFENDIFIF nCount =40 THENnCount :=0;Incr nCountZ;nCountX:=1;nCountY:=1;nInpos:=0;IF reg2=0 THENrZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIFreg2:=0;ENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDWHILEENDPROCPROC rPick ()! TEST di16_giBCD! CASE 1:IF nCountX=1 THENCompensationTwo:=CompensationA1;ELSECompensationTwo:=CompensationA2;ENDIFpPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCo untY,2},CompensationTwo{nCountZ,3});! CASE 2:! pPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCo untY,2},CompensationTwo{nCountZ,3});! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTWaitTime 0.2;nCamOut:=1;! rServer;! socketsend client_socket \Str:="T2";! socketReceive client_socket \Str:=stReceived;! XData:= StrPart(stReceived, 3, NumCharacters);! YData:= StrPart(stReceived, NumCharacters, NumCharacters);! AngleData:= StrPart(stReceived, 2*NumCharacters, NumCharacters);! bOK:=StrToVal(XData,nXOffs);! bOK:=StrToVal(YData,nYOffs);! bOK:=StrToVal(AngleData,nAngleOffs);rAngle;! ppPick :=RelTool (pPick,0,0,0\Rz:= -nAngleOffs+nAngle);ppPick :=RelTool (pPick,0,0,0\Rz:= nAngle);ConfL\Off;! MoveL Offs (ppPick,nXOffs ,nYOffs,120), vMinEmpty,fine , tGripper\WObj:=WobjCompressor;! MoveL Offs (ppPick,nXOffs ,nYOffs,0), v100, fine , tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,200), vMinEmpty, fine , tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,0), v100, fine ,tGripper\WObj:=WobjCompressor;Reset do00_JawsOpen ;Set do01_JawsClose ;WaitDI di00_JawsInClose,1;! MoveL Offs(ppPick,nXOffs,nYOffs,80),vMinLoad ,z10 ,tGripper\WObj:=Wobj Compressor ;! MoveL Offs(ppPick,nXOffs,nYOffs,400),vMaxLoad ,fine ,tGripper\WObj:=Wo bjCompressor ;MoveL Offs(ppPick,0,0,80),vMinLoad ,z10 ,tGripper\WObj:=WobjCompressor ;MoveL Offs(ppPick,0,0,400),vMaxLoad ,fine ,tGripper\WObj:=WobjCompresso r ;ConfL\On;rPlace;! TEST di16_giBCD! CASE 1:IF nCount =40 THENnCount :=0;nCountX:=1;nCountY:=1;reg2:=0;nInpos:=0;rZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDPROCPROC rPlace ()MoveJ Offs (Place,0,0,200) ,vMaxLoad ,z40 , tGripper\WObj:= WobjCompressor ;Set do13_Placing;Waitdi di06_AssemblyLineOK, 0;MoveL Offs (Place,0,0,50) ,vMinLoad ,z5 , tGripper\WObj:= WobjCompressor;MoveL Place ,v100 ,fine , tGripper\WObj:= WobjCompressor;Reset do01_JawsClose ;Set do00_JawsOpen ;WaitDI di01_JawsInOpen ,1;MoveL Offs (Place,0,0,300) ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor;Reset do13_Placing ;WaitTime 0.4;Reset do00_JawsOpen ;ENDPROCPROC rnXCal()! TEST di16_giBCD! CASE 1:TEST nCountCASE1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nX:=0;CASE 6,7,8,9,10,16,17,18,19,20,26,27,28,29,30,36,37,38,39,40 :nX:=65;ENDTEST! ENDTESTENDPROCPROC rAngle()! TEST di16_giBCD! CASE 1:TEST nCountCASE1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nAngle:=0;CASE 6,7,8,9,10,16,17,18,19,20,26,27,28,29,30,36,37,38,39,40 :nAngle:=180;ENDTEST! ENDTESTENDPROCPROC rZhanban ()nTotalPalletHigh:=nTotalPalletHigh+nPalletHigh;TEST nCountZCASE 1:PZhanban:=PZhanbanUp;nPalletHigh:=nPalletHighUp;CASE 2:PZhanban:=PZhanbanDown;nPalletHigh:=nPalletHighDown;DEFAULT :TPErase ;TPWrite" The 'nCountZ' have a trouble ,Please check it ";ENDTESTMoveJ Offs( PZhanban,0,0,300) ,vBigMaxEmpty ,fine , tGripper \WObj:= WobjCompressor ;Set do02_BigJaws1 ;WaitTime 0.6;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen, 1;MoveL PZhanban ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Reset do02_BigJaws1 ;Reset do03_BigJaws2 ;WaitTime 0.3;WaitDI di08_BigJawsInOpen,1;pActualpos:=CRobT(\Tool:=tGripper\WObj:=WobjCompressor1);pActualpos.trans.z:=2000;MoveLpActualpos,vMinEmpty,z20,tGripper\WObj:=WobjCompressor1 ; ! MoveL Offs ( PZhanban,0,0,400) ,vMinEmpty ,z20 , tGripper\WObj:= WobjCompressor ;WaitDI di05_PalletInPos ,1;IF nInpos =2 THENMoveJ PZhanbanSafe ,vMinEmpty ,z20 , tGripper\WObj:= WobjCompressor ;ENDIFpActualpos:=PlaceZhanban;pActualpos.trans.z:=2000;MoveJpActualpos,vMinLoad,z20,tGripper\WObj:=WobjCompressor1 ;! MoveJ Offs( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,v500 ,z5 , tGripper\WObj:= WobjCompressor ;MoveL Offs( PlaceZhanban ,0,0,nTotalPalletHigh) ,vMinLoad ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Set do02_BigJaws1 ;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen,1;MoveL Offs( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,vMaxEmpty ,fine, tGripper\WObj:= WobjCompressor ;Reset do03_BigJaws2;WaitTime 0.6;Reset do02_BigJaws1;WaitDI di07_BigJawsInClose, 1;rCompressorOutPos;IF nTotalPalletHigh>1200 THENset do06_PalletEmpty ;waittime 1;reset do06_PalletEmpty;nTotalPalletHigh:=0;nPalletHigh:=0;ENDIFENDPROCPROC rCompressorInPos()! bInpos:=TRUE;! WHILE bInpos=TRUE DO! IF di03_Compressor1InPos =1 THENWobjCompressor:=WobjCompressor1;bInpos:= FALSE;nInpos:=2;! ELSEIF di04_Compressor2InPos =1 THEN ! WobjCompressor:=WobjCompressor2; ! bInpos:=FALSE;! nInpos:=3;! ELSE! bInpos:=TRUE;! ENDIF! WaitTime 0.3;! ENDWHILEENDPROCPROC rCompressorOutPos()IF WobjCompressor=WobjCompressor1 THENSet do04_Compressor1Empty ;WaitTime 1;Reset do04_Compressor1Empty;ELSEIF WobjCompressor=WobjCompressor1 THENSet do05_Compressor2Empty ;WaitTime 1;Reset do05_Compressor2Empty;ENDIFENDPROCFUNC bool CurrentPos(robtarget ComparePos,INOUT tooldata TCP)VAR num Counter:=0;VAR robtarget ActualPos;ActualPos:=CRobT(\Tool:=TCP\WObj:=wobj0);IF ActualPos.trans.x>ComparePos.trans.x-25 AND ActualPos.trans.x<ComparePos.trans.x+25 Counter:=Counter+1;IF ActualPos.trans.y>ComparePos.trans.y-25 AND ActualPos.trans.y<ComparePos.trans.y+25 Counter:=Counter+1;IF ActualPos.trans.z>ComparePos.trans.z-25 AND ActualPos.trans.z<ComparePos.trans.z+25 Counter:=Counter+1;IF ActualPos.rot.q1>ComparePos.rot.q1-0.1 AND ActualPos.rot.q1<ComparePos.rot.q1+0.1 Counter:=Counter+1;IF ActualPos.rot.q2>ComparePos.rot.q2-0.1 AND ActualPos.rot.q2<ComparePos.rot.q2+0.1 Counter:=Counter+1;IF ActualPos.rot.q3>ComparePos.rot.q3-0.1 AND ActualPos.rot.q3<ComparePos.rot.q3+0.1 Counter:=Counter+1;IF ActualPos.rot.q4>ComparePos.rot.q4-0.1 ANDActualPos.rot.q4<ComparePos.rot.q4+0.1 Counter:=Counter+1;RETURN Counter=7;ENDFUNCPROC rCheckHomePos()IF NOT CurrentPos(pHome,tGripper) THEN pActualpos:=CRobT(\Tool:=tGripper\WObj:=wobj0);pActualpos.trans.z:=pHome.trans.z;MoveL pActualpos,v300,z30,tGripper;MoveJ pHome,v500,fine,tGripper;ENDIFENDPROCPROC rKindChoose()! IF di16_giBCD=1 THENCompensation:=CompensationA;nPalletHighUp:=nPalletHighUpA;nPalletHighDown:=nPalletHighDownA;Pick:= PickA;Vision :=VisionA;Place:=PlaceA;PZhanbanUp:=PZhanbanUpA;PZhanbanDown:=PZhanbanDownA;PlaceZhanban:=PlaceZhanbanA;! ELSEIF di16_giBCD=2 THEN! Compensation:=CompensationB;! nPalletHighUp:=nPalletHighUpB;! nPalletHighDown:=nPalletHighDownB;! Pick:= PickB;! Vision :=VisionB;! Place:=PlaceB;! PZhanbanUp:=PZhanbanUpB;! PZhanbanDown:=PZhanbanDownB;! PlaceZhanban:=PlaceZhanbanB;! ELSE! TPErase;! TPWrite "Please select product type in the PLC"; ! ENDIFENDPROCPROC rModPos ()MoveJ pHome, v1000, fine, tGripper\WObj:=Wobj0;MoveJ PZhanbanSafe, v1000, fine,tGripper\WObj:=WobjCompressor1;MoveJ PickA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionA , v1000, fine,tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceA, v1000, fine,tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PickB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionB , v1000, fine,tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceB, v1000, fine,tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanB, v1000, fine, tGripper\WObj:= WobjCompressor1;ENDPROCPROC rMoveAbsj()MoveAbsJ jposHome, v1000, fine, tGripper\WObj:=wobj0;ENDPROCPROC rServer()SocketClose server_socket;SocketClose client_socket;SocketCreate server_socket;SocketBind server_socket, "192.168.125.1", 3001;SocketListen server_socket;SocketAccept server_socket,client_socket\ClientAddress:=client_ip;ENDPROCPROC rClient()SocketClose client_socket;SocketCreate client_socket;SocketConnect client_socket, "192.168.125.120", 1000;SocketReceive client_socket \Str:=stReceived;ENDPROC ENDMODULE。
项目一:焊接机器人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机器人搬运编程程序实例abb机器人是一种智能化的机器人系统,可以用于搬运编程程序。
它具备高度的自动化和智能化能力,可以帮助人们提高工作效率,减轻工作负担。
abb机器人搬运编程程序的过程可以分为几个步骤。
abb机器人搬运编程程序的实例非常丰富多样。
比如,在工业生产中,abb机器人可以被用来搬运零部件或成品,从而提高生产效率。
在仓储物流领域,abb机器人可以被用来搬运货物,实现自动化的物流操作。
在医疗领域,abb机器人可以被用来搬运医疗设备或药品,提高医疗服务的效率和质量。
abb机器人搬运编程程序也可以应用于其他领域。
比如,在农业领域,abb机器人可以被用来搬运农作物或农机设备,提高农业生产的效率。
在建筑领域,abb机器人可以被用来搬运建筑材料或辅助施工,提高施工速度和质量。
在家庭生活中,abb机器人可以被用来搬运家具或清洁用品,减轻家庭劳动的负担。
abb机器人搬运编程程序的应用还可以进一步扩展。
比如,可以将abb机器人与其他智能设备进行联动,实现更加复杂的自动化操作。
可以利用人工智能技术,让abb机器人具备自主学习和决策的能力,提高其适应不同场景和任务的能力。
可以将abb机器人与大数据和云计算等技术相结合,实现更加高效的数据管理和分析。
然而,abb机器人搬运编程程序的应用也面临一些挑战和限制。
首先,abb机器人的成本较高,不是所有企业或个人都能够负担得起。
其次,abb机器人的使用需要一定的技术和操作人员的培训,对于一些没有相关经验的人来说可能存在一定的学习成本。
此外,abb 机器人的安全性也是一个需要重视的问题,特别是在与人员共同工作的环境中,需要采取相应的安全措施。
总结起来,abb机器人搬运编程程序具备广泛的应用前景和潜力。
它可以在多个领域中发挥重要的作用,帮助人们提高工作效率,降低工作风险。
随着技术的不断进步和创新,abb机器人搬运编程程序的应用将变得越来越普遍,为人们的生活和工作带来更多的便利和效益。
ABB机器人(ROBOT studio 6.01)程序实例MODULE MainModulePERS tooldatatGripper:=[TRUE,[[0.533078,1.51617,583.739],[1,0,0,0]],[30,[0,0,50],[1,0,0,0],0,0,0] ];TASK PERS wobjdataVisionWobj:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[-934.534,1807.34,-76.7707],[0.4 00996,0.0128267,-0.0292473,-0.915523]]];TASK PERS wobjdataWobjCompressor1:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0,1]],[[686.65 1,296.298,-588.529],[0.917114,1.69419E-06,-7.35001E-05,-0.398626]]];TASK PERS wobjdataWobjCompressor2:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0,1]],[[-944.87 1,-657.402,-323.406],[0.918098,-1.98999E-05,-6.49686E-06,0.396353]]];PERS wobjdata WobjCompressor;VAR robtarget pActualPos;VAR socketdev server_socket;VAR socketdev client_socket;VAR string client_ip;VAR string stReceived;VAR num NumCharacters:=9;VAR bool bOK;PERS num nXOffs;PERS num nYOffs;PERS num nAngleOffs;VAR string XData:="";VAR string YData:="";VAR string AngleData:="";VAR num nPresenceOrAbsence;PERS num nPickH:=-400;PERS num nCountX;PERS num nCountY;PERS num nCountZ;PERS num nCount;VAR num nPlaceNo;PERS bool bSMPreOrAbs;PERS bool bInpos;VAR robtarget PVision;VAR robtarget Vision;VAR robtarget ppPick;VAR robtarget pPick;PERS robtarget Pick;PERS robtarget ErCiDingWeiPlace;PERS robtarget ErCiDingWeiPick;PERS robtarget pPlace;PERS robtarget PlaceVision;PERS robtarget PZhanban;PERS robtarget PZhanbanUp;PERS robtarget PZhanbanDown;PERS robtarget PlaceZhanban;PERS robtarget Place;PERS bool bKindChoose;VAR num nAngle;VAR num nX;VAR num nCamOut;VAR num nInpos;VAR num nTotalPalletHigh;VAR num nPalletHigh;PERS num nPalletHighUp;PERS num nPalletHighDown;VAR num Compensation{8,3};VAR num CompensationTwo{8,3};PERS numCompensationErr{8,3}:=[[999999,999999,999999],[999999,999999,999999],[999999 ,999999,999999],[999999,999999,999999],[999999,999999,999999],[999999,999999 ,999999],[999999,999999,999999],[999999,999999,999999]];PERS jointtargetjposHome:=[[0,0,0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetpHome:=[[621.23,-975.96,1166.44],[0.00703884,-0.385671,-0.922573,-0.00826231], [-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanSafe:=[[-162.69,-1703.07,2270.38],[0.0109452,-0.955357,-0.295179,-0.006 45602],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetVisionA:=[[-228.96,94.47,643.11],[0.00434955,-0.699954,0.714102,-0.0101798],[-2, -1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickA:=[[90.09,79.65,61.29],[0.0102135,0.00299714,0.999935,-0.00417093],[-2,-1,1, 0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceA:=[[-644.46,-1019.60,396.56],[0.00841448,-0.692574,0.721298,0.000680825], [-1,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpA:=[[549.64,541.39,821.21],[0.000808037,-0.999985,-0.00498684,-0.00 209158],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanDownA:=[[548.40,560.53,179.18],[0.00417276,0.999929,-0.00436864,0.01 02239],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceZhanbanA:=[[2456.73,-1154.76,205.32],[0.0106126,-0.0247295,-0.999603,0.00 838785],[1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERS numCompensationA{8,3}:=[[0,0,0],[210,136,0],[430,264,99999999],[645,403,99999999], [855,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[99999999 ,936,99999999]];PERS numCompensationA1{8,3}:=[[860,936,0],[0,0,0],[215,133,99999999],[430,264,99999999 ],[645,403,99999999],[99999999,533,99999999],[99999999,670,99999999],[999999 99,800,99999999]];PERS numCompensationA2{8,3}:=[[860,0,0],[0,133,0],[215,264,99999999],[430,403,99999999 ],[645,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[999999 99,936,99999999]];CONST num nPalletHighUpA:=100;CONST num nPalletHighDownA:=200;CONST robtargetVisionB:=[[936.63,959.75,378.90],[0.00373262,0.105479,-0.994406,-0.00407233],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickB:=[[1180.22,1009.95,213.74],[0.00373443,0.1055,-0.994404,-0.00406331],[-1,0 ,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceB:=[[-1194.30,-1552.83,582.17],[0.0062614,0.795938,-0.605346,-0.000999941] ,[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99997,-0.00060 6164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanDownB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99997,-0.000 606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceZhanbanB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99997,-0.0006 06164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERS numCompensationB{8,3}:=[[0,0,300],[210,136,0],[430,264,99999999],[645,403,9999999 9],[855,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[99999999,936,99999999]];PERS numCompensationB1{8,3}:=[[860,936,300],[0,0,0],[215,133,99999999],[430,264,999999 99],[645,403,99999999],[99999999,533,99999999],[99999999,670,99999999],[9999 9999,800,99999999]];PERS numCompensationB2{8,3}:=[[860,0,300],[0,133,0],[215,264,99999999],[430,403,999999 99],[645,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[9999 9999,936,99999999]];CONST num nPalletHighUpB:=100;CONST num nPalletHighDownB:=200;PERS speeddata vMinEmpty:=[1300,100,6000,1000];PERS speeddata vMidEmpty:=[1400,100,6000,1000];PERS speeddata vMaxEmpty:=[1500,100,6000,1000];PERS speeddata vBigMaxEmpty:=[1500,100,6000,1000];PERS speeddata vMinLoad:=[1200,100,6000,1000];PERS speeddata vMaxLoad:=[1300,100,6000,1000];PERS speeddata vBigMaxLoad:=[1400,100,6000,1000];TASK PERS wobjdatawobj1:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[1984.06,-1180.48,453.803],[0.661114, -0.659907,-0.252753,0.252124]]];PROC Main()rInitAll;WHILE TRUE DOrPickCal;rPick;ENDWHILEWaitTime 0.3;ENDPROCPROC rInitAll()AccSet 60,100;Compensation:=CompensationErr;CompensationTwo:=CompensationErr;reg1 :=0;reg2 :=0;nCountX:=1;nCountY:=1;nCount:=0;nCountZ:=1;nTotalPalletHigh:=0;nPalletHigh:=0;nInpos:=0;rKindChoose;rCheckHomePos;Reset do00_JawsOpen ;Reset do01_JawsClose ;Set do00_JawsOpen ;Reset do02_BigJaws1 ;WaitTime 0.3;Reset do03_BigJaws2;Reset do00_JawsOpen ;Reset do13_Placing;Reset do12_PlaceOK;ENDPROCPROC rPickCal ()Set do00_JawsOpen ;bSMPreOrAbs:=TRUE;IF nCount =0 THENrCompressorInPos;ENDIFWHILE bSMPreOrAbs=TRUE DOIncr nCount ;IF nCount =1 THENMoveL Offs(Vision ,0,0,Compensation{nCountZ,3}+100) ,vBigMaxEmpty ,z20 ,tGripper\WOb j:=WobjCompressor ;MoveJ Offs(Vision ,0,0,Compensation{nCountZ,3}),vBigMaxEmpty ,fine ,tGripper\WObj:=W objCompressor ;GOTO C;ENDIFIncr reg2 ;rnXCal ;pVision:=Offs(Vision ,Compensation{nCountX,1} ,Compensation{nCountY,2} ,Compensation{ nCountZ,3});MoveLpVision,vMidEmpty ,fine,tGripper\WObj:=WobjCompressor;C:nPresenceOrAbsence:=1;! rServer;! socketsend client_socket \Str:="T1";! socketReceive client_socket \Str:=stReceived;! bOK:=StrToVal(stReceived,nPresenceOrAbsence);! IF nPresenceOrAbsence =2 OR nPresenceOrAbsence =3 THEN ! bSMPreOrAbs:=FALSE ;! ELSEIF nPresenceOrAbsence =5 THEN! bSMPreOrAbs:=TRUE ;! IF di02_PhotoelectricSensor =1 THEN! TPErase ;! TPWrite "The camera get picture there is a problem, Please check it!(2) ";! SystemStopAction \Halt ;! ELSEIF di02_PhotoelectricSensor =0 THEN! reg2 :=0;! ENDIF! ELSEIF nPresenceOrAbsence =1 OR nPresenceOrAbsence =4 THEN! TPErase ;! TPWrite "The Camera is wrong, and camera will restart ,"; ! TPWrite "after a few seconds the robot will continue ";! Stop ;! ENDIFWaitTime 1;IF di02_PhotoelectricSensor =1 THENbSMPreOrAbs:=FALSE ;ELSEbSMPreOrAbs:=TRUE ;ENDIFIncr nCountX;! TEST di16_giBCD! CASE 1:IF nCountX=6 THENnCountX :=1;Incr nCountY;IF nCountY=9 THENnCountY :=1;SystemStopAction \Halt;ENDIFENDIFIF nCount =40 THENnCount :=0;Incr nCountZ;nCountX:=1;nCountY:=1;nInpos:=0;IF reg2=0 THENrZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIFreg2:=0;ENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDWHILEENDPROCPROC rPick ()! TEST di16_giBCD! CASE 1:IF nCountX=1 THENCompensationTwo:=CompensationA1;ELSECompensationTwo:=CompensationA2;ENDIFpPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCountY,2},Compe nsationTwo{nCountZ,3});! CASE 2:! pPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCountY,2},Compe nsationTwo{nCountZ,3});! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTWaitTime 0.2;nCamOut:=1;! rServer;! socketsend client_socket \Str:="T2";! socketReceive client_socket \Str:=stReceived;! XData:= StrPart(stReceived, 3, NumCharacters);! YData:= StrPart(stReceived, NumCharacters, NumCharacters);! AngleData:= StrPart(stReceived, 2*NumCharacters, NumCharacters);! bOK:=StrToVal(XData,nXOffs);! bOK:=StrToVal(YData,nYOffs);! bOK:=StrToVal(AngleData,nAngleOffs);rAngle;! ppPick :=RelTool (pPick,0,0,0\Rz:= -nAngleOffs+nAngle);ppPick :=RelTool (pPick,0,0,0\Rz:= nAngle);ConfL\Off;! MoveL Offs (ppPick,nXOffs ,nYOffs,120), vMinEmpty, fine , tGripper\WObj:=WobjCompressor;! MoveL Offs (ppPick,nXOffs ,nYOffs,0), v100, fine ,tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,200), vMinEmpty, fine ,tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,0), v100, fine ,tGripper\WObj:=WobjCompressor;Reset do00_JawsOpen ;Set do01_JawsClose ;WaitDI di00_JawsInClose,1;! MoveL Offs(ppPick,nXOffs,nYOffs,80),vMinLoad ,z10 ,tGripper\WObj:=WobjCompressor ; ! MoveL Offs(ppPick,nXOffs,nYOffs,400),vMaxLoad ,fine ,tGripper\WObj:=WobjCompressor ;MoveL Offs(ppPick,0,0,80),vMinLoad ,z10 ,tGripper\WObj:=WobjCompressor ;MoveL Offs(ppPick,0,0,400),vMaxLoad ,fine ,tGripper\WObj:=WobjCompressor ;ConfL\On;rPlace;! TEST di16_giBCD! CASE 1:IF nCount =40 THENnCount :=0;nCountX:=1;nCountY:=1;reg2:=0;nInpos:=0;rZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDPROCPROC rPlace ()MoveJ Offs (Place,0,0,200) ,vMaxLoad ,z40 , tGripper\WObj:= WobjCompressor ;Set do13_Placing;Waitdi di06_AssemblyLineOK, 0;MoveL Offs (Place,0,0,50) ,vMinLoad ,z5 , tGripper\WObj:= WobjCompressor;MoveL Place ,v100 ,fine , tGripper\WObj:= WobjCompressor;Reset do01_JawsClose ;Set do00_JawsOpen ;WaitDI di01_JawsInOpen ,1;MoveL Offs (Place,0,0,300) ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor;Reset do13_Placing ;WaitTime 0.4;Reset do00_JawsOpen ;ENDPROCPROC rnXCal()! TEST di16_giBCD! CASE 1:TEST nCountCASE 1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nX:=0;CASE 6,7,8,9,10,16,17,18,19,20, 26,27,28,29,30,36,37,38,39,40 :nX:=65;ENDTEST! ENDTESTENDPROCPROC rAngle()! TEST di16_giBCD! CASE 1:TEST nCountCASE 1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nAngle:=0;CASE 6,7,8,9,10,16,17,18,19,20, 26,27,28,29,30,36,37,38,39,40 :nAngle:=180;ENDTEST! ENDTESTENDPROCPROC rZhanban ()nTotalPalletHigh:=nTotalPalletHigh+nPalletHigh;TEST nCountZCASE 1:PZhanban:=PZhanbanUp;nPalletHigh:=nPalletHighUp;CASE 2:PZhanban:=PZhanbanDown;nPalletHigh:=nPalletHighDown;DEFAULT :TPErase ;TPWrite" The 'nCountZ' have a trouble ,Please check it ";ENDTESTMoveJ Offs ( PZhanban,0,0,300) ,vBigMaxEmpty ,fine , tGripper\WObj:= WobjCompressor ;Set do02_BigJaws1 ;WaitTime 0.6;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen, 1;MoveL PZhanban ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Reset do02_BigJaws1 ;Reset do03_BigJaws2 ;WaitTime 0.3;WaitDI di08_BigJawsInOpen,1;pActualpos:=CRobT(\Tool:=tGripper\WObj:=WobjCompressor1);pActualpos.trans.z:=2000;MoveL pActualpos,vMinEmpty,z20,tGripper\WObj:=WobjCompressor1 ; ! MoveL Offs ( PZhanban,0,0,400) ,vMinEmpty ,z20 ,tGripper\WObj:= WobjCompressor ;WaitDI di05_PalletInPos ,1;IF nInpos =2 THENMoveJ PZhanbanSafe ,vMinEmpty ,z20 , tGripper\WObj:= WobjCompressor ;ENDIFpActualpos:=PlaceZhanban;pActualpos.trans.z:=2000;MoveJ pActualpos,vMinLoad,z20,tGripper\WObj:=WobjCompressor1 ;! MoveJ Offs ( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,v500 ,z5 , tGripper\WObj:= WobjCompressor ;MoveL Offs ( PlaceZhanban ,0,0,nTotalPalletHigh) ,vMinLoad ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Set do02_BigJaws1 ;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen,1;MoveL Offs( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,vMaxEmpty ,fine,tGripper\WObj:= WobjCompressor ;Reset do03_BigJaws2;WaitTime 0.6;Reset do02_BigJaws1;WaitDI di07_BigJawsInClose, 1;rCompressorOutPos;IF nTotalPalletHigh>1200 THENset do06_PalletEmpty ;waittime 1;reset do06_PalletEmpty;nTotalPalletHigh:=0;nPalletHigh:=0;ENDIFENDPROCPROC rCompressorInPos()! bInpos:=TRUE;! WHILE bInpos=TRUE DO! IF di03_Compressor1InPos =1 THENWobjCompressor:=WobjCompressor1;bInpos:= FALSE;nInpos:=2;! ELSEIF di04_Compressor2InPos =1 THEN! WobjCompressor:=WobjCompressor2;! bInpos:=FALSE;! nInpos:=3;! ELSE! bInpos:=TRUE;! ENDIF! WaitTime 0.3;! ENDWHILEENDPROCPROC rCompressorOutPos()IF WobjCompressor=WobjCompressor1 THENSet do04_Compressor1Empty ;WaitTime 1;Reset do04_Compressor1Empty;ELSEIF WobjCompressor=WobjCompressor1 THENSet do05_Compressor2Empty ;WaitTime 1;Reset do05_Compressor2Empty;ENDIFENDPROCFUNC bool CurrentPos(robtarget ComparePos,INOUT tooldata TCP) VAR num Counter:=0;VAR robtarget ActualPos;ActualPos:=CRobT(\Tool:=TCP\WObj:=wobj0);IF ActualPos.trans.x>ComparePos.trans.x-25 AND ActualPos.trans.x<ComparePos.trans.x+25 Counter:=Counter+1;IF ActualPos.trans.y>ComparePos.trans.y-25 AND ActualPos.trans.y<ComparePos.trans.y+25 Counter:=Counter+1;IF ActualPos.trans.z>ComparePos.trans.z-25 AND ActualPos.trans.z<ComparePos.trans.z+25 Counter:=Counter+1;IF ActualPos.rot.q1>ComparePos.rot.q1-0.1 AND ActualPos.rot.q1<ComparePos.rot.q1+0.1 Counter:=Counter+1;IF ActualPos.rot.q2>ComparePos.rot.q2-0.1 AND ActualPos.rot.q2<ComparePos.rot.q2+0.1 Counter:=Counter+1;IF ActualPos.rot.q3>ComparePos.rot.q3-0.1 AND ActualPos.rot.q3<ComparePos.rot.q3+0.1 Counter:=Counter+1;IF ActualPos.rot.q4>ComparePos.rot.q4-0.1 AND ActualPos.rot.q4<ComparePos.rot.q4+0.1 Counter:=Counter+1;RETURN Counter=7;ENDFUNCPROC rCheckHomePos()IF NOT CurrentPos(pHome,tGripper) THENpActualpos:=CRobT(\Tool:=tGripper\WObj:=wobj0);pActualpos.trans.z:=pHome.trans.z;MoveL pActualpos,v300,z30,tGripper;MoveJ pHome,v500,fine,tGripper;ENDIFENDPROCPROC rKindChoose()! IF di16_giBCD=1 THENCompensation:=CompensationA;nPalletHighUp:=nPalletHighUpA;nPalletHighDown:=nPalletHighDownA;Pick:= PickA;Vision :=VisionA;Place:=PlaceA;PZhanbanUp:=PZhanbanUpA;PZhanbanDown:=PZhanbanDownA;PlaceZhanban:=PlaceZhanbanA;! ELSEIF di16_giBCD=2 THEN! Compensation:=CompensationB;! nPalletHighUp:=nPalletHighUpB;! nPalletHighDown:=nPalletHighDownB;! Pick:= PickB;! Vision :=VisionB;! Place:=PlaceB;! PZhanbanUp:=PZhanbanUpB;! PZhanbanDown:=PZhanbanDownB;! PlaceZhanban:=PlaceZhanbanB;! ELSE! TPErase;! TPWrite "Please select product type in the PLC";! ENDIFENDPROCPROC rModPos ()MoveJ pHome, v1000, fine, tGripper\WObj:=Wobj0;MoveJ PZhanbanSafe, v1000, fine, tGripper\WObj:=WobjCompressor1;MoveJ PickA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionA , v1000, fine, tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceA, v1000, fine, tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PickB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionB , v1000, fine, tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceB, v1000, fine, tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanB, v1000, fine, tGripper\WObj:= WobjCompressor1;ENDPROCPROC rMoveAbsj()MoveAbsJ jposHome, v1000, fine, tGripper\WObj:=wobj0;ENDPROCPROC rServer()SocketClose server_socket;SocketClose client_socket;SocketCreate server_socket;SocketBind server_socket, "192.168.125.1", 3001;SocketListen server_socket;SocketAccept server_socket,client_socket\ClientAddress:=client_ip;ENDPROCPROC rClient()SocketClose client_socket;SocketCreate client_socket;SocketConnect client_socket, "192.168.125.120", 1000;SocketReceive client_socket \Str:=stReceived;ENDPROCENDMODULE。