Inline- vs. Expertenprogrammierung

  • Hallo liebe Kuka-Experten,


    ich habe jetzt schon einiges zur Inline- und Expertenprogrammierung nachgelesen, jedoch sind mir noch ein paar Dinge nicht so ganz klar:


    1. Ist es möglich, Tool- und Load-Data von einem per Inline-Formular geteachten Punkt variabel im Programmablauf anzupassen/zu verändern?


    Hintergrund ist, dass ich einige Position (sagen wir PickPos oder LoadPos) mit beiden Tools eines Doppelgreifers anfahren möchte. Durch den Doppelgreifer ergeben sich daher 2 Tools und bis zu 4 verschiedene Lastfälle (Greifer 1 und 2 leer, Greifer 1 voll/Greifer 2 leer, Greifer 1 leer/Greifer 2 voll, Greifer 1 und 2 voll), die ich je nach Fall unterschiedlich kombinieren muss.


    Oder würdet ihr in dem Fall eher zur Expertenprogrammierung raten?


    2. Wenn ich z.B. den oben genannten PickPos Punkt als Expertenpunkt anlege, dann kann ich ja Tool, Load und Base variabel zuweisen. So weit so gut, aber woher werden z.B. Geschwindigkeits-, Beschleunigungs- oder Überschleifwerte bezogen?


    Kommen diese aus einer globalen Datei oder kann/sollte ich diese hinter jeden Punkt mit anhängen? Bzw. anders gefragt, was hängt ihr standardmäßig an eure Expertenpunkte.


    Ich hoffe, dass ich mich halbwegs verständlich ausgedrückt habe und bedanke mich schon mal für eure Hilfe!


    Viele Grüße,

    Daniel

  • Schritt für Schritt zum Roboterprofi!
  • Hi....

    Ich habe fast so einen ähnlichen fall.....

    Ich arbeite da etwas gemischt.


    mich fahre im ganzen Programm mit einem Tool mit inlineformular.

    Wenn ich was benötige mache ich eine toolzuweisung.


    in deinem Fall würde ich 4 Tools anlegen.


    zb tool1 ist der leere Greifer wenn ich jetzt zwei teile hole sag ich dann...


    tool_data[1]=tool_data[2]
    load_data[1]=load_data[2]

    Jetzt geht es weiter mit Tool 1 mit den Daten von tool2 ...


    beim ablegen dann entsprechend erweitern mit too3 wenn nur ein Bauteil.....usw


    hoffe das war verständlich


    grüsse

  • Danke für den Hinweis. Das bedeutet, wenn man vor einem Inline-Punkt die Zuweisungen


    Tool_Data[1] = Tool_Data[2]

    Load_Data[1] = Load_Data[2]

    ...


    setzt, dann kann man Tool- und Lastdaten im Inline-Punkt variabel anpassen?


    Dann könnte ich in der config.dat ja die 2 Tools und die 4 genannten Lastfälle definieren und entsprechend zuweisen.


    Das Inline-Formular könnte ich ja dann mit “Dummy“ Tool- und Load-Data teachen und dann mit obiger Zuweisung variabel anpassen.


    Oder bin ich komplett auf dem Holzweg oder denk ich hier zu “kompliziert“?

  • 4 Tools anlegen mit den entsprechenden Lastdaten.

    Dann die Zuweisung über das BAS-Command.

    Code
    BAS(#TOOL, 1)
    ;oder
    BAS(#TOOL, 2)
    ;usw.

    Damit werden die Lastdaten auch zugewiesen.

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Wenn du mittels Inline-Formularen programmierst, brauchst du das gar nicht. Da werden die Tools ohnehin schon angegeben.

    Bilder

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Da hast du natürlich Recht. Wenn ich allerdings den Punkt aus deinem Beispiel zuerst mit Tool/Load[1] anfahren möchte und direkt danach meinen Greifer drehe und mit Tool/Load[2] den gleichen Punkt anfahre, dann kann ich zwar das Inline-Formular des Punktes auf das jeweilige Tool anpassen, jedoch ändern sich dann alle Inline-Formulare automatisch, welche diesen Punkt enthalten.


    Gestern habe ich versucht, gezielt ein Inline-Formular zu ändern mit den Befehlen:


    $Tool = Tool_Data[2]

    $Load = Load_Data[2]


    Als ich jedoch den Inline-Punkt in der darauf folgenden Zeile angefahren habe, hat sich das Tool wieder automatisch auf Tool_Data[1] geändert, mit dem der Punkt ursprünglich angelegt wurde.


    Das war dann der eigentliche Anlass für meine Frage.

  • Hmm das ist ja logisch die Onlineformularen werden ja über die BAS aufgerufen darum wird das ja wieder direkt überschrieben......


    wenn du das wie Roland machst das Tool direkt mit inlineformular ...dann geht das natürlich am schnellsten.

  • Code
    BAS(#TOOL, 2)
    BAS(#VEL_CP, 2.0)
    LIN XPosition

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Hallo zusammen,


    ich muss bei diesen Thema nochmals um Hilfe bitten. Aktuell kann ich mit z.B.


    Tool_Data[1] = Tool_Data[11] ;Greifer 1

    Load_Data[1] = Load_Data[11]

    ...

    Tool_Data[1] = Tool_Data[12] ;Greifer 2

    Load_Data[1] = Load_Data[12]

    ...


    das Tool sowie die Last in meinen Inline-Formularen ändern. Das funktioniert soweit auch ganz gut. Jetzt bin ich allerdings auf ein kleines Problem gestoßen.


    Wie oben bereits erwähnt, habe ich einen Doppelgreifer montiert. Mit den beiden Greifern möchte ich jeweils die gleiche geteachte Position anfahren, z.B. PickPos. Ich möchte z.B. mit Greifer 1 ein Fertigteil von der PickPos abholen. Danach lade ich die Tooldaten für Greifer 2 und möchte auf der selben PickPos ein Rohteil ablegen.


    Nun hätte ich erwartet, dass der Roboter einfach nur Achse 6 dreht, bis der TCP von Greifer 2 auf der PickPos ist (auf der zuvor der TCP von Greifer 1 stand), sodass sich nur der Drehwinkel C ändert und X, Y, Z, A sowie B unverändert bleiben.


    Dies ist jedoch nicht der Fall. Der Roboter bewegt Greifer 2 zwar in die gewünschte Position, jedoch macht er eine SPTP- oder auch SLIN- Bewegung und bewegt somit sämtliche Achsen zum Ziel, was nicht erwünscht ist.


    Vielen Dank schon im Voraus für eure Mühe. Ich bin dankbar für jeden Hinweis.


    Grüße,

    Daniel

  • Hi ....

    Wenn du mit Greifer 1 linear nach oben gefahren bist kannst du sagen....


    als Beispiel

    Tool_Data[1] = Tool_Data[12] ;Greifer 2

    Load_Data[1] = Load_Data[12]


    PTP {C 180.0}
    LIN PickPos .....
    Greifer öffnen.....

    LIN _REL {X 100}

    Einmal editiert, zuletzt von woodys ()

  • Hi woodys,


    ich verstehe nicht ganz, was du meinst?


    Ich habe mir mal die Tooldaten in der config.dat angeschaut. Die Tooldaten stammen aus der Konstruktion und wurden händisch eingetragen. Diese sehen folgendermaßen aus:


    TOOL_DATA[11]={X 53.0, Y -91.8, Z 90.0, A 0.0, B -90.0, C 0.0}

    TOOL_DATA[12]={X 53.0, Y 91.8, Z 90.0, A 0.0, B -90.0, C 0.0}


    Wie man sieht, sind die Drehwinkel A, B und C bei beiden Tools gleich. Somit sind die Koordinatensysteme für Greifer 1 und Greifer 2 zwar verschoben, jedoch genau gleich orientiert.


    Könnte dies der Grund sein, dass sich der Roboter bei Toolwechsel nicht wie gewünscht nur “auf der Stelle“, sprich um Achse 6, dreht und sich stattdessen per SLIN oder SPTP auf den Punkt bewegt?


    Wenn ich nun in den Tooldaten die Drehung um A oder C berücksichtige, welche der tatsächlichen Verdrehung der beiden Greifer entspricht, könnte dies unter Umständen helfen?


    Kann das jemand theoretisch bestätigen oder verifizieren? Ich bin leider erst nächste Woche wieder an der Anlage, aber das Thema beschäftigt mich doch sehr.


    Gruß,

    Daniel

  • Hi...


    hatte hier einen kleinen Fehler drin


    Bis hier Bauteil 1 ablegen.....

    Dann in stossrichtung hoch fahren oder wie auch immer wenn base dann Z+....


    Jetzt wechselst du das Tool.....

    Tool_Data[1] = Tool_Data[12] ;Greifer 2

    Load_Data[1] = Load_Data[12]


    so mit der PTP Bewegung kannst auch die Achse 6 direkt anfahren ...es dreht sich nur A6

    PTP {A6 180.0}


    greifer 2 steht jetzt an der Position wo Greifer 1 war.....


    hier legt Greifer 2 das Bauteil ab wo Greifer 1 das Bauteil abgeholt hatte....

    LIN PickPos .....


    Greifer öffnen.....


    linear nach oben fahren

    LIN _REL {X 100}


    alternativ

    LIN_Rel {Z 100} in base


    Was auch geht......


    nach dem Bauteil abholen mit Greifer 1 in sichere Position fahren....dann nur die A6 drehen und diese teachen! Dann auf die vorposition mit Greifer 1 teachen für abholen mit Greifer 2.


    jetzt kommt der Tool Wechsel.....


    LIN PickPos anfahren.


    Eine weitere Variante wäre jetzt der geometrischen Operator


    ich hoffe das war etwas verständlicher

  • Die Tools haben momentan die gleiche Orientierung, sind nur gegenüber dem Flansch-Y um 183,6 mm verschoben. Somit müsste der Roboter einfach nur linear 183,6mm zur Seite fahren, um den anderen Greifer zu benutzen, und gar nichts drehen.

    Wenn er trotzdem was dreht, dann ist der Punkt anders geteacht bzw. programmiert.

    Wenn das andere Tool eine andere Ausrichtung hat, dann müsstest Du die natürlich eingeben um das gewünschte Ergebnis zu erhalten.

    Aber Vorsicht: bei exakt 180° Verdrehung kannst Du nicht sicher sein, dass der Roboter immer in dieselbe Richtung dreht. Und bei flexiblen Positionen kann es ebenfalls zu Überraschungen kommen, wenn der Robbi meint, andersherum schwenken sei sinnvoller, auch wenn die Tools nicht 180 Grad verschieden sind. Die Überraschungen hauen dann erst um sich, wenn der nächste PTP-Punkt kommt...


    Grüße,

    Michael

  • ....

    Nun hätte ich erwartet, dass der Roboter einfach nur Achse 6 dreht, bis der TCP von Greifer 2 auf der PickPos ist (auf der zuvor der TCP von Greifer 1 stand), sodass sich nur der Drehwinkel C ändert und X, Y, Z, A sowie B unverändert bleiben.


    Dies ist jedoch nicht der Fall. Der Roboter bewegt Greifer 2 zwar in die gewünschte Position, jedoch macht er eine SPTP- oder auch SLIN- Bewegung und bewegt somit sämtliche Achsen zum Ziel, was nicht erwünscht ist.

    ....

    Offensichtlich soll sich der Greifer drehen.

    Dabei verstehe ich nicht, dass der Roboter sich anscheinend in die gewünschte Position bewegt (also dreht er sich?), obwohl sich die Tooldaten in den Winkeln nicht unterscheiden und 'angeblich' auf die selbe PickPos gefahren wird. Das passt nicht zusammen.

    Das kann eigentlich nur so passieren, wenn die Koordinaten der zweiten Position nicht identisch mit denjenigen der ersten sind, es sich also um zwei separat geteachte/berechnete Positionen handelt.


    Wenn der Greifer in etwa so wie in dem Bild (sorry für das üble Ding) aussieht, und die Greifposition auch so in etwa liegt.

    Dann hätte ich da eine Erklärung8).

    Also bitte etwas mehr Input: Bild/Skizze vom Greifer, das genaue Programm oder einen Auszug, nicht nur blumige Worte dazu. Bild/Skizze vom Greifer und der genauen Greifsituation.

  • Sorry für die späte Rückmeldung, ist mir völlig untergegangen. Das Problem waren falsche Tooldaten für die beiden Greifer (Winkel A). Nachdem diese korrigiert waren, ist der Roboter auch wie erwartet/gewünscht verfahren.

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