BEGIN PGM 25x_ERROR MM 
*############################
*# Massfaktor 
*# korrigiere Werkzeugradius anhand Massfaktor
*# Prfe Massfaktoren in Ebene gleich
*############################
FN 18: SYSREAD Q8 = ID20 NR3		; aktive Werkzeugachse
FN 10: IF +Q8 NE +0 GOTO LBL "SCALE_TOOLX"	
FN 18: SYSREAD Q4 = ID210 NR4 IDX2	
FN 18: SYSREAD Q5 = ID210 NR4 IDX1
FN 18: SYSREAD Q0 = ID210 NR4 IDX3
FN 9: IF +Q0 EQU +Q4 GOTO LBL "SCALE_TOOLX"
FN 14: ERROR = 1108
LBL "SCALE_TOOLX"
FN 10: IF +Q8 NE +1 GOTO LBL "SCALE_TOOLY"	
FN 18: SYSREAD Q4 = ID210 NR4 IDX1	
FN 18: SYSREAD Q5 = ID210 NR4 IDX2
FN 18: SYSREAD Q0 = ID210 NR4 IDX3
FN 9: IF +Q0 EQU +Q4 GOTO LBL "SCALE_TOOLY"
FN 14: ERROR = 1108
LBL "SCALE_TOOLY"
FN 10: IF +Q8 NE +2 GOTO LBL "SCALE_TOOLZ"	
FN 18: SYSREAD Q4 = ID210 NR4 IDX1
FN 18: SYSREAD Q5 = ID210 NR4 IDX3
FN 18: SYSREAD Q0 = ID210 NR4 IDX2
FN 9: IF +Q0 EQU +Q4 GOTO LBL "SCALE_TOOLZ"
FN 14: ERROR = 1108
LBL "SCALE_TOOLZ"
;----------- WZ-R = 0 -------------
FN 11: IF +Q108 GT +0 GOTO LBL 40
FN 14: ERROR= 1021
LBL 40
;**********************************
FN 10: IF +Q109 NE -1 GOTO LBL 10
FN 14: ERROR= 1001
LBL 10
FN 17: SYSWRITE ID 212 =+3
;*************************
Q18 = Q108 / Q4
FN 9: IF +Q3 EQU +251 GOTO LBL 94
FN 9: IF +Q3 EQU +252 GOTO LBL 95
FN 9: IF +0 EQU +0 GOTO LBL 123

;************ 251 Rechteck *************
LBL 94
;------ Eckenradius zu gross ------
Q0 = Q218 / 2 
FN 11: IF +Q0 GT +Q220 GOTO LBL 125
FN 14: ERROR= 1023 
LBL 125
Q0 = Q219 / 2 
FN 11: IF +Q0 GT +Q220 GOTO LBL 126
FN 14: ERROR= 1023 
LBL 126
;-------- Tasche zu klein ---------
Q0 = Q218 / 2 - Q368
;Q0 = Q0 * Q4 ; (*Massfaktor)
FN 11: IF +Q0 GT +Q18 GOTO LBL 127
FN 14: ERROR= 1103 
LBL 127
Q0 = Q219 / 2 - Q368
;Q0 = Q0 * Q4 ; (*Massfaktor)
FN 11: IF +Q0 GT +Q18 GOTO LBL 128
FN 14: ERROR= 1103 
LBL 128
;----------------------------------
;
;FN 18: SYSREAD Q220 = ID30 NR9
;FN 12: IF +Q108 LT +Q220 GOTO LBL 211
;Q220 = 0
;LBL 211
;Q87 = Q218
;FN 11: IF +Q219 GT +Q218 GOTO LBL 84
;Q87 = Q219
;LBL 84
;Q86 = ABS Q87 / 2
;FN 12: IF +Q220 LT +Q86 GOTO LBL 212
;FN 14: ERROR= 1023
;LBL 212
;FN 11: IF +Q108 GT +Q86 GOTO LBL 104
;FN 11: IF +Q220 GT +Q108 GOTO LBL 123
;FN 9: IF +Q220 EQU +0 GOTO LBL 123
;LBL 104
;FN 14: ERROR= 1003
FN 9: IF +0 EQU +0 GOTO LBL 123
;*************************
;************** 252 Kreis ***************
LBL 95
;-------- Tasche zu klein ---------
Q0 = Q223 / 2 - Q368
Q0 = Q0 * Q4 ; (*Massfaktor)
FN 11: IF +Q0 GT +Q108 GOTO LBL 124
; 2 * Q108 < Q223 - 2 * Q368
FN 14: ERROR= 1103 
LBL 124
;----------------------------------
;***************Tiefe Positiv************
LBL 123
DECLARE STRING QS30
QS30 = SYSSTR( ID10025 NR1 )
DECLARE STRING QS31 = "CfgGeoCycle"
DECLARE STRING QS32 = "displayDepthErr"
Q90 = CFGREAD( KEY_QS30 TAG_QS31 ATR_QS32 )
FN 12: IF +Q201 LT +0 GOTO LBL 110
FN 9: IF +Q90 EQU +0 GOTO LBL 110
FN 14: ERROR= 1077
LBL 110
;*************** M3 / M4 ****************
DECLARE STRING QS32 = "displaySpindleErr"
Q91 = CFGREAD( KEY_QS30 TAG_QS31 ATR_QS32 )
FN 9: IF +Q91 EQU +0 GOTO LBL 111
FN 9: IF +Q110 EQU +1 GOTO LBL 111
FN 9: IF +Q110 EQU +0 GOTO LBL 111
FN 14: ERROR= 1000
LBL 111
;*********** Keine Zust. Q202 ************
FN 11: IF +Q202 GT +0 GOTO LBL 129
FN 14: ERROR= 1030
LBL 129
;************* LCUTS,ANGLE ***************
;Ueberwachung LCUTS, ANGLE, Eintauchen Q366  
;Angle > 0 bei Q366=0 kein Fehler
;Angle > 0 bei Q366=1,2 -> Fehler
;LCUTS=0 kein Fehler (=iTNC kompatibel)
FN 18: SYSREAD Q29 = ID20 NR1 ;                 # WKZ-NR #
FN 18: SYSREAD Q31 = ID50 NR14 IDXQ29 ;ANGLE
FN 9: IF +Q366 EQU +0 GOTO LBL 99
FN 11: IF +Q31 GT +0 GOTO LBL 99
FN 14: ERROR = 1083
LBL 99
END PGM 25X_ERROR MM 
