Wenn die Geschwindigkeit annähernd null UND die Position annähernd genau ist, sollte dein Motor angekommen sein.Wie oder wann kann ich sagen, dass der Motor in Endposition ist?
Hallo,
ich habe eine fertige Regelungstechnik PID Library mit der ich einen Motor auf Position schicken und halten möchte.
Ich gebe die Sollposition vor und warte bis mein inkrementeller Wegwert in gewünschter istposition ist.
Der Motor überfährt die Zielposition leicht und fährt dann zurück zur Zielposition.
Ich habe nun leider das Problem das ich das Signal "in Position" bereits beim erreichen der Zielposition ausgebe, aber der Motor ja dann erst das Ziel überfährt.
Wie oder wann kann ich sagen, dass der Motor in Endposition ist?
Wenn die Geschwindigkeit annähernd null UND die Position annähernd genau ist, sollte dein Motor angekommen sein.Wie oder wann kann ich sagen, dass der Motor in Endposition ist?
Viele Grüße, William
-> http://william.thielicke.org/
Dein Problem sind die überzogenen Regelparameter. Der optimale Parametersatz ist durch den aperiodischen Grenzfall gekennzeichnet, bei dem KEIN Überschwingen eintritt und bei dem der Zielwert in sehr kurzer Zeit (PRAKTISCH genau, theoretisch nur angenährt) erreicht wird. Du hast Deine Dämpfung zu schwach eingestellt - so etwas macht immer Probleme.Zitat von jojo45
Lösungsansatz: Dämpfung vergrößern - evtl. auch mal P-Anteil zurücknehmen. Natürlich gibt es auch Krückenlösungen - aber die sind eben - Strunks - woher soll denn irgendein Beobachter/Algorithmus/Holsder...werauchimmer wissen, dass kein mehrfaches Überschwingen eintritt . . .
Schau mal hier.
Ciao sagt der JoeamBerg
Nicht nur die PID Regelung ist hier kritisch, aber sicher auch die geplannte "Fahrstrecke". Sehr fiel wird hier eine "Positionscontrolle" gebraucht mit folgende Algoritme : Für jede Fahrstrecke wird ein Geschiwdigkeitsprofil berechnet. Meistens wird eine "Trapeze" Geschwindigkeitsprofil genutzt (Feste Rampe hochfahren, Max geschw, Feste Rampe runterfahren). Dan wird in bestimmte Zeitpunkten gemessen in wie weit die Ist pos und Soll pos. sich verhalten. Das ist dan die sogenannte "Schleppfehler". An Hand von diese Schleppfehler wird mit eine P-Regelung dan die Geschwindigkeit nachgeregelt. Wichtig ist naturlich das "Abbremsepunkt". Kan vorab berechnet werde für jeden Fahrstrecke.
Vielen Dank für die Interessante Antwort!
Gibt es dazu bereits ein fertiges C Programm damit ich mir darunter genaueres vorstellen kann?
Das sollte dann die Regelabweichung e sein? Also die Differenz zwischen Soll- und Istpositon?Ist pos und Soll pos. sich verhalten. Das ist dan die sogenannte "Schleppfehler"
Das heißt dann y = Kp * e (Schleppfehler)? Jedoch Geschwindigkeit nachgeregelt? Muss dann nicht die EIngangsgröße für e eine Geschwindigkeit sein also z.B. Soll und Istgeschwindigkeit?An Hand von diese Schleppfehler wird mit eine P-Regelung dan die Geschwindigkeit nachgeregelt.
Mein Motor sollte schnellstmöglich in Zielposition sein, deswegen würde ich dann auch die Rampen sehr klein einstellen, sodass die Beschleunigung sehr hoch ist.
Ich mache mir in schwierigen Fällen (Re gelun gs technik ist für mich schwierig) ne Skizze mit den erforderlichen, vorhandenen, gefragten etc. Größen. So z.B.Zitat von jojo45
......
Mehr dazu z.B. hier.
Tja - die Theorie spricht dann manchmal vom Überschwingen. Übrigens - dieses Wochenende gibts ein Praxisseminar zum Thema: Beschleunigung sehr hoch, um schnell im Ziel zu sein - heißt Formel1-Rennen und zeigt, dass viel Beschleunigung nicht immer viel bringt. Dort sieht eben das Ergebnis von zu viel Beschleunigung ohne Sinn viel spektakulärer aus als in vielen anderen Regelkreisen.Zitat von jojo45
Ciao sagt der JoeamBerg
Danke für den Link, für mich auch schwierig, aber ich hoffe das es irgentwann nicht mehr schwierig ist. (Deswegen Frage ich ja auch)Ich mache mir in schwierigen Fällen (Re gelun gs technik ist für mich schwierig) ne Skizze mit den erforderlichen, vorhandenen, gefragten etc. Größen. So z.B.
Da schau ich mir doch lieber Regelkreise anÜbrigens - dieses Wochenende gibts ein Praxisseminar zum Thema: Beschleunigung sehr hoch, um schnell im Ziel zu sein - heißt Formel1-Rennen und zeigt, dass viel Beschleunigung nicht immer viel bringt. Dort sieht eben das Ergebnis von zu viel Beschleunigung ohne Sinn viel spektakulärer aus als in vielen anderen Regelkreisen.
Eine wichtige Frage hätte ich noch zu Deiner Zeichnung. Was bedeutet dieses "stupsi" und "tupsi" oder wo kommt das her?
Das ist im Posting erwähnt (dachte ich). Die Dauer zwischen zwei Interrupts des Motorencoders nenne ichZitat von jojo45
t ime u nits p er s ensor i nterrupt
und dessen Sollwert ist eben das stupsi. Sprich: es ist eine inverse Geschwindigkeit (hihi - das ist jetzt sicher nicht klarer).
Eine Geschwindikgeit ist ein bestimmter Weg pro so und soviel Zeiteinheiten, eine Drehzahl ist ein bestimmter Winkel pro so und soviel Zeiteinheiten. Um die Motordrehzahl zu messen - damit kann ich über die Geriebeuntersetzung die Fahrzeuggeschwindigkeit errechnen (bei vernachlässigtem Schlupf) - halte ich die Anzahl der Zeiteinheiten (time units) von 50 µs fest, die zwischen zwei Interrupts vergehen. Diese 50 µs Zeitscheiben kommen von (m)einer standardmässigen Borduhr - einem Timer.
Ciao sagt der JoeamBerg
Das ist mir jezt schon klarer, danke.
Mich würde die Sache mit dem berechneten Fahrprofil noch interessieren, wo vorher ein Trapez mit einer festen Beschleunigungs- und Bremsrampe berechnet wird und dann nur proportional die Geschwindigkeit geregelt wird.
Lesezeichen