Rohrbogen durch eine Öffnung fahren. CIRC Bewegung programmieren

  • Hallo


    ich habe folgende Aufgabenstellung wo ich nicht weiter komme und auch nix passendes in der Suche finde:


    Ein Rohrbogen soll durch eine Runde Öffnung gefahren werden.

    An Daten stehen mir zur Verfügung:

    • Durchmesser vom Rohr
    • Radius
    • Winkel


    Die CIRC Funktion braucht ja einen LIN Start Punkt, einen Mittelpunkt und ein Endpunkt.


    Positionen werden als E6POS abgespeichert.


    Soweit ist es klar. Nun hatte ich Probleme die E6POS in der modul.dat zu berechnen und habe die E6POS nun in der config.dat angelegt.


    Folgende LösungsIdeen habe ich:


    Lösungsidee A:

    Ich mache eine BASE Verschiebung um die Länge vom Radius zur Seite und Fahre dann auf der selben Punkt den Winkel an.

    Problem hierbei ist, dass anschließend der Rohrbogen in der entgegengesetzte Richtung weiter läuft und ich derzeit nicht weiß wie ich den TCP verschieben muss.


    Dazu habe ich die Idee den Greifer TCP und die Base ohne Verschiebung gegeneinander zu rechnen um dann einen Abstand zu ermitteln, diesen Abstand müsste ich dann für die Toolberrechnung nutzen können. Frage ist hier, wie man das berechnet.


    Alternativ müsste ich den TCP auch per 3Eck berechnen können. Wie SINUS und COSINUS Berechnung funktioniert habe ich rausgesucht. Aber wie ziehe ich die Wurzel? Gibt es da eine Funktion?


    Lösungsidee B:

    Ich fahre eine relative Kreisbewegung. Hier bin ich aber unsicher, wie ich die E6POS berechnen kann.


    vielleicht hat jemand sowas schon gemacht oder hat noch ganz andere Lösungsideen.

    .

    Steuerung ist eine KRC 4 mit der Version KKS 8.3.32

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Programmiersklave,


    Mitfahrende Base im Kreismittelpunkt klingt gut.


    Ich habe also die BASE in den Kreismittelpunkt verschoben.


    Dann mach ich LIN $akt_pos auf der Startposition


    Welche Parameter muss ich denn beim CIRC Code ändern um das hinzubekommen.


    Ist das dann externer TCP?


    CIRC P1 P2 Vel=2 m/s CPDAT1 Tool[0] Base[0];%{PE}%R 8.3.22,%MKUKATPBASIS,%CMOVE,%VCIRC,%P 1:CIRC, 2:P1, 3:P2, 4:, 6:2, 8:CPDAT1

    $BWDSTART=FALSE

    LDAT_ACT=LCPDAT1

    FDAT_ACT=FP2

    BAS(#CP_PARAMS,2)

    CIRC XP1, XP2

    ;ENDFOLD

    END

  • Ja genau, $IPO_MODE auf #TCP und das externe Tool in den Lochmittelpunkt. (In der $CONFIG ist das Tool dann Base und Base ist Tool, kennst Du, oder?)

    Das mitfahrende Base, wie gesagt, in den Kreismittelpunkt (weiss nicht, ob Du das erst dorthin rechnen musst oder wie Dein Zeug, was am Flansch hängt, aussieht), und dann liegen alle Punkte im gleichen Abstand vom Base.

    Wenn die Situation das hergibt und Du die Koordinatensysteme "schön" machst, kannst Du vielleicht sogar mit glatten Werten arbeiten wie auf "Rechenpapier"

    P1: X Radius, Y 0

    P2: X 0, Y Radius

    P3: X (- Radius), Y 0

    und von den Winkeln dreht sich nur einer, im Beispiel dann wohl A.


    Den Winkelbetrag (wieviel vom Kreis gefahren werden soll) kann man dann über den CA-Parameter festlegen. Gibt's den noch? Glaub' schon.

    Wäre aber auch kein Ding, den Endpunkt einfach mit dem arcustangens zu berechnen, wenn man CA nicht traut.


    Ich würde den ersten "Anfahrpunkt" auch schon in $IPO_MODE=#TCP teachen und sinngemäß das freie Ende der Bewegung, sonst wird das schnell verwirrend beim Teachen / für den Benutzer.


    Und aufgepasst, wenn das "Loch", wo Du durchfahren willst, noch auf einer externen Kinematik hängt (KUKA-Achse), dann wird's noch mal einen Level seltsamer.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden