Linearachse einrichten

  • Hallo zusammen!


    Ich habe ein Problem beim Einrichten einer Linearachse mit einem Kuka Robotor. Ich hoffe ihr könnt mir weiterhelfen.


    Und war habe ich folgenden Aufbau: ein Kuka KR 60 hängt in einer Portalbauweise über Kopf an einer Lineareinheit. Diese Lineareinheit ist nicht von Kuka, sondern von einer Firma, die die gesamte Anlage aufgebaut hat (die Anlage umfasst noch weitere Roboter, Tische, etc.). Leider meinte diese Firma, dass sie die Einrichtung der Linearachse nicht machen könne. Jetzt bin ich als Student dazu gestoßen und schreibe aktuell eine Arbeit, wozu ich den Roboter mit der Linearachse benötige. Ich habe keine wirkliche Erfahrung mit dem Programmieren von Robotern und bin auch auf mich alleine gestellt.


    Die besagte Firma hat Antriebe in die Konfiguration in WorkVisual gefügt, aber keineswegs miteinander verknüpft. Die Achse lässt sich zwar manuell verfahren, hat aber keine Kopplung mit dem Roboter. Zuerst habe ich in WorkVisual den Roboter auf den Flansch von der Linearachse gestellt. Die Linearachse wird als Motor (MG_ME_260_KSP40) dargestellt. Da taucht die erste Frage auf: bildet MG_ME_260_KSP40 eine Linearachse und kann die dafür verwendet werden? Anschließend habe ich dann in der Maschinenkonfiguration die Werte für die Koordinatensysteme festgelegt. Nebenbei: wie kann man das Weltkoordinatensystem ändern? Das ganze Projekt dann auf den Roboter übertragen, muss ich dann die Linearachse durch verschiedene Messpunkte vermessen, da sich der TCP des Roboters mit der Bewegung der Linearachse schräg nach oben/unten bewegt (Ist-Position bleibt laut Roboteranzeige dabei gleich). Nach dem Vermesser taucht allerdings eine Fehlermeldung auf, die das weitere Verfahren verhindert: "Absolutgenaues Modell: Parameter nicht mit Maschinendaten konsistent." Könnt ihr mir hierbei weiterhelfen?


    Ich bin für jeden Ratschlag und für jede Hilfe sehr sehr dankbar. Mein Wissen über Roboter beschränkt sich quasi auf nur zwei Wochen herumprobieren.

    Danke schonmal im Voraus.


    Niklas

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


    kannst du bitte dein R1/$machine.dat posten, dann kann man sich mal anschauen was du konfiguriert hast und ob das zu deiner Beschreibung passt. Tatsäclich generiert die WorkVisual diese File und überspielt es auf die Steuereung.


    Wie so prinzipiell eine Zusatzachskonfiguration ausschaut siehst du z.B. hier abschauen und eventuell schon mal selber analysieren:


    Basis auf einer Linearachse

    https://www.robot-forum.com/ro…light=ERSYSROOT#post84216


    Der Absolutgenauigkeitsfehler ist wahrscheinlich auch erklärbar. Um die Absolutgenauigkeit verwenden zu können, muss der Roboter so in der Welt stehen wie bei der Ermittlung der absolutgenauen Parameter. Ist das nicht der Fall kommt genau deine Meldung. Du kannst mal testweise versuchen die Absolutgenauigkeit über $DEACTIVAT_ABS_ACCUR = #TRUE abzuschalten. Dann werdet ihr wahrscheinlich wieder fahren können. Aber Vorsicht: Es werden dann leicht andere Posen angefahren es besteht also Crashgefahr.


    Fubini

    • Helpful

    Hallo Niklas,


    hier schon mal die ersten Ergebnisse:


    • Du hängst die Lineareinheit über ERSYSROOT.C = 180 an die Decke. Soweit OK.
    • Allerdings ist die Richtung der Linearachse E1 sehr wahrscheinlich nicht korrekt. Du lässt sie über $ET1_TA1KR.Z = 180 in Welt-Z Richtung verlaufen. Normalerweise hätte ich da eher einen +-90° Winkel erwartet um in der Welt-(X,Y)-Ebene zu sein und zwar so ähnlich wie in diesem Beispiel


      $ET1_NAME[]="KL4000S_Q_64"

      FRAME $ET1_TA1KR={X 0.0,Y 0.0,Z 689.000,A 0.0,B -90.0000,C 0.0} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET1

      FRAME $ET1_TA2A1={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A2 UND A1

      FRAME $ET1_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2

      FRAME $ET1_TFLA3={X 0.0,Y 0.0,Z 0.0,A -90.0000,B 0.0,C -90.0000} ;ZWISCHEN FL UND A3

      FRAME $ET1_TPINFL={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL

      Du drehst quasi das an die Decke hängen über ERSYSROOT.C = 180 nur einfach wieder zurück. Bitte beachte dabei, dass die Achse immer der z-Richtung entspricht, d.h. der E1 Wert verschiebt entlang der z-Achse.

    • Zur Absolutgenauigkeit: PID-Files (das ist das Parameterfile der Absolutgenauigkeit) werden normalerweise von KUKA für Roboter in Bodenmontage erstellt. Dein Roboter hängt an der Decke, daher funktioniert das wahrscheinlich nicht. Hier hätte man bei KUKA schon die Absolutgenauigkeit für Deckenmaschine bestellen müssen. Hauptgrund ist hier die unterschiedlich wirkende Gravitationsrichtung zwischen Boden und Decke. Hast du allerdings ein für Decke ausgelegtes PID-File liegt es nur an der falsch konfigurierten Transformation.

    • Hat dein Roboter eigentlich einen Gewichtsausgleich? Wenn ja kannst du einen für Boden ausgelegten Roboter eh nicht an die Decke hängen. Bei Bodenmontage zieht der Gewichtsausgleich während er bei Deckenmontage drücken müsste. Das kann er aber technisch dann nicht. Laut $TRAFONAME ist das zwar einen Deckenvariante CLG = Ceiling, aber sicher ist sicher.
    • Außerdem solltest du noch beachten, das du über $ET1_TFLA3 den Flansch der Linearachse so ausrichtests dass die z-Achse parallel zur Achse 1 des Roboters ist.

    Fubini

  • Okay, die Werte habe ich jetzt so eingegeben, dass die Z-Achse in Bewegungsrichtung der Lineareinheit ausgerichtet ist. Und die Z-Achse des Flansches ist parallel zur A1 des Roboters.

    Bei der Übertragung des Projekts von WorkVisual auf den Roboter gab es keine Probleme/Fehlermeldungen.

    Allerdings verfährt jetzt der Roboter leicht mit der Lineareinheit mit (in x-Richtung), wenn ich E1 im Weltkoordinatensystem verfahre. Die y-, und z-Werte bleiben dabei gleich. Die vom Roboter angezeigte Ist-Position verändert sich nicht.


    Muss ich den Roboter noch vermessen (Inbetriebnahme – Vermessen – Externe Kinematik – Lineareinheit)? Wenn ja, wie muss ich das handhaben? Jeglicher Versuch der Vermessung endet wieder in der Fehlermeldung mit der Absolutgenauigkeit.


    Niklas

  • Rolle rückwärts! Ich hab die Vorzeichen vertauscht!

    Es klappt jetzt alles so wie es sollte. Besten Dank für die große Hilfe!!


    Eine Frage habe ich aber allerdings noch: wie lege ich das/ein neues Weltkoordinatensystem fest?


    Niklas

  • Das inertiale Weltsystem $World ist immer fix die Null und kann nicht geändert werden. Wo bezüglich Welt deine Kinematik liegt ist genau das $ersysroot und wäre ohne Lineareinheit das $robroot. Was du aber wahrscheinlich machen willst ist Werkstückkoordinatensysteme aka Bases zu definieren. Das solltest du über Inbetriebnahme Vermessung Basis finden.


    In der Doku für Systemintegratoren findest du ein schönes Bild wie die ganzen Koordinatensysteme zusammenhängen.


    Das Vermessen der Lineareinheit ist auch empfehlenswert, falls du hohe Genauigkeit brauchst. Hier wird bezogen auf den Roboterfuß genau eingemessen in welche Richtung die Lineareinheit verläuft und dann in $ET1_TFLA3 geschrieben. Man schafft es ja bei der Montage selten der Roboter exakt auf der Lineareinheit festzuschrauben.


    Fubini

    Edited once, last by fubini ().

  • Moin,

    wie Fubini schon richtig bemerkte, hast Du ein Problem mit der Absolutgenauigkeit.

    Die Ursache ist kurz und bündig gesagt die Lineareinheit selbst. Selbst Lineareinheiten von KUKA haben keine Absolutgenauigkeit. Das heißt also, dass der im Prinzip absolutgenaue Roboter auf einer nicht absolutgenauen Lineareinheit befestigt ist. Daher die Inkonsistenz der MADA.

    Da hilft nur, die Absolutgenauigkeit des Roboters "über Bord zu werfen". Dazu muss das PID File auf dem Speicher des Roboters gelöscht werden.

    Weiterhin muss gewährleistet werden, dass der Roboter auch ein Roboter mit den Maschinendaten eines deckenhängenden Roboter ist.

    Da es ein KR60 ist, sollte es im Ernstfall auch möglich sein, diesen Bodenroboter mittels eines kleinen Kunstgriffs in einen Deckenroboter "umzuwandeln". Allerdings ist bei einer solchen Aktion durch die unterschiedlich einwirkenden Gravitationskräfte mit mechanischen Abweichungen in der (notwendigen) Justage zu rechnen.

    Das hat dann Auswirkung auf die Genauigkeit beim Bahnfahren.

    Zu den Mada: Bitte gib mal an , welcher Robotertyp das ist. (KR60-3 CLG?)

    never touch a running system

  • Danke für die Antworten!

    Das Problem mit der Absolutgenauigkeit habe ich in den Griff bekommen. Der Fehler taucht nun nicht mehr auf, die Linearachse verfährt wie gewollt.


    Der Robotertyp ist: KR60 HA-C bzw. der Produktname: KR60HA_3 C4 CLG ZH02


    Wenn ich jetzt aber auch noch mit den selben Roboter einen Drehtisch (kipp- und drehbar) in die kinematische Kette mit einbinden will, habe ich nun zwei Antriebe E2 (kippen) und E3 (drehen). Diese sind auch in der $maschine.dat (oben) enthalten. Wie muss ich dabei vorgehen?


    Bisher habe ich in WorkVisual in der Zellkonfiguration gesagt, dass der Roboter den Antrieben folgen soll. Dabei sind die Antriebe des Tisches jeweils getrennt voneinander. Anschließend habe ich den Fußpunkt und die Achsen vermessen und eingetragen.


    Das ergibt dann einmal für die Kippachse:


    DECL ET_AX $ET2_AX={TR_A1 #E2,TR_A2 #NONE,TR_A3 #NONE} ;EXTERNE ACHSEN #NONE, #E1, #E2, #E3, #E4, #E5, #E6

    CHAR $ET2_NAME[20] ;NAME DER TRANSFORMATION ET2 MAX. 20 ZEICHEN

    $ET2_NAME[]="MG_ME_110_KSP40"

    FRAME $ET2_TA1KR={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 90.0000} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET2

    FRAME $ET2_TA2A1={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A2 UND A1

    FRAME $ET2_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2

    FRAME $ET2_TFLA3={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C -90.0000} ;ZWISCHEN FL UND A3

    FRAME $ET2_TPINFL={X 200.000,Y -400.000,Z 200.000,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL


    Und für die Drehachse:


    DECL ET_AX $ET3_AX={TR_A1 #E3,TR_A2 #NONE,TR_A3 #NONE} ;EXTERNE ACHSEN #NONE, #E1, #E2, #E3, #E4, #E5, #E6

    CHAR $ET3_NAME[20] ;NAME DER TRANSFORMATION ET3 MAX. 20 ZEICHEN

    $ET3_NAME[]="MG_64_KSP40"

    FRAME $ET3_TA1KR={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET3

    FRAME $ET3_TA2A1={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A2 UND A1

    FRAME $ET3_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2

    FRAME $ET3_TFLA3={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN FL UND A3

    FRAME $ET3_TPINFL={X 200.000,Y -400.000,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL


    Das müsste doch funktionieren und der TCP vom Roboter müsste beim Verfahren des Tisches der Bewegung des Tisches folgen, richtig? Der Roboter steht dabei aber einfach nur still.


    Danke für weitere Hilfe

    Niklas

  • Wieso getrennte Transformationen für den Dreh-Kipptisch? Ist ja eine Kinematik

    Attached mal als Beispiel Transformation eines DKP400 von KUKA selbst.


    DECL ET_AX $ET1_AX={TR_A1 #E1,TR_A2 #E2,TR_A3 #NONE} ;EXTERNE ACHSEN #NONE, #E1, #E2, #E3, #E4, #E5, #E6

    CHAR $ET1_NAME[20] ;NAME DER TRANSFORMATION ET1 MAXIMAL 20 ZEICHEN

    $ET1_NAME[]="DKP_400"

    FRAME $ET1_TA1KR={x 0.0,y 280.0,z 510.0,a 0.0,b 90.0,c 0.0} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET1

    FRAME $ET1_TA2A1={x 0.0,y 0.0,z 324.0,a 0.0,b -90.0,c 0.0} ;ZWISCHEN A2 UND A1

    FRAME $ET1_TA3A2={x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0} ;ZWISCHEN A3 UND A2

    FRAME $ET1_TFLA3={x 0.0,y 0.0,z 340.0,a 90.0,b 0.0,c 0.0} ;ZWISCHEN FL UND A3

    FRAME $ET1_TPINFL={x 210.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0} ;ZWISCHEN MESSPUNKT UND FL


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Es ist kein Positionierer von Kuka. Die Firma, die die Anlage aufgebaut hat, hat zwei voneinander getrennte Antriebe in die Konfiguration gefügt.

    Ist es auch möglich die beiden in WorkVisual zusammenzufassen?


    Niklas

  • Hallo Niklas,


    ich glaube hier herrscht noch etwas Verwirrung in den Begrifflichkeiten


    • Antrieb: In der Regel ein einzelner Motor, der eine Achse antreibt (z.B. Motor 1 des Roboters treibt Achse 1 des Roboters an)
    • Kinematik: Der Zusammenschluss einer oder mehrerer Achsen zu einer Einheit (Die 6 Achsen als Gesamtheit ergeben deinen 6-Achsroboter)


    Die oben angesprochenen Definitionen über $ET[Nummer der Kineamatik]... beschreiben gerade wie du aus mehreren Achsen eine Kinematik zusammenbaust.


    Um das ganze über WorkVisual abzudecken, musst du dir ein Katalogelement erstellen, dass Antriebsdaten und die darauf aufbauende Kinematik beschreibt. Dazu gibt es den Katalogeditor, der Bestandteil des WorkVisual Paketes ist. Ich würde empfehlen mal di Dokumentation dazu zu lesen.


    Fubini

  • Okay, jetzt wird einiges für mich verständlicher.


    Jetzt habe ich den Positionierer mit den beiden Antrieben zu einer Kinematik zusammengefügt. Es sieht jetzt so ähnlich aus wie das was du geschrieben hast, SJX, nur halt mit zwei Achsen.

    Nichtsdestotrotz müsste der Roboter den Punkt relativ auf dem Tisch halten, wenn der Positionierer bewegt wird, richtig? Das ist leider immer noch nicht der Fall.


    Niklas

  • Dazu musst du eine Basis auf den Tisch einmessen und diese aktivieren. Du kannst wahlweise gekoppelt auf dem Dreh-Kipptisch oder ungekoppelt fahren je nachdem ob die Basis auf dem Tisch oder in der Welt liegt.


    Und hast du auch an den Eintrag in


    DECL EX_KIN $EX_KIN={ET1 #ERSYS,ET2 #EASYS,ET3 #NONE,ET4 #NONE,ET5 #NONE,ET6 #NONE} ;EXTERNE KINEMATIKEN #NONE,#EASYS,#EBSYS,#ECSYS,#EDSYS,#EESYS,#EFSYS,#ERSYS


    gedacht bei deinem Dreh-Kipptisch Element.


    Fubini

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now