BEGIN PGM RECSTUDMILL MM 
Q195 = Q197
Q197 = 0
FN 9: IF +Q195 EQU +1 GOTO LBL 200
Q200 = ABS Q200
Q202 = ABS Q202
Q204 = ABS Q204
LBL 200
FN 17: SYSWRITE ID 212 =+3
CALL PGM CHECK_MP7441.CYC
FN 9: IF +Q201 EQU +0 GOTO LBL 254
FN 10: IF +Q109 NE -1 GOTO LBL 198
FN 14: ERROR= 1001
LBL 198
FN 10: IF +Q202 NE +0 GOTO LBL 21
FN 14: ERROR= 1030
LBL 21
FN 12: IF +Q201 LT +0 GOTO LBL 197
FN 0: Q30 =-1
FN 9: IF +0 EQU +0 GOTO LBL 196
LBL 197
FN 0: Q30 =+1
LBL 196
FN 9: IF +Q195 EQU +1 GOTO LBL 194
CALL LBL 14
LBL 194
FN 1: Q19 =+Q203 + +Q200
Q51 = ABS Q200
Q52 = ABS Q204
FN 11: IF +Q51 GT +Q52 GOTO LBL 3
FN 1: Q19 =+Q203 + +Q204
LBL 3
FN 1: Q20 =+Q203 + +Q200 ; Vorposition
FN 0: Q23 =+Q203 ; OK Werkstck
FN 1: Q24 =+Q203 + +Q201 ; Endtiefe vorzeichenrichtig
FN 0: Q27 =+Q202 ; Zustelltiefe
; Startpos X rechnen, Massfaktor lesen
FN 18: SYSREAD Q49 = ID210 NR4 IDX1
Q10 = ( Q424 / 2 ) + ( Q108 / Q49 ) + ( 2 / Q49 )
; Konstante Schnittaufteilung rechnen:
; Q11: Gesamtbreite Restmaterial X
; Q41: Gesamtbreite Restmaterial Y
; Q33: X Fertigmass/2 + Aufmass
; Q43: Y Fertigmass/2 + Aufmass
; Q12: Material - Werkzeugueberlappung X
; Q42: Material - Werkzeugueberlappung Y
; Q15: Schnittzaehler
Q11 = ( Q424 - Q218 ) / 2 - Q368
Q41 = ( Q425 - Q219 ) / 2 - Q368
Q33 = ( Q218 / 2 ) + Q368
Q43 = ( Q219 / 2 ) + Q368
Q12 = Q11 - ( Q108 * Q370 )
Q42 = Q41 - ( Q108 * Q370 )
; Schnittzaehler auf Einzelschnitt setzen
Q15 = 0
; Abfrage, ob Aufmass X kleiner Aufmass Y
FN 12: IF +Q42 LT +Q12 GOTO LBL "XAUFMASS"
FN 9: IF +Q42 EQU +Q12 GOTO LBL "XAUFMASS"
; Abfrage, ob ein Schnitt reicht Y
FN 12: IF +Q42 LT +0 GOTO LBL 1
FN 9: IF +Q42 EQU +0 GOTO LBL 1
Q12 = INT ( Q41 / ( Q108 * Q370 ) )
Q13 = FRAC ( Q41 / ( Q108 * Q370 ) )
FN 9: IF +0 EQU +0 GOTO LBL "AUFTEILUNG"
LBL "XAUFMASS"
; Abfrage, ob ein Schnitt reicht X
FN 12: IF +Q12 LT +0 GOTO LBL 1
FN 9: IF +Q12 EQU +0 GOTO LBL 1
; Zustellung konstant aufteilen
; Q12: Anzahl Schnitte X
; Q13: Verkleinerung X
; Q44: Verkleinerung Y
; Q15: Schnittzaehler
Q12 = INT ( Q11 / ( Q108 * Q370 ) )
Q13 = FRAC ( Q11 / ( Q108 * Q370 ) )
LBL "AUFTEILUNG"
FN 9: IF +Q13 EQU +0 GOTO LBL "EVEN_CUTS"
Q12 = Q12 + 1
LBL "EVEN_CUTS"
Q13 = Q11 / Q12
Q44 = Q41 / Q12
Q11 = ( Q424 / 2 ) - Q13
Q41 = ( Q425 / 2 ) - Q44
Q45 = Q424 - ( 2 * Q13 )
Q46 = Q425 - ( 2 * Q44 )
Q15 = 1
FN 9: IF +0 EQU +0 GOTO LBL 2
LBL 1
; Radius bei Einzelschnitt
Q11 = ( Q218 / 2 ) + Q368
Q41 = ( Q219 / 2 ) + Q368
LBL 2
CC  X+0  Y+0
LP  PR+Q10  PA+0 R0 FMAX
L  Z+Q20 R0 FMAX
; Starttiefe setzen
FN 2: Q23 =+Q23 - +Q202
FN 10: IF +Q30 NE -1 GOTO LBL 30
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
FN 9: IF +0 EQU +0 GOTO LBL 10
LBL 30
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
; Wiederholungen
LBL 10
FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF1"
CALL LBL "GLEICHLAUF"
FN 9: IF +0 EQU +0 GOTO LBL "WEITER1"
LBL "CALL_GEGENLAUF1"
CALL LBL "GEGENLAUF"
LBL "WEITER1"
FN 2: Q23 =+Q23 - +Q202
FN 10: IF +Q30 NE -1 GOTO LBL 32
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
FN 9: IF +0 EQU +0 GOTO LBL 10
LBL 32
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
FN 9: IF +0 EQU +0 GOTO LBL 10
LBL "ENDTIEFE"
FN 0: Q23 =+Q24
FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF2"
CALL LBL "GLEICHLAUF"
FN 9: IF +0 EQU +0 GOTO LBL "WEITER2"
LBL "CALL_GEGENLAUF2"
CALL LBL "GEGENLAUF"
LBL "WEITER2"
FN 9: IF +0 EQU +0 GOTO LBL 14
; *** UP Gleichlauffraesen ***
LBL "GLEICHLAUF"
LP  PR+Q10  PA+0 R0 FMAX ; Startposition
L  Z+Q23 R0 FQ206
FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RL FQ207
LBL "MULTICUT"
L IY-Q41 FQ207
RND RQ220
L IX-Q45 FQ207
RND RQ220
L IY+Q46 FQ207
RND RQ220
L IX+Q45 FQ207
RND RQ220
L IY-Q41 FQ207 M98
Q15 = Q15 + 1
FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT"
Q11 = Q11 - Q13
Q41 = Q41 - Q44
Q45 = Q45 - ( Q13 * 2 )
Q46 = Q46 - ( Q44 * 2 )
LP  PR+Q11  PA+0 RL FQ207
FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT"
LBL "END_MULTICUT"
LP  PR+Q33  PA+0 RL FQ207
FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT"
LBL "SINGLECUT"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RL FQ207
LBL "LASTCUT"
Q47 = Q33 * 2
Q48 = Q43 * 2
L IY-Q43 FQ207
RND RQ220
L IX-Q47 FQ207
RND RQ220
L IY+Q48 FQ207
RND RQ220
L IX+Q47 FQ207
RND RQ220
L IY-Q43 FQ207
DEP CT  CCA180 R+1 FQ207
; Startwerte fuer Multicut setzen
FN 9: IF +Q15 EQU +0 GOTO LBL 40
Q11 = ( Q424 / 2 ) - Q13
Q41 = ( Q425 / 2 ) - Q44
Q45 = Q424 - ( 2 * Q13 )
Q46 = Q425 - ( 2 * Q44 )
Q15 = 1
LBL 40
LBL 0
; *** UP Gegenlauffraesen ***
LBL "GEGENLAUF"
LP  PR+Q10  PA+0 R0 FMAX ; Startposition
L  Z+Q23 R0 FQ206
FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT_GG"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RR FQ207
LBL "MULTICUT_GG"
L IY+Q41 FQ207
RND RQ220
L IX-Q45 FQ207
RND RQ220
L IY-Q46 FQ207
RND RQ220
L IX+Q45 FQ207
RND RQ220
L IY+Q41 FQ207 M98
Q15 = Q15 + 1
FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT_GG"
Q11 = Q11 - Q13
Q41 = Q41 - Q44
Q45 = Q45 - ( Q13 * 2 )
Q46 = Q46 - ( Q44 * 2 )
LP  PR+Q11  PA+0 RR FQ207
FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT_GG"
LBL "END_MULTICUT_GG"
LP  PR+Q33  PA+0 RR FQ207
FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT_GG"
LBL "SINGLECUT_GG"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RR FQ207
LBL "LASTCUT_GG"
Q47 = Q33 * 2
Q48 = Q43 * 2
L IY+Q43 FQ207
RND RQ220
L IX-Q47 FQ207
RND RQ220
L IY-Q48 FQ207
RND RQ220
L IX+Q47 FQ207
RND RQ220
L IY+Q43 FQ207
DEP CT  CCA180 R+1 FQ207
; Startwerte fuer Multicut setzen
FN 9: IF +Q15 EQU +0 GOTO LBL 41
Q11 = ( Q424 / 2 ) - Q13
Q41 = ( Q425 / 2 ) - Q44
Q45 = Q424 - ( 2 * Q13 )
Q46 = Q425 - ( 2 * Q44 )
Q15 = 1
LBL 41
LBL 0
; *** ENDE UP Gleichlauffraesen ***
LBL 14
FN 9: IF +Q195 EQU +1 GOTO LBL 193
FN 3: Q200 =+Q200 * +Q30
FN 3: Q202 =+Q202 * +Q30
FN 3: Q204 =+Q204 * +Q30
LBL 0
LBL 193
L  Z+Q20 FMAX
FN 9: IF +Q195 EQU +1 GOTO LBL 254
L  Z+Q19 FMAX
LBL 254
END PGM RECSTUDMILL MM 
