Looping with external alignments for a multi part setup

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

  • Looping with external alignments for a multi part setup

    I’ve tried to look through previous threads but I can’t quite figure out the answer to my problem. My problem is if I’m running 4 parts with 4 fixtures that don’t locate exactly where would I place that code in the loop or is there any easier route like just using an alignment offset?

    I run my part on fixture 1 and measures great. Loop to fixture 2 readout is not sure great. Looks like it’s still going off initial alignment of fixture one. Can post code later when I get a chance.

    man aln
    loop
    DCC aln
    Code
    dimensions
    end loop

  • #2
    I do this by making two separate programs. I have a lot of groups in my code, I have opened the ones you need to see.

    Prg 1-> main program.

    Prg 2--> is used to create external alignments for Prg 1. Prg 2 itself is a subroutine (no measurement or movement or anything, JUST ALIGNMENTS being created & saved) that will get CALLED by Prg 1. Once Prg 2 is all set, you'll run Prg 1 and say YES to the subroutine question and then it will have the alignments it needs.

    You're looking at a sample program. In order for it completely work, you have to do a couple of things like move the "UNTIL" portion of the major DO LOOP to the end of the program & move the printing group to the end of the program BUT STILL INSIDE OF THE MAJOR LOOP. This is some upper level stuff but it should give you something to mess with, let me know if you need anything explained & I'll do my best.

    Apparently, PC DMIS has that software called Inspect or Pallet or something that will do a lot of this stuff for you but this is the best way I have found within PCD itself. There are other methods but you have to do funky stuff with your code like locking stuff down with math and other "tricks".




    Prg 1-->
    Code:
    STARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
    ALIGNMENT/END
    GROUP_PROBE_QUALIFICATION=GROUP/SHOWALLPARAMS=NO
    ENDGROUP/ID=GROUP_PROBE_QUALIFICATION
    GROUP_SUBROUTINE_EXTERNAL_ALIGNMENT=GROUP/SHOWALLPARAMS=YES
    QUES_SUB_EXTALIGN =COMMENT/YESNO,NO,FULL SCREEN=YES,AUTO-CONTINUE=NO,
    Do you need to reset the fixture alignment?
    
    
    YES--> If this is first time running prg for the day
    NO--> You're running with no issues
    CANCEL--> Cancel, I need help
    IF_GOTO/QUES_SUB_EXTALIGN.INPUT=="NO",GOTO = LABEL_SKIP_SUBROUTINE
    CS1 =CALLSUB/AG0XXXX_XXX_EXT_ALIGN,:,
    LABEL_SKIP_SUBROUTINE =LABEL/
    ENDGROUP/ID=GROUP_SUBROUTINE_EXTERNAL_ALIGNMENT
    GROUP_PALLET_SETUP_INSTRUCTIONS=GROUP/SHOWALLPARAMS=NO
    ENDGROUP/ID=GROUP_PALLET_SETUP_INSTRUCTIONS
    GROUP_PROGRAMMER_NOTES=GROUP/SHOWALLPARAMS=NO
    ENDGROUP/ID=GROUP_PROGRAMMER_NOTES
    GROUP_SOFTWARE_CONFIGURATION_CONTROL=GROUP/SHOWALLPARAMS=NO
    ENDGROUP/ID=GROUP_SOFTWARE_CONFIGURATION_CONTROL
    GROUP_COUNTPROMPT_AND_SERIALNUMBER=GROUP/SHOWALLPARAMS=YES
    COUNT_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
    How many parts are you inspecting?
    IF_GOTO/LEN(COUNT_PROMPT.INPUT)>2,GOTO = COUNT_PROMPT
    IF_GOTO/COUNT_PROMPT.INPUT>10,GOTO = COUNT_PROMPT
    ASSIGN/TOTAL_PARTS=COUNT_PROMPT.INPUT
    ASSIGN/COUNT=0
    WHILE/COUNT<TOTAL_PARTS
    ASSIGN/COUNT=COUNT+1
    SER_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
    Enter the Serial Number of the
    "part at FIXTURE POSITION# "+COUNT+"
    ASSIGN/SER_NUM[COUNT]=UPPERCASE(SER_PROMPT.INPUT)
    END_WHILE/
    RUN_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
    Please enter run number
    IF_GOTO/RUN_PROMPT.INPUT<1 OR RUN_PROMPT.INPUT>9999,GOTO = RUN_PROMPT
    IF_GOTO/LEN(RUN_PROMPT.INPUT)>4,GOTO = RUN_PROMPT
    ASSIGN/VAR_RUNNUMBER=FORMAT("%04d",INT(RUN_PROMPT.INPUT))
    ENDGROUP/ID=GROUP_COUNTPROMPT_AND_SERIALNUMBER
    GROUP_FOD =GROUP/SHOWALLPARAMS=NO
    ENDGROUP/ID=GROUP_FOD
    GROUP_SETUP_INSTRUCTIONS=GROUP/SHOWALLPARAMS=NO
    ENDGROUP/ID=GROUP_SETUP_INSTRUCTIONS
    GROUP_PRINT_COMMANDS=GROUP/SHOWALLPARAMS=YES
    ASSIGN/CURRENTOOT=GETPROGRAMINFO("NUMOOT")
    ASSIGN/RUNOOT=CURRENTOOT-BASELINE
    ASSIGN/PROG_NAME=GETPROGRAMINFO ("PARTNAME")
    ASSIGN/DATE=STR(SYSTEMDATE ("dMMMyyyy"))
    ASSIGN/TIME=STR(SYSTEMTIME ("HHmmss"))
    ASSIGN/REJECT="____REJECT___"
    IF/RUNOOT=="0"
    ASSIGN/REPORT_NAME="O:\\CMM PROGRAMS\\CMM_PDF_PC DMIS\\AG0OFFLINETEST\\"+PROG_NAME+"__"+SER_NUM[CURR_POS]+"__"+VAR_RUNNUMBER+"__"+DATE+"__"+TIME+"__.PDF "
    END_IF/
    ELSE/
    ASSIGN/REPORT_NAME="O:\\CMM PROGRAMS\\CMM_PDF_PC DMIS\\AG0OFFLINETEST\\"+PROG_NAME+"__"+SER_NUM[CURR_POS]+"__"+VAR_RUNNUMBER+"__"+DATE+"__"+TIME+"__"+REJEC T+".PDF"
    END_ELSE/
    PRINT/REPORT,EXEC MODE=END,$
    TO_FILE=ON,AUTO=1,AUTO OPEN=OFF,$
    TO_PRINTER=OFF,COPIES=1,$
    TO_DMIS_REPORT=OFF,FILE_OPTION=OVERWRITE,FILENAME= REPORT_NAME,$
    REPORT_THEORETICALS=NONE,REPORT_FEATURE_WITH_DIMEN SIONS=NO,$
    TO_EXCEL=OFF,$
    PREVIOUS_RUNS=KEEP_INSTANCES
    ASSIGN/BASELINE=CURRENTOOT
    ENDGROUP/ID=GROUP_PRINT_COMMANDS
    ASSIGN/CURR_POS=0
    ASSIGN/BASELINE=0
    DO/
    UNTIL/CURR_POS==TOTAL_PARTS
    ASSIGN/CURR_POS=CURR_POS+1
    COMMENT/REPT,
    
    COMMENT/REPT,
    "Serial Number: "+SER_NUM[CURR_POS]
    COMMENT/REPT,
    "Run Number: "+VAR_RUNNUMBER
    IF/CLEANQUESTION.INPUT=="YES"
    COMMENT/REPT,
    "Operator states that part was FOD free prior to CMM measurement."
    COMMENT/REPT,
    
    END_IF/
    ELSE/
    COMMENT/REPT,
    "ALERT! Part was contaminated with FOD. The CMM's dimensional output may be incorrect."
    COMMENT/REPT,
    
    END_ELSE/
    SELECT/CURR_POS
    CASE/1
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_1
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/2
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_2
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/3
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_3
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/4
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_4
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/5
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_5
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/6
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_6
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/7
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_7
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/8
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_8
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/9
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_9
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    CASE/10
    RECALL/ALIGNMENT,EXTERNAL,ALI_EXT_PALLET_10
    SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
    END_CASE/
    END_SELECT/
    WORKPLANE/ZPLUS
    RECALL/ALIGNMENT,EXTERNAL,CUR
    $$ NO,
    __________________________________________________ _________________________
    
    
    
    
    
    
    
    
    
    Program Goes Here-->
    
    
    
    
    
    
    
    
    `

    Prg 2-->

    Code:
    STARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
    ALIGNMENT/END
    SUBROUTINE/ALIGN_PRG_AG0XXXX_XXX,
    =
    LOADPROBE/7107_Y_3X40
    TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
    WORKPLANE/ZPLUS
    MODE/DCC
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_1=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_1=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_1
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_1
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_1.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_2=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_2=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_2
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_2
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_2.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_3=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_3=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_3
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_3
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_3.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_4=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_4=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_4
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_4
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_4.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_5=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_5=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_5
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_5
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_5.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_6=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_6=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_6
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_6
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_6.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_7=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_7=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_7
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_7
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_7.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_8=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_8=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_8
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_8
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_8.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_9=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_9=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_9
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_9
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_9.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    PALLET_POS_10=GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0*1,0*1,0*1>,$
    MEAS/XYZ,<0*1,0*1,0*1>,$
    NOM/IJK,<0*1,0*1,1*1>,$
    MEAS/IJK,<0*1,0*1,1*1>
    ALI_EXT_PALLET_10=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PALLET_POS_10
    ALIGNMENT/TRANS,YAXIS,PALLET_POS_10
    ALIGNMENT/END
    SAVE/ALIGNMENT,ALI_EXT_PALLET_10.aln,MACHINETOPARTS
    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
    ENDSUB/
    I recently did a 6 station prg, part(s) resting on magnets

    Capture.JPG
    Last edited by DAN_M; 03-16-2021, 07:55 AM.
    SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

    Comment


    • #3
      I will study it in more detail. Just alot to digest never used subs or if/then or case.

      Comment


      • DAN_M
        DAN_M commented
        Editing a comment
        I will give you as much help as I can....but you're REALLY REALLY going to struggle if you don't have a solid foundation with level 3 PC DMIS concepts. Took me a year to develop this stuff AFTER having Hex instructors help me with it.

    • #4
      I do something similar with 2 programs, but because the parts will be loaded in the same places in the machine each time I have one program make the alignments and only run that program once. My alignment files end up being named partnumber_1.aln, partnumber_2.aln, etc. So in the example below, 123456_1.aln, 123456_2.aln, etc. The main part of the measurement program for 32 parts looks like this:

      Code:
      ASSIGN/PART=1
      IF/(PART<1) OR (PART>32)
      GOTO/END
      END_IF/
      ASSIGN/V1=0
      WHILE/PART<33
      ASSIGN/ALNFILE="123456_"+PART
      RECALL/ALIGNMENT,EXTERNAL,ALNFILE
      $$ NO,
      
      measurement routine goes here...
      
      PRINT/REPORT,EXEC MODE=END,$
      TO_FILE=OFF,AUTO=1,AUTO OPEN=OFF,$
      TO_PRINTER=ON,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
      L2 =LABEL/
      ASSIGN/PART=PART+1
      END_WHILE/
      END =LABEL/

      Comment


      • #5
        I do my offset alignments with counters and array variables to set the offsets.
        Code:
        ASSIGN/QTY_1=
        ASSIGN/CNT_1=1
        Array of offsets
        Code:
        MAN_ABC_AL =ALIGNMENT/START,RECALL:MAN_AB_AL,LIST=YES
        ALIGNMENT/LEVEL,XPLUS,MAN_A_PLN
        ALIGNMENT/ROTATE_CIRCLE,ZPLUS,TO,MAN_B_CIR,AND,MAN_C_PNT,ABO UT,XPLUS
        ALIGNMENT/ROTATE_OFFSET,16.81,ABOUT,XPLUS
        ALIGNMENT/TRANS,YAXIS,MAN_B_CIR
        ALIGNMENT/TRANS,ZAXIS,MAN_B_CIR
        ALIGNMENT/TRANS,XAXIS,MAN_A_PLN
        ALIGNMENT/END
        SAVE/ALIGNMENT,Subaru_MAN_ABC_AL.aln,MACHINETOPARTS
        ASSIGN/X_OFFSET=ARRAY(0,0,0,0,-165.2,-165.2)
        ASSIGN/Y_OFFSET=ARRAY(0,139.5,279,418.5,279,418.5)
        OFFSET_AL1 =ALIGNMENT/START,RECALL:MAN_ABC_AL,LIST=YES
        ALIGNMENT/TRANS_OFFSET,XAXIS,X_OFFSET[CNT_1]
        ALIGNMENT/TRANS_OFFSET,YAXIS,Y_OFFSET[CNT_1]
        ALIGNMENT/END
        SAVE/ALIGNMENT,Subaru_OFFSET_AL.aln,MACHINETOPARTS
        IF/CNT_1==1
        RECALL/ALIGNMENT,EXTERNAL,SUBARU_MAN_ABC_AL
        END_IF/
        IF/CNT_1<>1
        RECALL/ALIGNMENT,EXTERNAL,SUBARU_OFFSET_AL
        END_IF/
        Just another option

        Comment


        • #6
          Originally posted by BKulpa View Post
          I do my offset alignments with counters and array variables to set the offsets.
          Code:
          ASSIGN/QTY_1=
          ASSIGN/CNT_1=1
          Array of offsets
          Code:
          MAN_ABC_AL =ALIGNMENT/START,RECALL:MAN_AB_AL,LIST=YES
          ALIGNMENT/LEVEL,XPLUS,MAN_A_PLN
          ALIGNMENT/ROTATE_CIRCLE,ZPLUS,TO,MAN_B_CIR,AND,MAN_C_PNT,ABO UT,XPLUS
          ALIGNMENT/ROTATE_OFFSET,16.81,ABOUT,XPLUS
          ALIGNMENT/TRANS,YAXIS,MAN_B_CIR
          ALIGNMENT/TRANS,ZAXIS,MAN_B_CIR
          ALIGNMENT/TRANS,XAXIS,MAN_A_PLN
          ALIGNMENT/END
          SAVE/ALIGNMENT,Subaru_MAN_ABC_AL.aln,MACHINETOPARTS
          ASSIGN/X_OFFSET=ARRAY(0,0,0,0,-165.2,-165.2)
          ASSIGN/Y_OFFSET=ARRAY(0,139.5,279,418.5,279,418.5)
          OFFSET_AL1 =ALIGNMENT/START,RECALL:MAN_ABC_AL,LIST=YES
          ALIGNMENT/TRANS_OFFSET,XAXIS,X_OFFSET[CNT_1]
          ALIGNMENT/TRANS_OFFSET,YAXIS,Y_OFFSET[CNT_1]
          ALIGNMENT/END
          SAVE/ALIGNMENT,Subaru_OFFSET_AL.aln,MACHINETOPARTS
          IF/CNT_1==1
          RECALL/ALIGNMENT,EXTERNAL,SUBARU_MAN_ABC_AL
          END_IF/
          IF/CNT_1<>1
          RECALL/ALIGNMENT,EXTERNAL,SUBARU_OFFSET_AL
          END_IF/
          Just another option
          I like the use of arrays, cool stuff!!

          Do you have to lock all of your nominal values AFTER the alignment with a "+0" or "*1" ?
          SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

          Comment


          • BKulpa
            BKulpa commented
            Editing a comment
            No, I don't. I usually have to change my coordinate system to match the machining center's coordinate system anyway. The I have to put in extra text fields so the operators and techs don't have to think about the machine offsets.
            PHDs all, that's PUSH HERE DUMMY!

          • DAN_M
            DAN_M commented
            Editing a comment
            Awesome! I am going to try this later but instead of using IF statements for the alignment, I am going to use SELECT & CASE based off of my counting variable

        • #7
          Originally posted by Irongrid View Post
          I’ve tried to look through previous threads but I can’t quite figure out the answer to my problem. My problem is if I’m running 4 parts with 4 fixtures that don’t locate exactly where would I place that code in the loop or is there any easier route like just using an alignment offset?
          I just saw that your first question wasn't answered. My parts don't load exactly the same way each time and I often run up to 90 parts lights out. There is no benefit to me loading the parts with exactly the same timing, it would cost me time, and since the parts are run lights out, I just spend a couple extra seconds locating the parts in the program. I have a rough part alignment that picks up the part with a long prehit and retract (~.300") before the part alignment I use to measure the part. I pick up a plane and 2 large holes during the rough alignment. They aren't necessarily the datums I use for alignment, but are big enough that the machine won't miss them if the part isn't loaded perfectly.

          Comment


          • #8
            Originally posted by ctw00 View Post

            I just saw that your first question wasn't answered. My parts don't load exactly the same way each time and I often run up to 90 parts lights out. There is no benefit to me loading the parts with exactly the same timing, it would cost me time, and since the parts are run lights out, I just spend a couple extra seconds locating the parts in the program. I have a rough part alignment that picks up the part with a long prehit and retract (~.300") before the part alignment I use to measure the part. I pick up a plane and 2 large holes during the rough alignment. They aren't necessarily the datums I use for alignment, but are big enough that the machine won't miss them if the part isn't loaded perfectly.
            We all do the same, sorry I didn't add that, thought it was implied
            SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

            Comment

            Related Topics

            Collapse

            Working...
            X