Pallet looping goes back to station 1

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Pallet looping goes back to station 1

    I created a program offline and then set the program up to run on a pallet fixture with 6 part locations.

    When I run the program in station 1 everything works fine, when I put the part in any other station say 2 and recall the external alignment for that station the cmm will initially move to that station because there is a move point as the first line of code, after the the program will move back to station 1.

    when I look at my nominals they are all changed to reflect the current alignment from say station 2.

    eg. Station 2 is physically +100 in X and + 100 in y, them my changed nominals will read -100 in X and -100 in Y.

    i know I can use the *1 after every nominal and target value but I want to know what is causing this, am I missing a setting or something.

    TIA
    3.7mr3CAD++ / 2011mr1CAD++/2012mr1CAD++/QUINDOS7

  • #2
    I don't know what you're doing..but here go nuts!

    Operator types in all serial numbers up front, loads them onto the correct spot on the fixture, then walks away. Everything is tied to external alignment on the fixture plate.

    This is my sample code, add/subtract pallet positions to make it work for you.

    Code:
    STARTUP    =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
                ALIGNMENT/END
                WORKPLANE/ZPLUS
                LOADPROBE/7107_Y_1BY20
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
    COUNT_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
                How many parts are you inspecting?
    $$ NO,
                ~
                ~
                ~
                ADD STUFF RIGHT HERE TO LOCK DOWN THE NUMBER THEY'RE ALLOWED TO TYPE IN
                FOR THE "COUNT_PROMPT" (ABOVE). LOOP BACK TO "COUNT_PROMPT" IF THEY MESS UP.
                ~
                ~
                ~
                ASSIGN/TOTAL_PARTS=COUNT_PROMPT.INPUT
                ASSIGN/SER=0
                WHILE/SER<TOTAL_PARTS
                  ASSIGN/SER=SER+1
    SER_PROMPT   =COMMENT/INPUT,NO,FULL SCREEN=NO,
                  Please enter the serial number of the
                  "part at Pallet Position "+SER+"."
      $$ NO,
                  ~
                  ~
                  ~
                  ADD STUFF RIGHT HERE TO LOCK DOWN THE NUMBER THEY'RE ALLOWED TO TYPE IN
                  FOR THE "SER_PROMPT" (ABOVE). LOOP BACK TO "SER_PROMPT" IF THEY MESS UP.
                  ~
                  ~
                  ~
                  ASSIGN/SER_NUM[SER]=SER_PROMPT.INPUT
                END_WHILE/
                ASSIGN/CONFIRMCOUNTSTATEMENT="Are there "+COUNT_PROMPT.INPUT+" parts on the table?"
    CONFIRM_COUNT =COMMENT/YESNO,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
                CONFIRMCOUNTSTATEMENT
    CONFIRM_LOCATIONS =COMMENT/YESNO,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
                Are the part(s) in the correct location(s)?
                IF_GOTO/CONFIRM_LOCATIONS.INPUT=="NO" OR CONFIRM_COUNT.INPUT=="NO",GOTO = COUNT_PROMPT
                RECALL/ALIGNMENT,EXTERNAL,FIXT_ALN_FAKE
    $$ NO,
                Pallet Handling
                ---------------
                ASSIGN/PALLET_POS[1]=MPOINT(0,0,0)
                ASSIGN/PALLET_POS[2]=MPOINT(6,0,0)
                ASSIGN/PALLET_POS[3]=MPOINT(12,0,0)
                ASSIGN/PALLET_POS[4]=MPOINT(0,6,0)
                ASSIGN/PALLET_POS[5]=MPOINT(6,6,0)
                ASSIGN/PALLET_POS[6]=MPOINT(12,6,0)
                ASSIGN/PALLET_POS[7]=MPOINT(0,12,0)
                ASSIGN/PALLET_POS[8]=MPOINT(6,12,0)
                ASSIGN/PALLET_POS[9]=MPOINT(12,12,0)
    $$ NO,
                Inspection Loop
                ---------------
                ASSIGN/CURR_POS=0
                WHILE/CURR_POS<TOTAL_PARTS
                  ASSIGN/CURR_POS=CURR_POS+1
      $$ NO,
                  Report Header
                  -------------
                  COMMENT/REPT,
                  "Serial Number: "+SER_NUM[CURR_POS]
      $$ NO,
                  Pallet Position Offset (PO)
                  ASSIGN/PO=PALLET_POS[CURR_POS]
    PO_PNT       =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                  NOM/XYZ,<0*1,0*1,0*1>,$
                  MEAS/XYZ,<PO.X,PO.Y,PO.Z>,$
                  NOM/IJK,<0*1,0*1,1*1>,$
                  MEAS/IJK,<0*1,0*1,1*1>
    INIT_ALN     =ALIGNMENT/START,RECALL:FIXT_ALN_FAKE,LIST=YES
                    ALIGNMENT/TRANS,XAXIS,PO_PNT
                    ALIGNMENT/TRANS,YAXIS,PO_PNT
                    ALIGNMENT/TRANS,ZAXIS,PO_PNT
                  ALIGNMENT/END
      $$ NO,
                  Print Report
                  ASSIGN/PRGNAME="PALLET_PRG_SAMPLE"
                  ASSIGN/RPTPATH="O:\\CMM PROGRAMS\\PCDMIS\\_NEW CMM PROGRAMS\\___PALLET_PROGRAM_SAMPLE"+"-"+PRGNAME+"-"+SER_PROMPT.INPUT
                  PRINT/REPORT,EXEC MODE=END,$
                    TO_FILE=ON,OVERWRITE=RPTPATH,AUTO OPEN=OFF,$
                    TO_PRINTER=OFF,COPIES=1,$
                    TO_DMIS_REPORT=OFF,FILE_OPTION=INDEX,FILENAME=,$
                    REPORT_THEORETICALS=NONE,REPORT_FEATURE_WITH_DIMENSIONS=NO,$
                    TO_EXCEL=OFF,$
                    PREVIOUS_RUNS=DELETE_INSTANCES
                END_WHILE/
    LABEL_TERMINUS=LABEL/
    Last edited by DAN_M; 12-06-2019, 09:48 AM.

    Comment


    • #3
      Within your looped portion of the routine: do you explicitly base your first alignment off of the external alignment recall, or USE ACTIVE? If not, that's your problem.

      Comment


      • #4
        Under F5
        Uncheck "Reset global settings when branching"

        Comment

        Related Topics

        Collapse

        Working...
        X