Frage an die Regelungstechniker - Positionsregelung eines E-Motors

Hallo,

es geht um eine Positionsregelung eines DC-Motors. Die aktuelle Position wird =FCber einen Encoder erfa=DFt.

Der PID Regler l=E4uft mit 1ms. F=FCr die gew=FCnschte "Fahrkurve" wird periodisch ein neuer Weg-Sollwert ausgegeben. Dabei ist folgendes zu beobachten: Wird der neue Weg-Sollwert alle 10ms vorgegeben, stellt sich ein lauter brummender Lauf ein. Dieses ist auch nachvollziehbar: Wird der Sollwert erh=F6ht, stellt der Regler fest, da=DF er mehr "gas" geben mu=DF und steuert auf. Dann bleibt der Sollwert ja 10ms gleich und der Regler stellt fest, da=DF er schon =FCbers Zeil hinausgeeilt ist und regelt ab. Dann kommt wieder der n=E4chste Sollwertsprung und das gleiche f=E4ngt von vorne an - er steuert wieder auf.

Wenn ich die Sollwertvorgabe alle 1ms mache und dadurch geringere Quantisierungsspr=FCnge drin habe, l=E4uft der Motor mit den gleichen Reglerparametern ruhig. Es gibt durch den fehlenden "gro=DFen" sollwertsprung keine gro=DFen Stellgr=F6=DFenausschl=E4ge.

Was ich br=E4uchte w=E4re eine Informationsquelle, wie am besten so ein digitaler Regler f=FCr eine F=FChrungsregelung zu implementieren ist. Wer kann weiterhelfen?

Gru=DF

Wolfgang

Reply to
Wolfgang Weinmann
Loading thread data ...

Hallo Wolfgang,

Am nähesten an praktischen Problemen sind Diskussionen über diverse Selbstbauprojekte von Lagereglern.

formatting link
hat da viel zu bieten, z.B. alles rund um den UHU.

Siegfried

--
http://www.schmidt.ath.cx
Reply to
Siegfried Schmidt

Hast du schon versucht den Regler weicher einzustellen?

Vieleicht hilft der Quellcode eines solchen Reglers?

formatting link

Du mußt aber abstriche an die Nachregelgeschwindichkeit machen wenn du alle 10 ms eine Vorgabe machst. Es kann aber recht gut gehen wenn du den 1ms Regler auf die 10ms syncronisierst.

--
MFG Gernot
Reply to
Gernot Fink

Wenn in einem festen Zeitraster Sollpositionen vorgegeben werden sollen, ist die Lösung ist ziemlich einfach: Nicht die Position regeln, sondern die Geschwindigkeit, mit der diese angefahren wird.

Reply to
Heiko Nocon

Wolfgang Weinmann schrieb:

Ist der Regleralgorithmus zeitdiskret oder quasikontinuierlich gebaut?

Mit einer Sollwertvorgabe im Bereich der Reglergeschwindigkeit verlässt du den quasikontinuierlichen Fall. Ein quasikontinuierlicher Regler wird dadurch seine "gewohnten" Eigenschaften verlieren. Deshalb ist der zweite von dir beobachtete Fall mit Vorsicht zu betrachten.

Auch der Fall 1:10 kratzt WIMRE schon an der Grenze.

Mit freundlichem Gruß

Jan

Reply to
Jan Kandziora

Soweit es von Seiten der Anwendung keine Probleme gibt: TP-Filter in die Führungsgrösse einbauen damit die sich nur noch kontinuierlich ändern kann.

Das Fehlersignal, also das Eingangssignal zum PID-Filter, ist die Differenz zwischen Sensorsignal und Führungssignal. Das PID-Filter kann gar nicht unterscheiden von welcher Seite die Änderung kommt. Der PID wird auf die Störungen aus der Strecke ( typisch ein Tiefpaß und kann damit keinen Sprung machen ) eingestellt. PID kann damit nicht gleichzeitig für eine sprungartige Änderung der Führungsgrösse sauber passen. Insofern sollte das TP-Filter für die Führungsgrösse ungefähr die Zeitkonstante der Strecke haben.

Für TP-Filter kein IIR wegen DC-Fehler verwenden sondern z.B. FIR wie Averager/Mittelwertfilter.

MfG JRD

Reply to
Rafael Deliano

@ Siegfried Schmidt:

Danke - habe mich angemeldet und werde mal reinschauen.

@Gernot Fink:

Hab ich bereits angeschaut. Der hat eine Kaskadenregelung benutzt. Sregler und extra nachgeschalteter V-Regler. Und der Regler l=E4uft auch mit 1KHz.

@Heiko Nocon:

Ich will ja letztendlich den Weg regeln - also mu=DF dieser doch auch irgendwie in der Regelung auftauchen. Mit dem Kaskadenregler k=F6nnte man eine s-v-Regelung machen. Habe mal gelernt, da=DF sich damit auch D-Anteile vermeiden lassen. Aber ob das das beschriebene Problem mit dem "Brummen" entsch=E4rft?

@Jan Kandziora:

Hm - das ist eine Frage. Es ist ein "normaler" PID Algorithmus, der alle ms aufgerufen wird. Die Regelparameter sind eher nach stabile Antwort auf einen Sprung eingestellt, bzw nach dem Ziegler-Nichols Prinzip

u

Das beschriebene Verhalten habe ich genauer angeschaut, indem ich die Regler- und Sollwert - Werte w=E4hrend eines Laufes aufgezeichnet habe. Das hat so ausgesehen, wie ich es bei einem analogen Regler auch nicht anders erwarten w=FCrde. Es W=E4re ja auch bei einer analogen Regelung theoretisch m=F6glich den Sollwert so mit Stufen vorzugeben. Der Analog- Regler w=FCrde dann wahrscheinlich das gleiche Verhalten zeigen.

Bei einem viel gr=F6=DFeren einmaligen Sprung funktioniert das ganze problemlos. Dort hat dann die Regelabweichung halt fast die ganze Zeit das gleiche Vorzeichen und der Motor wird ganz schnell ohne Brummen auf die Sollposition usw. gefahren. Das Problem ist bei meiner "Trepppenform" wohl, da=DF der Regler immer zuerst durch den D-Anteil voll aufregelt, um dann =FCber die Sollposition hinauszuschie=DFen und gegenzuregeln. Das ganze periodisch ist das Problem. ICh habe auch schon versucht bei der Sollwertanhebung einen Reglertakt den D-Anteil gleich zu lassen. Der Motor lief dann wesentlich ruhiger, aber der Lauf war immer noch etwas unruhig. Der P-Anteil macht bei der Sollwertanhebung halt auch einen Sprung.

Ich habe auch schon versucht die Reglerparameter herunterzudrehen. Dann l=E4uft es zwar auch gut, aber die Position wird dann im Stillstand nicht mehr so gut gehalten.

@Rafael

Das geht doch in die Richtung, wenn ich den Sollwert auch alle 1ms hat um den 1/10 Teil als wie nach 10ms anhebe. Dann l=E4uft ja auch alles ruhig.

Das probiere ich mal aus - da=DF sich die F=FChrungsgr=F6=DFe langsamer =E4ndert..

Wobei meine Anhebung um die kleinste m=F6gliche Quantisierungsstufe alle ms ja auch nicht viel anderes ist. Ein Tiefpa=DF macht aus einem Sprung am Anfang ja auch eine Gerade, bei t

Reply to
Wolfgang Weinmann

Hallo Wolfgang, hallo NG,

Wolfgang Weinmann schrieb:

Soweit ok. Wenn man eine Position geregelt anfahren will, soll man die Position messen.

"Weg" = "Position"?

Wie wird denn die Klemmenspannung des Motors erzeugt? PWM? Taktfrequenz? Nicht umsonst laufen industrielle PWMen mit unhörbaren Taktfrequenzen. Die Ankerzeitkonstante eines DC-Motors kann durchaus klein sein.

Wie hast Du den Regler dimensioniert? Einschleifige Positionsregelung? Unterlagerter Stromregler? Wie sieht das Streckenmodell aus? Was heißt Deine Aussage "daß er schon übers Ziel hinausgeschossen ist" - wer ist "er" bzw. welche Größe schießt übers Ziel hinaus?

Normalerweise (tm) dimensioniert man einen Regler so, dass die Regelgröße - also bei Dir wohl die Position - nicht extrem, sondern allenfalls leicht überschwingt. Die Wirkung eines D-Anteils soll ja gerade sein, die Stellgröße bei schnellen Änderungen der Regelgröße kurz vor Erreichen des Sollwerts wieder auf das gerade stationär benötigte Maß zurückzunehmen. Es deutet einiges darauf hin, dass Du Deinen Regler möglicherweise nicht optimal an die Strecke angepasst dimensioniert hast.

D.h., der Regler läuft nach wie vor mit 1ms, aber die Sollwerte werden nur alle 10ms geändert?

Zeigt die Regelstrecke vielleicht ein schwingungsfähiges Verhalten? Dann liegst Du mit Sollwertänderungen alle 10ms vielleicht in der Nähe einer Streckenresonanz, 100Hz kann bei mechanischen Systemen gut sein. Mit

1kHz lägest Du dann darüber?

Gruß, Volker.

Reply to
Volker Staben

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.