Reglerparamter aus Sprungantwort

#3891565
Lesenswert?

Hallo Leute,

ich habe hier die Sprungantwort einer elektronischen Last. Das ganze ist 
n Hobbyprojekt, da ich eine elektronische Last gut gebrauchen kann. Es 
soll auf einem AVR @ 20MHz laufen.

Wenn ich mir jetzt die Sprungantwort der Strecke angucke, sehe ich, dass
Tg ~= 16,25ms und Tu ~= 1,5ms beträgt. Das Ks beträgt dX/dY = 1.

Somit bekomme ich nach:
http://rn-wissen.de/wiki/index.php/Regelungstechnik

folgende Paramter für einen PI-Regler:

Kp = 9,75 ; Tn = 4,125ms nach Ziegler/Nichols
Kp = 3,79 ; Tn = 19,5ms nach Chien/Hrones/Reswick

Jetzt stellt sich mir noch die Frage, wie oft muss der Regler im 
Programm aufgerufen werden? Reichen hier 1kHz? Ich meine die Strecke ist 
ja schnarch lahm...

Die Paramter nach Chien/Hrones/Reswick sehen auf den ersten Blick etwas 
stabiler aus, da das Kp hier ja nur gut 1/3 so großß ist wie bei 
Ziegler/Nichols.

Danke,
Ingo
Angehängte Dateien:
#3891676
Lesenswert?

Ingo L. schrieb:
> Jetzt stellt sich mir noch die Frage, wie oft muss der Regler im
> Programm aufgerufen werden? Reichen hier 1kHz? Ich meine die Strecke ist
> ja schnarch lahm...

Ermittle doch den Phasengang der Last aus der Sprungantwort, dann wähle 
die Samplefrequenz so dass durch die Abtastung die Phasenreserve an der 
gewünschten Schleifenbandbreite nur unwesentlich reduziert wird.

Sieht ganz grob nach 1-10Khz Samplefrequenz dafür aus.
Gast #3891738
Lesenswert?

Ingo L. schrieb:
> Jetzt stellt sich mir noch die Frage, wie oft muss der Regler im
> Programm aufgerufen werden? Reichen hier 1kHz? Ich meine die Strecke ist
> ja schnarch lahm...

Die Periodendauer des Regleraufrufs kann man mit ca (kleinste relevante 
Zeitkonstante)/10 errechnen.

Was die kleinste Relevante Zeitkonstante ist hängt von deiner Anwendung 
ab.

Aber aus der Sprungantwort schätz ich mal dass du mit einem Regler 
aufruf alle 1ms gut dabei bist.
Für den Regler sieht das dann ca so aus wie eine Sprungantwort eines PT1 
und nicht wie eines PT2, ist aber oft vernachlässigbar.

Wenn du jedoch genügend Rechenleistung hast kannst du den Regler auch 
öfters ausführen, je nachdem was dein Prozessor, bzw deine 
Energiesparfunktionen erlauben.
Gast #3891867
Lesenswert?

Raymund H. schrieb:
> Ingo L. schrieb:
> Jetzt stellt sich mir noch die Frage, wie oft muss der Regler im
> Programm aufgerufen werden? Reichen hier 1kHz? Ich meine die Strecke ist
> ja schnarch lahm...
>
> Ermittle doch den Phasengang der Last aus der >Sprungantwort...

Wie macht man das? Kannst du da etwas Hilfestellung geben?
#3891932
Lesenswert?

Ingo schrieb:
> Wie macht man das? Kannst du da etwas Hilfestellung geben?

z.B. quick & dirty in octave/matlab angenähert
1
sprungantwort=1-exp(linspace(0,-10,1001)); % zum test
2

3
plot (unwrap(angle(fft([diff(sprungantwort)] )))/pi*180) % phase

Die Sprungantwort sollte weit genug ausgeklungen also die Messung lang 
genug sein.

Man kann sich auch den Betragsfrequenzgang anzeigen lassen.
1
plot (log10(abs(fft([diff(sprungantwort)] )))*20) % betragsfrequenzgang

Hier sieht man natürlich die negativen Frequenzen oder das 
Spiegelspektrum, kann man ignorieren oder abschneiden.

Selbstverständlich sollte die Spungantwort genau mit dem ersten Sample 
anfangen, da sonst logischerweise Phasenverschiebungen.
Gast #3892128
Lesenswert?

Hab ich vorher noch vergessen, bei digitalen Reglern musst du mit den 
Faustformeln aufpassen, die gelten nur wenn die Strecke weit unterhalb 
der Abtatsfrequenz arbeitet.

Ansonsten musst du auf die z oder Tustintransformation ausweichen und 
den Regler so parametrisieren. Mit der Tustintransformation bist du 
nacher im q-Bereich in dem kannst du die Regler nach den üblichen 
Frequenzkennlinien verfahren auslegen und dir daraus den Digitalregler 
berechnen.
Gast #3893590
Lesenswert?

Moin,

Also wenn ich das richtig verstanden habe hast du eine PT2-Strecke und 
einen PI-Regler.

PT2: Gs(s) = KP/[(T1*s+1)(T2*s+1)]
PI: Gr(s) = Kr(1+ 1/(TI*s))

Wenn du nun den Prototypen-Ansatz benutzt (bisher hatte ich damit ganz 
gute Erfolge)
Musst du dir das Nennenpolynom des geschlossenen Kreises angucken.

1+G0 = 1+ Gr(s)*Gs(s)

Wenn ich mich nicht täusche muss da ein Polynom vierten Grades 
rauskommen.
Mit den unbekanten Kr und TI.
Nun ist die Frage ob du ein Überschwingen zulassen willst oder es 
vermeiden willst. Da du jedoch nur das Nennerpolynom betrachtest kann 
auch beim zweiten Ansatz ein Überschwingen entstehen je nach Zähler.

Dann musst du ein Koeffizientenvergleich durchführen.

ITAE-Ansatz: s^4+2,1*w0*s^3 + 3,4*w0^2*s^2 + 2,1*w0^3*s+w0^4
oder
binomial-Ansatz: s^4+4*w0*s^3 + 6*w0^2*s^2 + 4*w0^3*s + w0^4

Wenn da doch dritten Grades rauskommt musst du folgende Gleichung 
benutzen
ITAE: s^3 + 1,75*w0*s^2+ 2,15*w0^2*s + w0^3
Bino: s^3 + 3*w0*s^2+ 3*w0^2*s + w0^3

Kannst du mit wxMaxima oder Wolfram Alpha lösen.
#3893803
Lesenswert?

Ingo L. schrieb:
> Hat keiner dazu eine Idee?

Jetzt kannst du den Regler wie berechnet auch mit Spice modellieren, 
also die gesamte Schleife modellieren und zuerst einen open loop 
bode-plot machen.

Bei diesem sollte dann die Phase bei 0Db Schleifenversträrkung größer 
als -135Grad sein um eine ausreichende Reserve und geringes 
Überschwingen der geschlossenen Regelschleife zu haben.

Die Abtastung des Reglers läßt sich mit 
Verzögerungsleitungen/Transmissionlines nachempfinden.

Den Istwert durch eine Transmissionline geben mit 0.5/Fsampling Laufzeit 
modelliert das, nicht vergessen dass hier die Transmissionline in Spice 
immer mit dem korrekten Wellenwiderstand abgeschlossen sein sollte.

Falls noch weitere Laufzeiten vom Istwert zum Stellglied da sind dann 
müssen die natürlich aufaddiert werden.

Man kann nun auch die Regelschleife schließen und sich .TRAN und .AC 
ansehen, evtl. den Regler noch "tweaken".

Man sieht natürlich nicht die Abtastung selbst, aber der Phasen- und 
Frequenzgang ist gut genug angenähert.
Gast #3893903
Lesenswert?

Ich glaube den Ingo gehts nicht darum wie er den Regler berechnen muss 
sondern mit welcher Frequenz er die Reglerfunktion aufrufen soll.

Die Antwort darauf steht schon oben:

Raymund H. schrieb:
> Sieht ganz grob nach 1-10Khz Samplefrequenz dafür aus.

Peter Kremsner schrieb:
> Die Periodendauer des Regleraufrufs kann man mit ca (kleinste relevante
> Zeitkonstante)/10 errechnen.

Kommt dann auf den selben Bereich den Raymund genannt hat.

Ohne Vorkenntnisse in der Regelungstechnik ist es klar dass die 
Mathematik dahinter schwer ist. Aber es gibt da so ein paar 
"Faustformeln" zB in dem führ einen relevantent Teil der Sprungantwort 
der Strecke sollte man mindestens 10 mal Abtasten. Also bei dir kann man 
knapp sagen 10 mal Abtasten im Bereich der ungefähr konstanten Steigung 
deiner Sprungfunktion.

Bzw bei deinem Amplitudengang, da siehst du ein paar kleine "Bögen" 
davor und danach ist der Amplitudengang relativ gerade. Wenn der Regler 
davon noch was mitbekommen soll, dann nimmst du die Frequenz wo der 
Bogen ist und rechnest die mal 2.

Ansonsten kommen so Effekte wie Alliasing vom Abtasten her ins Spiel und 
die "Stören" den Regler.

Grundsätzlich kannst du aber sagen wenn du einen analogen Regler 
entwirfst was ja das Ziegler-Nichols oder Chien-Hrones-Reswick verfahren 
macht und du willst den Regler digitalisieren nimm die Abtastfrequenz so 
hoch wie nur irgendwie möglich, je niedriger die Abtastfrequenz desto 
schlechter arbeitet der Regler.

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