Der Pi-Regler und ich, hallo an die Gemeinde. Ich möchte den Strom mittels eines PI Reglers regeln. Als Strecke dient mir ein Universalmotor. Den Stromsollwert kann ich durch ein Potenziometer, das auf meiner W1 Schaltung mit verbaut, ist frei zwischen 0-4A einstellen. (4A = Nennstrom des Motors). Den Stromsollwert erhalte ich über einen Beobachter (Binärer Wechselstrombeobachter). Programmiert ist das Ganze auf einem ATmega 2561. Soweit zu den Gegebenheiten. Zur Regelung kommt ein PI Regler zum Einsatz, der dafür sorgt dass der vorgegebene Stromsollwert nicht überschritten wird. Als Regelalgorithmus kommt der „Geschwindigkeitsalgorithmus“ zum Einsatz. Dieser errechnet ein Steuerwort. Das Steuerwort wird zur Berechnung der Zündwickel benötigt. Der Zündwickel wird über das Inversekennlinienglied des Stromrichters errechnet und kann zwischen 0° für Vollsteuerung und 180° für Stillstand liegen. Mein Problem: 1)Wenn ich die Sprungantwort bei großen Zündwickeln (kleiner Strome, Spannung ) erhalte ich einen ziemlichen Überschwinger, wenn ich mit der errechneten Proportionalverstärkung arbeite. Bei größeren Strömen ist der Überschwinger zwar auch da, aber halt geringer. 2) Übergebe ich die erforderlichen Werte alle richtig? Zum PI-Regler als Geschwindigkeitsalgorithmus uk = uk-1 + kRi*(Δik – Δik-1) + kRi * (TAB / TRi)* Δik-1 uk = Steuerwort uk-1 = Steuerwort zum Zeitpunkt k-1 kRi = proportionalverstärkung Δik = Regeldifferenz Δik-1 = Regeldifferenz zum Zeitpunkt k-1 TAB = PI-Algorithmus TRi = Abtastzeit der Strecke Im Nulldurchgang der Netzspannung lasse ich eine Variable „p“ hochzählen. In der Main erfolgt die Abfrage if (p == 1) { Ieff_neu = Ieff; } if (p == 2) { Ieff_alt = Ieff_neu; p = 0; } Ieff_neu und Ieff_alt werden dem PI Regler zur Verfügung gestellt. Des Weiteren wird in der Main die Stellung des Potis eingelesen und daraus der Stromsollwert errechnet. Stromsollwert u = (ADC_Lesen()); R = u/1024; Imax = (R *4); Ist der PI Regler einmal ab gefrühstückt wird das errechnete Steuerwort zum Steuerwort uk-1. Den PI Regler habe ich als Datei angehängt, ebenso wie ein Strukturbild des Systems. Ich hoffe einer von euch kann was damit anfangen und hat einen goldenen Tip für mich. Besten Dank. Micha
Ich bin irritiert. Also du möchtest die Drehzahl eines Motors regeln und den Sollwert in Ampere festlegen? Ampere ist keine Drehzahl! Und dann gibt es da noch einen Zündwickel - wasndasn? Mein Motorrad hat eine Zündspule - aber das meinst du wohl nicht, oder doch? Um die Drehzahl zu regeln würde ich den Sollwert in einer entsprechenden Einheit vorgeben, zum Beispiel U/min. Und ich würde den istwert mit einem entsprechenden Sensor messen, z.B. einer gelochten Scheibe, die mit einer Lichtschranke abgetastet wird.
Der Zuendwinkel bezieht sich auf den Thyristor. Und die Stromregelung soll das Drehmoment regeln. Nehm ich an. Der Regler funktioniert so nicht. Denn er bezieht die Last nicht ein. Ein wesentlicher Feedback, und der ist wirklich essentiell, ist die EMK des Motors. Die ist etwa Proportional zur Drehzahl. Und zusammenhaengend mit dem Problem ist noch der Innenwiderstand. Erst sollte man ein Modell der Strecke haben, vorher bringt nichts etwas.
:
Bearbeitet durch User
Das könnte ein Parameter Problem sein, der P-Antei ist möglicherweise zu hoch gewählt. Setz den einfach mal stufenweise herab und schau, ob die Reglung noch funktioniert. Du muss dir natürlich das Ganze irgendwie visual z.B als Diagramm anzeigen lassen können. Damit du sehen kannst, ob die Reglung in der gewünschten Qualität arbeitet. Ich hatte in der Vergangenheit ein ähnlichen Problem mit überschwingern. Lag daran das die Taktgeschwindigkeit mit der der Regler gearbeitet hat, zu langsam war. Man muß halt darauf achten das der Regler mit einen geschwindigkeit arbeitet, welche die Hardware in deinen Fall der Motor + Steuerung auch bewätigen kann. Arbeitet der Regler zu schnell, so das die Hardware die Änderungen gar nicht Real umsetzen kann, dann kann es zu Problemen kommen. Oder wenn der Regler zu langsam Taktet hat man auch Probleme. Beides kann sich als Überschwinger bemerkbar machen.
Eine kleine Ergänzung noch, mit P-Anteil meinte ich den Faktor K_P. Dieser ist ja die Verstärung für den P-Anteil des Reglers.
AVR-Neuling schrieb im Beitrag #4102981: > Eine kleine Ergänzung noch, mit P-Anteil meinte ich den Faktor K_P. > Dieser ist ja die Verstärung für den P-Anteil des Reglers. Erst mahl danke für vielen Anregungen. Da habe ich eine Nachfrage. zu dem Verstellen des K_P. Also, der PI Regler besteht zwar aus einem I und einem P Anteil, aber die Proportionalverstärkung ist doch für beide Fälle, also im PI Regler immer die Gleiche. Ich benutze als Halbleiter einen Triac, mit andern worten es erfolgt nur eine Regleränderung pro Netzhalbwelle. Die Parameter mit denen ich den Regler entwurf gemacht habe beziehen sich ja unter anderem auf die Strecke. Diese liegt also als Model vor. (R, X, L) grüße Micha
Micha schrieb: > Da habe ich eine Nachfrage. zu dem Verstellen des K_P. Also, der PI > Regler besteht zwar aus einem I und einem P Anteil, aber die > Proportionalverstärkung ist doch für beide Fälle, also im PI Regler > immer die Gleiche. Da hast du einen Fehler gemacht. Es gibt für den P-Anteil und für den I-Anteil jeweils einen eigenen Faktor.
Micha schrieb: > aber die > Proportionalverstärkung ist doch für beide Fälle, also im PI Regler > immer die Gleiche Nein, die müßen nicht gleich sein, in meinem Fall hatte ich einen K_P und ein K_I Faktor. Es kommt sicher auf die Anwendung an, aber ich denke mal beide brauchen eine eigene Verstäkung. In meinen Fall war das so, dass für K_P=300-350% und für K_I=5-20% eingestellt werden mußte, um brauchbare Ergebnisse zu erziehlen. Ich hatte das auch so realisiert, dass beide Parameter Variabel einstellbar waren, da für jede Baugruppe toleranz bedingt ein manuelles feintuning gemacht werden mußte.
Gewöhnungsbedürftiges Bildchen. Was soll der Block 'LIN' sein sowie die coole Bezeichnung Beobachter. Ein Regelungstechniker könnte dabei Krise bekommen. Wie schon oben erwähnt wurde, sollte zumindest ein grobes Modell von der Strecke gebildet werden. Durch Eingangssprüngen kann man die Strecke evtl. als PT1-Glied identifizieren.
Stm Mc schrieb: > Wie schon oben erwähnt wurde, sollte zumindest ein grobes Modell von der > Strecke gebildet werden. Durch Eingangssprüngen kann man die Strecke > evtl. als PT1-Glied identifizieren. Ich dachte das währe klar geworden. Ja es handelt sich um eine PT1 / VZ1 Strecke. Also ich könnte jetzt den KI und den KP Anteil separat verstellen. ICh war nur immer der Meinung das es nur ein K geben dürfte, weil in dem Kästchen in dem man die Sprungantwort immer rein malt ja auch immer nur ein K drin steht. (zum anderen war das die Anweisung von meinem Prof :-) ich wird das mal so versuchen mit zwei unterschiedlichen K's evt. klapts ja so besser
Es scheint als hätte ich den Fehler gefunden. Die Regeldifferenz soll ja nur einmal pro Netzperiode gerechnet werden. if (p == 1) { Ieff_neu = Ieff; } wird aber erst in der nächsten zurückgesetzt. Ich habe jetzt zwei Variablen definiert und "Schwups" das Überschwingen war Geschichte. Vielen Dank für die Anregungen.
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.