《ABB机器人码垛程序》由会员分享,可在线阅读,更多相关《ABB机器人码垛程序(41页珍藏版)》请在金锄头文库上搜索。
1、MODULE MainModulePROC Main()TPErase;TPReadNum nCount1, Qing Shu Ru Yi Ma Bao Shu! ;TPReadNum nJob, Qing Shu Ru Mo Shi:50KG:=1,25KG:=2!; InitAll; WHILE TRUE DOReadType;clock2re;PickIF;clock2re;PlaceOF;ENDWHILEENDPROCPROC clock2re()!tempint:=movstat;IF DI10_1Product0K = 0 or DI10_2TuoPanOK = 0 Then IF
2、 tempint0.25 thenClkStart CLK2;ELSEClkStop CLK2;ENDIFElseClkStop CLK2;EndIFEndprocPROC InitAll()MoveHome;Reset DO10_1JiaZhua;Reset DO10_2YaBan;Reset DO10_3ZhuaOK;Reset DO10_4MaDuoOK;Waittime 0.5;bPickPart:=FALSE;ClkReset CLK1;ClkStart CLK1;ClkReset CLK2;MoveL Offs(pPick,0,0,400), vFast, z10, tGrippe
3、rWObj:=wobj0; ENDPROCPROC PickIF()IF bPickPart = FALSE AND nJob 0 AND DI10_1Product0K = 1 THEN!CalculatePick;tool0WObj:=wobj0,MoveJ Offs(pPick,0,0,400), vFast, z200, tGripperWObj:=wobj0; !MoveLDO Offs(pPick,0,0,100), vFast, z20, DO10_1JiaZhua, 1;MoveL pPick, vFast, fine, tGripperWObj:=wobj0;Close1;G
4、ripLoad LoadFull;Accset 50,50;HandshakeIF; bPickPart:=TRUE;ConfLOff;MoveJ pAfterPick, vFast, z60, tGripperWObj:=wobj0;ENDIFENDPROCPROC PlaceOF()IF DI10_2TuoPanOK = 1 AND bPickPart = TRUE THEN CalculatePlace; ConfLOff;!MoveL Offs(pOver,0,0,nOffsZ2), vFast, z200, tGripper;IF bTag=true then Accset 70,
5、70;MoveJ pAbovePlace, vFast, z10, tGripperWObj:=wobj0;elseAccset 90, 90;MoveJ pAbovePlace, vFast, z10, tGripperWObj:=wobj0; EndifAccset 100,100;! place first box ConfLOff;!MoveL Offs(pPlace1,nOffsX1,nOffsY1,nOffsZ1),vTurn,z10,tGripperWObj:=wobj0;Accset 100,100; bPickPart:=FALSE;Incr nCount1;Handshak
6、eOF;MoveJ pAbovePick, vFast, z200, tGripperWObj:=wobj0;MoveL Offs(pPick,0,0,400), vFast, z10, tGripperWObj:=wobj0; !MoveJ pHome, vFast, z200, tGripper;ENDIFENDPROCPROC HandshakeIF()IF nJob=1 THEN!Set DO10_3ZhuaOK;ENDIFIF nJob=2 THEN!Set DO10_3ZhuaOK;ENDIFENDPROCPROC HandshakeOF()IF (nCount1=40 and n
7、Job =1) or (nCount1=80 and nJob =2) THEN Set DO10_4MaDuoOK;WaitDI DI10_2TuoPanOK, 0; SetDOSDelay:=0.5,DO10_4MaDuoOK,0; nCount1:=0;ClkStop CLK1;ClkStop CLK2;TPErase; nCycleCount:=ClkRead(CLK1);Waitingtime:=ClkRead(CLK2);TPWrite Cycle time: Num:=nCycleCount;TPWrite Waiting time in this Cycle: Num:=Wai
8、tingtime;ClkReset CLK2;ClkReset CLK1;ClkStart CLK1;ENDIFENDPROCPROC MoveHome() TempP1:=CRobT(Tool:=tool0 WObj:=wobj0);TempP1.trans.z:=500 ; MoveJ TempP1, v1000, z20, tGripper; MoveJ pHome, v1000, z20, tGripper;ENDPROCPROC ReadType()IF nPriority = 1 AND DI10_1Product0K = 1 THEN !nJob:=1;! Incr nPrior
9、ity;ELSEIF nPriority = 2 AND DI10_1Product0K = 1 THEN !nJob:=2; !Incr nPriority;ELSE!nJob:=0;!Incr nPriority;!IF nPriority2 nPriority:=1;ENDIF ENDPROCPROC Open1()Reset DO10_2YaBan;Waittime 0.0;Reset DO10_1JiaZhua;waittime 0.1;!Waittime nTimeGripper;ENDPROCPROC Close1()Set DO10_1JiaZhua;Waittime 0.0;
10、WaitDI DI10_4Zhua1End, 1;Set DO10_2YaBan;Waittime 0.0;!Waittime nTimeGripper;WaitDI DI10_4Zhua1End, 1;!WaitDI DI10_6Zhua2End, 1; ENDPROCPROC CalculatePick()IF nJob = 1 THEN pPick:=pPick1;ELSEIF nJob = 2 THEN pPick:=pPick1;ENDIF!pAbovePick:=pPick; !pAfterPick:=pPick;!Pattern80;!pAbovePick.trans.z:= p
11、AfterPick.trans.z;!pAbovePick.trans.y:= pAfterPick.trans.y-500;!pAfterPick.trans.y:= pAfterPick.trans.y-500;ENDPROCPROC CalculatePlace()IF nJob = 1 THEN nBagL:=nBag50L; nBagW:=nBag50W; nBagH:=nBag50H; Pattern80;ELSEIF nJob = 2 THEN nBagL:=nBag25L; nBagW:=nBag25W; nBagH:=nBag25H; Pattern100;ENDIF!pAb
12、ovePlace:=pPlace1; pAfterPlace:=pAbovePlace;ENDPROCPROC Pattern80() bTag:=FALSE;TEST nCount1+1CASE 1:pPlace1:=pBase180;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=500;nOffsZ2:=-500;nLevel:=1;bTwice:=FALSE;pAfterPic
13、k.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1; pAbovePlace.trans.z:=pPick.trans.z+400; bTag:=True;CASE 2:pPlace1:=pBase0;pPlace1.trans.x:=pPlace1.trans.x;pPlace1.trans.y:=pPlace1.trans.y;pPlace1.trans.z:=pPlace1.trans.z;nOffsX1:=0;nOffsY1:=0;nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwice:=FAL
14、SE;pAfterPick.trans.z:=pPick.trans.z+400;pAbovePlace:=pPlace1; pAbovePlace.trans.z:=pPick.trans.z+400;CASE 3:pPlace1:=pBase90;pPlace1.trans.x:=pPlace1.trans.x; pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z; nOffsX1:=0;nOffsY1:=0; nOffsZ1:=nBagH*1.2;nOffsZ2:=-500;nLevel:=1;bTwi
15、ce:=FALSE; pAfterPick.trans.z:=pPick.trans.z+400; pAbovePlace:=pPlace1; pAbovePlace.trans.z:=pPick.trans.z+400;CASE 4:pPlace1:=pBase90; pPlace1.trans.x:=pPlace1.trans.x+2*nBagW; pPlace1.trans.y:=pPlace1.trans.y+25;pPlace1.trans.z:=pPlace1.trans.z; nOffsX1:=0;nOffsY1:=0; nOffsZ1:=nBagH*1.2; nOffsZ2:=-500; nLevel:=1; bTwice:=FALSE; pAfterPick.trans.z:=pPick.trans.z+400; pAbovePlace:=pPlace1; pAbovePlace.trans.z:=pPick.trans