About Iterative Alignment

This section provides an overview of what iterative alignment does and how DMIS handles it.
  The PPR tree below is an example of inspection activities used with an iterative alignment.

  The loop-on activities would typically be:
  1. Define and measure features.
     

  2. Construct alignment.
     

  3. Calculate deviation (between measure and defined activity of same feature) of alignment features in constructed alignment.
     

  4. Evaluate against threshold value.

  • If one of the actual values is out of the threshold value, redo alignment (re-execute the loop).  Otherwise, continue.

  • If the maximum counter is reached, exit the loop.
The last 2 steps are only happening at the CMM. In the process document, we are dealing with nominal data (perfect dimensions). Therefore, the calculated deviation is always null and the loop will never happen. The main effect of this activity will be seen in the DMIS-generated code. 

Overview of DMIS Process without Iterative Alignment

- Manual mode
- Send operator instruction
- Define point1
- Define point2
- Define point3
- Define circle
- Define slot
- Define tolerance1, tolerance2
- Measure point1
- Measure point2
- Measure point3
- Construct Cplane (point1, point2, point3)
- Measure circle
- Measure slot
- Construct Cline (circle and slot)
- Construct alignment CALIGN (Cplane, Cline and circle)
- Activate alignment
-
-
-

Overview of DMIS Process with Iterative Alignment

- Manual mode
- Send operator instruction
- Define point1
- Define point2
- Define point3
- Define circle
- Define slot
- Define tolerance1, tolerance2
  DECL / INTGR , XVAR //declaration of variables
DECL / INTGR , YVAR
DECL / INTGR , ZVAR
DECL / INTGR , COUNT
DECL / BOOL , ALIGN_RESULT

T(X_THRESHOLD)= TOL / CORTOL, XAXIS, -.0500, .0500 //For a threshold value of 0.1
T(Y_THRESHOLD)= TOL / CORTOL, YAXIS, -.0500, .0500 //For a threshold value of 0.1
T(Z_THRESHOLD)= TOL / CORTOL, ZAXIS, -.0500, .0500 //For a threshold value of 0.1
COUNT = ASSIGN/0
$$======================================
(ITER_START)
$$======================================
ALIGN_RESULT = ASSIGN/.TRUE.
COUNT = ASSIGN/COUNT+

- Measure point1
- Measure point2
- Measure point3
- Construct Cplane (point1, point2, point3)
- Measure circle
- Measure slot
- Construct Cline (circle and slot)
- Construct alignment CALIGN (Cplane, Cline and circle)
- Activate alignment

  $$FEATURE point1
$$===========================
OUTPUT / FA(point1), TA(X_THRESHOLD) //evaluates feature and deviation XVAR =VALUE/TA(X_THRESHOLD),INTOL //checks if in or out of tol
IF/(XVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE. //set flag if out of tolerance
TEXT / OPER ,'point1 out of tolerance along X'
ENDIF
OUTPUT / FA(point1), TA(Y_THRESHOLD)
YVAR =VALUE/TA(Y_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(YVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER ,'point1 out of tolerance along Y'
ENDIF

OUTPUT / FA(point1), TA(Z_THRESHOLD)
ZVAR =VALUE/TA(Z_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(ZVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER ,'point1 out of tolerance along Z'
ENDIF

$$FEATURE point2
$$===========================
OUTPUT / FA(point2), TA(X_THRESHOLD)
XVAR =VALUE/TA(X_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(XVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'point2 out of tolerance along X'
ENDIF

OUTPUT / FA(point2), TA(Y_THRESHOLD)
YVAR =VALUE/TA(Y_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(YVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'point2 out of tolerance along Y'
ENDIF

OUTPUT / FA(point2), TA(Z_THRESHOLD)
ZVAR =VALUE/TA(Z_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(ZVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'point2 out of tolerance along Z'
ENDIF

 
$$FEATURE point3
$$===========================
OUTPUT / FA(point3), TA(X_THRESHOLD)
XVAR =VALUE/TA(X_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(XVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'point3 out of tolerance along X'
ENDIF


OUTPUT / FA(point3), TA(Y_THRESHOLD)
YVAR =VALUE/TA(Y_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(YVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'point3 out of tolerance along Y'
ENDIF


OUTPUT / FA(point3), TA(Z_THRESHOLD)
ZVAR =VALUE/TA(Z_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(ZVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'point3 out of tolerance along Z'
ENDIF


$$FEATURE circle
$$===========================
OUTPUT / FA(circle), TA(X_THRESHOLD)
XVAR =VALUE/TA(X_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(XVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'circle out of tolerance along X'
ENDIF


OUTPUT / FA(circle), TA(Y_THRESHOLD)
YVAR =VALUE/TA(Y_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(YVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'circle out of tolerance along Y'
ENDIF


OUTPUT / FA(circle), TA(Z_THRESHOLD)
ZVAR =VALUE/TA(Z_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(ZVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'circle out of tolerance along Z'
ENDIF


$$FEATURE slot
$$===========================
OUTPUT / FA(slot), TA(X_THRESHOLD)
XVAR =VALUE/TA(X_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(XVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'slot out of tolerance along X'
ENDIF


OUTPUT / FA(slot), TA(Y_THRESHOLD)
YVAR =VALUE/TA(Y_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(YVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'slot out of tolerance along Y'
ENDIF


OUTPUT / FA(slot), TA(Z_THRESHOLD)
ZVAR =VALUE/TA(Z_THRESHOLD),INTOL $$ checks if in or out of tol
IF/(ZVAR .EQ. 0)
ALIGN_RESULT = ASSIGN/.FALSE.
TEXT / OPER , 'slot out of tolerance along Z'
ENDIF


IF/( ALIGN_RESULT .EQ. .FALSE.)
TEXT / OPER , 'ITERATION RESULT'
TEXT / OPER , '========================'
TEXT / OPER , '*** Alignment did not converge***'
ELSE
JUMPTO / (ITER_END)
ENDIF


IF/((COUNT .LE. 5) // in this case, max iteration is 5
JUMPTO / (ITER_ START)
ENDIF


(ITER_END)
TEXT / OPER , '============================='
TEXT / OPER , '= SUCCESSFUL ALIGNMENT ='
TEXT / OPER , '============================='

-
-
-