Pi Regler als Geschwindigkeitsalgorithmus

Gast #4101840
Lesenswert?

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
Angehängte Dateien:
Gast #4102789
Lesenswert?

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.
#4102833
Lesenswert?

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.
Gast #4102971
Lesenswert?

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.
Gast #4103034
Lesenswert?

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
Gast #4103060
Lesenswert?

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.
Gast #4103080
Lesenswert?

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.
#4103553
Lesenswert?

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.
Gast #4103612
Lesenswert?

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
Gast #4107751
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren