Hallo Kollegen,
wir haben hier einen Roboter, der an einem Bauteil Löcher mittels Plasma schneidet. Hierzu möchte ich eine automatische Teachin-Funktion schreiben, die das angefahrene Robtarget auf den idealen Abstand korrigiert. An dem Brenner ist ein Sensor, der Bauteilkontakt erkennt. Die Idee war, im Werkzeug mit SearchL auf das Bauteil zu fahren, die Position zu speichern, den Korrekturwert in dem Robtarget zu verrechnen und dies zurückzuschreiben.
Leider konnte ich nicht rausfinden, wie ich die Position in ein Robtarget zurückschreibe, der Rest funktioniert.
Ich schneide die Routine mal zusammen, damit das ganze nicht zu unübersichtlich wird:
Aufruf des Befehls:
Routine:
[color=#0000ff] PROC KreisSchneiden(num radius,
num korrekturwert,
robtarget pPosition,
zonedata Zone,
\PERS num FricLvl{*},
speeddata speed,
tooldata tool,
wobjdata Wobj)
! TCP Deklaration
Plasmabrenner:=tool;
! Werkobjekt Deklaration
wobj_KreisSchneiden:=Wobj;
! Berechnung Schnittbreite
nRadius_kor:=radius-korrekturwert;
[Hier fehlt Prozessrelevanter Kram]
ELSEIF bDoTeachIn=TRUE THEN
TPErase;
TPReadFK reg1,"Automatische Abstandsfindung angewählt, kein Prozess",stEmpty,stEmpty,stEmpty,stEmpty,"OK";
! Startposition
MoveL pPosition,speed,fine,Plasmabrenner\Wobj:=wobj_KreisSchneiden;
!Suche Bauteil , Positionsoverride in Z max 20mm
SearchL \Stop, diNahSensor, pFound, RelTool(pPosition ,0,0,20), v10, Plasmabrenner\Wobj:=wobj_KreisSchneiden;
!Rechne neue Distanz aus und speichere in neue Position
pFound:=RelTool(pFound,0,0,-1.7);
pPosition:=pFound;
Stop;
ENDIF
[Hier fehlt Prozessrelevanter Kram]
ENDPROC[/color]
Alles anzeigen
Hat jemand eine Idee, wie ich am Ende die Werte des Robtagets "Position" in das Robtarget p10 übertragen kann?
PS: Wer jetzt p10:=pPosition; sagt, bekommt digital Haue.