Externe Positionsteuerung Beckhoff TC3 mit AX5112 -> Verfahrweg mit Sägezahn

casaio

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe ein Problem, ich will von einem externen PC Positionsdaten abfahren. Da die Anlagen nicht zeitsynchron laufen habe ich die Daten aufbereitet was auch schön funktioniert und einen sehr guten Verlauf zeigt (im Bild die türkise Linie) jedoch versuche ich Diese mittels MC_MoveAbsolut oder MC_MoveContinuousAbsolute abzufahren, zeigt sich bei langsamen verfahren ein Sägezahnprofil (pinke Linie) im der aktuellen Position, bei schnelleren Bewegungen leider auch aber dann nicht so stark. Ich habe schon mit der Zyluszeit der NC gespielt, Beschleunigung und Geschwindigkeit begrenzt, aber ich komm einfach nicht auf die Lösung. Eine Berechnung der Geschwindigkeit aus dem Sollwert Graph gab auch keine Lösung. Auch das Spielen an der Dynamik war erfolglos.

Hat von Euch jemand noch eine Idee wie ich das Problem gelöst bekomme?

Vielen Dank schonmal !

Sollwert vs Actpos.JPG
 
Zuletzt bearbeitet:
Hallo

Wie oft setzt du denn eine neue Sollposition? Hast du such mal die Geschwindigkeit vom Istwert? Sieht aus als wenn die Achse jedes Mal stoppt.

Es sieht alles sehr hakelig aus...auch wenn es auf den ersten Blick für dich ok scheint.


Bei B&R gibt es einen Modus der sich MoveCyclicPosition nennt. Damit wird der sollwert direkt auf den Lageregler durchgereicht. Würde ich für dafür verwenden. Allerdings muss die Dynamik sauber mit der erzeugen Trajetorie begrenzt werden. Sollwert und Geschwindigkeitssprünge müssen vermieden werden... Evtl gibt es so eine Funktion auch bei Beckhoff. Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gangsterbob,

Danke für die Antwort ,Problem hab ich gelöst, die Sollwerte sind oben in blau dargestellt und erfolgen in der gleichen Taskzeit. Problem war das der Baustein MC-Moveabsolut nicht geeignet war für die schnelle Taskzeit (mindestens 5-10ms). Ich habe den Bausteinn durch ExtSetPointGenEnable ersetzt der den Sollwertgenerator der NC-Achse raus läst (Also so wie Deine Lösung auch bei B&R ist). Danach habe ich auf dem Servocontroller noch an der Interation und Regelung gespielt ,da es dann zu einer hohen Geräuschkulisse gekommen ist. Jetzt laufen die Achsen sehr sauber und geräuschlos.

Danke für die Hilfe hoffe es ist vielleicht für jemand anderen mal hilfreich.
 
Hallo casaio,
vielen Dank, dass du auch deine Lösung gleich dazu postest.
Ich habe zwar keine Ahnung von deiner konkreten Anwendung der Positionierung (Massenträgheiten, Toleranzen,...), allerdings sollten die schnellen Taskzeiten und der MC_MoveAbsolute in Verbindung mit einer NC-Achse doch kein Problem miteinander haben. Bei uns werden Taskzeiten von 500µs und 1ms für MotionControl eingesetzt und ich hatte deswegen nie Ärger. Allein vom abgebildeten Chart hätte ich eher auf eine Einstellungssache des Servocontrollers/Reglers getippt (was von dir ja zusätzlich eingestellt wurde). Der Schleppabstand der Oszillation wäre daher für mich ein Hinweis, dass die Dynamikeinstellung (Verstärkungen, Totzeitkompensation) des Umrichters noch nicht mit der vermuteten/eingestellten/gewünschten Applikation zusammenpasst.
Trotzdem vielen Dank, dass du deine Lösung hierzu gepostet hast und den ein oder anderen Ansatz in eine andere Denkrichtung zeigst. ;)
 
Hallo DaPivo,

ich finde eine Frage im Forum sollte auch irgendwann eine Lösung oder zumindest den Werdegang des Projektes enthalten, sonst bringt ein Forum keinem was, deswegen finde ich es nur normal die Lösung zu posten. Aber zu Deiner Anmerkung das der MC_MoveAbsolut bei euch bei einer Taktzeit von 500µs gut läuft. Wir haben auch Maschinen laufen die noch kürzere Taktzeiten haben was eigentlich auch kein Widerspruch ist, da in unseren fällen die Sollwertsteuerung auf dem Beckhoff System läuft und nicht alle 1ms der Sollwert neu überschrieben wird, bei manchen Anwendungen, sollte der Wert schneller überschrieben werden, kann die Tasktzeit der NC Achse auch verlangsamt werden, da dieser ja nicht zwingend die selbe haben muss. Bei meiner Anwendung sonderanwednung ist es leider so dass der Wert von einem anderen System kommt und jede ms ein neuer Wert auf das System überschrieben wird. Dabei ist es egal wie die Buffereinstellung des MC_Movebaustein eingestellt wird, da die NC nicht so schnell die Werte zum Regler schickt. Da die Werte nicht vorhersagbar sind sowohl Fahrrichtung als auch wert (Simulation mit manuellem Eingriff) und große Sprünge aufweisen können wird die Abweichung zu groß und es entsteht das überfahren und Einbremsen .
Mich würde aber interessieren ob bei euch die Werte bei den schnellen Anwendungen von der PLC erstellt werden oder von extern (kein Beckhoff) und welche Taktzeit díe NC läuft. Vielleicht hab ich da auch noch eine Alternative was übersehen, man kann ja immer nur dazulernen. ;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei uns werden die Werte in der PLC erstellt/berechnet. Allerdings habe ich dich mit den Taskzeiten anscheinend ein wenig missverstanden und auch übersehen, dass es um externe Sollwerte geht (shame on me). Unsere Tasks (sowohl NC-Achse als auch die Positionsberechnung) laufen mit einer Taskzeit von 1ms. Auch die Axis cycle time beträgt 1ms. Alles in eine Sync-Unit gepackt und mittels DistributedClock (sync cycle time des AX5000 250µs) synchronisieren lassen. Der Unterschied unserer Anwendung ist wahrscheinlich, dass sich unserer Sollpositionen nicht jede ms ändern, sondern nach Änderung nur möglichst schnell bedient werden sollen (z.B. Sollwertänderung von 700mm, abzuarbeiten in 0.3s, Überschwingen +-3mm erlaubt, Positionierungsgenauigkeit 0.1mm). Und ich denke, da ist mein Missverständnis entstanden. Ich habe keine Änderungen der Sollposition während der Positionierung, sondern erst nachdem die Position erreicht ist, bzw. durch die Buffer wandelt mir die NC die Fahrkurve passend ab, sofern doch mal eine Änderung während der Bewegung rein kommt.
Wenn der Sollwert getaktet von extern kommt, ist das ganze natürlich ein wenig heikler. Schon mal versucht, den Sollpositionswert nach Umrechnung direkt an dem Umrichter via Hardwareconfig-Variable weiterzugeben? Müsste eine DINT namens Position command value sein.
Allerdings ist die Sache ja schon abgehakt, da es funktioniert.
 
Zuletzt bearbeitet:
Stimmt das wäre auch eine Idee gewesen, hab den direkten weg bisher nur bei Geschwindigkeitsgesteuert oder Drehmomentgesteuerten Anwendungen benutzt. So weit ich den Baustein verstehe macht er aber im Prinzip das selbe nur schon skaliert, hab auch den Position_command_Value im Scope aus der ADS Kommunikation anzeigen lassen und der Rückwärts skaliert gab das selbe.
Aber die online Doku von Beckhoff gibt das nicht eindeutig her, daher bin ich mir nicht zu 100% sicher.
 
Zurück
Oben