20. März 2019, 18:31:59
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[offen] Koordinaten in Robtarget überschreiben


normal_post Autor Thema: [offen] Koordinaten in Robtarget überschreiben  (Gelesen 294 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

21. November 2018, 12:34:05
Gelesen 294 mal
Offline

ABB-Nutzer


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:

KreisSchneiden 20, 0, p10, z0\FricLvl:=nfric_lev_p610, v40, tPL1_Brenner1;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]
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. :D
  • gefällt mir    Danke

Heute um 18:31:59
Antwort #1

Werbung

Gast

21. November 2018, 15:14:07
Antwort #1
Offline

Programmiersklave


Lies mal "Rapid Kernel|Routine Declarations|Parameter Declarations". Du brauchst den Punkt als PERS und die Parameterübergabe als "inout".

Grüße,
Michael

21. November 2018, 15:41:50
Antwort #2
Offline

ABB-Nutzer


Und damit scheitert es schon, alle robtargets müssen leider nach Standard als local const vorliegen. Danke für die Hilfe :/
  • gefällt mir    Danke

22. November 2018, 08:08:55
Antwort #3
Offline

6303_6349


Guten Morgen,

Wenn du doch nur in z-Richtung nach unten fährst, dann ist ja generell auch nur der pPosition.trans.z- Wert wichtig für dich, verstehe ich das richtig? Ich weiß jetzt natürlich nicht, wie dein Werkobjekt und dein Werkzeug definiert ist, da du ja mit RelTool fährst. Wenn du aber stattdessen über Offset deinen Berührpunkt anfahren könntest, dann hättest du ja den korrigierten z-Wert, alle anderen Werte deines robtargets müssten unberührt bleiben. Den z-Wert schreibst du dann in eine num-Variable, die du zurückgeben und weiterverrechnen kannst.
Ich hoffe ich habe keinen Denkfehler und das ist so möglich!

Gruß
  • gefällt mir    Danke


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH