Relativ zu BASE (ich verzweifele)

  • Hallo zusammen.


    hab die Suchfunktion schon benutzt und einiges ausprobiert. Leider ohne Ergebnis.


    Folgendes passiert.


    Ein Magnetgreifer sucht mit einem am unteren Magnet befestigten Initiator ein schräg aufrecht stehendes Teil.

    Wenn das Teil gefunden wurde soll der Greifer über Interrupt gestartetes Sub-Prg. den Greifer Kippen bis der obere Magnet das Bauteil gefunden hat.


    Alles gut, Interrupts funktionieren, Sub-Prg. läuft an und was macht der Greifer?


    Statt

    LIN_REL {c - 50}  in BASE dreht er über C in TOOL


    LIN_REL {c - 50}#BASE mit vorher geladener $BASE=BASE_DATA[1] funktioniert leider auch nicht.


    Wie erzwinge ich diese Drehung REL zur BASE? Was übersehe ich?;(


    Sofwarestand 5.X


    Danke im Vorraus

  • Schritt für Schritt zum Roboterprofi!
  • Der Befehl ist schon der richtige. Insofern muss irgendwo noch was anderes reinspielen. Funktioniert es denn isoliert von dem ganzen Rest deiner Programme oder ganz alleine in einem kleinen Standalone Testprogramm korrekt? Funktioniert es denn bei absoluter Kommandierung über den Doppelpunktoperator?


    Was sind denn die anderen Komponenten am Anfang des LIN_REL? Verwendest du so Dinge wie $ipo_mode = #TCP? Vielleicht kannst ja das komplette Programm posten.


    Außerdem schreibst du hast schon alles probiert. Was denn genau?


    Fubini

  • habs mit LIN {x 0,y 0,z 0,a 0,b 0,c-50}:$POS_ACT versucht zb.


    das ganze programm wäre etwas too much glaub ich ^^.


    Ein Standalone könnte ich mal machen.


    Wenn ich den Befehl mit XYZ ausführe funktioniert es entlang der Basis. Aber bei ABC wird immer TOOL gewählt. ich checks nich.

  • Hi mache sowas ähnliches regelmäßig.


    ich leg zwei tools an suchenden werkzeugen (hier an den magneten) liegen. wenn einer von den sensoren kommt orientierst du dich genau um diesen um um den anderen zu suchen.


    wenn du aber die Base kippen willst müsstest du $Base=$Base:{X 0,Y 0,Z 0,A 0,B 0,C - 50} und dann die selbe position wieder anfahren.


    aus deiner Beschreibung der gewünschten funktion würde ich zwei tools für die Magnete rein machen. weniger kopfschmerzen


    Gruß Loipe

  • Ich glaube ich hab den Fehler gefunden. ABC ist ja ein Degree Wert. Ich hab jetzt mal 8 genommen statt 50 und das reicht völlig aus und er macht was er soll. 50Grad ist halt schon ne Menge.


    $ipo_mode sagt mir gar nichts. bitte um Aufklärung :)

  • Ipo_mode definiert ob ihr ein feststehedes Werkzeug habt. Also ob der Roboter das Bauteil oder das Werkzeug hält. Letzten Endes funktioniert das technisch so, das Tool und Base die Rollen vertauschen und der pos_act invertiert wird.


    Was passiert eigentlich bei lin_rel mit Tool ist das korrekt?



    Wenn ich den Befehl mit XYZ ausführe funktioniert es entlang der Basis. Aber bei ABC wird immer TOOL gewählt. ich checks nich.

    Was für einen Wert hat $ROTSYS (eventuell auch $rot_sys erinner mich nicht genau) Darüber kann man einstellen ob xyz bzgl. Base und ABC bzgl Tool verfährt oder umgekehrt. Man kann also wählen und für Translation und Rotation ein unterschiedliches Referenzsystem wählen.




    Fubini

    5 Mal editiert, zuletzt von fubini ()

  • Achse 5 ist bei der Fahrt sehr weit eingeklappt. Wenn ich jetzt versuche 50+ grad C zu fahren muss er ja irgendwie versuchen dort hinzukommen. Daher sah es nur so aus als würde er Tool fahren. mit 8 grad weiss er dass er es ohne übertriebenes achsdrehen schafft und fährt absolut linear. Also riesen Denkfehler meinerseits. Die KRC hat alles richtig gemacht :)


    Und danke euch allen für die Infos, werd mich da mal im RG stärker reinlesen


  • Das ist interessant, werd ich mir heut Mittag mal anschauen :)

  • Nirgends. Müsste man selbst z.B. im Programm setzen. Ist nach Kaltstart wahrscheinlich immer erst #AS_TRA. Ob es durch Programmabwahl auch wieder auf #AS_TRA zurückgesetzt wird weiß ich gerade nicht. Müsstest du ausprobieren.


    Ich sehe aber gerade dass du die Hauptlaufvariable benutzt (ok mein Screenshot hat die Vorlaufvariante abgeschnitten, aber ich dachte das ist Allgemeinwissen, dass _C im Namen immer Hauptlauf bezogen bedeutet) . Das muss im Program im Vorlauf gesetzt werden, also


    $ROTSYS = #BASE ;(ohne _C)

    LIN_REL {X *}


    Die Hauplaufvariable dient nur zum Auslesen während der Ausführung und ist nicht schreibbar. Ist also das gleiche wie bei $BASE und $BASE_C oder $TOOL und $TOOL_C und allen anderen Hauptlaufsystemvariablen.


    Fubini

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