0  BEGIN PGM RECSTUDMILL MM 
1  Q195 = Q197
2  Q197 = 0
3  FN 9: IF +Q195 EQU +1 GOTO LBL 200
4  Q200 = ABS Q200
5  Q202 = ABS Q202
6  Q204 = ABS Q204
7  LBL 200
7  FN 18: SYSREAD QL108 = ID200 NR1
8  FN 17: SYSWRITE ID 212 =+3
9  CALL PGM CHECK_MP7441.CYC
10 FN 9: IF +Q201 EQU +0 GOTO LBL 254
11 FN 10: IF +Q109 NE -1 GOTO LBL 198
12 FN 14: ERROR= 1001
13 LBL 198
14 FN 10: IF +Q202 NE +0 GOTO LBL 21
15 FN 14: ERROR= 1030
16 LBL 21
17 FN 12: IF +Q201 LT +0 GOTO LBL 197
18 FN 0: Q30 =-1
19 FN 9: IF +0 EQU +0 GOTO LBL 196
20 LBL 197
21 FN 0: Q30 =+1
22 LBL 196
23 FN 9: IF +Q195 EQU +1 GOTO LBL 194
24 CALL LBL 14
25 LBL 194
26 FN 1: Q19 =+Q203 + +Q200
27 Q51 = ABS Q200
28 Q52 = ABS Q204
29 FN 11: IF +Q51 GT +Q52 GOTO LBL 3
30 FN 1: Q19 =+Q203 + +Q204
31 LBL 3
32 FN 1: Q20 =+Q203 + +Q200 ; Vorposition
33 FN 0: Q23 =+Q203 ; OK Werkstck
34 FN 1: Q24 =+Q203 + +Q201 ; Endtiefe vorzeichenrichtig
35 FN 0: Q27 =+Q202 ; Zustelltiefe
36 ; Startpos X rechnen, Massfaktor lesen
37 FN 18: SYSREAD Q49 = ID210 NR4 IDX1
38 Q10 = ( Q424 / 2 ) + ( QL108 / Q49 ) + ( 2 / Q49 )
39 ; Konstante Schnittaufteilung rechnen:
40 ; Q11: Gesamtbreite Restmaterial X
41 ; Q41: Gesamtbreite Restmaterial Y
42 ; Q33: X Fertigmass/2 + Aufmass
43 ; Q43: Y Fertigmass/2 + Aufmass
44 ; Q12: Material - Werkzeugueberlappung X
45 ; Q42: Material - Werkzeugueberlappung Y
46 ; Q15: Schnittzaehler
47 Q11 = ( Q424 - Q218 ) / 2 - Q368
48 Q41 = ( Q425 - Q219 ) / 2 - Q368
49 Q33 = ( Q218 / 2 ) + Q368
50 Q43 = ( Q219 / 2 ) + Q368
51 Q12 = Q11 - ( QL108 * Q370 )
52 Q42 = Q41 - ( QL108 * Q370 )
53 ; Schnittzaehler auf Einzelschnitt setzen
54 Q15 = 0
55 ; Abfrage, ob Aufmass X kleiner Aufmass Y
56 FN 12: IF +Q42 LT +Q12 GOTO LBL "XAUFMASS"
57 FN 9: IF +Q42 EQU +Q12 GOTO LBL "XAUFMASS"
58 ; Abfrage, ob ein Schnitt reicht Y
59 FN 12: IF +Q42 LT +0 GOTO LBL 1
60 FN 9: IF +Q42 EQU +0 GOTO LBL 1
61 Q12 = INT ( Q41 / ( QL108 * Q370 ) )
62 Q13 = FRAC ( Q41 / ( QL108 * Q370 ) )
63 FN 9: IF +0 EQU +0 GOTO LBL "AUFTEILUNG"
64 LBL "XAUFMASS"
65 ; Abfrage, ob ein Schnitt reicht X
66 FN 12: IF +Q12 LT +0 GOTO LBL 1
67 FN 9: IF +Q12 EQU +0 GOTO LBL 1
68 ; Zustellung konstant aufteilen
69 ; Q12: Anzahl Schnitte X
70 ; Q13: Verkleinerung X
71 ; Q44: Verkleinerung Y
72 ; Q15: Schnittzaehler
73 Q12 = INT ( Q11 / ( QL108 * Q370 ) )
74 Q13 = FRAC ( Q11 / ( QL108 * Q370 ) )
75 LBL "AUFTEILUNG"
76 FN 9: IF +Q13 EQU +0 GOTO LBL "EVEN_CUTS"
77 Q12 = Q12 + 1
78 LBL "EVEN_CUTS"
79 Q13 = Q11 / Q12
80 Q44 = Q41 / Q12
81 Q11 = ( Q424 / 2 ) - Q13
82 Q41 = ( Q425 / 2 ) - Q44
83 Q45 = Q424 - ( 2 * Q13 )
84 Q46 = Q425 - ( 2 * Q44 )
85 Q15 = 1
86 FN 9: IF +0 EQU +0 GOTO LBL 2
87 LBL 1
88 ; Radius bei Einzelschnitt
89 Q11 = ( Q218 / 2 ) + Q368
90 Q41 = ( Q219 / 2 ) + Q368
91 LBL 2
92 CC  X+0  Y+0
93 LP  PR+Q10  PA+0 R0 FMAX
94 L  Z+Q20 R0 FMAX
95 ; Starttiefe setzen
96 FN 2: Q23 =+Q23 - +Q202
97 FN 10: IF +Q30 NE -1 GOTO LBL 30
98 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
99 FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
100 FN 9: IF +0 EQU +0 GOTO LBL 10
101 LBL 30
102 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
103 FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
104 ; Wiederholungen
105 LBL 10
106 FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF1"
107 CALL LBL "GLEICHLAUF"
108 FN 9: IF +0 EQU +0 GOTO LBL "WEITER1"
109 LBL "CALL_GEGENLAUF1"
110 CALL LBL "GEGENLAUF"
111 LBL "WEITER1"
112 FN 2: Q23 =+Q23 - +Q202
113 FN 10: IF +Q30 NE -1 GOTO LBL 32
114 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
115 FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
116 FN 9: IF +0 EQU +0 GOTO LBL 10
117 LBL 32
118 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
119 FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
120 FN 9: IF +0 EQU +0 GOTO LBL 10
121 LBL "ENDTIEFE"
122 FN 0: Q23 =+Q24
123 FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF2"
124 CALL LBL "GLEICHLAUF"
125 FN 9: IF +0 EQU +0 GOTO LBL "WEITER2"
126 LBL "CALL_GEGENLAUF2"
127 CALL LBL "GEGENLAUF"
128 LBL "WEITER2"
129 FN 9: IF +0 EQU +0 GOTO LBL 14
130 ; *** UP Gleichlauffraesen ***
131 LBL "GLEICHLAUF"
132 LP  PR+Q10  PA+0 R0 FMAX ; Startposition
133 L  Z+Q23 R0 FQ206
134 FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT"
134 L  FQ207
135 APPR PCT  PR+Q11  PA+0  CCA180 R+1 RL FQ207
136 LBL "MULTICUT"
137 L IY-Q41 FQ207
138 RND RQ220
139 L IX-Q45 FQ207
140 RND RQ220
141 L IY+Q46 FQ207
142 RND RQ220
143 L IX+Q45 FQ207
144 RND RQ220
145 L IY-Q41 FQ207 M98
146 Q15 = Q15 + 1
147 FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT"
148 Q11 = Q11 - Q13
149 Q41 = Q41 - Q44
150 Q45 = Q45 - ( Q13 * 2 )
151 Q46 = Q46 - ( Q44 * 2 )
152 LP  PR+Q11  PA+0 RL FQ207
153 FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT"
154 LBL "END_MULTICUT"
155 LP  PR+Q33  PA+0 RL FQ207
156 FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT"
157 LBL "SINGLECUT"
157 L  FQ207
158 APPR PCT  PR+Q11  PA+0   CCA180 R+1  RL FQ207
159 LBL "LASTCUT"
160 Q47 = Q33 * 2
161 Q48 = Q43 * 2
162 L IY-Q43 FQ207
163 RND RQ220
164 L IX-Q47 FQ207
165 RND RQ220
166 L IY+Q48 FQ207
167 RND RQ220
168 L IX+Q47 FQ207
169 RND RQ220
170 L IY-Q43 FQ207
171 DEP CT  CCA180 R+1 FQ207
172 ; Startwerte fuer Multicut setzen
173 FN 9: IF +Q15 EQU +0 GOTO LBL 40
174 Q11 = ( Q424 / 2 ) - Q13
175 Q41 = ( Q425 / 2 ) - Q44
176 Q45 = Q424 - ( 2 * Q13 )
177 Q46 = Q425 - ( 2 * Q44 )
178 Q15 = 1
179 LBL 40
180 LBL 0
181 ; *** UP Gegenlauffraesen ***
182 LBL "GEGENLAUF"
183 LP  PR+Q10  PA+0 R0 FMAX ; Startposition
184 L  Z+Q23 R0 FQ206
185 FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT_GG"
183 L  FQ207
186 APPR PCT  PR+Q11  PA+0  CCA180 R+1 RR FQ207
187 LBL "MULTICUT_GG"
188 L IY+Q41 FQ207
189 RND RQ220
190 L IX-Q45 FQ207
191 RND RQ220
192 L IY-Q46 FQ207
193 RND RQ220
194 L IX+Q45 FQ207
195 RND RQ220
196 L IY+Q41 FQ207 M98
197 Q15 = Q15 + 1
198 FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT_GG"
199 Q11 = Q11 - Q13
200 Q41 = Q41 - Q44
201 Q45 = Q45 - ( Q13 * 2 )
202 Q46 = Q46 - ( Q44 * 2 )
203 LP  PR+Q11  PA+0 RR FQ207
204 FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT_GG"
205 LBL "END_MULTICUT_GG"
206 LP  PR+Q33  PA+0 RR FQ207
207 FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT_GG"
208 LBL "SINGLECUT_GG"
209 L  FQ207
209 APPR PCT  PR+Q11  PA+0  CCA180 R+1 RR FQ207
210 LBL "LASTCUT_GG"
211 Q47 = Q33 * 2
212 Q48 = Q43 * 2
213 L IY+Q43 FQ207
214 RND RQ220
215 L IX-Q47 FQ207
216 RND RQ220
217 L IY-Q48 FQ207
218 RND RQ220
219 L IX+Q47 FQ207
220 RND RQ220
221 L IY+Q43 FQ207
222 DEP CT CCA180 R+1  FQ207
223 ; Startwerte fuer Multicut setzen
224 FN 9: IF +Q15 EQU +0 GOTO LBL 41
225 Q11 = ( Q424 / 2 ) - Q13
226 Q41 = ( Q425 / 2 ) - Q44
227 Q45 = Q424 - ( 2 * Q13 )
228 Q46 = Q425 - ( 2 * Q44 )
229 Q15 = 1
230 LBL 41
231 LBL 0
232 ; *** ENDE UP Gleichlauffraesen ***
233 LBL 14
234 FN 9: IF +Q195 EQU +1 GOTO LBL 193
235 FN 3: Q200 =+Q200 * +Q30
236 FN 3: Q202 =+Q202 * +Q30
237 FN 3: Q204 =+Q204 * +Q30
238 LBL 0
239 LBL 193
240 L  Z+Q20 FMAX
241 FN 9: IF +Q195 EQU +1 GOTO LBL 254
242 L  Z+Q19 FMAX
243 LBL 254
244 END PGM RECSTUDMILL MM 
