Hier nochmal der bisherige Programmanfang:
&ACCESS RVP
&REL 1
DEF ct1 ( )
DECL E6POS TP
DECL REAL KUCHEN_D
DECL REAL KUCHEN_R
DECL REAL KUCHEN_H
DECL BOOL Teachpunkt
;FOLD INI;%{PE}
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
KUCHEN_D=270.0
KUCHEN_R=KUCHEN_D/2
KUCHEN_H=50.0
TP=XP1
Teachpunkt=FALSE
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
PTP XHOME
;ENDFOLD
;FOLD LIN P2 Vel=2 m/s CPDAT1 Tool[3]:Knife Base[0];%{PE}%R 8.3.48,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:, 5:2, 7:CPDAT1
$BWDSTART=FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FP2
BAS(#CP_PARAMS,2)
LIN XP2
;ENDFOLD
;Teachpunkt einfuegen. Roboter fährt Punkt jedoch nicht an.
if Teachpunkt==TRUE THEN
;FOLD PTP P1 Vel=100 % PDAT1 Tool[3]:Knife Base[0];%{PE}%R 8.3.48,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:, 5:100, 7:PDAT1
$BWDSTART=FALSE
PDAT_ACT=PPDAT1
FDAT_ACT=FP1
BAS(#PTP_PARAMS,100)
PTP XP1
;ENDFOLD
ENDIF
;Erster Schnitt
TP.Y=TP.Y+KUCHEN_R
TP.Z=TP.Z+KUCHEN_H
TP.A=TP.A+90
;FOLD Schnittposition 1 anfahren
LIN TP
;ENDFOLD
;BAS (#INITMOV,0 )
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
PTP XHOME
;ENDFOLD
END
Zunächst wird die Homeposition angefahren, anschließend dann P2. Abhängig davon, ob die Variable TeachPunkt auf TRUE oder FALSE gesetzt wird, so wird der Punkt P1 angefahren. Dann geht es weiter zu Punkt TP (die eigentliche erste Schnittposition).
Nun ist es so, dass bei Teachpunkt=TRUE (also mit Anfahren des Punktes P1) der Punkt TP anschließend richtig angefahren wird. Ist die Variable Teachpunkt=FALSE, so wird leider eine gänzlich andere Position angefahren.
Kann mir dazu jemand helfen?