BEGIN PGM 427 MM
CALL PGM CHECK_BAMODE.CYC
FN 9: IF +Q169 EQU +1.1 GOTO LBL 254
Q198 = 427
CALL PGM ORIENT.CYC
CALL PGM INIT.CYC
;** Tastkugelradius umladen
Q4 = Q2
FN 10: IF +Q267 NE +0 GOTO LBL 12
FN 14: ERROR= 1042
LBL 12
;** 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
Q160 = Q141 + ( Q267 *  Q4  )
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
Q160 = Q142 + ( Q267 * Q4 )
FN 9: IF +0 EQU +0 GOTO LBL 98
;Z-Achse (Werkzeugachse)
LBL 41
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
;Tasterlaenge
Q160 = Q143 - Q114
;Bei NC-Kern orieniert sich die Konvertierung
;am aktuellen PGM (nicht Hauptprogramm)
;FN 10: IF +Q113 NE +1 GOTO LBL 98
;Q160 = Q143 - ( Q114 * 25.4 )
LBL 98
L  Z+Q260 FQ59
FN 10: IF +Q272 NE +1 GOTO LBL 150
; Messachse = 1. Achse
Q168 = Q160 - Q263
FN 9: IF +0 EQU +0 GOTO LBL 160
LBL 150
FN 10: IF +Q272 NE +2 GOTO LBL 151
; Messachse = 2. Achse
Q168 = Q160 - Q264
FN 9: IF +0 EQU +0 GOTO LBL 160
LBL 151
; Messachse = 3. Achse
Q168 = Q160 - Q261
LBL 160
FN 10: IF +Q113 NE +1 GOTO LBL 170
Q288 = Q288 / 25.4
Q289 = Q289 / 25.4
Q263 = Q263 / 25.4
Q264 = Q264 / 25.4
Q160 = Q160 / 25.4
Q168 = Q168 / 25.4
Q261 = Q261 / 25.4
LBL 170
CALL PGM PROTOCOLL_427.CYC
FN 10: IF +Q113 NE +1 GOTO LBL 171
Q168 = Q168 * 25.4
LBL 171
Q19 = Q160
Q29 = Q288
Q39 = Q289
Q40 = 12
CALL PGM CHECK_STATUS.CYC
Q50 = SGN( Q267 ) * Q168                        ; Korrekturwert
Q52 = INT( Q272 / 3 )                           ; Korrigiere radial / axial
FN 18: SYSREAD QL330 = ID 30 NR 52 IDX 330      ; WZ-Name programmiert
FN 9: IF +QL330 EQU +0 GOTO LBL "ToolNr"        ; Kein Name programmiert
FN 18: SYSREAD Q330 = ID 990 NR 10 IDX 330      ; WZ-Nummer zum Namen ermitteln
FN 10: IF +Q330 NE -1 GOTO LBL "ToolNr"         ; WZ-Nummer ermittelt
FN 14: ERROR= 1092                              ; Keine WZ-Nummer gefunden
LBL "ToolNr"                                    ; WZ-Nummer auswerten
Q53 = INT Q330                                  ; WZ-Nummer
Q54 = 10 * FRAC Q330                            ; WZ-Index
FN 9: IF +Q53 EQU +0 GOTO LBL "ToolCorr_End"    ; Keine WZ-Korrektur
Q55 = Q531                                      ; Anstellwinkel Drehwerkzeug
Q56 = Q498                                      ; Drehwerkzeug invers
CALL PGM tpToolCorr.CYC                         ; Werkzeugkorrektur
LBL "ToolCorr_End"
FN 10: IF +Q309 NE +1 GOTO LBL 183
FN 12: IF +Q160 LT +Q288 GOTO LBL 182
FN 14: ERROR= 1058
LBL 182
FN 11: IF +Q160 GT +Q289 GOTO LBL 183
FN 14: ERROR= 1059
LBL 183
FN 17: SYSWRITE ID 990 NR1 =+0
FN 17: SYSWRITE ID 990 NR2 =+0
FN 10: IF +Q113 NE +1 GOTO LBL 254
Q168 = Q168 / 25.4
Q263 = Q263 * 25.4
Q264 = Q264 * 25.4
Q261 = Q261 * 25.4
LBL 254
FN 17: SYSWRITE ID 990 NR16 =+0 ;# Spindelkontrolle aus
END PGM 427 MM
