Pallet Routine highlight features
Use either Part ID or Pallet Cell (Station) number.
Pattern layouts are Z-Pattern or Linear-Pattern.
Change the start direction.
Skip Cells (Station) Parts.
PART NAME : Pallet Routine Auto count Direction Forum REV NUMBER : 20220816 SER NUMBER : STATS COUNT : 1 STARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES ALIGNMENT/END MODE/MANUAL FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, , LOADPROBE/5BY50_M3_SH TIP/TIP1, SHANKIJK=0, 0, 1, ANGLE=0 $$ NO, Add Manual Part Alignment and Features . $$ NO, Add DCC Part Alignment and Features . TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter Part ID per-part (Ex. 101,107) or enter Same as Cell Count ; partIdNo : Same as Cell Count TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Measurement Pattern Layout ; movePattern : Linear-Pattern TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Select Start direction ; cellRunDirection : X Row TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Rows - X axis ; xRowsTrace : 3 TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Columns - Y axis ; yColumnsTrace : 3 TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each row X ; xCellOffsetRow : 2,3 TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each column Y ; yCellOffsetColumn : 2,3 TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Skip Cells(part Ex.1 or parts Ex.1,2,3) Enter in ascending order ; skipCellTrace : 2,6 TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report skip Cell information? ; skipCellReportInfo : Yes TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report Part ID information? ; partId : Yes ASSIGN/X_AXIS_NUMBER_ROWS=GETTRACEVALUE("xRowsTrace") ASSIGN/Y_AXIS_NUMBER_ROWS=GETTRACEVALUE("yRowsTrace") ASSIGN/X_OFFSET_INPUT=GETTRACEVALUE("xCellOffsetRow") ASSIGN/Y_OFFSET_INPUT=GETTRACEVALUE("yCellOffsetColumn") ASSIGN/X_ROW_OFFSET=0 ASSIGN/Y_COLUMN_OFFSET=0 ASSIGN/Y_COLUMN_UNTIL_CNT=0 ASSIGN/DIRECTION="ONE" ASSIGN/CELL_COUNT=0 ASSIGN/SKIP_CELL_CNT=1 DO/ ASSIGN/Y_COLUMN_UNTIL_CNT=Y_COLUMN_UNTIL_CNT+1 ASSIGN/X_ROW_UNTIL_CNT=0 IF/GETTRACEVALUE("movePattern")=="Z-Pattern" IF/GETTRACEVALUE("cellRunDirection")=="X Row" ASSIGN/X_ROW_OFFSET=0 END_IF/ ELSE/ ASSIGN/Y_COLUMN_OFFSET=0 END_ELSE/ END_IF/ DO/ ASSIGN/X_ROW_UNTIL_CNT=X_ROW_UNTIL_CNT+1 ASSIGN/SKIP_CELL_TRACE=ELEMENT(SKIP_CELL_CNT,",",GETTRACEVALUE("skipCellTrace")) ASSIGN/SKIP_CELL=SKIP_CELL_TRACE ASSIGN/CELL_COUNT=CELL_COUNT+1 IF/CELL_COUNT==SKIP_CELL IF/GETTRACEVALUE("skipCellReportInfo")=="Yes" COMMENT/REPT, "Skip Cell Number: "+CELL_COUNT END_IF/ ASSIGN/SKIP_CELL_CNT=SKIP_CELL_CNT+1 END_IF/ IF_GOTO/CELL_COUNT==SKIP_CELL,GOTO = SKIP_CELL_L1 ASSIGN/SER_NO_TRACE=ELEMENT(CELL_COUNT,",",GETTRACEVALUE("partIdNo")) ASSIGN/SER_NO=SER_NO_TRACE LOOP_ORIGIN =GENERIC/POINT,DEPENDENT,CARTESIAN,$ NOM/XYZ,<0+0,0+0,0+0>,$ MEAS/XYZ,<X_ROW_OFFSET,Y_COLUMN_OFFSET,0+0>,$ NOM/IJK,<0+0,0+0,1+0>,$ MEAS/IJK,<0+0,0+0,1+0> A1 =ALIGNMENT/START,RECALL:USE_ACTIVE_ALIGNMENT(STARTUP),LIST=YES ALIGNMENT/TRANS,XAXIS,LOOP_ORIGIN ALIGNMENT/TRANS,YAXIS,LOOP_ORIGIN ALIGNMENT/END $$ NO, Add Measured Features . F1 =GENERIC/CIRCLE,DEPENDENT,CARTESIAN,OUT,$ NOM/XYZ,<0,0,0>,$ MEAS/XYZ,<0,0,0>,$ NOM/IJK,<0,0,1>,$ MEAS/IJK,<0,0,1>,$ DIAMETER/1,1 COMMENT/REPT, "Cell Count: "+CELL_COUNT IF/GETTRACEVALUE("partId")=="Yes" COMMENT/REPT, "Part ID: "+SER_NO END_IF/ $$ NO, Add Dimensions . DIM LOC1= LOCATION OF CIRCLE F1 UNITS=IN ,$ GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO AX NOMINAL +TOL -TOL MEAS DEV OUTTOL X 0.0000 0.0020 0.0020 0.0000 0.0000 0.0000 ----#---- Y 0.0000 0.0020 0.0020 0.0000 0.0000 0.0000 ----#---- Z 0.0000 0.0020 0.0020 0.0000 0.0000 0.0000 ----#---- END OF DIMENSION LOC1 RECALL/ALIGNMENT,INTERNAL,STARTUP $$ NO, Add Print or File save per-part . SKIP_CELL_L1 =LABEL/ ASSIGN/X_ROW_OFFSET_INPUT=ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow")) ASSIGN/Y_COLUMN_OFFSET_INPUT=ELEMENT(Y_COLUMN_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn")) $$ NO, Routine Settings results - Test - Change from document to operator to validate the Setting results. . "X_ROW_OFFSET_INPUT for next feature is: "+X_ROW_OFFSET_INPUT+" and Current X_ROW_OFFSET: "+X_ROW_OFFSET "X_ROW_UNTIL_CNT: "+X_ROW_UNTIL_CNT "Y_COLUMN_OFFSET_INPUT for next feature is: "+Y_COLUMN_OFFSET_INPUT+" and Current Y_COLUMN_OFFSET: "+Y_COLUMN_OFFSET "Y_COLUMN_UNTIL_CNT: "+Y_COLUMN_UNTIL_CNT "Entered info for X_OFFSET_INPUT: "+X_OFFSET_INPUT+" and Y_OFFSET_INPUT: "+Y_OFFSET_INPUT "Entered info for X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS+" and X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS IF/GETTRACEVALUE("movePattern")=="Z-Pattern" IF/GETTRACEVALUE("cellRunDirection")=="X Row" ASSIGN/X_ROW_OFFSET=X_ROW_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow"))) END_IF/ ELSE/ ASSIGN/Y_COLUMN_OFFSET=Y_COLUMN_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn"))) END_ELSE/ END_IF/ ELSE/ IF/X_ROW_UNTIL_CNT<>ABS(GETTRACEVALUE("xRowsTrace")) IF/GETTRACEVALUE("cellRunDirection")=="X Row" ASSIGN/X_ROW_OFFSET=IF(DIRECTION=="ONE",X_ROW_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow"))),X_ROW_OFFSET-(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow")))) END_IF/ ELSE/ ASSIGN/Y_COLUMN_OFFSET=IF(DIRECTION=="ONE",Y_COLUMN_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn"))),Y_COLUMN_OFFSET-(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn")))) END_ELSE/ ASSIGN/ROW_COMPLETE=IF(DIRECTION=="ONE","LEFT","RIGHT") END_IF/ END_ELSE/ UNTIL/X_ROW_UNTIL_CNT==ABS(GETTRACEVALUE("xRowsTrace")) ASSIGN/X_ROW_OFFSET_INPUT=ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow")) ASSIGN/Y_COLUMN_OFFSET_INPUT=ELEMENT(Y_COLUMN_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn")) $$ NO, Routine Settings results - Test - Change from document to operator to validate the Setting results. . "Y_COLUMN_OFFSET_INPUT for next feature is: "+Y_COLUMN_OFFSET_INPUT+" and Current Y_COLUMN_OFFSET: "+Y_COLUMN_OFFSET "Y_COLUMN_UNTIL_CNT: "+Y_COLUMN_UNTIL_CNT "X_ROW_OFFSET_INPUT for next feature is: "+X_ROW_OFFSET_INPUT+" and Current X_ROW_OFFSET: "+X_ROW_OFFSET "X_ROW_UNTIL_CNT: "+X_ROW_UNTIL_CNT "Entered info for X_OFFSET_INPUT: "+X_OFFSET_INPUT+" and Y_OFFSET_INPUT: "+Y_OFFSET_INPUT "Entered info for X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS+" and X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS ASSIGN/DIRECTION=IF(ROW_COMPLETE=="RIGHT","ONE","TWO") IF/GETTRACEVALUE("cellRunDirection")=="X Row" ASSIGN/Y_COLUMN_OFFSET=Y_COLUMN_OFFSET+(ELEMENT(Y_COLUMN_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn"))) END_IF/ ELSE/ ASSIGN/X_ROW_OFFSET=X_ROW_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow"))) END_ELSE/ $$ NO, Test - Change from document to operator to validate the offset distance. UNTIL/Y_COLUMN_UNTIL_CNT==ABS(GETTRACEVALUE("yColumnsTrace")) ASSIGN/TOTAL_PART_CNT=CELL_COUNT-(SKIP_CELL_CNT-1) COMMENT/REPT, "Total Part Quantity: "+TOTAL_PART_CNT $$ NO, Add append Print or File save .