1、ABB机器人程序实例MODULE MainModule CONST robtarget pHome:=,0,-1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePickMould:=,0,-1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePickClapboard:=,-1,-2,2,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPickMould:=,0,-1,-1,0,
2、9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPickClapboard:=,0,-1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePlace:=,-1,-1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePlace10:=,-2,-1,-2,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePlace20:=
3、,-2,0,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPlaceMould:=,-2,0,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPlaceClapboard:=,0,1,-1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePlaceClapboard:=,0,-1,0,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtar
4、get pPrePickClapboard10:=,-1,-1,2,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09; CONST robtarget pPrePickMould10:=,-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
5、bool bDryCycle:=FALSE; VAR intnum iDryCycle;VAR intnum iResDryCycle; VAR intnum iVacuum; PERS tooldata tGripper:=TRUE,0,0,100,1,0,0,0,1,0,0,0,; PROC main() rInitAll; WHILE TRUE DO IF siDryCycle=1 or nCurLayer1 then rPickClapboard; ELSE rPickMould; ENDIF Waittime ; ENDWHILE ENDPROC PROC rPickMould()
6、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) THEN nCurOffs:=nOffs; ELSE nCurOffs:=-nOffs; ENDIF MoveL offs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness), v1000,
7、z50, tGripper; MoveL 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 remo
8、ve; 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; PulseDOPLeng
9、th:=2, doMouldPlaceOK; 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(pPickCla
10、pboard,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,
11、 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; PulseDOPLength:=, doClapboardPickOK; MoveJ pHome, v1500, fine, tGripper; PulseDOPLength:=, do
12、UnStackOk; 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 awa
13、y the part 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 E
14、rrWrite Rob Gripper Signal error ! ,Fatal error in GripperRL2:=Check the gripper signal postion .RL3:= change a new sensor .; Stop; ENDIF Waittime ; IWatch iVacuum; ENDPROC PROC GripOpen() ISleep iVacuum; SetDO doVacuum,0; PulseDO PLength:=, doBlow; WaitUntil diVacuum1=0 MaxTime:=5TimeFlag:=bTimeOut
15、; IF bTimeOut THEN ErrWrite Rob Gripper Signal error ! ,Fatal error in GripperRL2:=Check the gripper signal postion .RL3:= change a new sensor .; Stop; ENDIF Waittime ; ENDPROC PROC rMoveHome() VAR string HomeOffset; CONST num MinX:=-500; CONST num MaxX:=500; CONST num MinY:=-500; CONST num MaxY:=50
16、0; 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
17、; 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 posi
18、tion 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 ; ELSEIF THEN HomeOffset:=HomeOffset+X :+NumToStr ; ELSE HomeOf
19、fset:=HomeOffset+X : OK ; ENDIF IF THEN HomeOffset:=HomeOffset+Y :+NumToStr ; ELSEIF THEN HomeOffset:=HomeOffset+Y :+NumToStr ; ELSE HomeOffset:=HomeOffset+Y : OK ; ENDIF IF THEN HomeOffset:=HomeOffset+Z :+NumToStr ; ELSEIF THEN HomeOffset:=HomeOffset+Z :+NumToStr ; ELSE HomeOffset:=HomeOffset+Z : O
20、K ; ENDIF ErrWrite HomeOffset,Move robot manually near homeposition; WHILE OpMode()OP_MAN_PROG DO TPErase; TPWrite Please switch robot to Manual 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-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2