ABB機(jī)器人碼垛程序.doc
MODULE MainModule
PROC 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 DO
ReadType;
clock2re;
PickIF;
clock2re;
PlaceOF;
ENDWHILE
ENDPROC
PROC clock2re()
!tempint:=movstat;
IF DI10_1Product0K = 0 or DI10_2TuoPanOK = 0 Then
IF tempint<0.25 then
ClkStart CLK2;
ELSE
ClkStop CLK2;
ENDIF
Else
ClkStop CLK2;
EndIF
Endproc
PROC 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, tGripper\WObj:=wobj0;
ENDPROC
PROC PickIF()
IF bPickPart = FALSE AND nJob <> 0 AND DI10_1Product0K = 1 THEN
!CalculatePick;
MoveJ Offs(pPick,0,0,400), vFast, z200, tGripper\WObj:=wobj0;
!MoveLDO Offs(pPick,0,0,100), vFast, z20, tool0\WObj:=wobj0, DO10_1JiaZhua, 1;
MoveL pPick, vFast, fine, tGripper\WObj:=wobj0;
Close1;
GripLoad LoadFull;
Accset 50,50;
HandshakeIF;
bPickPart:=TRUE;
ConfL\Off;
MoveJ pAfterPick, vFast, z60, tGripper\WObj:=wobj0;
ENDIF
ENDPROC
PROC PlaceOF()
IF DI10_2TuoPanOK = 1 AND bPickPart = TRUE THEN
CalculatePlace;
ConfL\Off;
!MoveL Offs(pOver,0,0,nOffsZ2), vFast, z200, tGripper;
IF bTag=true then
Accset 70, 70;
MoveJ pAbovePlace, vFast, z10, tGripper\WObj:=wobj0;
else
Accset 90, 90;
MoveJ pAbovePlace, vFast, z10, tGripper\WObj:=wobj0;
Endif
Accset 100,100;
! place first box
ConfL\Off;
!MoveL Offs(pPlace1,nOffsX1,nOffsY1,nOffsZ1),vTurn,z10,tGripper\WObj:=wobj0;
MoveL pPlace1, vMiddle, fine, tGripper\WObj:=wobj0;
Open1;
ConfL\Off;
MoveL Offs(pPlace1,0,0,nOffsZ1),vMiddle,z5,tGripper\WObj:=wobj0;
GripLoad LoadEmpty;
Accset 100,100;
bPickPart:=FALSE;
Incr nCount1;
HandshakeOF;
MoveJ pAbovePick, vFast, z200, tGripper\WObj:=wobj0;
MoveL Offs(pPick,0,0,400), vFast, z10, tGripper\WObj:=wobj0;
!MoveJ pHome, vFast, z200, tGripper;
ENDIF
ENDPROC
PROC HandshakeIF()
IF nJob=1 THEN
!Set DO10_3ZhuaOK;
ENDIF
IF nJob=2 THEN
!Set DO10_3ZhuaOK;
ENDIF
ENDPROC
PROC HandshakeOF()
IF (nCount1=40 and nJob =1) or (nCount1=80 and nJob =2) THEN
Set DO10_4MaDuoOK;
WaitDI DI10_2TuoPanOK, 0;
SetDO\SDelay:=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:=Waitingtime;
ClkReset CLK2;
ClkReset CLK1;
ClkStart CLK1;
ENDIF
ENDPROC
PROC MoveHome()
TempP1:=CRobT(\Tool:=tool0 \WObj:=wobj0);
TempP1.trans.z:=500 ; MoveJ TempP1, v1000, z20, tGripper;
MoveJ pHome, v1000, z20, tGripper;
ENDPROC
PROC ReadType()
IF nPriority = 1 AND DI10_1Product0K = 1 THEN
!nJob:=1;
! Incr nPriority;
ELSEIF nPriority = 2 AND DI10_1Product0K = 1 THEN
!nJob:=2;
!Incr nPriority;
ELSE
!nJob:=0;
!Incr nPriority;
!IF nPriority>2 nPriority:=1;
ENDIF
ENDPROC
PROC Open1()
Reset DO10_2YaBan;
Waittime 0.0;
Reset DO10_1JiaZhua;
waittime 0.1;
!Waittime nTimeGripper;
ENDPROC
PROC Close1()
Set DO10_1JiaZhua;
Waittime 0.0;
WaitDI DI10_4Zhua1End, 1;
Set DO10_2YaBan;
Waittime 0.0;
!Waittime nTimeGripper;
WaitDI DI10_4Zhua1End, 1;
!WaitDI DI10_6Zhua2End, 1;
ENDPROC
PROC CalculatePick()
IF nJob = 1 THEN
pPick:=pPick1;
ELSEIF nJob = 2 THEN
pPick:=pPick1;
ENDIF
!pAbovePick:=pPick;
!pAfterPick:=pPick;
!Pattern80;
!pAbovePick.trans.z:= pAfterPick.trans.z;
!pAbovePick.trans.y:= pAfterPick.trans.y-500;
!pAfterPick.trans.y:= pAfterPick.trans.y-500;
ENDPROC
PROC CalculatePlace()
IF nJob = 1 THEN
nBagL:=nBag50L;
nBagW:=nBag50W;
nBagH:=nBag50H;
Pattern80;
ELSEIF nJob = 2 THEN
nBagL:=nBag25L;
nBagW:=nBag25W;
nBagH:=nBag25H;
Pattern100;
ENDIF
!pAbovePlace:=pPlace1;
pAfterPlace:=pAbovePlace;
ENDPROC
PROC Pattern80()
bTag:=FALSE;
TEST nCount1+1
CASE 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;
pAfterPick.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:=FALSE;
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;
bTwice:=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.z+400;
CASE 5:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+20;
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.z+400;
!Layer2
CASE 6:
pPlace1:=pBase180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+nBagH;
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.z+400;
CASE 7:
pPlace1:=pBase0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+nBagH;
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.z+400;
CASE 8:
pPlace1:=pBase270;
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:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
CASE 9:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-25;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-500;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
CASE 10:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-500;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
!Layer3
CASE 11:
pPlace1:=pBase180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
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.z+400;
bTag:=True;
CASE 12:
pPlace1:=pBase0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
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.z+400;
CASE 13:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
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.z+400;
CASE 14:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x+2*nBagW;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
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.z+400;
CASE 15:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
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.z+400;
!layer4
CASE 16:
pPlace1:=pBase180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+3*nBagH+80;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
CASE 17:
pPlace1:=pBase0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+3*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
CASE 18:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
CASE 19:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-25;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
CASE 20:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+2*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+400;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+400;
!layer5
CASE 21:
pPlace1:=pBase180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500;
bTag:=True;
CASE 22:
pPlace1:=pBase0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500;
CASE 23:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500;
CASE 24:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x+2*nBagW;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500;
CASE 25:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-300;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500;
!layer6
CASE 26:
pPlace1:=pBase180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+5*nBagH-50;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+nBagH;
CASE 27:
pPlace1:=pBase0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+5*nBagH-50;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500+nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500+nBagH;
CASE 28:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH-45;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500+nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+nBagH;
CASE 29:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-25;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH-45;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500+nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500+nBagH;
CASE 30:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+4*nBagH-45;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500+nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+500+nBagH;
!layer7
CASE 31:
pPlace1:=pBase180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH;
bTag:=True;
CASE 32:
pPlace1:=pBase0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH;
CASE 33:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH;
CASE 34:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x+2*nBagW;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH;
CASE 35:
pPlace1:=pBase90;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y+25;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-40;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=-100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+2*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+2*nBagH;
!layer8
CASE 36:
pPlace1:=pBase180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+7*nBagH-40;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;
CASE 37:
pPlace1:=pBase0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y+nBagL-5;
pPlace1.trans.z:=pPlace1.trans.z+7*nBagH-60;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;
CASE 38:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-60;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=100;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;
CASE 39:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+2*nBagW-30;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-60;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=100;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;
CASE 40:
pPlace1:=pBase270;
pPlace1.trans.x:=pPlace1.trans.x+nBagW;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z+6*nBagH-60;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*1.2;
nOffsZ2:=100;
nLevel:=2;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+450+3*nBagH;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+450+3*nBagH;
DEFAULT:
ErrWrite "Wrong box Count...","Single box must be the last one of a Pallet";
Stop;
EXIT;
ENDTEST
ENDPROC
PROC Pattern100()
bTag:=FALSE;
TEST nCount1+1
CASE 1:
pPlace1:=p25Base270;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=600;
nOffsZ2:=-500;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+700;
bTag:=True;
CASE 2:
pPlace1:=p25Base0;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*2;
nOffsZ2:=-500;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+700;
CASE 3:
pPlace1:=p25Base90;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*2;
nOffsZ2:=-500;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+700;
CASE 4:
pPlace1:=p25Base180;
pPlace1.trans.x:=pPlace1.trans.x;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=nBagH*2;
nOffsZ2:=-500;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+700;
CASE 5:
pPlace1:=p25Base270;
pPlace1.trans.x:=pPlace1.trans.x-nBagW;
pPlace1.trans.y:=pPlace1.trans.y;
pPlace1.trans.z:=pPlace1.trans.z;
nOffsX1:=0;
nOffsY1:=0;
nOffsZ1:=500;
nOffsZ2:=-500;
nLevel:=1;
bTwice:=FALSE;
pAfterPick.trans.z:=pPick.trans.z+500;
pAbovePlace:=pPlace1;
pAbovePlace.trans.z:=pPick.trans.z+700;
CASE 6:
pPlace1:=p25Base0;
pPlace1.trans.x:=pPlace1.trans.x;