1、abb机器人程序实例MODULE MainModule CONST robtarget pHome:=1525.42,272.18,1873.69,4.42963E-05,0.699969,-0.714173,-2.80277E-05,0,-1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+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,9E+0
2、9,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,9E+09,9E+09; CONST robtarget pPickMould:=1943.13,173.08,630.89,4.66987E-05,0.699977,-0.714166,-3.24109E-05,0,-1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST
3、 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,9E+09,9E+09; CONST robtarget pPrePlace:=785.90,-957.40,1722.38,0.00231652,0.0492402,-0.998779,-0.00310842,-1,-1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPr
4、ePlace10:=-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
5、.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+09,9E+09; CONST robtarget pPlaceClapboard:=1585.08,1761.04,787.33,0.00645323,-0.00552996,-0.726358,-0.687263,0,1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePlaceClapboard:=1017.30,95
6、5.85,1443.17,1.0621E-05,-0.00849593,-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.74457,-0.00360206,0.00487631,-1,-1,2,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePickMould10:=530.24,-1703.27
7、,1762.63,5.07659E-05,0.96161,0.274421,2.37287E-05,-1,0,0,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST num nOffs:=100; PERS num nCurOffs:=100; CONST num nLayer:=0; PERS num nCurLayer:=0; CONST num nThickness:=40; VAR bool bTimeOut:=FALSE; PERS bool bDryCycle:=FALSE; VAR intnum iDryCycle;VAR intnum iR
8、esDryCycle; VAR 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 DO IF siDryCycle=1 or nCurLayer1 then rPickClapboard; ELSE rPickMould; ENDIF Waittime 0.2; ENDWHILE ENDPROC PROC rPickMould() DIWait diMouldre
9、ady,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) THEN nCurOffs:=nOffs; ELSE nCurOffs:=-nOffs; ENDIF MoveL offs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness), v1000, z50, tGripper; M
10、oveL offs(pPickMould,0,nCurOffs,(nCurLayer-1)*nThickness), v200, fine, tGripper; GripClose; Decr nCurLayer; MoveL offs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness), v200, z50, tGripper; MoveJ pPrePickMould, v1000, z50, tGripper; DIWait diPlaceReady,1,3,exit Conveyer,ready for remove; MoveJ pPrePl
11、ace10, 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; PulseDOPLength:=2, doMouldPl
12、aceOK; ENDPROC PROC 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)
13、,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, tGr
14、ipper; GripOpen; MoveL offs(pPlaceClapboard,0,-50,100), v1000, z10, tGripper; MoveL offs(pPlaceClapboard,-700,-200,250), v1000, z10, tGripper; MoveL pPrePlaceClapboard, v1000, z10, tGripper; PulseDOPLength:=1.0, doClapboardPickOK; MoveJ pHome, v1500, fine, tGripper; PulseDOPLength:=1.0, doUnStackOk;
15、 WaitTime 2; DIWait diMouldready,0,3,exit Conveyer,ready for remove; nCurLayer:=nLayer;ENDPROCPROC rInitAll() IF diVacuum1=0 THEN WaitTime 1; ELSE ErrWrite 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
16、 from gripper.; Stop; Exit; ENDIF rMoveHome; nCurLayer:=nLayer; IDelete iVacuum; CONNECT iVacuum WITH tLostPart; ISignalDI diVacuum1, 1, iVacuum; ISleep iVacuum; ENDPROC ROC GripClose() SetDO doVacuum,1; SetDO doBlow,0; WaitUntil diVacuum1=1MaxTime:=10TimeFlag:=bTimeOut; IF bTimeOut THEN ErrWrite Ro
17、b Gripper Signal error ! ,Fatal error in GripperRL2:=Check the gripper signal postion .RL3:= change a new sensor .; Stop; ENDIF Waittime 0.5; IWatch iVacuum; ENDPROC PROC GripOpen() ISleep iVacuum; SetDO doVacuum,0; PulseDO PLength:=2.0, doBlow; WaitUntil diVacuum1=0 MaxTime:=5TimeFlag:=bTimeOut; IF
18、 bTimeOut THEN ErrWrite Rob Gripper Signal error ! ,Fatal error in GripperRL2:=Check the gripper signal postion .RL3:= change a new sensor .; Stop; ENDIF Waittime 0.5; ENDPROC PROC rMoveHome() VAR string HomeOffset; CONST num MinX:=-500; CONST num MaxX:=500; CONST num MinY:=-500; CONST num MaxY:=500
19、; CONST num MinZ:=500; CONST num MaxZ:=1200; VAR robtarget ActualPos; VelSet 100,500; AccSet 70, 70; IF bCurrentPos(pHome,tGripper,50)=TRUE THEN MoveJ pHome,v500,fine,tGripperWObj:=wobj0; ENDIF IF bCurrentPos(pPrePickMould,tGripper,50wobj:=Wobj0)= TRUE THEN MoveJ pHome,v500,fine,tGripperWObj:=wobj0;
20、 ENDIF IF bCurrentPos(pPrePickClapboard,tGripper,100wobj:=Wobj0)= TRUE THEN MoveJ pHome,v500,fine,tGripperWObj:=wobj0; ENDIF IF bCurrentPos(pPreplace,tGripper,100wobj:=Wobj0)= TRUE THEN MoveJ pHome,v500,fine,tGripperWObj:=wobj0; ENDIF IF bCurrentPos(pHome,tGripper,100)=FALSE THEN ! If no known posit
21、ion is found, check if the robot is in a specified ! window and move him to the first position in the program ActualPos:=CRobT(Tool:=tGripperWObj:=wobj0); IF OR OR OR OR OR THEN HomeOffset:=; IF THEN HomeOffset:=HomeOffset+X :+NumToStr(MinX-ActualPos.trans.x,0)+ ; ELSEIF THEN HomeOffset:=HomeOffset+
22、X :+NumToStr(MaxX-ActualPos.trans.x,0)+ ; ELSE HomeOffset:=HomeOffset+X : OK ; ENDIF IF THEN HomeOffset:=HomeOffset+Y :+NumToStr(MinY-ActualPos.trans.y,0)+ ; ELSEIF THEN HomeOffset:=HomeOffset+Y :+NumToStr(MaxY-ActualPos.trans.y,0)+ ; ELSE HomeOffset:=HomeOffset+Y : OK ; ENDIF IF THEN HomeOffset:=Ho
23、meOffset+Z :+NumToStr(MinZ-ActualPos.trans.z,0)+ ; ELSEIF THEN HomeOffset:=HomeOffset+Z :+NumToStr(MaxZ-ActualPos.trans.z,0)+ ; ELSE HomeOffset:=HomeOffset+Z : OK ; ENDIF ErrWrite HomeOffset,Move robot manually near homeposition; WHILE OpMode()OP_MAN_PROG DO TPErase; TPWrite Please switch robot to M
24、anual mode; !TPErase; Stop; ENDWHILE Stop; MoveJ pHome,v500,fine,tGripper; !npallet:=4; ActualPos:=CRobT(Tool:=tGripperWObj:=wobj0); WHILE OpMode()OP_AUTO DO TPErase; TPWrite Please switch robot to AUTO mode; !TPErase; Stop; ENDWHILE ENDIF ENDIF VelSet 100,3000; ENDPROC TRAP tLostPart ErrWrite Part lost! ,Fatal error in GripperRL2:=Check the gripper .RL3:= check the vacuum .; Stop; ENDTRAP ENDMODULE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1