Hallo, nachdem ich schon im µC Forum nach Reglern gefragt hatte, und mir die Arbeitsweise glaub ich klar geworden ist, gehts an die Implementierung. Der Regler summiert also ständig die Abweichungen auf. Ich bekomme alle 1/16 sec den aktuellen Messwert, werfe ich den Integrator dann auch immer nur dann an, wenn es eine Änderung gab? esum = esum + e y = Ki x Ta x esum Wenn ich diese Formel verwende, wie wähle ich Ki und Ta? Wird die Abtastzeit Ta dann 1/16, und über Ki stelle ich die "Reaktionszeit" ein? Am Ende will ich ein 10Bit PWM Signal haben. Kann ich den Wert y dann einfach auf 1024 normieren? MfG Mr.Green
Der Wert wird immer aufintegriert, ob er sich ändert oder nicht. Zu den 1024: Normierung (eines Shorts?) ist quatsch, da machst du dir die Reglerverstärkung wieder kaputt. Hier würde ich mit einer Sättigungscharakteristik arbeiten, also den Wert auf das entsprechende Intervall beschränken. Das solltest du dann bereits mit esum machen, sonst führt das Erreichen der Begrenzung zum berüchtigten Windup-Effekt.
Aber meine Messwerte (Drehzahl in rpm) kommen ja nur alle 1/16 sec... Das heißt doch, dass zwischen zwei Messwerten der alte viel zu lange aufaddiert wird, oder? Mit der Beschränkung meint du, dass esum nur Werte zwischen 0 und 1024 annehmen soll? Ich krieg Soll und Ist Wert als rpm, und zwar den Ist-Wert alle 1/16 sec. Jetzt ist der Unterschied Soll-Ist meinetwegen 1 rpm, die addiert der Integrator dauernd auf. Dann ist das y des Reglers nach 1024 mal addieren ja schon an der Obergrenze der PWM, das heißt der Motor wird dann mit voller Leistung gefahren? Führt das nicht zum Schwingen?
>Aber meine Messwerte (Drehzahl in rpm) kommen ja nur alle 1/16 sec...
Dann sollte der Rechenalghorithmus, der den Regler darstellt, auch nur
alle 1/16sek aufgerufen werden.
Das nennt sich dann Abtastfrequenz.
ALso 16mal je sekunde folgendes rechnen (egal welchen Wert Istwert
hat!):
-Sollwert minus Istwert ergibt Regeldifferenz
-Regeldifferenz durch Reglerformel schicken (hier wohl nur? I)
-Ergebnis ist neuer Stellwert für dein Stellglied (hier duty-Cycle für
pwm)
Nachtrag:
Ich bezweifle stark, das ein nur I-Regler für eine Drehzahlregelung
geegnet ist..
> Mit der Beschränkung meint du, dass esum nur Werte zwischen 0 und 1024 > annehmen soll? Na ja, genauer gesagt, daß esum nur solche Werte annimmt, daß y am Ende nur Werte zwischen 0 und 1024 annimmt. > Jetzt ist der Unterschied Soll-Ist meinetwegen 1 rpm, die addiert der > Integrator dauernd auf. Nicht dauernd, sondern solange bis der Unterschied Soll-Ist null ist. Der Stelleingriff des Reglers zeigt ja hoffentlich irgendwann mal Wirkung. > Dann ist das y des Reglers nach 1024 mal addieren ja schon an der > Obergrenze der PWM, das heißt der Motor wird dann mit voller Leistung > gefahren? Was meinst du mit "schon"? 1024 Abtastperioden sind ja immerhin 64 Sekunden. Wenn der Regler es nicht hinkriegt, in 64 Sekunden eine Solldrehzahl einzuregeln, sondern der Istwert dauerhaft darunterbleibt, ist der Motor mechanisch wohl an der Lastgrenze. In diesem Fall ist es im Sinne eines "Best effort" natürlich angesagt, mit maximaler Leistung zu fahren, um noch möglichst nahe an die geforderte Drehzahl zu kommen. > Ich bezweifle stark, das ein nur I-Regler für eine Drehzahlregelung > geegnet ist.. Könnte mit vorsichtig eingestellter Reglerverstärkung klappen. Geschwindigkeit ist dann nicht wirklich berauschend ;-) Würde zum PI-Regler raten.
Danke für die Antworten!! Die Abtastzeit Ta ist bei mir also 1/16, und das setze ich auch so in die Formel für y ein, richtig? Kann ich als Verstärkung Ki einfach mal 1 wählen? Wenn Ki zu groß ist schwingt es, und wenn es zu klein ist dauert es ewig, den Motor zu regeln, oder?
> Die Abtastzeit Ta ist bei mir also 1/16, und das setze ich auch so in > die Formel für y ein, richtig? Richtig. > Wenn Ki zu groß ist schwingt es, und wenn es zu klein ist dauert es > ewig, den Motor zu regeln, oder? Richtig. Wobei der Einsatz eines reinen I-Reglers eh suboptimal ist. Hör doch auf uns und nimm einen PI-Regler. > Kann ich als Verstärkung Ki einfach mal 1 wählen? Kannst du machen. Allerdings ist reines Probieren recht langwierig, wenn man noch nicht einmal die Größenordnung kennt, in der die richtige Einstellung liegt. Hast du die Möglichkeit, irgendwie die Sprungantwort der ungeregelten Strecke Motor-Getriebe?-Last aufzunehmen, z.B. Oszi, oder in dem du den µC mal die Meßwerte über Seriellkabel an den PC übertragen läßt oder meinetwegen auf dem Display anzeigen? Unter Sprungantwort versteht man den Zeitverlauf der Geschwindigkeit unmittelbar nach einer sprungförmigen Änderung des PWM-Tastgrads (beispielsweise 0 auf 1023, dann sieht man am meisten). Wenn nein, ermittel zumindest mal die Leerlaufdrehzahl bei dauerhaftem Betrieb mit voller Spannung, dann brauchst du nur noch einen Parameter zu schätzen. Anschließend bietet sich (für den PI-Regler) das Einstellverfahren nach Ziegler-Nichols an, um zu vernünftigen Ergebnissen zu kommen.
Nachtrag: Ich sollte mal denken, bevor ich schreibe. Du hast ja dem von dir gewählten Unterforum nach zu urteilen gar keinen µC, sondern einen FPGA. Trotzdem: besteht eine Kommunikationsmöglichkeit?
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.