Hello I have created a virtual cell from an all of the above backup of a robot. I cannot get the robot to run a cycle because it is stuck on HMI and PLC I/O. How do I bypass or simulate the I/O to get the robot to run with the backup files
Posts by interndon
-
-
-
Code: Vac Off
Display More4: ;IF R[8:CUR PK/PL COUNT]= R[10:Cur TotPKPlInCyc] , JMP LBL[1] 5: IF R[8: Cur Pl/PL COUNT]=1 JMP LBL [2] LBL[1] 6: RO[1:OFF:Vacuum Off]=OFF ; 7: RO[2:OFF:Vacuum On]=OFF ; 8: !Request Vacuum Blower ; 9: DO[168:OFF:Request Vacuum]=OFF ; 10: !Picking SSht ; 11: DO[172:OFF:Picking SSht]=OFF ; 12: LBL[2] 13; RO[2:disable zone 2]=ON 14: LBL[1000:Exit] ;
-
Code: Set UTool Macro
Display More4: ; 5: ; 6: !Select Gripper ; 7: SELECT R[7:Current Gripper]=6,JMP LBL[6] ; 8: =7,JMP LBL[7] ; 9: ELSE,JMP LBL[100] ; 10: ; 11: LBL[6:Cust Grp1] ; 12: !Initialize Custom Gripper 1 ; 13: !Calculated as a 5 Case Gripper ; 14: ; 15: R[58:Pal Num for Dims]=R[1:Current Cycle] ; 16: Get Unit Stats ; 17: !R[59] unit length ; 18: !R[60] unit width ; 19: !R[61] unit height ; 20: IF (R[62:Status Returned]<>0),JMP LBL[999] ; 21: ; 22: !Boxes Picked WonL ; 23: ; 24: !Utool3 (Center of Grip) ; 25: PR[73:Calc Utool3]=PR[65:Cal Pos Offset] ; 26: PR[73,3:Calc Utool3]=347 ; 27: !Utool1 ; 28: PR[71:Calc Utool1]=PR[73:Calc Utool3] ; 29: PR[71,1:Calc Utool1]=2*R[60:Y Value Returned] ; 30: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ; 31: !Utool2 ; 32: PR[72:Calc Utool2]=PR[73:Calc Utool3] ; 33: PR[72,1:Calc Utool2]=R[60:Y Value Returned] ; 34: PR[72,1:Calc Utool2]=PR[72,1:Calc Utool2]*(-1) ; 35: !Utool4 ; 36: PR[74:Calc Utool4]=PR[73:Calc Utool3] ; 37: PR[74,1:Calc Utool4]=R[60:Y Value Returned] ; 38: !Utool5 ; 39: PR[75:Calc Utool5]=PR[73:Calc Utool3] ; 40: PR[75,1:Calc Utool5]=2*R[60:Y Value Returned] ; 41: ; 42: UTOOL[1:Vacuum]=PR[71:Calc Utool1] ; 43: UTOOL[2]=PR[72:Calc Utool2] ; 44: UTOOL[3]=PR[73:Calc Utool3] ; 45: UTOOL[4]=PR[74:Calc Utool4] ; 46: UTOOL[5]=PR[75:Calc Utool5] ; 47: JMP LBL[500] ; 48: ; 49: LBL[7] ; 50: !Initialize Custom Gripper 2 ; 51: !Calculated as center picking ; 52: ; 53: R[58:Pal Num for Dims]=R[1:Current Cycle] ; 54: Get Unit Stats ; 55: !R[59] unit length ; 56: !R[60] unit width ; 57: !R[61] unit height ; 58: IF (R[62:Status Returned]<>0),JMP LBL[999] ; 59: ; 60: !Boxes Picked WonL ; 61: ; 62: PR[71:Calc Utool1]=PR[65:Cal Pos Offset] ; 63: PR[71,3:Calc Utool1]=347 ; 64: !Center Picking Or Not? ; 65: IF (F[31:OFF:Offset Infeed 1] AND R[9:Cur TotUnitsPick]=1 AND R[1:Current Cycle]=1),JMP LBL[701] ; 66: IF (F[32:ON :Offset Infeed 2] AND R[9:Cur TotUnitsPick]=1 AND R[1:Current Cycle]=2),JMP LBL[701] ; 67: IF (F[31:OFF:Offset Infeed 1] AND R[9:Cur TotUnitsPick]=2 AND R[1:Current Cycle]=1),JMP LBL[702] ; 68: IF (F[32:ON :Offset Infeed 2] AND R[9:Cur TotUnitsPick]=2 AND R[1:Current Cycle]=2),JMP LBL[702] ; 69: LBL[555] ; 70: !Utool1 ; 71: R[107:Scratch]=((R[9:Cur TotUnitsPick]*.5)*R[60:Y Value Returned]+R[181:ZW_TEMP]) ; 72: R[107:Scratch]=(R[107:Scratch])-(R[60:Y Value Returned]/2) ; 73: PR[71,1:Calc Utool1]=R[107:Scratch] ; 74: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ; 75: ; 76: UTOOL[1:Vacuum]=PR[71:Calc Utool1] ; 77: JMP LBL[500] ; 78: LBL[701] ; 79: !Not Center Picking For Single Ca ; 80: R[107:Scratch]=((R[9:Cur TotUnitsPick]*1.25)*R[60:Y Value Returned]+R[181:ZW_TEMP]) ; 81: R[107:Scratch]=(R[107:Scratch])-(R[60:Y Value Returned]/2) ; 82: PR[71,1:Calc Utool1]=R[107:Scratch] ; 83: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ; 84: ; 85: UTOOL[1:Vacuum]=PR[71:Calc Utool1] ; 86: JMP LBL[500] ; 87: ; 88: LBL[702] ; 89: IF R[2:Current Unitload]<>107,JMP LBL[555] ; 90: !Not Center Picking For Single Ca ; 91: R[107:Scratch]=((R[9:Cur TotUnitsPick])*R[60:Y Value Returned]+R[181:ZW_TEMP]) ; 92: R[107:Scratch]=(R[107:Scratch])-(R[60:Y Value Returned]/2) ; 93: PR[71,1:Calc Utool1]=R[107:Scratch] ; 94: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ; 95: ; 96: UTOOL[1:Vacuum]=PR[71:Calc Utool1] ; 97: JMP LBL[500] ; 98: ; 99: LBL[100:PTT Calc] ; 100: !Initialize Standard UTOOLs ; 101: UTOOL[1:Vacuum]=PR[17:UTOOL 1] ; 102: UTOOL[2]=PR[18:UTOOL 2] ; 103: UTOOL[3]=PR[19:UTOOL 3] ; 104: UTOOL[4]=PR[20:UTOOL 4] ; 105: UTOOL[5]=PR[21:UTOOL 5] ; 106: UTOOL[6]=PR[22:UTOOL 6] ; 107: ; 108: LBL[500] ; 109: !Update Via Motn Utool ; 110: PR[78:Calc Via Utool]=UTOOL[1:Vacuum] ; 111: PR[78,1:Calc Via Utool]=0 ; 112: PR[78,2:Calc Via Utool]=0 ; 113: UTOOL[7]=PR[78:Calc Via Utool] ; 114: ; 115: !Update Null Utool ; 116: UTOOL[10]=PR[65:Cal Pos Offset] ; 117: JMP LBL[1000] ; 118: ; 119: LBL[999] ; 120: !Get Unit Stats Call Failed ; 121: !SETUTOOL.TP Error ; 122: GO[3:0:Robot Error Msg]=5 ; 123: !Robot Assist AH ; 124: DO[160:OFF:Req Assist AH]=ON ; 125: UALM[5] ; 126: CALL HMIABRT ; 127: ; 128: LBL[1000:Exit] ;
-
Code: place on pallet part 2
Display More202: !Collision Detected ; 203: R[142:PD Recovery]=8 ; 204: JMP LBL[900] ; 205: ; 206: LBL[70:Nxt Multi Drp] ; 207: !Next x Plus x Drop ; 208: SKIP CONDITION R[24:Part Drop Cond]=0 ; 209:L PR[50:Cur Pal Appr] 2000mm/sec CNT25 Skip,LBL[71] ; 210: R[20:Cur Robot Posn]=7 ; 211: R[142:PD Recovery]=10 ; 212: !Part Drop Detected ; 213: JMP LBL[90] ; 214: LBL[71] ; 215: R[20:Cur Robot Posn]=5 ; 216: PR[50,3:Cur Pal Appr]=PR[51,3:Cur Pal Place] ; 217:L PR[50:Cur Pal Appr] 2000mm/sec CNT25 Tool_Offset ; 218:L PR[51:Cur Pal Place] 2000mm/sec CNT5 Tool_Offset ACC50 ; 219: JMP LBL[75] ; 220: ; 221: LBL[75:Drop] ; 222: SKIP CONDITION R[145:Collision Mon]=1 OR ERR_NUM=11050 ; 223:L PR[51:Cur Pal Place] 2000mm/sec CNT5 Skip,LBL[77] ; 224: !Collision Detected ; 225: R[20:Cur Robot Posn]=6 ; 226: R[142:PD Recovery]=8 ; 227: JMP LBL[900] ; 228: ; 229: LBL[77:Release Prod] ; 230: R[20:Cur Robot Posn]=6 ; 231: CALL VAC_OFF ; 232: !Dwell for Plenum Release ; 233: WAIT .50(sec) ; 234: ; 235: !Clr Status Regs ; 236: IF (R[4:Current Pallet]=1),R[237:Ldpos1 Purge]=(0) ; 237: IF (R[4:Current Pallet]=1),R[238:Ldpos1 SSht Comp]=(0) ; 238: IF (R[4:Current Pallet]=2),R[247:Ldpos2 Purge]=(0) ; 239: IF (R[4:Current Pallet]=1),R[248:Ldpos2 SSht Comp]=(0) ; 240: ; 241: LBL[80] ; 242: !Update rate on PD Status display ; 243: CALL PMDSPSPD ; 244: R[6:Current Unit]=R[6:Current Unit]+R[11:Cur units to drp]-1 ; 245: !If last place then jump to end ; 246: IF R[8:Cur Pk/Pl count]=R[10:Cur TotPkPlInCyc],JMP LBL[100] ; 247: ; 248: !Disable Pik Agn ; 249: DO[138:OFF:Disable Pik Agn]=ON ; 250: ; 251: !Move up to pallet retreat posn ; 252:L PR[52:Cur Pal Retreat] 2000mm/sec CNT25 ACC50 ; 253: R[20:Cur Robot Posn]=7 ; 254: JMP LBL[60] ; 255: ; 256: LBL[90:Part Drp Pal] ; 257: ; 258: !Pre Picking Infeeds ; 259: DO[230:OFF:Inf1 PrePicking]=OFF ; 260: DO[294:OFF:Inf2 PrePicking]=OFF ; 261: !Picking Infeeds ; 262: DO[231:OFF:Inf1 Picking]=OFF ; 263: DO[295:OFF:Inf2 Picking]=OFF ; 264: CALL EOATSTAT(0) ; 265: !Reset Active Menu Done ; 266: R[160:Active Menu Done]=0 ; 267: RUN PD_REC ; 268: LBL[91] ; 269: IF R[160:Active Menu Done]=1,JMP LBL[95] ; 270: WAIT .25(sec) ; 271: JMP LBL[91] ; 272: LBL[95] ; 273: IF R[220:Recovery Options]=4,JMP LBL[103] ; 274: IF R[24:Part Drop Cond]=2,JMP LBL[103] ; 275: !Reinit Part Drop Monitor ; 276: R[24:Part Drop Cond]=1 ; 277: SKIP CONDITION R[24:Part Drop Cond]=0 ; 278: !Continuous checking for partdrop ; 279: !RUN PMDROP ; 280: MONITOR PD_MON ; 281: IF R[142:PD Recovery]=2,JMP LBL[13] ; 282: IF R[142:PD Recovery]=5,JMP LBL[27] ; 283: IF R[142:PD Recovery]=7,JMP LBL[62] ; 284: IF R[142:PD Recovery]=8,JMP LBL[63] ; 285: IF R[142:PD Recovery]=9,JMP LBL[66] ; 286: IF R[142:PD Recovery]=10,JMP LBL[70] ; 287: JMP LBL[63] ; 288: ; 289: LBL[100] ; 290: ; 291: !Cell Tracks Case Serial Numbers ; 292: !Placed to Pallet ; 293: ; 294: !Select Current Pallet ; 295: SELECT R[4:Current Pallet]=1,JMP LBL[101] ; 296: ELSE,JMP LBL[102] ; 297: ; 298: LBL[101] ; 299: CALL CASEQTY(1,202) ; 300: IF (R[204:Ldpos1 QtyPlaced]=1),R[203:Ldpos1 ArryPntr]=(R[202:Ldpos1 CaseQty]) ; 301: IF (R[204:Ldpos1 QtyPlaced]=2),R[203:Ldpos1 ArryPntr]=(R[202:Ldpos1 CaseQty]-1) ; 302: IF (R[204:Ldpos1 QtyPlaced]=3),R[203:Ldpos1 ArryPntr]=(R[202:Ldpos1 CaseQty]-2) ; 303: IF (R[204:Ldpos1 QtyPlaced]=4),R[203:Ldpos1 ArryPntr]=(R[202:Ldpos1 CaseQty]-3) ; 304: IF (R[204:Ldpos1 QtyPlaced]=5),R[203:Ldpos1 ArryPntr]=(R[202:Ldpos1 CaseQty]-4) ; 305: IF (R[204:Ldpos1 QtyPlaced]=6),R[203:Ldpos1 ArryPntr]=(R[202:Ldpos1 CaseQty]-5) ; 306: GO[16:0:Ldpos1 ArryPntr]=R[203:Ldpos1 ArryPntr] ; 307: GO[17:0:Ldpos1 QtyPlaced]=R[204:Ldpos1 QtyPlaced] ; 308: GO[18:45:Ldpos1 CaseQty]=R[202:Ldpos1 CaseQty] ; 309: DO[312:OFF:Ld1 Case Placed]=ON ; 310: JMP LBL[105] ; 311: ; 312: LBL[102] ; 313: CALL CASEQTY(2,205) ; 314: IF (R[207:Ldpos2 QtyPlaced]=1),R[206:Ldpos2 ArryPntr]=(R[205:Ldpos2 CaseQty]) ; 315: IF (R[207:Ldpos2 QtyPlaced]=2),R[206:Ldpos2 ArryPntr]=(R[205:Ldpos2 CaseQty]-1) ; 316: IF (R[207:Ldpos2 QtyPlaced]=3),R[206:Ldpos2 ArryPntr]=(R[205:Ldpos2 CaseQty]-2) ; 317: IF (R[207:Ldpos2 QtyPlaced]=4),R[206:Ldpos2 ArryPntr]=(R[205:Ldpos2 CaseQty]-3) ; 318: IF (R[207:Ldpos2 QtyPlaced]=5),R[206:Ldpos2 ArryPntr]=(R[205:Ldpos2 CaseQty]-4) ; 319: IF (R[207:Ldpos2 QtyPlaced]=6),R[206:Ldpos2 ArryPntr]=(R[205:Ldpos2 CaseQty]-5) ; 320: GO[19:0:Ldpos2 ArryPntr]=R[206:Ldpos2 ArryPntr] ; 321: GO[20:0:Ldpos2 QtyPlaced]=R[207:Ldpos2 QtyPlaced] ; 322: GO[21:5:Ldpos2 CaseQty]=R[205:Ldpos2 CaseQty] ; 323: DO[328:OFF:Ld2 Case Placed]=ON ; 324: JMP LBL[105] ; 325: ; 326: LBL[105] ; 327: IF R[110:EoB Active]=0,JMP LBL[110] ; 328: !EOB Purge Pallet ; 329: !CALL PD_PURGE ; 330: !EOB Cycle Stop Request ; 331: R[23:Cyc Stop Enabled]=1 ; 332: LBL[110] ; 333: !Disable Part Drop Monitor ; 334: R[24:Part Drop Cond]=0 ; 335: MONITOR END PD_MON ; 336: !Collision Monitor ; 337: R[145:Collision Mon]=0 ; 338: MONITOR END COL_COND ; 339: !Disable Pik Agn ; 340: DO[138:OFF:Disable Pik Agn]=OFF ; 341: IF R[20:Cur Robot Posn]<>6,JMP LBL[13] ; 342: !Store pallet retreat offset ; 343: PR[47:Last Retrt Ofst]=PR[52:Cur Pal Retreat] ; 344: LBL[113] ; 345: ; 346: !Payload w/No Prod ; 347: PAYLOAD[1:No Product] ; 348: ; 349: R[21:Last Pallet]=R[4:Current Pallet] ; 350: R[99:Last Cycle ]=R[1:Current Cycle] ; 351: ; 352: !Reset speed override. ; 353: $MCR_GRP[1].$PRGOVERRIDE=100 ; 354: JMP LBL[1000] ; 355: ; 356: LBL[900:Col Detected] ; 357: !Pal Collision Recovery ; 358: CALL COL_MOTN ; 359: JMP LBL[90] ; 360: ; 361: LBL[1000:Exit] ;
-
Code: Place on Pallet part 1
Display More3: !PalletTool 8.30P/21 PT Turbo ; 4: ; 5: ; 6: $MCR_GRP[1].$PRGOVERRIDE=R[35:Speed Override] ; 7: !End of batch Prog Override ; 8: IF R[110:EoB Active]=0,JMP LBL[1] ; 9: $MCR_GRP[1].$PRGOVERRIDE=25 ; 10: LBL[1] ; 11: ; 12: !Current Pal in Service ; 13: R[190:Cur Pal in Srvc]=R[4:Current Pallet] ; 14: R[144:PROG call mode]=2 ; 15: ; 16: !Init Part Drop Monitor ; 17: R[143:False Alarm Sel]=0 ; 18: R[24:Part Drop Cond]=1 ; 19: !Collision Status ; 20: R[111:Col Rcvry Active]=0 ; 21: ; 22: PR[24:Place Offset]=PR[65:Cal Pos Offset] ; 23: TOOL_OFFSET CONDITION PR[24:Place Offset] ; 24: ; 25: !Init Place Regs ; 26: R[8:Cur Pk/Pl count]=0 ; 27: R[28:Multi-use]=3 ; 28: R[29:Multi-use]=9 ; 29: !Reset counter ; 30: R[96:Internal Registe]=1 ; 31: ; 32: !Cell Tracks Case Serial Numbers ; 33: !Placed to Pallet ; 34: !Update Qty Cases Picked in Cycle ; 35: IF (R[1:Current Cycle]=1),R[204:Ldpos1 QtyPlaced]=(R[9:Cur TotUnitsPick]) ; 36: IF (R[1:Current Cycle]=2),R[207:Ldpos2 QtyPlaced]=(R[9:Cur TotUnitsPick]) ; 37: ; 38: !Bx Req Active ; 39: IF (R[1:Current Cycle]=1),DO[229:OFF:Inf1 Req Active]=(OFF) ; 40: IF (R[1:Current Cycle]=2),DO[293:OFF:Inf2 Req Active]=(OFF) ; 41: ; 42: !Clear Pick Position with Offset ; 43: R[58:Pal Num for Dims]=R[1:Current Cycle] ; 44: Get Unit Stats ; 45: !R[59] unit length ; 46: !R[60] unit width ; 47: !R[61] unit height ; 48: IF (R[62:Status Returned]<>0),R[61:Z Value Returned]=(500) ; 49: R[117:Inf DepartOffset]=150+R[61:Z Value Returned] ; 50: R[117:Inf DepartOffset]=R[117:Inf DepartOffset]*(-1) ; 51: ; 52: PR[24,3:Place Offset]=R[117:Inf DepartOffset] ; 53:L PR[1:Infeed Unit Posn] max_speed CNT30 Tool_Offset ACC50 ; 54: R[20:Cur Robot Posn]=2 ; 55: ; 56: !Verify Initial Pick ; 57: IF R[198:Dry Cycle]>0,JMP LBL[15] ; 58: IF R[110:EoB Active]>0,JMP LBL[15] ; 59: IF R[45:Part Drop Enb]=0,JMP LBL[15] ; 60: R[142:PD Recovery]=2 ; 61: IF (!DI[168:OFF:Vacuum Ready]),JMP LBL[90] ; 62: IF (!RO[1:OFF:Vacuum Off]),JMP LBL[90] ; 63: ; 64: LBL[13:Init PartDrop] ; 65: !Continuous checking for partdrop ; 66: !RUN PMDROP ; 67: MONITOR PD_MON ; 68: LBL[15] ; 69: ; 70: !Dropping to CHEP Pallet ; 71: IF (R[1:Current Cycle]=1 AND DI[217:ON :Ldpos1 has CHEP]),CALL CHEP_PAL ; 72: IF (R[1:Current Cycle]=2 AND DI[265:ON :Ldpos2 has CHEP]),CALL CHEP_PAL ; 73: ; 74: CALL CFG_TURN ; 75: CALL CALCZPOS ; 76: ; 77: !Req Nxt Units & Orient ; 78: CALL PMADDQ(8) ; 79: ; 80: !Custom CNT to Clr SSht Rack ; 81: IF (R[1:Current Cycle]<>2),R[166:Calc Motn Cnt]=(75) ; 82: IF (R[1:Current Cycle]=2),R[166:Calc Motn Cnt]=(25) ; 83: ; 84:L PR[48:CalcZPos 1] max_speed CNT R[166:Calc Motn Cnt] ACC50 ; 85: ; 86: !Disable Pik Agn ; 87: DO[138:OFF:Disable Pik Agn]=ON ; 88: ; 89: LBL[20] ; 90: ; 91: !Via Motn UTOOL ; 92: UTOOL_NUM=7 ; 93: ; 94: !Infeed Via Position ; 95: PR[79:Calc Via Pos]=PR[25:Perch Position] ; 96: PR[79,3:Calc Via Pos]=PR[48,3:CalcZPos 1] ; 97: ; 98: PR[99:Scratch JPOS]=JPOS-JPOS ; 99: CALL GETJPOS(79,99) ; 100: PR[98:Scratch JPOS]=JPOS ; 101: PR[98,2:Scratch JPOS]=PR[99,2:Scratch JPOS] ; 102: PR[98,3:Scratch JPOS]=PR[99,3:Scratch JPOS] ; 103: !Move to Tuck Position ; 104:J PR[98:Scratch JPOS] 100% CNT100 MROT ACC50 ; 105: ; 106: LBL[27] ; 107: !Dropping Motn UTOOL ; 108: UTOOL_NUM=1 ; 109: ; 110: !Custom CNT to Clr SSht Rack ; 111: IF (R[1:Current Cycle]<>2),R[166:Calc Motn Cnt]=(50) ; 112: IF (R[1:Current Cycle]=2),R[166:Calc Motn Cnt]=(10) ; 113: ; 114: !Reserved Area for Cust ACC ; 115: R[164:Calc Motn Acc]=100 ; 116: ; 117: !Move to Appr Position ; 118: SKIP CONDITION R[24:Part Drop Cond]=0 ; 119:J PR[49:CalcZpos 2] 100% CNT R[166:Calc Motn Cnt] Skip,LBL[50] ACC R[164] MROT ; 120: R[142:PD Recovery]=5 ; 121: !Part Drop Detected ; 122: JMP LBL[90] ; 123: ; 124: LBL[50] ; 125: R[20:Cur Robot Posn]=5 ; 126: ; 127: !Updt Last Pal Srvc ; 128: R[191:Last Pal in Srvc]=R[190:Cur Pal in Srvc] ; 129: ; 130: LBL[60] ; 131: R[6:Current Unit]=R[6:Current Unit]+1 ; 132: R[8:Cur Pk/Pl count]=R[8:Cur Pk/Pl count]+1 ; 133: R[28:Multi-use]=R[28:Multi-use]+1 ; 134: R[29:Multi-use]=R[29:Multi-use]+1 ; 135: R[97:Internal Registe]=R[96:Internal Registe] ; 136: PR[50:Cur Pal Appr]=PR[R[28]] ; 137: PR[51:Cur Pal Place]=PR[R[29]] ; 138: ; 139: !Custom Coded for BEC 3926 ; 140: PR[52:Cur Pal Retreat]=PR[51:Cur Pal Place] ; 141: PR[52,3:Cur Pal Retreat]=PR[50,3:Cur Pal Appr] ; 142: ; 143: !UpdData PMUPDCYC for next drp ; 144: CALL PMADDQ(1) ; 145: IF R[8:Cur Pk/Pl count]=R[10:Cur TotPkPlInCyc],CALL CALCPICK ; 146: LBL[61] ; 147: !Set Utool for this drop ; 148: UTOOL_NUM=R[97:Internal Registe] ; 149: ; 150: !First Drop for Cur Pick ; 151: IF R[8:Cur Pk/Pl count]>1,JMP LBL[70] ; 152: ; 153: LBL[62] ; 154: R[145:Collision Mon]=0 ; 155: MONITOR COL_COND ; 156: ; 157: !Reserved Area for Cust ACC ; 158: R[164:Calc Motn Acc]=100 ; 159: ; 160: SKIP CONDITION R[24:Part Drop Cond]=0 OR R[145:Collision Mon]=1 OR ERR_NUM=11050 ; 161:L PR[50:Cur Pal Appr] max_speed CNT25 Skip,LBL[63] ACC R[164] ; 162: R[142:PD Recovery]=7 ; 163: WAIT .25(sec) ; 164: !Chk Collision ; 165: IF R[145:Collision Mon]=1,JMP LBL[900] ; 166: !Part Drop Detected ; 167: JMP LBL[90] ; 168: ; 169: LBL[63] ; 170: ; 171: !Drop Approach Offset ; 172: PR[24,3:Place Offset]=(-30) ; 173: ; 174: IF R[6:Current Unit]>1,JMP LBL[66] ; 175: !First Drop to Layer ; 176: SKIP CONDITION R[24:Part Drop Cond]=0 OR R[145:Collision Mon]=1 OR ERR_NUM=11050 ; 177:L PR[51:Cur Pal Place] max_speed CNT25 Tool_Offset Skip,LBL[75] ACC R[164] ; 178: R[20:Cur Robot Posn]=5 ; 179: R[142:PD Recovery]=8 ; 180: WAIT .25(sec) ; 181: !Chk Collision ; 182: IF R[145:Collision Mon]=1,JMP LBL[900] ; 183: !Part Drop Detected ; 184: JMP LBL[90] ; 185: ; 186: LBL[66:Nxt Drp to Layer] ; 187: PR[50,3:Cur Pal Appr]=PR[51,3:Cur Pal Place] ; 188: SKIP CONDITION R[24:Part Drop Cond]=0 OR R[145:Collision Mon]=1 OR ERR_NUM=11050 ; 189:L PR[50:Cur Pal Appr] max_speed CNT25 Tool_Offset Skip,LBL[67] ACC R[164] ; 190: R[20:Cur Robot Posn]=5 ; 191: R[142:PD Recovery]=9 ; 192: WAIT .25(sec) ; 193: !Chk Collision ; 194: IF R[145:Collision Mon]=1,JMP LBL[900] ; 195: !Part Drop Detected ; 196: JMP LBL[90] ; 197: ; 198: LBL[67:Slide In] ; 199: R[20:Cur Robot Posn]=5 ; 200: SKIP CONDITION R[145:Collision Mon]=1 OR ERR_NUM=11050 ; 201:L PR[51:Cur Pal Place] 2000mm/sec CNT5 Tool_Offset Skip,LBL[75] ACC80 ;
-
Code: Pick from infeed
Display More3: !PalletTool 8.30P/21 PT Turbo ; 4: ; 5: ; 6: !Collision Detected ; 7: DO[134:OFF:Collision Det]=OFF ; 8: !At Perch Position ; 9: DO[135:OFF:At Perch Pos]=OFF ; 10: !Above Infeed ; 11: DO[136:OFF:Above Infeed]=OFF ; 12: !Disable Pik Agn ; 13: DO[138:OFF:Disable Pik Agn]=OFF ; 14: ; 15: !Monitor Inf Squaring Retracted ; 16: F[10:ON :Mon InfSqrFlt]=(OFF) ; 17: ; 18: R[144:PROG call mode]=1 ; 19: !Reset Pick Bypass ; 20: R[112:Pick bypass Pntr]=0 ; 21: ; 22: PR[23:Pick Offset]=PR[65:Cal Pos Offset] ; 23: TOOL_OFFSET CONDITION PR[23:Pick Offset] ; 24: ; 25: CALL CLINFRTN ; 26: ; 27: LBL[1:Req Vacuum] ; 28: RO[1:OFF:Vacuum Off]=OFF ; 29: RO[2:OFF:Vacuum On]=OFF ; 30: !Request Vacuum Blower ; 31: DO[168:OFF:Request Vacuum]=ON ; 32: ; 33: !Clear of Infeed ; 34: IF (R[1:Current Cycle]=1),DO[228:OFF:Inf1 Bot Clr]=(OFF) ; 35: IF (R[1:Current Cycle]=2),DO[292:OFF:Inf2 Bot Clr]=(OFF) ; 36: ; 37: !Robot Already at Infeed. ; 38: IF R[20:Cur Robot Posn]<=2,JMP LBL[5] ; 39: ; 40: !Motn Clear ; 41: R[107:Scratch]=PR[48,3:CalcZPos 1] ; 42: CALL GETMAXZ(R[107:Scratch],109) ; 43: PR[48,3:CalcZPos 1]=R[109:Scratch] ; 44: ; 45: !Custom CNT to Clr SSht Rack ; 46: IF (R[191:Last Pal in Srvc]<>2),R[166:Calc Motn Cnt]=(75) ; 47: IF (R[191:Last Pal in Srvc]=2),R[166:Calc Motn Cnt]=(25) ; 48: ; 49:L PR[48:CalcZPos 1] max_speed CNT R[166:Calc Motn Cnt] ; 50: R[20:Cur Robot Posn]=7 ; 51: ; 52: !Via Motn UTOOL ; 53: UTOOL_NUM=7 ; 54: ; 55: !Infeed Via Position ; 56: PR[79:Calc Via Pos]=PR[25:Perch Position] ; 57: PR[79,3:Calc Via Pos]=PR[48,3:CalcZPos 1] ; 58: PR[79,6:Calc Via Pos]=PR[1,6:Infeed Unit Posn] ; 59: ; 60: PR[99:Scratch JPOS]=JPOS-JPOS ; 61: CALL GETJPOS(79,99) ; 62: PR[98:Scratch JPOS]=JPOS ; 63: PR[98,2:Scratch JPOS]=PR[99,2:Scratch JPOS] ; 64: PR[98,3:Scratch JPOS]=PR[99,3:Scratch JPOS] ; 65: CALL GETJPOS(49,99) ; 66: PR[98,1:Scratch JPOS]=PR[99,1:Scratch JPOS] ; 67: PR[98,4:Scratch JPOS]=PR[99,4:Scratch JPOS] ; 68: !Move to Pre Appr Position ; 69:J PR[98:Scratch JPOS] 100% CNT50 ; 70: ; 71: !Picking Motn UTOOL ; 72: UTOOL_NUM=1 ; 73: ; 74: LBL[5:Inf Motn] ; 75: ; 76: !Sig PrePicking Infeed ; 77: IF (R[1:Current Cycle]=1),DO[230:OFF:Inf1 PrePicking]=(ON) ; 78: IF (R[1:Current Cycle]=2),DO[294:OFF:Inf2 PrePicking]=(ON) ; 79: ; 80: !Infeed Approach Position ; 81:J PR[49:CalcZpos 2] 100% CNT50 ; 82: R[20:Cur Robot Posn]=2 ; 83: !Clr Last Pal Srvc ; 84: R[191:Last Pal in Srvc]=0 ; 85: ; 86: LBL[9] ; 87: R[145:Collision Mon]=0 ; 88: MONITOR COL_COND ; 89: ; 90: !Appr Z Offset ; 91: TOOL_OFFSET CONDITION PR[23:Pick Offset] ; 92: PR[23,3:Pick Offset]=(-100) ; 93: SKIP CONDITION R[145:Collision Mon]=1 OR ERR_NUM=11050 ; 94:L PR[1:Infeed Unit Posn] 3000mm/sec CNT50 Tool_Offset Skip,LBL[10] ; 95: !Collision Detected ; 96: JMP LBL[900] ; 97: LBL[10] ; 98: ; 99: IF R[111:Col Rcvry Active]=0,JMP LBL[15] ; 100: !Post Collision Motion Speed ; 101: $MCR_GRP[1].$PRGOVERRIDE=25 ; 102: ; 103: LBL[15] ; 104: IF (R[1:Current Cycle]=1),GO[17:0:Ldpos1 QtyPlaced]=(R[9:Cur TotUnitsPick]) ; 105: IF (R[1:Current Cycle]=2),GO[20:0:Ldpos2 QtyPlaced]=(R[9:Cur TotUnitsPick]) ; 106: $WAITTMOUT=600 ; 107: !Verify Vacuum Ready ; 108: WAIT DI[168:OFF:Vacuum Ready]=ON TIMEOUT,LBL[20] ; 109: ; 110: !Check Dry Cycle ; 111: IF R[198:Dry Cycle]>0,JMP LBL[25] ; 112: ; 113: !Select Current Infeed ; 114: SELECT R[3:Current Infeed]=1,JMP LBL[16] ; 115: ELSE,JMP LBL[17] ; 116: ; 117: LBL[16] ; 118: $WAITTMOUT=600 ; 119: !Verify Pick Ready Sig ; 120: WAIT DI[219:OFF:Inf1 Pick Ready ]=ON TIMEOUT,LBL[20] ; 121: JMP LBL[25] ; 122: ; 123: LBL[17] ; 124: $WAITTMOUT=600 ; 125: !Verify Pick Ready Sig ; 126: WAIT DI[267:OFF:Inf2 Pick Ready ]=ON TIMEOUT,LBL[20] ; 127: JMP LBL[25] ; 128: ; 129: LBL[20:Pik Not Rdy] ; 130: CALL VAC_OFF ; 131: !Move Clear ; 132:L PR[49:CalcZpos 2] 1000mm/sec CNT5 ; 133: R[20:Cur Robot Posn]=2 ; 134: !Above Infeed ; 135: DO[136:OFF:Above Infeed]=ON ; 136: !Clear of Infeed ; 137: DO[228:OFF:Inf1 Bot Clr]=ON ; 138: DO[292:OFF:Inf2 Bot Clr]=ON ; 139: ; 140: !Inf Squaring Device Not Ret ; 141: IF (!F[10:ON :Mon InfSqrFlt]),JMP LBL[901] ; 142: GO[3:0:Robot Error Msg]=10 ; 143: !Robot Assist AH ; 144: DO[160:OFF:Req Assist AH]=ON ; 145: UALM[10] ; 146: !Robot Assist AH ; 147: DO[160:OFF:Req Assist AH]=OFF ; 148: !Clear Msg ; 149: GO[3:0:Robot Error Msg]=0 ; 150: F[10:ON :Mon InfSqrFlt]=(OFF) ; 151: JMP LBL[901] ; 152: ; 153: LBL[25:Move to Pick] ; 154: SKIP CONDITION R[145:Collision Mon]=1 OR ERR_NUM=11050 ; 155:L PR[1:Infeed Unit Posn] 1000mm/sec CNT5 Skip,LBL[50] ; 156: !Collision Detected ; 157: JMP LBL[900] ; 158: ; 159: LBL[50:Pick Prod] ; 160: R[20:Cur Robot Posn]=3 ; 161: CALL GRIP_IO ; 162: RO[1:OFF:Vacuum Off]=ON ; 163: ; 164: !Verify Square Retracted ; 165: F[10:ON :Mon InfSqrFlt]=(ON) ; 166: !Select Current Infeed ; 167: SELECT R[3:Current Infeed]=1,JMP LBL[56] ; 168: ELSE,JMP LBL[57] ; 169: ; 170: LBL[56] ; 171: !Sig Picking Infeed ; 172: DO[231:OFF:Inf1 Picking]=ON ; 173: $WAITTMOUT=600 ; 174: !Verify Square Retracted ; 175: WAIT DI[220:ON :Inf1 Square Ret]=ON TIMEOUT,LBL[20] ; 176: JMP LBL[60] ; 177: ; 178: LBL[57] ; 179: !Sig Picking Infeed ; 180: DO[295:OFF:Inf2 Picking]=ON ; 181: $WAITTMOUT=600 ; 182: !Verify Square Retracted ; 183: WAIT DI[268:ON :Inf2 Square Ret]=ON TIMEOUT,LBL[20] ; 184: JMP LBL[60] ; 185: ; 186: LBL[60] ; 187: !Payload w/Prod ; 188: PAYLOAD[2:With Product] ; 189: WAIT .80(sec) ; 190: ; 191: !Chk Collision Status ; 192: IF R[145:Collision Mon]<>0,JMP LBL[900] ; 193: MONITOR END COL_COND ; 194: JMP LBL[1000] ; 195: ; 196: LBL[900:Col Detected] ; 197: CALL VAC_OFF ; 198: !Inf Collision Recovery ; 199: CALL COL_MOTN ; 200: WAIT .50(sec) ; 201: LBL[901] ; 202: MONITOR END COL_COND ; 203: !Pick Bypassed ; 204: R[112:Pick bypass Pntr]=1 ; 205: ; 206: LBL[1000:Exit] ;
-
Code: Grip_IO
Display More3: !PalletTool 8.30P/21 PT Turbo ; 4: ; 5: ; 6: RO[2:OFF:Zone 2]=OFF ; 7: ; 8: !Select Gripper ; 9: SELECT R[7:Current Gripper]=3,JMP LBL[3] ; 10: =5,JMP LBL[5] ; 11: =6,JMP LBL[6] ; 12: =7,JMP LBL[7] ; 13: =10,JMP LBL[10] ; 14: ELSE,JMP LBL[1000] ; 15: ; 16: LBL[3:Double] ; 17: LBL[5:Triple] ; 18: IF R[9:Cur TotUnitsPick]=1,JMP LBL[900] ; 19: JMP LBL[1000] ; 20: ; 21: LBL[6:Cust Grp1] ; 22: !Config for 5 Case ; 23: IF R[9:Cur TotUnitsPick]<=2,JMP LBL[900] ; 24: JMP LBL[1000] ; 25: ; 26: LBL[7:Cust Grp2] ; 27: IF (!F[31:OFF:Offset Infeed 1] AND R[1:Current Cycle]=1),JMP LBL[1000] ; 28: IF (!F[32:ON :Offset Infeed 2] AND R[1:Current Cycle]=2),JMP LBL[1000] ; 29: IF R[9:Cur TotUnitsPick]=1,JMP LBL[900] ; 30: IF R[9:Cur TotUnitsPick]=2 AND R[2:Current Unitload]=107,JMP LBL[900] ; 31: JMP LBL[1000] ; 32: ; 33: LBL[10:Multi] ; 34: !Config for 4 Case ; 35: IF R[9:Cur TotUnitsPick]<=2,JMP LBL[900] ; 36: JMP LBL[1000] ; 37: ; 38: LBL[900:Disable Zn] ; 39: RO[2:OFF:Zone 2]=ON ; 40: ; 41: LBL[1000:Exit] ;
-
I’m still looking to do it programming wise so how would I change it to spin 180 before picking
-
Would I be able to spin the gripper head 180 degrees for certain unit loads
-
It is a palletizing cell and when two boxes 1 and 2 come in the infeed I want to pick both and drop box(2) first in one location and box(1) in another location. The vacuum gripper has a zone that can close but it is above box #2. I have no way of turning off zone 1 where box 1 is without dropping box 2 as well
-
I have a double gripper but one zone is controlled by the main vacuum and the second is a solenoid. How can I pick up box 1 and 2 from the infeed but drop the second box first, (close the solenoid to drop it) then move to the 1st box position then close the vacuum. I have figured out the pick, close the solenoid, move to next location but the boxes are flipped
-
what program files do you need to see
-
Hello I have a palletizing cell. currently I have a robot that has a 2 zone gripper head (one always on and one controlled by a pneumatic valve). For a one pick box it closes one zone and off sets it slightly to the open zone. There are two one picks in a row. For a two box pick it centers in the head and picks both boxes and has both zones open. I would like to change to have both one picks box into a single cycle and drop one box with the valve and then move to the next pick location. What programs do I need to change or post on here to help. THANK YOU
-
I have one unit load where the gate to release more boxes into the infeed is slower than the rest. How would I be able to increase the speed of the gate because it is too slow and allowing more boxes in while it’s closing
-
I am trying to change the offset so it is more centered on the 1st zone of the 2 zone gripper. What variable would I Change?
6: !Select Gripper ;
7: SELECT R[7:Current Gripper]=6,JMP LBL[6] ;
8: =7,JMP LBL[7] ;
9: ELSE,JMP LBL[100] ;
10: ;
11: LBL[6:Cust Grp1] ;
12: !Initialize Custom Gripper 1 ;
13: !Calculated as a 5 Case Gripper ;
14: ;
15: R[58:Pal Num for Dims]=R[1:Current Cycle] ;
16: Get Unit Stats ;
17: !R[59] unit length ;
18: !R[60] unit width ;
19: !R[61] unit height ;
20: IF (R[62:Status Returned]<>0),JMP LBL[999] ;
21: ;
22: !Boxes Picked WonL ;
23: ;
24: !Utool3 (Center of Grip) ;
25: PR[73:Calc Utool3]=PR[65:Cal Pos Offset] ;
26: PR[73,3:Calc Utool3]=347 ;
27: !Utool1 ;
28: PR[71:Calc Utool1]=PR[73:Calc Utool3] ;
29: PR[71,1:Calc Utool1]=2*R[60:Y Value Returned] ;
30: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ;
31: !Utool2 ;
32: PR[72:Calc Utool2]=PR[73:Calc Utool3] ;
33: PR[72,1:Calc Utool2]=R[60:Y Value Returned] ;
34: PR[72,1:Calc Utool2]=PR[72,1:Calc Utool2]*(-1) ;
35: !Utool4 ;
36: PR[74:Calc Utool4]=PR[73:Calc Utool3] ;
37: PR[74,1:Calc Utool4]=R[60:Y Value Returned] ;
38: !Utool5 ;
39: PR[75:Calc Utool5]=PR[73:Calc Utool3] ;
40: PR[75,1:Calc Utool5]=2*R[60:Y Value Returned] ;
41: ;
42: UTOOL[1:Gripper]=PR[71:Calc Utool1] ;
43: UTOOL[2]=PR[72:Calc Utool2] ;
44: UTOOL[3]=PR[73:Calc Utool3] ;
45: UTOOL[4]=PR[74:Calc Utool4] ;
46: UTOOL[5]=PR[75:Calc Utool5] ;
47: JMP LBL[500] ;
48: ;
49: LBL[7] ;
50: !Initialize Custom Gripper 2 ;
51: !Calculated as center picking ;
52: ;
53: R[58:Pal Num for Dims]=R[1:Current Cycle] ;
54: Get Unit Stats ;
55: !R[59] unit length ;
56: !R[60] unit width ;
57: !R[61] unit height ;
58: IF (R[62:Status Returned]<>0),JMP LBL[999] ;
59: ;
60: !Boxes Picked WonL ;
61: ;
62: PR[71:Calc Utool1]=PR[65:Cal Pos Offset] ;
63: PR[71,3:Calc Utool1]=347 ;
64: !Center Picking Or Not? ;
65: IF (F[31:OFF:Offset Infeed 1] AND R[9:Cur TotUnitsPick]=1 AND R[1:Current Cycle]=1),JMP LBL[701] ;
66: IF (F[32:ON :Offset Infeed 2] AND R[9:Cur TotUnitsPick]=1 AND R[1:Current Cycle]=2),JMP LBL[701] ;
67: IF (F[31:OFF:Offset Infeed 1] AND R[9:Cur TotUnitsPick]=2 AND R[1:Current Cycle]=1),JMP LBL[702] ;
68: IF (F[32:ON :Offset Infeed 2] AND R[9:Cur TotUnitsPick]=2 AND R[1:Current Cycle]=2),JMP LBL[702] ;
69: LBL[555] ;
70: !Utool1 ;
71: R[107:Scratch]=((R[9:Cur TotUnitsPick]*.5)*R[60:Y Value Returned]+R[181:ZW_TEMP]) ;
72: R[107:Scratch]=(R[107:Scratch])-(R[60:Y Value Returned]/2) ;
73: PR[71,1:Calc Utool1]=R[107:Scratch] ;
74: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ;
75: ;
76: UTOOL[1:Gripper]=PR[71:Calc Utool1] ;
77: JMP LBL[500] ;
78: LBL[701] ;
79: !Not Center Picking For Single Ca ;
80: R[107:Scratch]=((R[9:Cur TotUnitsPick]*1)*R[60:Y Value Returned]+R[181:ZW_TEMP]) ;
81: R[107:Scratch]=(R[107:Scratch])-(R[60:Y Value Returned]/2) ;
82: PR[71,1:Calc Utool1]=R[107:Scratch] ;
83: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ;
84: ;
85: UTOOL[1:Gripper]=PR[71:Calc Utool1] ;
86: JMP LBL[500] ;
87: ;
88: LBL[702] ;
89: IF R[2:Current Unitload]<>107,JMP LBL[555] ;
90: !Not Center Picking For Single Ca ;
91: R[107:Scratch]=((R[9:Cur TotUnitsPick])*R[60:Y Value Returned]+R[181:ZW_TEMP]) ;
92: R[107:Scratch]=(R[107:Scratch])-(R[60:Y Value Returned]/2) ;
93: PR[71,1:Calc Utool1]=R[107:Scratch] ;
94: PR[71,1:Calc Utool1]=PR[71,1:Calc Utool1]*(-1) ;
95: ;
96: UTOOL[1:Gripper]=PR[71:Calc Utool1] ;
97: JMP LBL[500] ;
98: ;
99: LBL[100:PTT Calc] ;
100: !Initialize Standard UTOOLs ;
101: UTOOL[1:Gripper]=PR[17:UTOOL 1] ;
102: UTOOL[2]=PR[18:UTOOL 2] ;
103: UTOOL[3]=PR[19:UTOOL 3] ;
104: UTOOL[4]=PR[20:UTOOL 4] ;
105: UTOOL[5]=PR[21:UTOOL 5] ;
106: UTOOL[6]=PR[22:UTOOL 6] ;
107: ;
108: LBL[500] ;
109: !Update Via Motn Utool ;
110: PR[78:Calc Via Utool]=UTOOL[1:Gripper] ;
111: PR[78,1:Calc Via Utool]=0 ;
112: PR[78,2:Calc Via Utool]=0 ;
113: UTOOL[7]=PR[78:Calc Via Utool] ;
114: ;
115: !Update Null Utool ;
116: UTOOL[10]=PR[65:Cal Pos Offset] ;
117: JMP LBL[1000] ;
118: ;
119: LBL[999] ;
120: !Get Unit Stats Call Failed ;
121: !SETUTOOL.TP Error ;
122: GO[3:0:Robot Error Msg]=5 ;
123: !Robot Assist AH ;
124: DO[160:OFF:Req Assist AH]=ON ;
125: UALM[5] ;
126: CALL HMIABRT ;
127: ;
128: LBL[1000:Exit] ;
-
Yes it is a two zone gripper but for single boxes or for multiple it picks in the center. How would I be able to change the offset of the pick and be able to control each zone. There is a F[30]= on/off on the pick configuration that’s “single box offset “ but I’m not sure how to control or see what that does. I’d like to have it pick up in the center of one of the zones not the center of the gripper and only active the one zone to add more vacuum pressure.
-
Is it possible to change the pick position for one cycle when it only picks one box and keep the same position currently for other cycles that have three boxes. All in the same unit load
-
I have a robot that uses palletpro and a large two zone head but it is only configured for all or none vacuum. The robot is fine picking up several boxes at once but at high speeds has trouble with picking up a single box and if it does the speed of the rotation flings the box off or when it sets it down on the pallet it gets flipped on set on the side.