BEGIN PGM 221 MM
FN 22: FUNCT QL0 FNR 900 PIN 70 PIN 221
FN 18: SYSREAD QL0 = ID992 NR30 ; 1=Bahnsteuerung
FN 18: SYSREAD QL1 = ID 992 NR 32 IDX 221 ; 0 = Zyklus 221 gesperrt
FN 10: IF +QL1 NE +0 GOTO LBL "enablePattern"
FN 14: ERROR= 1084  ; Bearbeitungszyklus nicht erlaubt
LBL "enablePattern"
Q200 = ABS Q200
Q204 = ABS Q204
Q242 = ABS Q242
Q243 = ABS Q243
Q301 = ABS Q301
Q176 = 0
FN 17: SYSWRITE ID 212 =+3
FN 18: SYSREAD Q147 = ID10 NR3
FN 10: IF +Q147 NE +0 GOTO LBL "defCycle"
FN 14: ERROR= 1027  ; kein Bearbeitungszyklus definiert
LBL "defCycle"
FN 18: SYSREAD QL1 = ID 992 NR 32 IDX Q147 ; 0 = Bearbeitungszyklus gesperrt
FN 10: IF +QL1 NE +0 GOTO LBL "enableCycle"
FN 14: ERROR= 1084  ; Bearbeitungszyklus nicht erlaubt
LBL "enableCycle"
FN 10: IF +Q147 NE +254 GOTO LBL 212
FN 10: IF +Q367 NE +0 GOTO LBL 212
FN 14: ERROR= 1089
LBL 212
FN 10: IF +Q147 NE +12 GOTO LBL 211
FN 14: ERROR= 1027
LBL 211
FN 10: IF +Q147 NE +210 GOTO LBL 204
FN 14: ERROR= 1033
LBL 204
FN 10: IF +Q147 NE +211 GOTO LBL 203
FN 14: ERROR= 1034
LBL 203
FN 10: IF +Q147 NE +230 GOTO LBL 202
FN 14: ERROR= 1027
LBL 202
FN 10: IF +Q147 NE +231 GOTO LBL 201
FN 14: ERROR= 1027
LBL 201
FN 11: IF +Q147 GT +199 GOTO LBL 200
FN 18: SYSREAD Q148 = ID30 NR2
FN 0: Q149 =+Q201
FN 0: Q201 =+Q148
QL147 = 1	; Merker fr Sicherheitsabstand
LBL 200
DECLARE STRING QS30
QS30 = SYSSTR( ID10025 NR1 )
DECLARE STRING QS31 = "CfgGeoCycle"
DECLARE STRING QS32 = "displaySpindleErr"
Q130 = CFGREAD( KEY_QS30 TAG_QS31 ATR_QS32 )
FN 9: IF +Q130 EQU +0 GOTO LBL 199
FN 9: IF +Q147 EQU +17 GOTO LBL 199
FN 9: IF +Q147 EQU +18 GOTO LBL 199
FN 9: IF +Q147 EQU +207 GOTO LBL 199
FN 9: IF +Q147 EQU +209 GOTO LBL 199
FN 9: IF +Q147 EQU +241 GOTO LBL 199
FN 9: IF +Q110 EQU +0 GOTO LBL 199
FN 9: IF +Q110 EQU +1 GOTO LBL 199
FN 14: ERROR= 1000 ; Spindel ?
LBL 199
DECLARE STRING QS30
QS30 = SYSSTR( ID10025 NR1 )
DECLARE STRING QS31 = "CfgGeoCycle"
DECLARE STRING QS32 = "displayDepthErr"
Q130 = CFGREAD( KEY_QS30 TAG_QS31 ATR_QS32 )
FN 9: IF +Q130 EQU +0 GOTO LBL 206
FN 9: IF +Q147 EQU +263 GOTO LBL 207
FN 9: IF +Q147 EQU +264 GOTO LBL 207
FN 9: IF +Q147 EQU +265 GOTO LBL 207
FN 9: IF +Q147 EQU +267 GOTO LBL 207
FN 12: IF +Q201 LT +0 GOTO LBL 206
FN 9: IF +Q201 EQU +0 GOTO LBL 206
FN 9: IF +0 EQU +0 GOTO LBL 208
LBL 207
FN 11: IF +Q201 GT +0 GOTO LBL 208
FN 9: IF +Q147 EQU +265 GOTO LBL 209
FN 9: IF +Q147 EQU +267 GOTO LBL 209
FN 11: IF +Q356 GT +0 GOTO LBL 208
LBL 209
FN 12: IF +Q358 LT +0 GOTO LBL 206
FN 9: IF +Q358 EQU +0 GOTO LBL 206
LBL 208
FN 14: ERROR= 1077
LBL 206
FN 10: IF +Q109 NE -1 GOTO LBL 198
FN 14: ERROR= 1001
LBL 198
FN 9: IF +Q147 EQU +204 GOTO LBL 192
FN 9: IF +Q147 EQU +263 GOTO LBL 191
FN 9: IF +Q147 EQU +264 GOTO LBL 191
FN 9: IF +Q147 EQU +265 GOTO LBL 191
FN 9: IF +Q147 EQU +267 GOTO LBL 191
FN 9: IF +Q147 EQU +240 GOTO LBL 160
FN 9: IF +0 EQU +0 GOTO LBL 161
LBL 160
FN 9: IF +Q343 EQU +0 GOTO LBL 161
FN 12: IF +Q344 LT +0 GOTO LBL 162
FN 0: Q131 =-1
FN 9: IF +0 EQU +0 GOTO LBL 190
LBL 162
FN 0: Q131 =+1
FN 9: IF +0 EQU +0 GOTO LBL 190
LBL 161
FN 9: IF +Q201 EQU +0 GOTO LBL 254
FN 12: IF +Q201 LT +0 GOTO LBL 197
FN 0: Q131 =-1
FN 9: IF +0 EQU +0 GOTO LBL 190
LBL 197
FN 0: Q131 =+1
FN 9: IF +0 EQU +0 GOTO LBL 190
LBL 191
FN 9: IF +Q201 EQU +0 GOTO LBL 253
Q356 = ABS Q356 * ( - 1 )
Q358 = ABS Q358 * ( - 1 )
FN 12: IF +Q201 LT +0 GOTO LBL 187
Q356 = ABS Q356
Q358 = ABS Q358
FN 9: IF +0 EQU +0 GOTO LBL 185
LBL 253
FN 9: IF +Q147 EQU +265 GOTO LBL 252
FN 9: IF +Q147 EQU +267 GOTO LBL 252
FN 9: IF +Q356 EQU +0 GOTO LBL 252
FN 12: IF +Q356 LT +0 GOTO LBL 187
FN 9: IF +0 EQU +0 GOTO LBL 185
LBL 252
FN 9: IF +Q358 EQU +0 GOTO LBL 254
FN 12: IF +Q358 LT +0 GOTO LBL 187
LBL 185
FN 0: Q131 =-1
FN 9: IF +0 EQU +0 GOTO LBL 190
LBL 187
FN 0: Q131 =+1
FN 9: IF +0 EQU +0 GOTO LBL 190
LBL 192
FN 9: IF +Q249 EQU +0 GOTO LBL 254
FN 12: IF +Q249 LT +0 GOTO LBL 195
FN 0: Q131 =+1
FN 9: IF +0 EQU +0 GOTO LBL 190
LBL 195
FN 0: Q131 =-1
LBL 190
CALL LBL 99
FN 0: Q133 =+0
FN 0: Q134 =+0
FN 0: Q137 =+0
FN 0: Q138 =+0
FN 0: Q135 =+Q237	
Q141 = Q203 + Q200 * Q131 ; Sicherheitsabstand
Q144 = Q204 ; Speichern der sicheren Hhe
Q143 = Q203 + Q204 * Q131 ; Sichere Hoehe am Ende der Bearbeitungen wiederherstellen
FN 11: IF +Q204 GT +Q200 GOTO LBL "SafeHightEnd_OK"
    Q143 = Q203 + Q200 * Q131
LBL "SafeHightEnd_OK"
FN 10: IF +Q301 NE +0 GOTO LBL "ModSecSafDist"
Q204 = Q200 ; temp. Modifikation des 2. Sicherheitsabstands
LBL "ModSecSafDist"
Q140 = Q203 + Q204 * Q131 ; Sichere Hoehe zwischen Bearbeitungen
FN 11: IF +Q204 GT +Q200 GOTO LBL "SafeHight1_OK"
Q140 = Q203 + Q200 * Q131
LBL "SafeHight1_OK"
FN 1: Q130 =+Q109 + +1
FN 18: SYSREAD Q130 = ID270 NR1 IDXQ130
FN 9: IF +Q131 EQU -1 GOTO LBL 120
FN 11: IF +Q130 GT +Q140 GOTO LBL 122
   Z+Q144 R0 FMAX
FN 9: IF +0 EQU +0 GOTO LBL 122
LBL 120
FN 12: IF +Q130 LT +Q140 GOTO LBL 122
   Z+Q140 R0 FMAX
FN 9: IF +0 EQU +0 GOTO LBL 122
LBL 2
FN 10: IF +Q301 NE +1 GOTO LBL 122
   Z+Q140 R0 FMAX
LBL 122
QL20 = Q137 + Q138  ; Summe aus aktuelle Spalte und Zeile
FN 9: IF +QL20 EQU +0 GOTO LBL "firstPosition"
    FN 22: FUNCT QL20 FNR 900 PIN 2 ; STOPP bei Einzelsatz
LBL "firstPosition"
QL10 = Q225 + ( Q133 * COS ( - Q224 ) + Q134 * SIN ( - Q224 ) )
QL11 = Q226 + ( - Q133 * SIN ( - Q224 ) + Q134 * COS ( - Q224 ) )
FN 9: IF +QL0 EQU +1 GOTO LBL "MultiIpo1"
   X+QL10 FMAX
   Y+QL11 FMAX
FN 9: IF +0 EQU +0 GOTO LBL "MultiIpo1_End"
LBL "MultiIpo1"
L  X+QL10  Y+QL11 FMAX
LBL "MultiIpo1_End"
FN 10: IF +QL147 NE +1 GOTO LBL "FlagSafDist"
   Z+Q141 FMAX
LBL "FlagSafDist"   
FN 17: SYSWRITE ID 212 =+0
FN 12: IF +Q147 LT +210 GOTO LBL "FlagCycle"
FN 11: IF +Q147 GT +215 GOTO LBL "FlagCycle"	
	Q197=1
LBL "FlagCycle"	
CYCL CALL
	Q197=0
FN 17: SYSWRITE ID 212 =+3
FN 1: Q133 =+Q133 + +Q135
FN 1: Q137 =+Q137 + +1
FN 12: IF +Q137 LT +Q242 GOTO LBL 2
FN 0: Q137 =+0
FN 1: Q138 =+Q138 + +1
FN 0: Q139 =+0
FN 0: Q135 =-Q135
FN 1: Q133 =+Q133 + +Q135
FN 1: Q134 =+Q134 + +Q238
FN 12: IF +Q138 LT +Q243 GOTO LBL 2
Q204 = Q144
   Z+Q143 FMAX
LBL 99
FN 3: Q205 =+Q205 * +Q131
FN 3: Q212 =+Q212 * +Q131
FN 3: Q250 =+Q250 * +Q131
FN 3: Q252 =+Q252 * +Q131
FN 3: Q256 =+Q256 * +Q131
FN 3: Q257 =+Q257 * +Q131
FN 3: Q258 =+Q258 * +Q131
FN 3: Q259 =+Q259 * +Q131
LBL 0
FN 11: IF +Q147 GT +199 GOTO LBL 20
FN 0: Q201 =+Q149
LBL 20
LBL 254
FN 22: FUNCT QL0 FNR 900 PIN 70 PIN 0
END PGM 221 MM
