Synchronierende Bewegung in TwinCAT mit aktualisierenden Zielpositionen

flar.sps

Level-1
Beiträge
26
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Einen wunderschönen Abend allerseits,
bin gerade an einem Projekt mit TwinCAT / Beckhoff am arbeiten und bin auf der Suche nach Antworten zu ein paar Fragen im Bereich der Steuerung im Robotikbereich.
Mein Anwendungsfall:
Ich habe einen Roboter mit 6 Gelenken! 4 Davon müssen synchron gesteuert werden. Bedeutet: Alle zur gleichen Zeit vom Startpunkt losfahren und alle zur selben Zeit am Ziel ankommen.
Allerdings kann ich nicht wie bei einer CNC bereits alle Punkte für den gesamten Arbeitsbereich angeben, sondern bin dort abhängig von einer graphischen Erkennung.
Ich habe also immer circa 8 Punkte die ich hintereinander abfahren kann und bekomme erst beim vorletzten Punkt die neuen Daten.
Der Roboter soll zum einen nicht nach jeder Position stehen bleiben und wieder losstarten sondern ähnlich wie ein 3D Drucker agieren. Wenn sich also ein Gelenk für die nächste Zielposition in die selbe Richtung weiterbewegen soll, soll es das auch tun, gegebenfalls muss es natürlich abbremsen um die synchrone Bewegung aufrecht zu erhalten oder ganz stehen bleiben und in die andere Richtung weiterfahren.
Das ganze sind auch noch hydraulische Achsen.

Kann mir jemand einen Tipp geben wie ich eine Kopplung dieser Gelenke schaffe und zur selben Zeit meine Zielpositionen zur Run-Time erweitern kann.

LG
 
1. Du definierst eine Master-Achse und koppelst die drei anderen Achsen als Slave-Achsen. Gesteuert wird nur die Masterachse.
2. Wenn Du eine Bewegung mit einem PTP-Motion gestartet hast, kannst Du die Bewegung mit einer weiteren Instanz eines PTP-Motion Bausteines an der selben Achsenstruktur direkt im Lauf übernehmen. Wichtig ist, dass BufferMode = MC_Aborting bei dem Vorgängeraufruf war, damit dessen Bewegungsbefehl sofort abgebrochen wird.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
In dem Fall habe ich das Wort Master und Slave Achse aber falsch verstanden. Für eine Position der Master-Achse gibt es bei mir unendlich viele Positionen der Slave-Achse bedeutet also, ich kann nicht einfach ein Getriebe- oder Lineare Kopplung vornehmen.
Und funktioniert das ganze hydraulischen Achsen mit MC Aborting wirklich so zuverlässig, dass kein großer Fehler entsteht?
 
In dem Fall habe ich das Wort Master und Slave Achse aber falsch verstanden.

Ist das eine Feststellung? Oder hast Du es jetzt verstanden? Oder ist möglicherweise meine Definition von Deiner verschieden?


Für eine Position der Master-Achse gibt es bei mir unendlich viele Positionen der Slave-Achse bedeutet also, ich kann nicht einfach ein Getriebe- oder Lineare Kopplung vornehmen.

Mit dem Satz komme ich nicht zurecht.

Und funktioniert das ganze hydraulischen Achsen mit MC Aborting wirklich so zuverlässig, dass kein großer Fehler entsteht?

Was ist "Fehler" per Deiner Definition? Abweichung? Die Achsen haben doch je ein eigenes Gebersystem, oder? Das hat aber mit dem Buffermode aber nichts zu tun. Siehe Link. Es wird doch nur die Masterachse gesteuert. Die Slaveachsen folgen exakt über den NC. Habe ich Deine Beschreibung im Anfangspost vielleicht nicht richtig verstanden?

Edit: Der Link war falsch, ist jetzt korrigiert.
 
Zuletzt bearbeitet:
1. Eine Master Achse ist direkt mit einer Slave Achse gekoppelt. Entweder linear oder mit irgendeinem Getriebefaktor. Meine Achsen sind aber alle komplett unabhängig und Die Achse 2kann sich bewegen wie sie möchte, egal welche Position die Achse 1 einnimmt. Bedeutet ich kann das Koppeln mit Master und Slave mit Getriebefaktor vergessen.

2. Zum Thema Fehler. Ich bin an der von mir gewollten Position und mache also ein Override mit der MC Aborting. Jetzt muss meine Achse allerdings in die Gegenrichtung weiterfahren. Bedeutet, dass ich über das Ziel hinausfahre (Hydraulik bremst ja mit einer Rampe) und anschließend wieder "langsam" beschleunige (Rampe). Laufe also über des Ziel hinaus und muss diesen Weg wiederzurückgewinnen.
Der noch schlimmere Fall ist wenn die erste Achse in die selbe Richtung weiterfährt und die Achse 2 eine Richtungsänderung macht. Dann fällt der Fehler noch großer ins Gewicht, weil die 2. Achse irgendeinen Fehler wiederaufholen.

LG
 
4 Davon müssen synchron gesteuert werden. Bedeutet: Alle zur gleichen Zeit vom Startpunkt losfahren und alle zur selben Zeit am Ziel ankommen.

Warum kannst Du die jetzt nicht Master-Slave Koppeln?

Du kannst die Kopplung auch jederzeit setzen und wieder aufheben, dann laufen die Achsen wieder unabhängig.

Irgendwie habe ich scheinbar die Aufgabe in Verbindung mit dem Problem noch nicht richtig verstanden.
 
Der noch schlimmere Fall ist wenn die erste Achse in die selbe Richtung weiterfährt und die Achse 2 eine Richtungsänderung macht. Dann fällt der Fehler noch großer ins Gewicht, weil die 2. Achse irgendeinen Fehler wiederaufholen.

LG

Übrigens, Anmerkung: wenn eine Aufgabe schon mechanisch unlösbar sein könnte, sollte man das im Team und mit dem Konstukteur diskutieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich probier das jetzt noch einmal, viellicht drücke ich mich einfach zu komplex aus:
Die Achse 1 soll einen Winkel anfahren
Die Achse 2 soll auch einen bestimmten Winkel anfahren.
Diese Winkelabstände sind nicht immer gleichgroß und auch nicht proportional zueinander.
Nicht immer wenn die Achse 1 in die eine Richtung fährt, fährt auch die 2. Achse in die selbe Richtung.
Jede Achse hat also ein "eigenes" Koordinatensystem und die Bewegung der Achse 1 beeinflusst die Bewegung von Achse 2 nicht.
Es ist nur wichtig, dass diese beiden Achsen sich zeitgleich bewegen.
 
Die Achse 1 soll einen Winkel anfahren
Die Achse 2 soll auch einen bestimmten Winkel anfahren.
Diese Winkelabstände sind nicht immer gleichgroß und auch nicht proportional zueinander.
Nicht immer wenn die Achse 1 in die eine Richtung fährt, fährt auch die 2. Achse in die selbe Richtung.
Jede Achse hat also ein "eigenes" Koordinatensystem und die Bewegung der Achse 1 beeinflusst die Bewegung von Achse 2 nicht.
Es ist nur wichtig, dass diese beiden Achsen sich zeitgleich bewegen.

Also Startpunkt und Zielpunkt sind ungleich, die Fahrzeit aber schon. Ich verstehe.
Ich habe so etwas schon mal in der Plc gemacht, indem ich aus den Wegdifferenzen die einzelnen Fahrgeschwindigkeiten interpoliert habe (Dreisatz). Das hat sehr gut funktioniert.
Ein anderer Weg scheint mir die Kinematik-Transformation TF5110 - TF5113 zu sein. Damit habe ich aber noch keine Erfahrung gemacht. Vielleicht hilft es Dir Dich da einzulesen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau, das wäre jetzt auch mein Ansatz gewesen. Du hast dich da wahrscheinlich immer am langsamsten Gelenk orientiert und die anderen Geschwindigkeiten angepasst?
Aber wie hast du es geschafft, dass die Gelenke nicht stehen bleiben wenn sie das Ziel erreichen?
 
Meine Anwendung war damals anders, es waren zwei Achsen, die über einen gemeinsamen Zahnziemen ein H-Portal gesteuert hatten. Ich konnte es mir leisten, kurz anzuhalten.

Aber auch dafür gab es eine Kinematik-Transormation. Ich hatte die nur zu spät entdeckt.

Das Problem, wenn Du es in der PLC löst, ist die Genauigkeit. Die wird leiden. Und es kann sein, dass eine Achse minimal versetzt ankommt. Wenn Du jetzt flüssig weiter willst, musst Du halt schon den nächsten Fahrsatz über MC-Motion aktiviert haben, bevor die Zielpositionen erreicht werden. Möglicherweise wirst Du einen anderen Buffermode nehmen müssen, damit die Achsen ihren Zielpunkt erreicht haben, bevor die den nächsten Fahrauftrag übernehmen. Das Ganze ist etwas Tricky und Du wirst wohl einige Versuche brauchen.

Wenn es allerdings auf Genauigkeit ankommt, würde ich zuerst sicherstellen, dass es mit der Kinematik-Transformation nicht geht, bevor ich es in der Plc probiere.
 
Zuletzt bearbeitet:
Genau, das wäre jetzt auch mein Ansatz gewesen. Du hast dich da wahrscheinlich immer am langsamsten Gelenk orientiert und die anderen Geschwindigkeiten angepasst?
Aber wie hast du es geschafft, dass die Gelenke nicht stehen bleiben wenn sie das Ziel erreichen?

Ich hab immer noch nicht so ganz kapiert.
Wenn das Ziel erreicht ist und die Glenke nicht stehenbleiben sollen, wohin sollen sie denn dann fahren?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn es allerdings auf Genauigkeit ankommt, würde ich zuerst sicherstellen, dass es mit der Kinematik-Transformation nicht geht, bevor ich es in der Plc probiere.

Ja die Genauigkeit ist nicht "so" heikel also reden wir mal von 0.2 Grad;-) also bei einer Zykluszeit von 10ms denke ich mal das dies sogar mit hydraulischen Achsen möglich ist, aber ich werde mir die Transformationen einmal genauer ansehen. Das Problem ist eigentlich, dass ich keine Zeitachse für diese Punkte haben, sondern die Maschine diese Punkte so schnell es geht anfahren soll. Ich brauche also für die jeweiligen Gelenke eine maximale Geschwindigkeit (gute Frage wie man die definiert) und kann aus diesen dann die Geschwindigkeiten für alle weiteren Punkte definieren.

Edit: Die BlendingLow Funktion des MC_Buffer müsste ja die passende sein
 
Zuletzt bearbeitet:
Ich hab immer noch nicht so ganz kapiert.
Wenn das Ziel erreicht ist und die Glenke nicht stehenbleiben sollen, wohin sollen sie denn dann fahren?

Zum nächsten Punkt die Gelenke fahren Punkt für Punkt ab und das soll möglichst flüssig geschehen. Bedeutet: Ich möchte einfach beim Zielpunkt bereits die nächste Position wissen und in diese Richtung weiterfahren oder bremsen und "umdrehen" dadurch spare ich mir das ständige Abbremsen und los fahren!
 
Zurück
Oben