BEGIN PGM PREST_419 MM
FN 9: IF +Q109 EQU +0 GOTO LBL "TOOLAX_X"
FN 9: IF +Q109 EQU +1 GOTO LBL "TOOLAX_Y"
FN 9: IF +Q109 EQU +2 GOTO LBL "TOOLAX_Z"
FN 9: IF +0 EQU +0 GOTO LBL "END"
LBL "TOOLAX_X"
    FN 9: IF +Q303 EQU +0 GOTO LBL "TOOLAX_X_WRITE_DATUM"
    FN 9: IF +Q272 EQU +1 GOTO LBL "TOOLAX_X_WRITE_PRESET_Y"
    FN 9: IF +Q272 EQU +2 GOTO LBL "TOOLAX_X_WRITE_PRESET_Z"
    FN 9: IF +Q272 EQU +3 GOTO LBL "TOOLAX_X_WRITE_PRESET_X"
    FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_X_WRITE_PRESET_Y"
        Q22 = Q115 ; X
        Q23 = Q142 ; Y Messwert
        Q24 = Q117 ; Z
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX2 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_X_WRITE_PRESET_Z"
        Q22 = Q115 ; X
        Q23 = Q116 ; Y
        Q24 = Q143 ; Z Messwert
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX3 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_X_WRITE_PRESET_X"
        Q22 = Q141 ; X Messwert
        Q23 = Q116 ; Y
        Q24 = Q117 ; Z
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX1 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_X_WRITE_DATUM"
    CALL LBL "ADD_DATUM_SHIFT"
    FN 9: IF +Q272 EQU +1 GOTO LBL "TOOLAX_X_WRITE_DATUM_Y"
    FN 9: IF +Q272 EQU +2 GOTO LBL "TOOLAX_X_WRITE_DATUM_Z"
    FN 9: IF +Q272 EQU +3 GOTO LBL "TOOLAX_X_WRITE_DATUM_X"
    FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_X_WRITE_DATUM_Y"
        QL0 = Q141 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 2 =+QL0
        FN 9: IF +QL10 EQU +0 GOTO LBL "END"
        QL1 = Q142 - Q264
        FN 17: SYSWRITE ID 500 NR Q305 IDX 3 =+QL1
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_X_WRITE_DATUM_Z"
        QL0 = Q142 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 3 =+QL0
        FN 9: IF +QL10 EQU +0 GOTO LBL "END"
        QL1 = Q141 - Q263
        FN 17: SYSWRITE ID 500 NR Q305 IDX 2 =+QL1
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_X_WRITE_DATUM_X"
        QL0 = Q143 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 1 =+QL0
        FN 9: IF +0 EQU +0 GOTO LBL "END"
LBL "TOOLAX_Y"
    FN 9: IF +Q303 EQU +0 GOTO LBL "TOOLAX_Y_WRITE_DATUM"
    FN 9: IF +Q272 EQU +1 GOTO LBL "TOOLAX_Y_WRITE_PRESET_Z"
    FN 9: IF +Q272 EQU +2 GOTO LBL "TOOLAX_Y_WRITE_PRESET_X"
    FN 9: IF +Q272 EQU +3 GOTO LBL "TOOLAX_Y_WRITE_PRESET_Y"
    FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Y_WRITE_PRESET_Z"
        Q22 = Q115 ; X
        Q23 = Q116 ; Y
        Q24 = Q143 ; Z Messwert
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX3 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Y_WRITE_PRESET_X"
        Q22 = Q141 ; X Messwert
        Q23 = Q116 ; Y
        Q24 = Q117 ; Z
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX1 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Y_WRITE_PRESET_Y"
        Q22 = Q115 ; X
        Q23 = Q142 ; Y Messwert
        Q24 = Q117 ; Z
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX2 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Y_WRITE_DATUM"
    CALL LBL "ADD_DATUM_SHIFT"
    FN 9: IF +Q272 EQU +1 GOTO LBL "TOOLAX_Y_WRITE_DATUM_Z"
    FN 9: IF +Q272 EQU +2 GOTO LBL "TOOLAX_Y_WRITE_DATUM_X"
    FN 9: IF +Q272 EQU +3 GOTO LBL "TOOLAX_Y_WRITE_DATUM_Y"
    FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Y_WRITE_DATUM_Z"
        QL0 = Q141 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 3 =+QL0
        FN 9: IF +QL10 EQU +0 GOTO LBL "END"
        QL1 = Q142 - Q264
        FN 17: SYSWRITE ID 500 NR Q305 IDX 1 =+QL1
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Y_WRITE_DATUM_X"
        QL0 = Q142 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 1 =+QL0
        FN 9: IF +QL10 EQU +0 GOTO LBL "END"
        QL1 = Q141 - Q263
        FN 17: SYSWRITE ID 500 NR Q305 IDX 3 =+QL1
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Y_WRITE_DATUM_Y"
        QL0 = Q143 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 2 =+QL0
        FN 9: IF +0 EQU +0 GOTO LBL "END"
LBL "TOOLAX_Z"
    FN 9: IF +Q303 EQU +0 GOTO LBL "TOOLAX_Z_WRITE_DATUM"
    FN 9: IF +Q272 EQU +1 GOTO LBL "TOOLAX_Z_WRITE_PRESET_X"
    FN 9: IF +Q272 EQU +2 GOTO LBL "TOOLAX_Z_WRITE_PRESET_Y"
    FN 9: IF +Q272 EQU +3 GOTO LBL "TOOLAX_Z_WRITE_PRESET_Z"
    FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Z_WRITE_PRESET_X"
        Q22 = Q141 ; X Messwert
        Q23 = Q116 ; Y
        Q24 = Q117 ; Z
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX1 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Z_WRITE_PRESET_Y"
        Q22 = Q115 ; X
        Q23 = Q142 ; Y Messwert
        Q24 = Q117 ; Z
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX2 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Z_WRITE_PRESET_Z"
        Q22 = Q115 ; X
        Q23 = Q116 ; Y
        Q24 = Q143 ; Z Messwert
        Q25 = Q333 ; Bezugspunkt
        FN 17: SYSWRITE ID 532 NRQ305 IDX3 = BLOCK Q22 - Q25
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Z_WRITE_DATUM"
    CALL LBL "ADD_DATUM_SHIFT"
    FN 9: IF +Q272 EQU +1 GOTO LBL "TOOLAX_Z_WRITE_DATUM_X"
    FN 9: IF +Q272 EQU +2 GOTO LBL "TOOLAX_Z_WRITE_DATUM_Y"
    FN 9: IF +Q272 EQU +3 GOTO LBL "TOOLAX_Z_WRITE_DATUM_Z"
    FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Z_WRITE_DATUM_X"
        QL0 = Q141 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 1 =+QL0
        FN 9: IF +QL10 EQU +0 GOTO LBL "END"
        QL1 = Q142 - Q264
        FN 17: SYSWRITE ID 500 NR Q305 IDX 2 =+QL1
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Z_WRITE_DATUM_Y"
        QL0 = Q142 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 2 =+QL0
        FN 9: IF +QL10 EQU +0 GOTO LBL "END"
        QL1 = Q141 - Q263
        FN 17: SYSWRITE ID 500 NR Q305 IDX 1 =+QL1
        FN 9: IF +0 EQU +0 GOTO LBL "END"
    LBL "TOOLAX_Z_WRITE_DATUM_Z"
        QL0 = Q143 - Q333
        FN 17: SYSWRITE ID 500 NR Q305 IDX 3 =+QL0
        FN 9: IF +0 EQU +0 GOTO LBL "END"
LBL "ADD_DATUM_SHIFT"
    FN 18: SYSREAD QL10 = ID 210 NR 2   ; // Progr. Drehung
    Q141 = Q141 + Q50
    Q142 = Q142 + Q51
LBL 0
;** Umrechnung fuer FN25, X-Achse **
LBL 55
Q48 = ( Q333 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q49 = - ( Q333 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q46 = ( Q141 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q47 = - ( Q141 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q141 = Q46
Q142 = Q47
LBL 0
;** Umrechnung fuer FN25, Y-Achse **
LBL 65
Q48 = ( Q141 * COS - Q41 ) + ( Q333 * SIN - Q41 )
Q49 = - ( Q141 * SIN - Q41 ) + ( Q333 * COS - Q41 )
Q46 = ( Q141 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q47 = - ( Q141 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q141 = Q46
Q142 = Q47
LBL 0
;** Umrechnung fuer Schreiben PRT, X-Achse **
LBL 56
Q48 = ( Q333 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q49 = - ( Q333 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q46 = ( Q141 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q47 = - ( Q141 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q141 = Q46 - Q48
Q142 = Q47 - Q49
LBL 0
;** Umrechnung fuer Schreiben PRT, Y-Achse **
LBL 66
Q48 = ( Q141 * COS - Q41 ) + ( Q333 * SIN - Q41 )
Q49 = - ( Q141 * SIN - Q41 ) + ( Q333 * COS - Q41 )
Q46 = ( Q141 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q47 = - ( Q141 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q141 = Q46 - Q48
Q142 = Q47 - Q49
LBL 0
LBL "END"
END PGM PREST_419 MM
