BEGIN PGM 419 MM
FN 9: IF Q305  EQU 0  GOTO LBL "IFNOT_1"
 FN 18: SYSREAD QL0 = ID 10 NR 103 IDX 303
 FN 9: IF QL0  EQU 0 GOTO LBL "IF_2"
 FN 9: IF Q303  EQU -1 GOTO LBL "IF_2"
 FN 9: IF 0 EQU 0 GOTO LBL "IFNOT_2"
 LBL "IF_2"
  FN 14: ERROR= 1078
 LBL "IFNOT_2"
LBL "IFNOT_1"
CALL PGM CHECK_BAMODE.CYC
FN 9: IF +Q169 EQU +1.1 GOTO LBL 254
Q198 = 419
CALL PGM ORIENT.CYC
FN 10: IF +Q303 NE +1 GOTO LBL 10
CALL PGM INIT41X.CYC
LBL 10
CALL PGM INIT.CYC
;** Tastkugelradius umladen
Q4 = Q2
FN 10: IF +Q267 NE +0 GOTO LBL 1
FN 14: ERROR= 1042
LBL 1
;** Nur WZ-Achse X, Y, Z erlaubt
FN 12: IF +Q109 LT +3 GOTO LBL 2
FN 14: ERROR= 1079
LBL 2
Q320 = Q320 + Q2 + Q3
FN 12: IF +Q261 LT +Q260 GOTO LBL 130
FN 0: Q260 =+Q261
LBL 130
FN 1: Q1 =+Q109 + +1
FN 18: SYSREAD Q0 = ID270 NR1 IDXQ1
FN 11: IF +Q0 GT +Q260 GOTO LBL 120
L  Z+Q260 R0 FQ59
LBL 120
FN 9: IF +Q272 EQU +1 GOTO LBL 21
FN 9: IF +Q272 EQU +2 GOTO LBL 31
FN 9: IF +Q272 EQU +3 GOTO LBL 41
FN 14: ERROR= 1064
;X-Achse (Hauptachse)
LBL 21
Q1 = Q263 + ( - Q320 * Q267 )
Q2 = 0
FN 9: IF +Q267 EQU -1 GOTO LBL 22
FN 9: IF +Q109 EQU +0 GOTO LBL 23
Q2 = Q41
FN 9: IF +0 EQU +0 GOTO LBL 23
LBL 22
Q2 = 180
FN 9: IF +Q109 EQU +0 GOTO LBL 23
Q2 = Q41 + 180
LBL 23
L  X+Q1  Y+Q264 R0 FQ59
TCH PROBE 1.0 BEZUGSPUNKT POLAR
TCH PROBE 1.1 X WINKEL:+Q2
TCH PROBE 1.2  Z+Q261
CALL PGM SUB_POSREAD.CYC
;Kugelradius verrechnen
Q141 = Q141 + ( Q267 * ( Q4 * COS Q41 ) )
Q142 = Q142 - ( Q267 * ( Q4 * SIN Q41 ) )
;Bei NC-Kern orieniert sich die Konvertierung
;am aktuellen PGM (nicht Hauptprogramm)
;FN 10: IF +Q113 NE +1 GOTO LBL 162
;Q143 = Q143 - ( Q114 * 25.4 )
;FN 9: IF +0 EQU +0 GOTO LBL 163
LBL 162
Q143 = Q143 - Q114
LBL 163
FN 9: IF +0 EQU +0 GOTO LBL 98
;Y-Achse (Nebenachse)
LBL 31
Q1 = Q264 + ( - Q320 * Q267 )
Q2 = 90
FN 9: IF +Q267 EQU -1 GOTO LBL 32
FN 9: IF +Q109 EQU +1 GOTO LBL 33
Q2 = Q41 + Q2
FN 9: IF +0 EQU +0 GOTO LBL 33
LBL 32
Q2 = 270
FN 9: IF +Q109 EQU +1 GOTO LBL 33
Q2 = Q41 + 270
LBL 33
L  X+Q263  Y+Q1 R0 FQ59
TCH PROBE 1.0 BEZUGSPUNKT POLAR
TCH PROBE 1.1 X WINKEL:+Q2
TCH PROBE 1.2  Z+Q261
CALL PGM SUB_POSREAD.CYC
;Kugelradius verrechnen
Q141 = Q141 - ( Q267 * ( Q4 * SIN Q41 ) )
Q142 = Q142 + ( Q267 * ( Q4 * COS Q41 ) )
;FN 10: IF +Q113 NE +1 GOTO LBL 164
;Q143 = Q143 - ( Q114 * 25.4 )
;FN 9: IF +0 EQU +0 GOTO LBL 165
LBL 164
Q143 = Q143 - Q114
LBL 165
FN 9: IF +0 EQU +0 GOTO LBL 98
LBL 41
;Z-Achse (Werkzeugachse)
Q1 = Q261 + ( - Q320 * Q267 ) - Q4
Q2 = 0
FN 9: IF +Q267 EQU -1 GOTO LBL 42
FN 9: IF +Q109 EQU +2 GOTO LBL 43
Q2 = Q41
FN 9: IF +0 EQU +0 GOTO LBL 43
LBL 42
Q2 = 180
FN 9: IF +Q109 EQU +2 GOTO LBL 43
Q2 = Q41 + 180
LBL 43
L  X+Q263  Y+Q264 R0 FQ59
TCH PROBE 1.0 BEZUGSPUNKT POLAR
TCH PROBE 1.1 Z WINKEL:+Q2
TCH PROBE 1.2  Z+Q1
CALL PGM SUB_POSREAD.CYC
;Kugelradius verrechnen
Q141 = Q141 + ( Q267 * ( Q4 * SIN Q41 ) )
Q142 = Q142 - ( Q267 * ( Q4 * COS Q41 ) )
;FN 10: IF +Q113 NE +1 GOTO LBL 160
;Q143 = Q143 - ( Q114 * 25.4 )
;FN 9: IF +0 EQU +0 GOTO LBL 161
LBL 160
Q143 = Q143 - Q114
LBL 161
LBL 98
L  Z+Q260 FQ59
FN 17: SYSWRITE ID 990 NR1 =+0
FN 17: SYSWRITE ID 990 NR2 =+0
;Drehungen lesen
FN 18: SYSREAD Q5 = ID210 NR1 ;ROTMAN
FN 18: SYSREAD Q6 = ID210 NR2 ;ROTPROG
FN 18: SYSREAD Q7 = ID210 NR1 ;3DROT
Q5 = Q5 + Q6 + Q7
; Aufruf Bezugspunkt-Setzen
CALL PGM PRESET_419.CYC
LBL 254
FN 17: SYSWRITE ID 990 NR16 =+0 ;# Spindelkontrolle aus
END PGM 419 MM
