BEGIN PGM PREST_40X MM 
;ALLE PRESETWERTE LESEN
FN 18: SYSREAD Q0 = ID530 NR1
FN 10: IF +Q0 NE -1 GOTO LBL 1
Q0 = 0
LBL 1
;Abfrage ob Anzeige setzen
FN 10: IF +Q305 NE +0 GOTO LBL 2
CALL LBL 60
LBL 2
;Drehungen lesen
FN 18: SYSREAD QL7 = ID210 NR1 ;ROTMAN
FN 18: SYSREAD QL8 = ID210 NR2 ;ROTPROG
FN 18: SYSREAD QL9 = ID210 NR1 ;3DROT
QL7 = QL7 + QL8 + QL9
;Werte schreiben abhaengig von WZ-Achse
FN 9: IF +Q109 EQU +0 GOTO LBL 51
FN 9: IF +Q109 EQU +1 GOTO LBL 61
FN 9: IF +Q109 EQU +2 GOTO LBL 91
LBL 51
;*************************************
;Toolachse = X-Achse
;Schreiben in Tabellen
FN 9: IF +Q272 EQU +1 GOTO LBL 156
FN 9: IF +Q272 EQU +2 GOTO LBL 157
FN 9: IF +0 EQU +0 GOTO LBL 254
;************* Y-Achse ***************
LBL 156
FN 9: IF +Q303 EQU +0 GOTO LBL 59
;** Write into Preset table
CALL LBL 56
FN 17: SYSWRITE ID 502 NRQ305 IDX2 =+Q141
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 502 NRQ305 IDX3 =+Q142
FN 9: IF +0 EQU +0 GOTO LBL 254
LBL 59
;** Write into Datum table
CALL LBL 50
Q141 = Q141 - Q405
Q142 = Q142 - Q322
FN 17: SYSWRITE ID 500 NRQ305 IDX2 =+Q141
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 500 NRQ305 IDX3 =+Q142
FN 9: IF +0 EQU +0 GOTO LBL 254
;************* Z-Achse ***************
LBL 157
FN 9: IF +Q303 EQU +0 GOTO LBL 69
;** Write into Preset table
CALL LBL 66
FN 17: SYSWRITE ID 502 NRQ305 IDX3 =+Q142
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 502 NRQ305 IDX2 =+Q141
FN 9: IF +0 EQU +0 GOTO LBL 254
LBL 69
;** Write into Datum table
CALL LBL 50
Q141 = Q141 - Q321
Q142 = Q142 - Q405
FN 17: SYSWRITE ID 500 NRQ305 IDX3 =+Q142
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 500 NRQ305 IDX2 =+Q141
FN 9: IF +0 EQU +0 GOTO LBL 254
;*************************************
;*************************************
LBL 61
;Toolachse = Y-Achse
;*************************************
;Schreiben in Tabellen
FN 9: IF +Q272 EQU +1 GOTO LBL 176
FN 9: IF +Q272 EQU +2 GOTO LBL 177
FN 9: IF +0 EQU +0 GOTO LBL 254
;* Antasten in Z-Achse ***************
LBL 176
FN 9: IF +Q303 EQU +0 GOTO LBL 79
;** Write into Preset table
CALL LBL 56
FN 17: SYSWRITE ID 502 NRQ305 IDX3 =+Q141
; bei aktiver ROT zweite Achse schreiben
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 502 NRQ305 IDX1 =+Q142
FN 9: IF +0 EQU +0 GOTO LBL 254
LBL 79
;************** Write into Datum table
CALL LBL 50
Q141 = Q141 - Q405
Q142 = Q142 - Q322
FN 17: SYSWRITE ID 500 NRQ305 IDX3 =+Q141
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 500 NRQ305 IDX1 =+Q142
FN 9: IF +0 EQU +0 GOTO LBL 254
;* Antasten in X-Achse ***************
LBL 177
FN 9: IF +Q303 EQU +0 GOTO LBL 89
;** Write into Preset table
CALL LBL 66
FN 17: SYSWRITE ID 502 NRQ305 IDX1 =+Q142
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 502 NRQ305 IDX3 =+Q141
FN 9: IF +0 EQU +0 GOTO LBL 254
LBL 89
;** Write into Datum table
CALL LBL 50
Q141 = Q141 - Q321
Q142 = Q142 - Q405
FN 17: SYSWRITE ID 500 NRQ305 IDX1 =+Q142
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 500 NRQ305 IDX3 =+Q141
FN 9: IF +0 EQU +0 GOTO LBL 254
;*************************************
;*************************************
LBL 91
;Toolachse = Z-Achse ist getestet
;Schreiben in Tabellen
FN 9: IF +Q272 EQU +1 GOTO LBL 196
FN 9: IF +Q272 EQU +2 GOTO LBL 197
FN 9: IF +0 EQU +0 GOTO LBL 254
LBL 196
; Antastrichtung X
FN 9: IF +Q303 EQU +0 GOTO LBL 99
;** Write into Preset table
CALL LBL 56
FN 17: SYSWRITE ID 502 NRQ305 IDX1 =+Q141
; bei aktiver ROT zweite Achse schreiben
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 502 NRQ305 IDX2 =+Q142
FN 9: IF +0 EQU +0 GOTO LBL 254
;** Write into Datum table
LBL 99
CALL LBL 50
Q141 = Q141 - Q405
Q142 = Q142 - Q322
FN 17: SYSWRITE ID 500 NRQ305 IDX1 =+Q141
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 500 NRQ305 IDX2 =+Q142
FN 9: IF +0 EQU +0 GOTO LBL 254
; Antastrichtung Y
LBL 197
FN 9: IF +Q303 EQU +0 GOTO LBL 109
;** Write into Preset table
CALL LBL 66
FN 17: SYSWRITE ID 502 NRQ305 IDX2 =+Q142
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 502 NRQ305 IDX1 =+Q141
FN 9: IF +0 EQU +0 GOTO LBL 254
;** Write into Datum table
LBL 109
CALL LBL 50
Q141 = Q141 - Q321
Q142 = Q142 - Q405
FN 17: SYSWRITE ID 500 NRQ305 IDX2 =+Q142
FN 9: IF +QL7 EQU +0 GOTO LBL 254
FN 17: SYSWRITE ID 500 NRQ305 IDX1 =+Q141
FN 9: IF +0 EQU +0 GOTO LBL 254
;**************************************************
;** Unterprogramme
;** Umrechnung fuer Schreiben NPT
LBL 50
Q44 = ( Q50 * COS Q41 ) + ( Q51 * SIN Q41 )
Q45 = - ( Q50 * SIN Q41 ) + ( Q51 * COS Q41 )
Q141 = Q141 + Q44
Q142 = Q142 + Q45
LBL 0
;** Umrechnung fuer Schreiben PRT, X-Achse
LBL 56
Q48 = ( Q405 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q49 = - ( Q405 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q46 = ( Q141 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q47 = - ( Q141 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q141 = Q46 - Q48
Q142 = Q47 - Q49
LBL 0
;** Umrechnung fuer Schreiben PRT, Y-Achse
LBL 66
Q48 = ( Q141 * COS - Q41 ) + ( Q405 * SIN - Q41 )
Q49 = - ( Q141 * SIN - Q41 ) + ( Q405 * COS - Q41 )
Q46 = ( Q141 * COS - Q41 ) + ( Q142 * SIN - Q41 )
Q47 = - ( Q141 * SIN - Q41 ) + ( Q142 * COS - Q41 )
Q141 = Q46 - Q48
Q142 = Q47 - Q49
LBL 0
;** COPY ACTIVE LINE INTO LINE 0
LBL 60
FN 18: SYSREAD QL1 = ID503 NRQ0 IDX1
FN 18: SYSREAD QL2 = ID503 NRQ0 IDX2
FN 18: SYSREAD QL3 = ID503 NRQ0 IDX3
FN 18: SYSREAD QL4 = ID503 NRQ0 IDX4
FN 18: SYSREAD QL5 = ID503 NRQ0 IDX5
FN 18: SYSREAD QL6 = ID503 NRQ0 IDX6
FN 18: SYSREAD QL11 = ID503 NRQ0 IDX7
FN 18: SYSREAD QL12 = ID503 NRQ0 IDX8
FN 18: SYSREAD QL13 = ID503 NRQ0 IDX9
FN 18: SYSREAD QL17 = ID504 NRQ0
FN 17: SYSWRITE ID 503 NRQ305 IDX1 =+QL1
FN 17: SYSWRITE ID 503 NRQ305 IDX2 =+QL2
FN 17: SYSWRITE ID 503 NRQ305 IDX3 =+QL3
FN 17: SYSWRITE ID 503 NRQ305 IDX4 =+QL4
FN 17: SYSWRITE ID 503 NRQ305 IDX5 =+QL5
FN 17: SYSWRITE ID 503 NRQ305 IDX6 =+QL6
FN 17: SYSWRITE ID 503 NRQ305 IDX7 =+QL11
FN 17: SYSWRITE ID 503 NRQ305 IDX8 =+QL12
FN 17: SYSWRITE ID 503 NRQ305 IDX9 =+QL13
FN 17: SYSWRITE ID 504 NRQ305 =+QL17
LBL 0
LBL 254
FN 10: IF +Q305 NE +0 GOTO LBL 200
FN 17: SYSWRITE ID 530 NR1 =+Q305
LBL 200
Q199 = -1
END PGM PREST_40X MM 