Koordinaten errechnen, oder relativ verfahren

  • Guten Tag, liebe Programmierexperten.
    Ich habe mehrer Jahre mit KUKA gearbeitet und jetzt überlegt der Chef einen Yaskawa zu beschaffen.
    Meine Programmiererfahrung hat noch keine vernünftige Lösung ergeben. Ist es möglich bei Yaskawa die Koordinaten
    einzelner Punkte zu verrechnen und weiter zu übergeben?
    Bsp: Punkt 1; x=1, y=1; z=1
    for n=5
    x= 1+2, y=1+2, z=1+2
    MOVL zu Punkt 1
    endfor
    Ich hoffe ich habe mich verständlich ausgedrückt.
    Ich wäre für Tipps und Anregungen sehr dankbar.

  • ANZEIGE
  • Nabend,
    natürlich ist es möglich Positionen zu berechnen. Dafür gibt es die P Variablen. Diese kannst du in xyz in Robot oder Base Frame anlegen. Mit GETE und SETE Befehl die Elemente 1- 6 auslesen und setzen.

    Rechtschreibfehler sind beabsichtigt und dürfen behalten werden

  • Bevor Du eine Positionsvariable verwenden kannst, muss sie definiert werden. Man kann einfach die Encoderdaten darin speichern, oder auch Koordinaten.
    Bsp.


    GETS PX001 $PX000 --> Die aktuellen Encoderwerte werden in die P-Variable P001 geschrieben
    GETS PX001 $PX001 --> Die aktuelle Position im Roboterkoordinatensystem und das aktuelle Werkzeug werden in die P-Variable P001 geschrieben


    CNVRT PX002 PX001 UF#(1) --> In die Positionsvariable P002 werden die Positionsdaten umgerechnet auf das Anwenderkoordinatensystem 1 aus P001 geschrieben


    ADD P001 P002 --> Die Werte aus P001 werden einzeln mit den Weren aus P002 addiert und als Ergebnis in P001 gespeichert


    GETE D001 P001 (1) --> Wert Nr.1 von P001 (je nach definition der P-Variablen Achse 1 oder X in 1/1000mm) wird in die Variable D001 geschrieben


    SETE P001 (1) D001 Der Wert aus D001 wird in den Wert Nr.1 von P001 geschrieben

    Einmal editiert, zuletzt von Motomähn ()

  • Hi,
    verstehe ich es richtig dass durch die addition : ADD P001 P002, ist einer vektoriellen addition gleich. Rein rechnerisch gut,
    Nur für die Verfahrbewegung ist es mir unklar wo man soetwas anwenden kann.
    Ich habe heute sehr viel in Foren gelesen wie solche Aufgaben zu lösen sind und habe immer noch offenen Fragen:
    Wenn ich punkte teache:
    1 MovJ
    2 MovC
    5 MovC
    8 MovC
    Sind die im Kode unter Zeilennummern notiert. Wie komme ich zu den koordinaten vom Punkt in der zeile 5?
    Hoffentlich ist es keine zu doofe Frage, bei kuka sind die koordinaten einfach einem punkt P1,P2...(der von mir aus einen namen hat: Anfang,Ende,SOLALA) zugeordnet?
    Dann habe ich noch nichts über eine operation gefunden bei der eine For n to ... Schleife vorkommt. Gibt es soetwas bei motoman?


    Bsp:


    MovJ
    MocC
    MovC
    MovC
    For n=1 to 20
    MovJ
    Dann addiere wert 2 zu jedem wert der einzelnen X-Koordinate der movC bewegung
    MOVC
    MOVC
    MOVC
    endfor



    Danke Danke Danke

  • Das ist kein KUKA!
    Die Positionen werden bei Motoman normal in Encoderdaten gespeicher, deswegen kann man damit eh nicht viel anfangen. Die Positionsdaten werden im Programmkopf als Variable gespeichert. Wenn man darauf zugreifen, oder damit rechnen möchte, muss man es aber in P-Variable schreiben. Man kann auch die Daten von einer geteachten Position lesen, über - ich glaube - GETPOS.
    Mit ADD ist es genau wie beschrieben, jeder Wert wird einzeln addiert. Nix Vektor. Dafür gibt es MULMAT und INVMAT

  • Ok soweit habe ich es verstanden. Hauptsächlich dass es unnötig komplizierter ist. Aber ich stehe
    auf Herausforderungen.
    Trotzdem Hoffe ich dass Ihr meine Überlegungen prüfen könnt.
    Getpos PX060 STEP#(1) ;Der befehl holt die aktuielle Position und beschreibt P Variable 60.
    Wie ist denn STEP 1 Deffiniert?Ist es die Zeile mit dem MOV Befehl?
    Kann ich dann alle Punktkoordinaten so in P060, P070,.... Speichern und rechnen( also danach mit GETE P060(1,2,3,4 für xyz) und dann mit SET Befehl wieder setzen?
    Wie mache ich denn die Zuordnung zwischen Koordinaten mit denen ich arbeite und Punkten?


    Vielen Dank für eure Hilfe.

  • Für welche Anwendung willst du denn die Positionen neu berechnen? Vielleicht machst du dir es gerade unnötig schwer und es gibt für deine Aufgabe einen viel einfacheren Weg.

    Rechtschreibfehler sind beabsichtigt und dürfen behalten werden

  • Hallo,


    bitte verlass dich aber nicht darauf das der Roboter wenn du mit P-Vars arbeitest und rechnest auch dahin fährt wohin er soll.
    Aus aktuellem Anlass kann ich berichten das der Roboter vor allem wenn er einen langen Arm hat und über Winkel rechnen soll nicht richtig die Koordinaten berechnet und anfährt.


    Nach offizieller Aussage von Motoman Deutschland gibt es keine Angabe zur Absolut-Genauigkeit wie bei KUKA , ABB , FANUC.
    Nur zur Wiederholungsgenauigkeit !


    Der Roboter darf bis zu 6mm falsch berechnen und verfahren. Diese Toleranz räumt sich MOTOMAN offiziell ein !


    Also pass auf !
    Mein Kunde ist sehr verärgert darüber !

    Nichts ist einfach - alles bedarf der Übung !

  • Einfach sowas Zusammenhangslos ohne Art der Anwendung und den Vorgaben die beim Kauf angegeben wurden zu posten finde ich schon ein wenig frech.....

    Rechtschreibfehler sind beabsichtigt und dürfen behalten werden

  • Hi.


    Frech?
    Was soll bitte daran frech sein?
    Ein Kinematisches Modell (3m Arm) auf den Markt zu bringen welches nicht vernünftig
    rechnen oder die Bahn halten kann ohne zu zittern.
    DAS ist frech!!!


    Da ich und der Kunde das ausbaden dürfen darf ich auch mal die weniger Positiven Fakten nennen.
    Das ist schließlich MAG Schweißen und nicht Bahnen zukitten.
    Und leider kann das nur per Berechnung geschehen. Und das auch noch mit Winkeln.
    Die Wiederholgenauigkeit habe ich ja nicht angezweifelt. Die ist Top.

    Nichts ist einfach - alles bedarf der Übung !


  • Nichts ist daran frech. Aber das ist hier nicht das Thema.
    Topic lesen und schreiben wenn man zur Frage eine Antwort hat. Die Frage war nicht ob das Modell die Bahn halten kann ohne zu zittern.
    Vielmehr ging es um die Ver- und Berechnung von Koordinaten.

    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


  • Jetzt mal ganz ehrlich, und bitte als konstruktive Kritik verstehen!
    An Deine Fragestellung ist deutlich zu erkennen, dass Du weder unsere Antworten, noch die Seiten aus den Manuals zu dem Thema durchgelesen hast. Mach das bitte mal und wenn Du dann, nachdem Du das alles durch Beispielprogramme versucht hast und immer noch nicht weiter kommst ("ich liebe die Herausforderung"), dann ist Zeit im Forum um Hilfe zu bitten. Dann kannst Du übrigens auch erst abschätzen, ob es bei Motoman wirklich komplizierter ist, oder eben einach ganz anders.


    ROBOTBOSS
    Ein Roboterarm ist kein starres Gebilde. Die Position wird bei allen Herstellern hinter dem Motor gemessen. Es gibt unendlich viele Belastungszustände und unendlich viele Positionen. Extrembeispiel ein gestreckter Roboterarm mit 3500mm Reichweite hat 500Kg am Haken, oder eben nicht. Wie soll bitte die Absolute position ermittelt werden? Kein Roboterarm ist so Starr, dass er da nicht 10mm "durchhängen" würde. Das Problem haben doch alle Roboterhersteller. Zudem gibt es bei Motoman die Option "hochgenau". Die ist genau für solche Anwendungen, wie Du beschrieben hast, gedacht. Wieso hast Du die nicht bestellt?

    Einmal editiert, zuletzt von Motomähn ()

  • Hi, danke für die antworten, das zwischendurch über die Roboterbesonderheiten diskutiert wird ist nicht meine Fragestellung oder problem. ( ;) ) Auch ein KUKA hat seine Grenzzustände.
    Ja ich werde die anleitung nocheinmal durchgehen, aber da ich noch keinen arm im Haus habe sondern mich dazu entscheiden möchte, will ich im voraus wissen was geht und was nicht. und mit welchem aufwand.
    Ich weiß auch dass die genauigkeit mit vielen Faktoren zusammenhängt. In meiner anwendung habe ich langsame bewegungen und wenig last. Die Anwendung ist Auftragschweißen.
    Und jetzt nocheinmal zu meiner frage:
    Ja ich habe verstanden dass positionen in variabelen apgespeichert werden können.
    Ja die werte können Durch addition.... verändert werden und in Positionen wieder geschrieben werden die angefahren werden können.
    Jetzt rein formal: Wie beschreibe ich diese neue position damit diese mit einem mov befehl angefahren werden kann.


    Mein unverständniss bassiert darauf dass dbei kuka hat jeder punkt der def. worden ist einen namen, und wenn ich irgentwo
    schreibe: Punkt(willi) ,K koordinate +20, Fahre zu Willi; dann fährt der roboter dahin. Bei der Yaskawa sehe ich nicht wie die punkte benannt werden.
    Ich freue mich auf eure Antworten. Und lese nochmal die anleitung.
    Danke

  • Da ist eben der grundlegene Unterschied zwischen KUKA und Yaskawa. Bei Yaskawa werden geteachte Punkte "versteckt". D.h. es wird davon ausgegangen, dass geteachte Punkte geteacht sind und fertig. Wenn man rechnen möchte nimmt man dafür Variable, die dann, wie bei KUKA "öffentlich" sind. Die können auch geteacht werden. Die Struktur bei Yaskawa hat z.Bsp. den vorteil, dass jeder geteachte Punkt eine Variable hat, die, wenn der Punkt gelöscht wird auch verschwindet. Der ganze Datenmüll entfällt. Ausserdem - gerade bei Schweissanwendungen, wo tausende Punkte geteacht werden ist man mit Yaskawa um Längen schneller, da immer nur eine Taste gedrückt werden muss um den Punkt zu speichern bzw. zwei um die Position anzupassen. Das wirkt sich je nach Anwendung eben auch nachteilig aus. Beim Palletieren tut sich Yaskawa etwas schwerer als die Konkuzenz, hat in den letzten Jahren aber nachgebessert. Eine Hilfreiche Funktion wird für Dich REFP sein. Damit kannst Du einen Punkt teachen, ohne einen Bewegungsbefehl. Die Position wird, wenn der Befehl ausgeführt wird in ein Systemregister geschrieben, da kann man es dann z.Bsp. durch GETS PX000 $PX011 in die P-Variable P000 schreiben. Die Möglichkeit einen geteachten Punkt im Programm zu überschreiben gibt es so allerdings nicht. Was auch geht, ein Programm relativ zu einem Koordinatensystem zu teachen und dann im Programm das Koordinatensystem zu verschieben (Befehl: MFRAME)
    Viel Erfolg!


    PS.: Du kannst Dir auf der Homepage eine Trailversion von MotoVRC herunterladen, damit kannst Du zwei Wochen "spielen". Damit kannst Du eine Virtuelle Maschine erzeugen, die bis auf wenige Ausnahmen alle Funktionen des Original hat.

    Einmal editiert, zuletzt von Motomähn ()

  • Moin, so wie ich das verstehe, willst du bei dem Auftragsschweissen ein und die selbe Bewegung mehrmals abfahren, die Punkte aber versetzen, in der Höhe, X und/oder Y. Dann wäre hier ein Shift angebracht. In einer P Variable kannst du dann den Verschiebewert angeben.



    MOVJ
    MOVJ.
    .
    .
    .
    SFTON P001 Z.B. x 5.000 y 5.000
    MOVL
    MOVL
    MOVL
    SFTOF
    MOVJ
    MOVJ.
    .
    .


    In dem Fall würden die Positionen zwischen dem SFTON und SFTOF Befehl in x und y 5mm verschoben. Du kannst auch noch auswählen, ob im RF, UF, BF oder TF.

    Rechtschreibfehler sind beabsichtigt und dürfen behalten werden

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