PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Regelungstechnik PID Motor auf Position



jojo45
20.10.2011, 07:36
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?

Willa
20.10.2011, 07:49
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.

oberallgeier
20.10.2011, 08:20
... Der Motor überfährt die Zielposition leicht und fährt dann zurück zur Zielposition ... das Problem ...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.

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. (http://www.google.de/search?q=aperiodischer+grenzfall&hl=de&biw=1106&bih=820&prmd=imvns&tbm=isch&tbo=u&source=univ&sa=X&ei=GsqfTtXcBoX1sgaxir3cAg&sqi=2&ved=0CDoQsAQ)

RP6conrad
28.10.2011, 20:43
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.

jojo45
29.10.2011, 15:00
Vielen Dank für die Interessante Antwort!
Gibt es dazu bereits ein fertiges C Programm damit ich mir darunter genaueres vorstellen kann?


Ist pos und Soll pos. sich verhalten. Das ist dan die sogenannte "Schleppfehler"
Das sollte dann die Regelabweichung e sein? Also die Differenz zwischen Soll- und Istpositon?


An Hand von diese Schleppfehler wird mit eine P-Regelung dan die Geschwindigkeit nachgeregelt.

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?

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.

oberallgeier
29.10.2011, 15:29
... sollte dann die Regelabweichung e sein? Also die Differenz zwischen Soll- und Istpositon ...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.

......20402

Mehr dazu z.B. hier. (https://www.roboternetz.de/community/threads/37518-Linie-Folgen?p=357670&viewfull=1#post357670)


... Mein Motor sollte schnellstmöglich in Zielposition sein ... sodass die Beschleunigung sehr hoch ist.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.

jojo45
29.10.2011, 16:40
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.

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) :)


Ü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.

Da schau ich mir doch lieber Regelkreise an :)

jojo45
30.10.2011, 08:31
Eine wichtige Frage hätte ich noch zu Deiner Zeichnung. Was bedeutet dieses "stupsi" und "tupsi" oder wo kommt das her?

oberallgeier
30.10.2011, 09:28
... Frage ... zu Deiner Zeichnung. Was bedeutet dieses "stupsi" und "tupsi" ...Das ist im Posting erwähnt (dachte ich). Die Dauer zwischen zwei Interrupts des Motorencoders nenne ich
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.

jojo45
30.10.2011, 13:49
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.

RP6conrad
30.10.2011, 17:57
Ein grosse Forteil von diesen Forgang ist das auf jeden Zeitpunkt eine neue Abweichung berechtnet werden kan. Eine PID Regelung benotigt immer eine minimale feste "Sampletime". Eine reine P-Regelung nicht. Ihre µ kan mehrmals pro ms die Abweichung (Schleppfehler) nachrechnen, und entsprechend die PWM-wert anpassen. Ihre Rampe muss so gewahlt werden das die mechanic folgen kan (100% PWM gibt auch eine bestimmte rampe, die darfen sie nicht ueberschreiten). Alles andere ist reine Mathematic. Forbild : rampe hochfahren = max 1 impuls/ms². Max speed ist 100 impulsen/ ms. Ihre theoretische soll pos ist dan nach 100 ms : 0.5*a*t² = 0.5*1*100²= 5000 impulsen. Ab dan wird es lineair : nach 200 ms wird es dan 5000+t*v = 5000+100*100 = 15000 impulsen. Sag mal das wir pos 20000 impulsen anfahren wollen. Dan mussen wir ab 15000 impulsen wieder abbremsen mit -1m/s², dan wird die soll-speed nach 300 ms wieder 0 sein. Auf diese weise lasst sich jeden ms eine exacte soll-pos berechnen. Jetzt soll-ist = schlepp fehler. Konstante * schleppfehler = PWM (reine P-regelung).

jojo45
30.10.2011, 18:53
Perfekt! Ich werde es mal versuchen!
Wenn der Schleppfehler zu groß wird, dann kann ich ja auch einen Fehler ausgeben.
Was ist nun, wenn ich eine hängende/schwebende Last habe? Funktioniert das ohne Integralanteil?

RP6conrad
30.10.2011, 19:52
In diesen Fall stellt sich eine permanente Schleppfehler ein. Der Motor bekommt dan auch dauernd eine PWM-wert, die das versucht zuruck zu regeln. Noch ein Tipp : in ein bestimmtes PWM Bereich beim anfahren lauft der motor noch nicht (tot-zone"). Wen sie rund das 0-punkt regelen wollen, mussen sie ein Sprung programmieren, sodas diese totzone ueberbruckt werd :
In Praxis kann das so aussehen (Totzone van +15% bis -15% PWM, PWM von -100% bis +100%):
If (soll_PWM>0) PWM=soll_PWM+15;
If(soll_PWM<=0)PWM=soll_PWM-15;
So etwas hat bei meine Balance roboter sehr gut functioniert.

jojo45
31.10.2011, 10:00
(100% PWM gibt auch eine bestimmte rampe, die darfen sie nicht ueberschreiten)
Angenommen, die Beschleunigung ist zu hoch gewählt, dann stellt sich doch sowieso ein zu hoher Schleppfehler ein, mit dem ich die Bewegung anhalten kann?

RP6conrad
31.10.2011, 10:23
Beschleunigung zo hoch und max speed limit erreichbar : schleppfehler vergrossert sich bis an die max-speed. Danach verkleinert sich die Schleppfehler wen die erreichbare ist-speed grosser ist dan die eingestellte max_speed. Für eine saubere Regelung musst du die Limits kleiner wahlen als die erreichbare limits !! Dan ist es auch sinnfoll die Schleppfehler zu ueberwachen. Wen irgendwo etwas schief lauft, kann du direct eingreifen (abbremsen auf 0% PWM). Die ganse Fahrstrecke wird dan ueberwacht (Wiederstand auf eine bestimmte Stelle zu hoch : Schleppfehler wird zu gross).
Noch eine Frage : wie ist die H-brucke geschaltet ? PWM an "enable" : bei low pegel wird dan die Brucke hochohmig : der Motor kan einfach auslaufen und wird nicht actif gebremst. Da kannst du nur bremsen mit negative PWM. PWM-signal an die high oder low side : bei low pegel wird die Motor kurzgeschlossen und wird damit activ gebremst. Bei diese Verdrahtung ist PWM und Drehzahl lineair. Nachteil : ein grosseres Stromverbrauch.

jojo45
09.07.2012, 18:00
Wenn nur die Geschwindigkeit geregelt wird, dann ist die Position doch sehr ungenau?
Sollte nicht lieber nach dem Geschwindigkeitsprofil die Position geregelt werden?