Hallo Zusammen,
ich habe eine Frage zu Turn und Status in einer Position. Was passiert damit wenn man den : Operant verwedent?
Ich habe eine Funktion geschrieben das mir Offsetwerte erlaubt.
Zum Beispiel so:
$APO.CPTP=100
BAS(#VEL_PTP,100)
BAS(#TOOL,2)
BAS(#BASE,0)
PTP PosOffs(XPufferLinks,{X 400,Y -100,Z 200},#BASE) C_PTP
$APO.CPTP=100
BAS(#VEL_PTP,100)
BAS(#TOOL,2)
BAS(#BASE,0)
PTP PosOffs(XPufferLinks,{Y -100,Z 180},#BASE) C_PTP
$APO.CPTP=100
BAS(#VEL_PTP,100)
BAS(#TOOL,2)
BAS(#BASE,0)
PTP PosOffs(XPufferLinks,{Z 170},#BASE) C_PTP
$APO.CPTP=50
BAS(#VEL_PTP,100)
BAS(#TOOL,2)
BAS(#BASE,0)
PTP PosOffs(XPufferLinks,{Z 50},#BASE) C_PTP
;FOLD LIN PufferLinks Vel= 0.5 m/s CPDAT3 Tool[2]:Grf Schmutzig Base[0];%{PE}%R 5.4.35,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:PufferLinks, 3:, 5:0.5, 7:CPDAT3
$BWDSTART=FALSE
LDAT_ACT=LCPDAT3
FDAT_ACT=FPufferLinks
BAS(#CP_PARAMS,0.5)
LIN XPufferLinks
;ENDFOLD
Hier die Funktion PosOffs
&ACCESS RO1
&REL 1
&COMMENT positionsoffset
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
&PARAM EDITMASK = *
DEFFCT E6POS PosOffs(RefPos :IN,Offset :OUT,OffsMode :IN)
DECL E6POS RefPos,NewPos
DECL FRAME Offset
;Typ in Config.dat mögliche werte:NONE,TCP,BASE
;damit wird die verschiebung relativ zum tool oder zur
;base (aktive base) berechnet
DECL IPO_M_T OffsMode
;abfragen welche übergabeparameter angegeben wurden
;wenn ein parameter fehlt wird dieses argument mit
;null initialisiert
IF VARSTATE("Offset.x")<>#INITIALIZED THEN
Offset.x=0.0
ENDIF
IF VARSTATE("Offset.y")<>#INITIALIZED THEN
Offset.y=0.0
ENDIF
IF VARSTATE("Offset.z")<>#INITIALIZED THEN
Offset.z=0.0
ENDIF
IF VARSTATE("Offset.a")<>#INITIALIZED THEN
Offset.a=0.0
ENDIF
IF VARSTATE("Offset.b")<>#INITIALIZED THEN
Offset.b=0.0
ENDIF
IF VARSTATE("Offset.c")<>#INITIALIZED THEN
Offset.c=0.0
ENDIF
IF (OffsMode==#TCP) THEN
;verschiebung in toolkoordinaten
RETURN (RefPos:Offset)
ELSE
;verschiebung in basekoordinaten
NewPos=Offset:RefPos
;RETURN (Offset:RefPos)
RETURN (NewPos)
ENDIF
ENDFCT
So weit so gut. In den meisten Fällen funktioniert die Funktion wie sie funktionieren soll. Und manchmal wenn ich zum Beispiel einen Offset von 100 mm in Z eintrage kommt da eine Meldung das die Position nicht erreicht werden kann wegen einem Softwareendschalter. Wenn ich aber von Hand 100 mm linear von der Referenzposition fahre ist der Roboter locker von allen Softwareendschalter entfernt. Dann trage ich einen kleineren Wert ein (90 mm) und der Roboter arbeitet das Programm ab wie es sein soll.
Meine Vermutung ist jetzt das der Status und Turn auch noch bei dieser Operation verändert wird. Kann das sein?
Diese Funktion benutze ich schon länger und geht über verschiedene Softwarestände.
Wäre super wenn mir da einer helfen kann.
Gruß Paulaner