Hallo zusammen, ich möchte einen DC Motor in der Position regeln und die Reglerparameter automatisch bestimmen. Adaptiv während der Laufzeit muss nicht sein, in einem extra "Einstellbetrieb" reicht aus. Daten: 24V Dunker Motor 3600U/min Inkrementalgeber 500 Imp/U(4x Auswertung -> 2000 Imp/U) Pwm gesteuerte H Brücke ATmega328P @ 20MHz Die Streckenparameter(I-T1) T1 und Ki nehme ich durch eine Sprungantwort am ungeregelten Kreis auf. Sie sind: T1 = 120ms und Ki = 110 Ink/ms Meine Sollposition möchte ich möglichst schnell, also ohne Drehzahlbegrenzung/regelung anfahren. Also z.B. Soll = 10 Ink Als Regler habe ich einen PID implementiert. Der Regler läuft im 0.1 ms Raster. Leider bin ich mit der bisherigen Parameterwahl nicht zufrieden. Je nach Einstellung Überschwinger, bleibende Abweichung, Dauerschwingung,... Für einen reinen P-Regler habe ich die Verstärkung auch schon von Hand berechnet( Gw(s) --> Kp = 1/(4*D²*Ki*T1) ) und in Simulink simuliert. In beiden Fällen erhalte ich etwas im Bereich 10^-5 Dieser Wert ist in der Praxis aber total unbrauchbar. Der reine P-Regler arbeitet nur im Bereich zwischen 0.1(sehr lahm) < Kp < 15(Dauerschwingung) Theorie und Praxis passen also um mehrere 10er Potenzen nicht zusammen... Von der automatischen Parameterbestimmung erhoffe ich mir, mir das mühselige ausprobieren "per Hand" zu ersparen. Außerdem ändert sich immer mal wieder die Last am Motor, sodass die Parameter neu eingestellt werden müssen. Hat jemand von euch eine Idee woher die Abweichung zwischen Theorie und Praxis kommen kann oder hat jemand schonmal so eine automatische Parameterwahl programmiert? Sollte ich vllt. einen anderen Regleransatz(z.B. digitale Regelung: Deadbeat,...) verfolgen? Bin über alle Tips dankbar, Vielen Dank und Grüße Jan
fuer einen normalen regler muss alles erst mal linear sein. Ist es das? Wie linear ist der Motor? Linear in bezug Drehzahl zu spannung, linear in bezug drehmoment zu strom. Und bis auf Null hinunter messen.. mach mal...
Danke, das war schonmal ein guter Tipp. Drehzahl über Spannung nehm ich gleich mal auf. Das Drehmoment kann ich mit Hausmitteln eher nicht messen, oder gibt es da einen Trick? Viele Grüße, Jan
Das im Anhang ist die Kennlinie der Drehzahl über der Spannung. Wie üblich, läuft der Motor natürlich erst ab einer bestimmten Spannung richtig los(hier 4). Heißt das jetzt für meine Regelung, dass ich generell zu meiner errechneten Ausgangsspannung den Offset(4) dazuaddiere? Viele Grüße, Jan
Wie wurde die Sprungantwort aufgenommen? Welche Eingangsgröße? Sicher das die Einheiten stimmen? Am besten mal die Kurve posten und die Versuchsbedingungen nennen.
Hallo Kleinkind, ich denke, dass toto durch den Hinweis auf das Losbrechmoment eines Motors schonmal voll ins Schwarze getroffen hat. Ich habe eine deutliche Nichtlinearität in meiner Regelstrecke. Unklar ist mir aber gerade noch, wie ich damit umzugehen habe... Natürlich hänge ich euch die Sprungantwort des offenen Kreises noch an. Sprung wurde bei 100% Spannung mit 1ms abgetastet. Das sollte schon so stimmen. Viele Grüße, Jan
Hallo Jan, dieses Losbrechmoment hat jeder Motor und die meisten Regler kommen damit ganz gut klar. Hast du nur eine Regelschleife? Eingang ist Position, Ausgang ist PWM? Hast du schonmal darüber nachgedacht, dem Positionsregler einen separaten Stromregler zu unterlagern? Dann kannst du den Positionsregler etwas langsamer machen, z.B. 1kHz. Achte auch darauf, ob du irgendwo an die physikalisch möglichen Grenzen kommst. Wenn der Regler eine Solldrehzahl von 6000 U/min vorgibt, obwohl der Motor nur 3000 U/min schafft, kann er natürlich den Sollwerten nicht folgen. Das Motordrehmoment misst man meistens nicht direkt, sondern berechnet es aus dem (vom Stromregler) gemessenen Iststrom. Dabei wird ein linearer Zusammenhang zwischen Strom und Drehmoment unterstellt, d.h. Sättigungseffekte werden vernachlässigt. Mit freundlichen Grüßen Thorsten Ostermann
Jan M. schrieb: > Ich habe eine deutliche Nichtlinearität in meiner Regelstrecke. das ein System linear ist, bedeutet nicht, dass da bei allen Messungen nur geraden raus fallen. Linear ist es dann, wenn man es in die Form der ABCD Matrizen bringen kann.
>Das Motordrehmoment misst man meistens nicht direkt, sondern berechnet
es aus dem (vom Stromregler) gemessenen Iststrom. Dabei wird ein
linearer Zusammenhang zwischen Strom und Drehmoment unterstellt, d.h.
Sättigungseffekte werden vernachlässigt.
Ausser um Null. Dort kann Strom fliessen, ohne ein Drehmoment zu
bringen.
Und ja, die nichtlinearitaet der spannung von 4V offset kann man kompensieren. imdem man einfach 4V hinzuzaehlt. Wenn man auf Position regelt muss man da etwas aufpassen, dass der Regler nicht dauernd die richtung umschaltet.
Du könntest probieren, ob mit (drastisch) niedrigerer PWM Frequenz das Losbrechmoment des Motors schon bei geringerer effektiver Motorspannung überwunden wird.
Also die Simulation spuckt für den Sprung von 0 auf 100 Inkremente in der Lage, eine maximale Spannung von 0,2% nach deiner Skala aus. Das könnte durchaus viel zu wenig sein. Es könnte vielleicht von Vorteil sein die statische Kennlinie aufzunehmen.
Hallo Jan, alle mir im industriellen Umfeld untergekommenen Servoregler arbeiten mit drei Reglerschalen: 1. innere Schale: Stromregler, Führungsgröße ist das Sollmoment, Regelgröße die Spannung (also in Deinem Fall der PWM-Wert). Meist ein PD-Regler 2. mittlere Schale: Drehzahlregler, Führungsgröße ist die Solldrehzahl, Stellgröße ist das Sollmoment (für Reglerschale 1). Meist ein PI-Regler 3. äußere Schale: Lageregelung, Führungsgröße ist Sollposition, Stellgröße ist die Solldrehzahl (für Reglerschale 2). Üblicherweise ein reiner P-Regler Vorteilhaft ist: Man kann von "innen" nach "außen" optimieren. Wichtig ist noch: Die Sollposition für die äußere Schale darf natürlich nicht einfach hart aufgeschaltet werden (also z.B. von 0° auf 100°), sondern es ist ein Interpolator vorzuschalten, der fortlaufend Sollpositionen gemäß der Anfahr/Bremsrampen erzeugt. Klingt kompliziert, ist aber am Ende der einfachere Weg, als zu versuchen, das Ganze mit nur einem PID-Regler in den Griff zu bekommen. Dieses Vorgehen ermöglicht auch optimale Reglereinstellungen, da z.B. die Zeitkonstanten des Stromreglers bedeutend kleiner sind als die des Drehzahlreglers. Elm Chan hat meiner Erinnerung nach sowas mal komplett in einem AVR gelöst, suche doch mal auf seiner Website. Jörg
@Alle Vielen Dank für die vielen Denkanstöße @Kleinkind Meinst du eine Kennlinie von mir? Ich verstehe leider nicht was du mir sagen möchtest... Was meinst du mit statischer Kennlinie? @Jörg Die Sollgröße wird nicht hart aufgeschalten sondern als Rampe angefahren. Dennoch soll die Position immer mit der maximalen Geschwindigkeit angefahren werden. Der dabei auftretende Strom interressiert mich eigentlich auch nicht. Soll heißen, wenn der Motor Strom will, darf er ihn ruhig ziehen. Warum soll es also Sinn machen den Strom und die Geschwindigkeit zu regeln? Wenn ich sagen würde der Motor soll mit einer bestimmten Geschwindigkeit an die Position fahren, würde ich es verstehen können, aber in meinem Fall wären der Strom und Drehzahlregler ohnehin immer voll durchgesteuert, oder nicht? Diese Kaskadenregelung für die Position habe ich schon öfter gesehen, aber dort wird dann immer auch eine Drehzahl für die Positionierung mit vorgegeben. Viele Grüße Jan
@Jan M. (jan_m59) >eigentlich auch nicht. Soll heißen, wenn der Motor Strom will, darf er >ihn ruhig ziehen. Schon, aber das Porblem liegt woanders. > Warum soll es also Sinn machen den Strom und die >Geschwindigkeit zu regeln? Eben WEIL diese Größen physikalisch bedingt DEUTLICH schneller regelbar sind. Man hat hier deutlich bessere Möglichkeiten, den Motor optimal zu reglen. Klingt komisch, ist aber so. Denn die Relativ großen Zeitkonstanten der Lageregelung schlagen bei einer einstufigen Regelung voll auf die Stromregleung durch, mit dem Ergebnis, dass man den Regelkreis insgesamt deutlich langsamer dimensionieren muss, obwohl das bei einem kaskadierten Regler nicht nötig wäre. >Wenn ich sagen würde der Motor soll mit einer bestimmten Geschwindigkeit >an die Position fahren, würde ich es verstehen können, aber in meinem >Fall wären der Strom und Drehzahlregler ohnehin immer voll >durchgesteuert, oder nicht? Oder nicht. Die schnellen Strom und Drehzahlregler verhindern u.a. auch ein Überschwingen der Stellgröße, eben weil sie schnell hoch aber auch wieder runter regeln können! >Diese Kaskadenregelung für die Position habe ich schon öfter gesehen, >aber dort wird dann immer auch eine Drehzahl für die Positionierung mit >vorgegeben. Siehst du. Hier das Projekt vom Meister. http://elm-chan.org/works/smc/report_e.html
Falk Brunner schrieb: > Siehst du. > > Hier das Projekt vom Meister. > > http://elm-chan.org/works/smc/report_e.html Dem bleibt nichts hinzuzufügen. Aber man kann es natürlich auch einfach machen und sich dann genau über die Probleme "Überschwingen" bzw. "Endposition wird angeschlichen" ärgern und irgendwann feststellen, daß die gewünschte Performance nicht erreicht wird. Aber manchmal ist auch der Weg das Ziel... Jörg PS: Danke nochmal für den Link, hatte ihn nicht mehr parat
Wow, jetzt bin ich aber schwer beeindruckt. Der Link zeigt im Endeffekt genau mein Ziel, bzw. was ich mir so vorgestellt zu erreichen habe... Mein Projekt ist dazu da, die Studieninhalte einmal zu vertiefen. Ich habe in unterschiedlichsten Bereichen viel gelernt. In der Regelungstechnik lässt sich das im Studium alles so toll rechnen(oder auch nicht ;-) ) wenn der Prof eine Aufgabe stellt. In der Praxis bemerkt man dann ganz andere Probleme. Vom Losbrechmoment eines Motors z.B. habe ich in keiner Vorlesung jemals etwas gehört. Nach dem freundlichen Hinweis war es mir natürlich auch klar... Die Totzone in meinem Stellglied habe ich nun noch kompensiert und den Regler neu eingestellt. Der nächste Schritt wäre jetzt der kaskadierte Regelkreis. Mit meinem Ergebnis bin ich jetzt aber erstmal zufrieden. Mit dem Wissen nach dem Projekt würde ich jetzt doch vieles anders machen. Als Erkenntnis zum Eingangsproblem bleibt: Wenn der Regler solide eingestellt ist, ist eine adaptive Parametrierung erstmal gar nicht notwendig. Ich bedanke mich recht herzlich für eure vielen hilfreichen Beiträge Viele Grüße, Jan
Eine adaptive Regelung umsetzen kostet viel Zeit und Aufwand. Der erste Schritt eines besseren Reglergebnisses, wäre die Umsetzung einer robusten Regelung. Nur falls du dich dahingehend weiter bilden willst.
Jan M. schrieb: > In der Regelungstechnik lässt sich das im Studium alles so toll > rechnen(oder auch nicht ;-) ) wenn der Prof eine Aufgabe stellt. In der > Praxis bemerkt man dann ganz andere Probleme. Vom Losbrechmoment eines > Motors z.B. habe ich in keiner Vorlesung jemals etwas gehört. Nach dem > freundlichen Hinweis war es mir natürlich auch klar... Leider ist das in der Hochschulregelungstechnik schon immer so gewesen: Lineare Strecke, keine "Gefahrengrenzen", die man auch bei der Reglereinstellung im Interesse der Schadensvermeidung beachten muß und so weiter. Solch unangenehme Dinge wie Nicht-Stetigkeit gibt es in der Vorlesung natürlich auch nicht. Aber dafür gibt es dann ja später die Praxis... Jörg
Gibt es da vielleicht eine Webseite oder auch ein Buch, welches auf solche Fälle dann explizit eingeht? Damit die Theorie und Praxis etwas näher zusammen kommt...
Reddi schrieb: > Gibt es da vielleicht eine Webseite oder auch ein Buch, > welches auf solche Fälle dann explizit eingeht? > Damit die Theorie und Praxis etwas näher zusammen kommt... So ein Buch habe ich mir immer gewünscht, aber genau diesen Bereich scheint keiner ansprechen zu wollen/können. Alle mir bekannten Bücher, die sich der "praktischen Regelungstechnik" widmen, waren entweder doch ohne wirklichen Praxisbezug oder auf einfachstem Niveau. Kennt jemand was passendes? Würde mich auch (immer noch) interessieren. Jörg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.