BEGIN PGM 232 MM 
;Stand: 340490 02
; 3-4-18-19-26-27-28-33-34-41--43-46--60
Q200 = ABS Q200
Q204 = ABS Q204
Q357 = ABS Q357
Q202 = ABS Q202
Q369 = ABS Q369
Q240 = ABS Q240
Q370 = ABS Q370
FN 17: SYSWRITE ID 212 =+3
;********Tiefe Positiv********
LBL 223
DECLARE STRING QS30
QS30 = SYSSTR( ID10025 NR1 )
DECLARE STRING QS31 = "CfgGeoCycle"
DECLARE STRING QS32 = "displayDepthErr"
Q2 = CFGREAD( KEY_QS30 TAG_QS31 ATR_QS32 )
Q29 = Q386 - Q227 ;Tiefenzustellung gesamt 
FN 12: IF +Q29 LT +0 GOTO LBL 109
FN 9: IF +Q29 EQU +0 GOTO LBL 109
;FN 9: IF +Q2 EQU +0 GOTO LBL 109 - CR 63428
FN 14: ERROR= 1077
LBL 109
;******** M3 / M4 ***********
DECLARE STRING QS32 = "displaySpindleErr"
Q0 = CFGREAD( KEY_QS30 TAG_QS31 ATR_QS32 )
FN 9: IF +Q0 EQU +0 GOTO LBL 107
FN 9: IF +Q110 EQU +1 GOTO LBL 107
FN 9: IF +Q110 EQU +0 GOTO LBL 107
FN 14: ERROR= 1000
LBL 107
FN 10: IF +Q109 NE -1 GOTO LBL 198
FN 14: ERROR= 1001
LBL 198
FN 9: IF +Q29 EQU +0 GOTO LBL 254
FN 12: IF +Q29 LT +0 GOTO LBL 197
FN 0: Q30 =-1
FN 9: IF +0 EQU +0 GOTO LBL 194
LBL 197
FN 0: Q30 =+1
LBL 194
Q18 = Q227 + Q200
Q19 = Q227 + Q200
Q3 = ABS Q200
Q4 = ABS Q204
FN 11: IF +Q3 GT +Q4 GOTO LBL 2
Q19 = Q227 + Q204
LBL 2
FN 18: SYSREAD Q1 = ID200 NR1
Q1 = ABS Q1
FN 18: SYSREAD Q5 = ID210 NR4 IDX1
FN 18: SYSREAD Q6 = ID210 NR4 IDX2
FN 18: SYSREAD Q9 = ID210 NR4 IDX3
;FN 18: SYSREAD Q2 = ID1000 NR7410
Q357 = Q357 / Q5
Q8 = Q1 / Q5
;FN 18: SYSREAD Q46 = ID56 NR1
;FN 9: IF +Q46 EQU -1 GOTO LBL 211
FN 18: SYSREAD Q41 = ID20 NR1 ;AKTIVE TOOL NR
FN 18: SYSREAD Q43 = ID20 NR11 ;AKTIVER INDEX
FN 18: SYSREAD Q46 = ID50 NR3 IDXQ41 .Q43
Q1 = Q1 - Q46
LBL 211
;Bestimmung Ecke
FN 12: IF +Q218 LT +0 GOTO LBL 50
FN 12: IF +Q219 LT +0 GOTO LBL 51
Q20 = 1 ;Ecke links unten
FN 9: IF +0 EQU +0 GOTO LBL 52
LBL 51
Q20 = 4 ;Ecke links oben
FN 9: IF +0 EQU +0 GOTO LBL 52
LBL 50
FN 12: IF +Q219 LT +0 GOTO LBL 53
Q20 = 2 ;Ecke rechts unten
FN 9: IF +0 EQU +0 GOTO LBL 52
LBL 53
Q20 = 3 ;Ecke rechts oben
LBL 52
Q28 = ABS Q218
Q34 = ABS Q219
Q10 = Q1 * Q370 / Q6
Q11 = Q34 + Q1 * 0.2
Q12 = Q11 / Q10
Q12 = INT Q12 + 1
Q13 = Q11 / Q12
Q7 = Q13 * Q6
Q27 = 2 * Q1 - Q7
Q14 = Q28 + 2 * Q8 + 2 * Q357 
Q44 = Q28 + Q8 + Q357 
Q45 = Q28 
Q29 = ABS Q29
FN 9: IF +Q2 EQU +1 GOTO LBL 80
Q369 = Q369 / Q9
Q202 = Q202 / Q9
LBL 80
FN 11: IF +Q369 GT +Q29 GOTO LBL 42
FN 9: IF +Q369 EQU +Q29 GOTO LBL 42
Q37 = Q29 - Q369
; Abfrage, ob Zustellung grer als mgl. Zustellung ist
FN 11: IF +Q202 GT +Q37 GOTO LBL 40
FN 9: IF +0 EQU +0 GOTO LBL 41
LBL 40
Q202 = Q37
LBL 41
Q31 = Q37 / Q202
Q33 = Q31
Q31 = INT Q31 ; Anzahl der Zustellungen
Q33 = FRAC Q33 ; Nachkommastelle bilden
FN 9: IF +Q33 EQU +0 GOTO LBL 44
Q31 = Q31 + 1
LBL 44
Q32 = Q37 / Q31 ; berechneter Zustellbetrag
Q35 = Q227 ; akt. Z-Position
Q38 = Q386 + Q369
FN 0: Q36 =+0 ; Zaehler fuer Tiefenzustellung
FN 9: IF +0 EQU +0 GOTO LBL 43
LBL 42
Q369 = Q29
FN 0: Q36 =+1 ; Zaehler fuer Tiefenzustellung
FN 0: Q31 =+1
Q35 = Q227 ; akt. Z-Position
LBL 43
FN 1: Q0 =+Q109 + +1
FN 18: SYSREAD Q0 = ID270 NR1 IDXQ0
FN 9: IF +Q30 EQU -1 GOTO LBL 150
FN 11: IF +Q0 GT +Q19 GOTO LBL 151
L  Z+Q19 R0 FMAX
FN 9: IF +0 EQU +0 GOTO LBL 151
LBL 150
FN 12: IF +Q0 LT +Q19 GOTO LBL 151
L  Z+Q19 R0 FMAX
LBL 151
FN 9: IF +Q20 EQU +1 GOTO LBL 96
FN 9: IF +Q20 EQU +2 GOTO LBL 97
FN 9: IF +Q20 EQU +3 GOTO LBL 98
FN 9: IF +Q20 EQU +4 GOTO LBL 99
LBL 96
Q15 = Q225 - Q8 - Q357
Q16 = Q226 + Q7 - Q1 - Q1 * 0.1
FN 9: IF +0 EQU +0 GOTO LBL 95
LBL 97
Q15 = Q225 + Q8 + Q357
Q16 = Q226 + Q7 - Q1 - Q1 * 0.1
FN 9: IF +0 EQU +0 GOTO LBL 95
LBL 98
Q15 = Q225 + Q8 + Q357
Q16 = Q226 - Q7 + Q1 + Q1 * 0.1
FN 9: IF +0 EQU +0 GOTO LBL 95
LBL 99
Q15 = Q225 - Q8 - Q357
Q16 = Q226 - Q7 + Q1 + Q1 * 0.1
LBL 95
L  X+Q15  Y+Q16 R0 FMAX
L  Z+Q18 R0 FQ253
CALL LBL 1
Q24 = Q14 * Q21
Q44 = Q44 * Q21
Q45 = Q45 * Q21
Q23 = Q13 * Q22
Q27 = Q27 * Q22
LBL 102
;Aufruf - akt. Tiefenzustellung berechnen
CALL LBL 30
FN 0: Q17 =+0
; Bearbeitungsumfang
FN 9: IF +Q389 EQU +1 GOTO LBL 110
FN 9: IF +Q389 EQU +2 GOTO LBL 120
; Bearbeitungsumfang 0 = Mander auerhalb Teil
LBL 100
LBL 112
L IX+Q24 R0 FQ25
Q17 = Q17 + 1
FN 9: IF +Q17 EQU +Q12 GOTO LBL 101
L IY+Q23 R0 FQ253
L IX-Q24 R0 FQ25
Q17 = Q17 + 1
FN 9: IF +Q17 EQU +Q12 GOTO LBL 101
L IY+Q23 R0 FQ253
FN 9: IF +0 EQU +0 GOTO LBL 100
LBL 101
FN 9: IF +Q26 EQU +0 GOTO LBL 108
L IY+Q27 R0 FQ253
LBL 108
FN 9: IF +0 EQU +0 GOTO LBL 130
; Bearbeitungsumfang 1 = Mander innerhalb Teil
LBL 110
FN 9: IF +Q12 EQU +1 GOTO LBL 112
Q17 = Q17 + 1
FN 9: IF +Q17 EQU +1 GOTO LBL 117
FN 10: IF +Q17 NE +Q12 GOTO LBL 113
LBL 117
L IX+Q44 R0 FQ25
FN 9: IF +0 EQU +0 GOTO LBL 114
LBL 113
L IX+Q45 R0
LBL 114
FN 9: IF +Q17 EQU +Q12 GOTO LBL 111
Q17 = Q17 + 1
L IY+Q23 R0
FN 10: IF +Q17 NE +Q12 GOTO LBL 115
L IX-Q44 R0
FN 9: IF +0 EQU +0 GOTO LBL 116
LBL 115
L IX-Q45 R0
LBL 116
FN 9: IF +Q17 EQU +Q12 GOTO LBL 111
L IY+Q23 R0
FN 9: IF +0 EQU +0 GOTO LBL 110
LBL 111
FN 9: IF +Q26 EQU +0 GOTO LBL 118
L IY+Q27 R0
LBL 118
FN 9: IF +0 EQU +0 GOTO LBL 130
; Bearbeitungsumfang 2 = Maeander ausserhalb Teil und nur eine Richtung
LBL 120
L IX+Q24 R0 FQ25
Q17 = Q17 + 1
FN 9: IF +Q17 EQU +Q12 GOTO LBL 121
L  Z+Q40 R0 FMAX
L IX-Q24 IY+Q23 R0 FMAX
L  Z+Q35 R0 FQ253
FN 9: IF +0 EQU +0 GOTO LBL 120
LBL 121
FN 9: IF +Q26 EQU +0 GOTO LBL 124
L IY+Q27 R0 FQ253
LBL 124
; Q23-Vorzeichen aendern (* -1)
; Abfrage ob Q12-Anzahl Zustellungen gerade ist,
;  wenn nein, dann Vorzeichen umdrehen
LBL 130
Q39 = Q12
Q39 = FRAC ( Q39 / 2 )
FN 9: IF +Q389 EQU +2 GOTO LBL 122
FN 9: IF +Q39 EQU +0 GOTO LBL 32
LBL 122
Q24 = Q24 * - 1
Q44 = Q44 * - 1
Q45 = Q45 * - 1
LBL 32
Q23 = Q23 * - 1
Q27 = Q27 * - 1
LBL 36
FN 10: IF +Q35 NE +Q386 GOTO LBL 102
FN 9: IF +0 EQU +0 GOTO LBL 253
LBL 1
FN 9: IF +Q20 EQU +1 GOTO LBL 91
FN 9: IF +Q20 EQU +2 GOTO LBL 92
FN 9: IF +Q20 EQU +3 GOTO LBL 93
FN 9: IF +Q20 EQU +4 GOTO LBL 94
LBL 91
FN 0: Q21 =+1
FN 0: Q22 =+1
FN 9: IF +0 EQU +0 GOTO LBL 90
LBL 92
FN 0: Q21 =-1
FN 0: Q22 =+1
FN 9: IF +0 EQU +0 GOTO LBL 90
LBL 93
FN 0: Q21 =-1
FN 0: Q22 =-1
FN 9: IF +0 EQU +0 GOTO LBL 90
LBL 94
FN 0: Q21 =+1
FN 0: Q22 =-1
LBL 90
LBL 0
LBL 30
; Q32 = Zustellwert
Q26 = 1 ; Merker fr Ausgleichsbeweg.
Q40 = Q35 + Q200
FN 9: IF +Q36 EQU +Q31 GOTO LBL 33
Q36 = Q36 + 1
FN 9: IF +Q36 EQU +Q31 GOTO LBL 31
Q25 = Q207
Q35 = Q35 - Q32
L  Z+Q35 R0 FQ253 ; akt. Zustellhoehe
FN 9: IF +0 EQU +0 GOTO LBL 35
LBL 31
Q25 = Q207
Q35 = Q38
FN 10: IF +Q369 NE +0 GOTO LBL 34
Q26 = 0 ;  Rcks. Merker fr Ausglbew.
LBL 34
L  Z+Q35 R0 FQ253 ; Endhoehe Schruppen
FN 9: IF +0 EQU +0 GOTO LBL 35
LBL 33
Q25 = Q385
Q35 = Q386
Q26 = 0 ; Rcks. Merker fr Ausglbew.
L  Z+Q35 R0 FQ253 ; Endhoehe Schlichten
LBL 35
LBL 0
LBL 253
L  Z+Q19 R0 FMAX
LBL 254
END PGM 232 MM 
