Halo zusammen,
ich implementiere gerade einen PID-Positionsregler: Eingang:
Encoder-Position, Ausgang: Pwm, Strecke: Linearmotor+Last
Wenn die Soll-Position nicht überschritten darf, muss man dann die
I-Summe löschen wenn die Ist_Pos == (Soll_Pos-epsilon)?
Solange die I-Summe >0 => Pwm >0, dann muss die Ist_Pos überschwingen
und wieder Zurück, dieses Überschwingen ist unerlaubt. oder kann man das
nur durch die PID-Parameter einstellen?
Hallo,
Streckenidentifikation
dann
Reglerstruktur wählen
dann
Regler parametrieren (nach gewählter Reglerverhalten wie überschwingung,
unterschwingung, ist Fehler bei T gleich unendlich erlaubt)
dann
Regler optimieren bis das gewünschte verhalten erreicht ist.
Meiner Meinung nach:
Überschwingung kann man durch den Reglerstruktur und Parametrierung raus
bekommen.
I-Summe löschen wird nicht helfen:
- macht dein Regler nicht linear
- motor braucht Zeit um sich anzuhalten, Masse hat Traegheit
- Eventuell brauchst du Haltekraft so dass deine Position nicht weggeht.
Würde ich aber nicht mit PID (oder I Teil) machen sondern irgendwie
anders
Ok,Ich habe gedacht dass wenn die Soll-Position erreicht wird, geht das
PID_OUT zu Null.
Jetzt prüfe ich dauernd ob die Soll-Pos erreicht ist, wenn ja dann setze
ich die Pwm auf Null und ist die Fahrt fertig.
Wie macht man das normalerweise? auch so: soll/Ist-Pos Vergleich und
abrupt die PWM löschen? oder was anders?
Eine andere Idee ist ein Bremsweg zu führen, und da mit einer minimalen
PWM zu fahren bis die Soll-Pos erreicht wird, muss ich noch testen.
Ein gut eingestellter PID-Regler schwingt nicht über. Hast du die
Reglerparameter schon einem "Feintuning" unterzogen?
Franz schrieb:> Jetzt prüfe ich dauernd ob die Soll-Pos erreicht ist, wenn ja dann setze> ich die Pwm auf Null und ist die Fahrt fertig.
Das hat dann nichts mehr mit einem PID-Regler zu tun. Und es würde nur
funktionieren, wenn die Masse oder die Geschwindigkeit deiner Strecke 0
wären. (Denn wenn die kinetische Energie im Moment der PWM-Abschaltung
ungleich 0 ist, fährt die Strecke einfach weiter, bis die kinetische
Energie in Dämpfung verheizt wurde)
Franz schrieb:> Wie macht man das normalerweise?
Ich würde eine kaskadierte Regelung aus 2 oder 3 PID-Reglern aufbauen.
Der äußerste Regler regelt auf die Position. Seine Stellgröße ist die
Führungsgröße eines Geschwindigkeitsreglers (mittlerer Regler). Die
Stellgröße des Geschwindigkeitsreglers ist die Führungsgröße eines
Beschleunigungsreglers, der die Kraft des Linearmotors regelt.
Das funktioniert gut; erfordert aber noch mehr Geschick beim Einstellen
der einzelnen Regler.
Wenn es nicht auf optimale Performance beim Erreichen der Soll-Position
ankommt, probiere es mit einem Regler. Wichtig ist aber, dass dieser
auch negative Stellgrößen an den Linearmotor ausgeben kann, um
rechtzeitig bremsen zu können.
Der Andere schrieb:> Das wäre ein reiner P Regler.
Das wäre ein heuristischer Regler mit nicht-linearer
Übertragungsfunktion. Ein P-Regler könnte (bis auf einen statischen
Lagefehler) wahrscheinlich die Position einregeln.
Traubensaft .. schrieb:> Ein gut eingestellter PID-Regler schwingt nicht über. Hast du die> Reglerparameter schon einem "Feintuning" unterzogen?
Das verstehe immer nicht: PID Ausgang ist die Summe von P-, D-, und
I-Anteil.
Wenn die Soll-Pos erreicht ist dann sind P und D Anteile gleich Null, da
sie nur vom Fehler abhängig sind.
Der I-Anteil ist aber größer Null weil er von der Summe aller vorherigen
Fehler abhängig ist:
I-Anteil > 0 => Pid_Out > 0 => Act_pos geht dann über die Soll_Pos
Wie soll es dann nur dem PID alleine an der Soll_Pos anhalten?
Weshalb sollte der I Anteil bei Fehler=Null gleich Null sein ?
Eine Trivialst Temperaturregelung zB hat die Hauptarbeit der Regelung
dem I-Anteil angehaengt, der haelt die Temperatur auf ungleich Null.
Denn P=0.
Zwölf M. schrieb:> Eine Trivialst Temperaturregelung...
Ja bei einer Temperaturregelung kann ich noch verstehen, die
Soll-Temperatur muss gehalten werden. Bei einem DC Motor nicht, wenn die
Soll-Pos erreicht ist, dann muss die Spannung weg (Pid_Out = 0).
Traubensaft .. schrieb:> Der Andere schrieb:>> Das wäre ein reiner P Regler.>> Das wäre ein heuristischer Regler mit nicht-linearer> Übertragungsfunktion. Ein P-Regler könnte (bis auf einen statischen> Lagefehler) wahrscheinlich die Position einregeln.
Falsch, ein Regler dessen Ausgangswert 0 ist wenn sein Eingangswert 0
ist ist ein reiner P Regler.
Und nichts anderes habe ich gesagt, bitte schau dir auch das Zitat an
auf das sich meine Aussage bezieht.
Der Andere schrieb:> ein Regler dessen Ausgangswert 0 ist wenn sein Eingangswert 0 ist ist> ein reiner P Regler.
Ja, aber nur wenn er bei einem auftretenden Regelfeher die PWM wieder
anschaltet. Das hatte der TE aber scheinbar nicht vor.
Ich bin mir sicher, dass es mit der Einführung von Bedingungen keine
bessere Regelung wird. Entweder das Einstellen des PID reicht aus, oder
der TE sollte eine kaskadierte Regelung aufbauen.
> Ja bei einer Temperaturregelung kann ich noch verstehen, die
Soll-Temperatur muss gehalten werden. Bei einem DC Motor nicht, wenn die
Soll-Pos erreicht ist, dann muss die Spannung weg (Pid_Out = 0).
Nur wenn kein Drehmoment ansteht.