0  BEGIN PGM CIRCSTUDMILL 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
6  Q510 = ABS Q510
6  Q511 = ABS Q511
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 ; Radius Startpos rechnen, Massfaktor lesen
37 FN 18: SYSREAD Q49 = ID210 NR4 IDX1
37 Q10 = ( Q222 / 2 ) + ( QL108 / Q49 ) + ( Q510 / Q49 )
38 ; Konstante Schnittaufteilung rechnen:
39 ; Q11: Gesamtbreite Restmaterial
40 ; Q21: Radiusfertigmass + Aufmass
41 ; Q12: Material - Werkzeugueberlappung
42 ; Q15: Schnittzaehler
43 Q11 = ( Q222 - Q223 ) / 2 - Q368
44 Q21 = ( Q223 / 2 ) + Q368
45 Q12 = Q11 - ( QL108 * Q370 )
46 ; Schnittzaehler auf Einzelschnitt setzen
47 Q15 = 0
48 ; Abfrage, ob ein Schnitt reicht
49 FN 12: IF +Q12 LT +0 GOTO LBL 1
61 FN 9: IF +Q12 EQU +0 GOTO LBL 1
50 ; Wenn nicht, dann Zust. konstant aufteilen
51 ; Q11: Aktueller Radius
52 ; Q12: Anzahl Schnitte
53 ; Q13: Radiusverkleinerung
54 ; Q15: Schnittzaehler
55 Q12 = INT ( Q11 / ( QL108 * Q370 ) )
56 Q13 = FRAC ( Q11 / ( QL108 * Q370 ) )
57 FN 9: IF +Q13 EQU +0 GOTO LBL "EVEN_CUTS"
58 Q12 = Q12 + 1
59 LBL "EVEN_CUTS"
60 Q13 = Q11 / Q12
61 Q11 = ( Q222 / 2 ) - Q13
62 Q15 = 1
63 FN 9: IF +0 EQU +0 GOTO LBL 2
64 LBL 1
65 ; Radius bei Einzelschnitt
66 Q11 = ( Q223 / 2 ) + Q368
67 LBL 2
68 CC  X+0  Y+0
69 LP  PR+Q10  PA+0 R0 FMAX
70 L  Z+Q20 R0 FMAX
71 ; Starttiefe setzen
72 FN 2: Q23 =+Q23 - +Q202
73 FN 10: IF +Q30 NE -1 GOTO LBL 30
74 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
75 FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
76 FN 9: IF +0 EQU +0 GOTO LBL 10
77 LBL 30
78 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
79 FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
80 ; Wiederholungen
81 LBL 10
82 FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF1"
83 CALL LBL "GLEICHLAUF"
84 FN 9: IF +0 EQU +0 GOTO LBL "WEITER1"
85 LBL "CALL_GEGENLAUF1"
86 CALL LBL "GEGENLAUF"
87 LBL "WEITER1"
88 FN 2: Q23 =+Q23 - +Q202
89 FN 10: IF +Q30 NE -1 GOTO LBL 32
90 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
91 FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
92 FN 9: IF +0 EQU +0 GOTO LBL 10
93 LBL 32
94 FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
95 FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
96 FN 9: IF +0 EQU +0 GOTO LBL 10
97 LBL "ENDTIEFE"
98 FN 0: Q23 =+Q24
99 FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF2"
100 CALL LBL "GLEICHLAUF"
101 FN 9: IF +0 EQU +0 GOTO LBL "WEITER2"
102 LBL "CALL_GEGENLAUF2"
103 CALL LBL "GEGENLAUF"
104 LBL "WEITER2"
105 FN 9: IF +0 EQU +0 GOTO LBL 14
106 ; *** UP Gleichlauffraesen ***
107 LBL "GLEICHLAUF"
108 LP  PR+Q10  PA+0 R0 FMAX ; Startposition
109 L  Z+Q23 R0 FQ206
110 FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT"
109 L  FQ207
111 APPR PCT  PR+Q11  PA+0  CCAQ511 R+Q510 RL FQ207
112 LBL "MULTICUT"
113 CP IPA-360 DR- FQ207 M98
114 Q15 = Q15 + 1
115 FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT"
116 Q11 = Q11 - Q13
117 LP  PR+Q11  PA+0 RL FQ207
118 FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT"
119 LBL "END_MULTICUT"
120 LP  PR+Q21  PA+0 RL FQ207
121 FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT"
122 LBL "SINGLECUT"
109 L  FQ207
123 APPR PCT  PR+Q11  PA+0  CCAQ511 R+Q510 RL FQ207
124 LBL "LASTCUT"
125 CP IPA-360 DR- FQ207
126 DEP CT  CCAQ511 R+Q510 FQ207
127 ; Startwerte fuer Multicut setzen
128 FN 9: IF +Q15 EQU +0 GOTO LBL 40
129 Q11 = ( Q222 / 2 )
116 Q11 = Q11 - Q13
130 Q15 = 1
131 LBL 40
132 LBL 0
133 ; *** UP Gegenlauffraesen ***
134 LBL "GEGENLAUF"
135 LP  PR+Q10  PA+0 R0 FMAX ; Startposition
136 L  Z+Q23 R0 FQ206
137 FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT_GG"
109 L  FQ207
138 APPR PCT  PR+Q11  PA+0  CCAQ511 R+Q510 RR FQ207
139 LBL "MULTICUT_GG"
140 CP IPA+360 DR+ FQ207 M98
141 Q15 = Q15 + 1
142 FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT_GG"
143 Q11 = Q11 - Q13
144 LP  PR+Q11  PA+0 RR FQ207
145 FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT_GG"
146 LBL "END_MULTICUT_GG"
147 LP  PR+Q21  PA+0 RR FQ207
148 FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT_GG"
149 LBL "SINGLECUT_GG"
109 L  FQ207
150 APPR PCT  PR+Q11  PA+0  CCAQ511 R+Q510 RR FQ207
151 LBL "LASTCUT_GG"
152 CP IPA+360 DR+ FQ207
153 DEP CT  CCAQ511 R+Q510 FQ207
154 ; Startwerte fuer Multicut setzen
155 FN 9: IF +Q15 EQU +0 GOTO LBL 41
156 Q11 = ( Q222 / 2 )
116 Q11 = Q11 - Q13
157 Q15 = 1
158 LBL 41
159 LBL 0
160 ; *** ENDE UP Gleichlauffraesen ***
161 LBL 14
162 FN 9: IF +Q195 EQU +1 GOTO LBL 193
163 FN 3: Q200 =+Q200 * +Q30
164 FN 3: Q202 =+Q202 * +Q30
165 FN 3: Q204 =+Q204 * +Q30
166 LBL 0
167 LBL 193
168 L  Z+Q20 FMAX
169 FN 9: IF +Q195 EQU +1 GOTO LBL 254
170 L  Z+Q19 FMAX
171 LBL 254
172 END PGM CIRCSTUDMILL MM 
