Forum: Digitale Signalverarbeitung / DSP / Machine Learning Reglerentwurf mit Matlab/Simulink


von Bernd (Gast)


Lesenswert?

Hallo,

Ich habe eine Regelstrecke von einem anderen Programm in Matlab 
transferiert und habe einen einfachen Regelkreis mit Simulink 
aufgebaut,bestehend aus einem PID Regler und der bekannten Strecke.

Wenn man einen Einheitssprung auf die Strecke legt, ist die 
Sprungantwort sinusförmig und klingt nur langsam ab gegen null...

Nun soll der PID Regler diesen Abklingvorgang beschleunigen und die 
Amplitude verringern.

Wie stelle ich den Regeler optimal ein? Gibt es rechnerische 
Einstellmöglichkeiten?

Vielen Dank im Voraus!

von Student (Gast)


Lesenswert?

Hallo,

wir sind keine Rechnerischen Methoden bekannt ( hatte bis jetzt nur 
Regelungstechnik 1 :) ). Es gibt aber Schätzverfahren bzw. Anfangswerte 
ala Ziegler/Nichols usw.

siehe -> 
http://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)

lg

von Thomas (Gast)


Lesenswert?

Natürlich gibt es rechnerische Verfahren zur Wahl der Reglerparameter. 
Es stellt sich für die Einhaltung von Gütekriterien allerdings zuerst 
die Frage was für eine Regelstrecke vorliegt. Ist es zum Beispiel eine 
einfache lineare Eingrößenregelstrecke oder vielleicht eine zeitvariante 
dynamisch-nichtlineare Regelstrecke. Erste wird einfach zu regeln sein. 
Die zweite könnte durchaus sehr sehr kompliziert werden.

von Bernd (Gast)


Lesenswert?

Hey,

Ziegler Nichols und andere Verfahren funktionieren hier nicht immer, 
weil man keine Standardsprungantwort erhält...

Die Verfahren sind mir klar, aber diese kann man hier nicht anwenden.

Die Regelstrecke ist zeitinvariant und nichtlinear, wenn man einen 
Sprung draufgibt (siehe erster Beitrag)!

Hat jemand Lösungsvorschläge?

von Thomas (Gast)


Lesenswert?

Es wäre vielleicht hilfreich wenn du mal die Sprungantwort als Bild 
postest.
Es ist schwer einen Lösungsvorschlag zu geben wenn man praktisch nichts 
weiß.
Hilfreich wäre auch die Struktur der Regelstrecke.

von Jan K. (jan_k)


Lesenswert?

Wieso sollte sie nichtlinear sein, nur weil sie sinusförmig abklingt 
oder hab ich was überlesen?

von Thomas (Gast)


Lesenswert?

Das ist genau die Frage, deswegen sollte man auf ein Bild warten oder 
die Struktur der Strecke bekannt wird.

Sollte es wirklich nichtlinear sein, sind sowieso genauere Infos nötig 
bevor eine Verfahren oder eine Herangehensweise angegeben werden kann.

von Bernd (Gast)


Angehängte Dateien:

Lesenswert?

So sieht die Sprungantwort der Regelstrecke aus (siehe Anhang).
Die Transferfunktion sieht ziemlich komplex aus ((s^48+...)/(s^49*+...))

von Alex (Gast)


Lesenswert?

Also auf dem bild sieht es aus wie ein PT2* System. --> Schwinglreis.

Wenn du sagst, dass da s^49 steht, würde das bedeuten, du hast 49 
unabhängige Energiespeicher. Sicher, dass ihr die Identifizierung 
richtig gemacht habt? könntest du vllt das verwendete Sprungsignal noch 
mit in das scope aufnehmen?

Wenn es sich wie oben beschrieben um einen Einheitssprung handelt, 
müsste da zumindest ein offset dasein.

Alex

von klaus (Gast)


Lesenswert?

sieh dir mal die poles und zeros im root-locus an und nimm nur die 
dominanten poles und zeros. Da wird dann wohl nur noch eine 2te order TF 
übrig bleiben.

von Kai S. (kai1986)


Lesenswert?

Hallo,

du kannst mit Matlab die die Regelparameter vorgeben, simulieren und die 
Antwort automatisch auswerten. Auf diese weise kannst du die Parameter 
optimieren oder auch komplett abrastern. Dazu kannst du z.B. jeweils das 
Maximum der Regelabweichung bestimmen und dies minimieren.
Wenn die Simulation allerdings sehr komplex ist kann das schon einige 
Zeit dauern.

Wenn du das ganze anders berechnen willst musst du tief in die 
Regeltheorie einsteigen und am besten auch mathematisch recht fit sein. 
In der Praxis wird allerdings meiner Erfahrung nach mit den 
Standardverfahren die Regelparameter abgeschätzt und anschließend durch 
geschicktes Versuchen weiter optimiert.

Gruß Kai

von Bernd (Gast)


Lesenswert?

Als Sprung habe ich den Einheitssprung verwendet. Leider bin ich immer 
noch nicht zu einer Lösung gekommen.

Habe das Schwingungsverfahren nach Ziegler und Nicholes angewendet. Das 
führte zu keinem sinnvollen Ergebnis.

Außerdem habe ich versucht, den Regler nach "Gefühl" einzustellen. Also 
alle Parameter nacheinander einzustellen. Das hat leider auch nicht 
funktioniert.

Das Problem ist, die Strecke ist so träge, dass Änderungen der Parameter 
Kp, Tn und Tv zu keinen nennenswerten Verbesserungen führen.

Hat jemand noch einen Rat?

von Alex (Gast)


Lesenswert?

Ihr habt das System als Blackbox vor euch oder habt ihr nur die Daten?

Kannst du mal bitte ein matlabfile von den rohdaten mit anhängen?

Das Scope, das du oben gepostet hast, ist das die antwort des Systems 
auf den Sprung?


Wenn du wirklich einen Einheitssprung auf das system gegeben hast, dann 
müsste man das aber als Offset im Signal sehen. In dem Scope oben ist 
das aber nicht vorhanden. Sicher, das es kein Impuls ist?

Alex

von klaus (Gast)


Lesenswert?

Bernd schrieb:
> Hat jemand noch einen Rat?

bist du sicher dass du die Sprungantwort auch richtig machst? Das bild 
sieht nämlich sehr komisch aus, weil es sich bei 0 einpendelt, d.h. ein 
steady-state gain von 0.
Wenn du in die Transfer funktion s=0 einsetzt, was ergibt das ? 0 ?

von Bernd (Gast)


Angehängte Dateien:

Lesenswert?

Es handelt sich hierbei um einen ganz normalen Einheitssprung. Die 
Regelstrecke liegt nur als Blackbox vor, da sie aus einem anderen 
Programm konvertiert wurde.
Bei dem Model bzw. Regelstrecke handelt es sich um ein 
Düngespritzfahrzeug mit einem Gestänge. Starkes Anfahren, Bremsvorgänge 
und Unebenheiten im Boden führen zum Schwingen des Gestänges.

In den Anhang habe ich die Simulink Datei gepackt. Bin mir nicht sicher, 
ob ihr die verwenden könnt...

Trotzdem danke

von Alex (Gast)


Lesenswert?

kannst du vllt die TF noch mit posten?

So wie der Regelkreis jetzt ist läuft es bei mir nicht, da mir scheinbar 
die sachen für das Adams zeug fehlen. habt ihr da noch was an dem 
rechner dranhängen, eine ADU Karte oder so?

von Bernd (Gast)


Angehängte Dateien:
  • TF (3,69 KB)

Lesenswert?

Hier die TF

von Alex (Gast)


Lesenswert?

es ist schon ungewöhnlich, dass die alle negativ sind, außerdem die 
werte. x,xx* 10^96

das was ihr da habt, hört sich nach einem Feder-Masse System an. ich 
bezweifle, dass die Daten, die ihr da bei der Identifikation bekommen 
habt richtig sind.

von klaus (Gast)


Lesenswert?

Bernd schrieb:
> Hier die TF

ich hab die mal in Matlab eingegeben (die multiplikatorzeichen * fehlen 
usw. nicht gerade benutzerfreundlich)
Ich hab da eine instabile sprungantwort. auch im root locus sind 
instabile poles und zeros.

Wenn du die TF als z.b. Gs=... und dann step(Gs), schon mal probiert?

(vielleicht hab ich beim multiplikatorzeichen einsetzen ja irgend etwas 
gelöscht oder so)

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Das bei der Sprungantwort keine Faustformelverfahren funktionieren ist 
schon verständlich. Wenn ich davon ausgehe, dass der Eingangssprung 
einen positiven Wert hatte dann ist hier klar nichtminimalphasiges 
Verhalten sichtbar. Sowas ist immer unangenehm zu regeln. Anhand des 
Bildes habe ich eine einfache Übertragungsfunktion gebaut welche deine 
Übergangsfunktion nachbildet. Für die Regelung habe ich die 
Ausgangsgröße einfach zurück geführt. Also keinen Regler verwendet. Das 
Ergebnis ist im Bild, im Vergleich zu deiner Kurve, zu sehen. Das 
kritische an der Stelle ist, dass die Rückführung positiv gewählt wurde 
um der Nichtminimalphasigkeit entgegenzuwirken. Das sollte bei deinem 
Modell ausgiebig getest werden, bevor an die praktische Umsetzung zu 
denken.

Ich hoffe natürlich das diese sehr einfach Variante funktioniert :)

Sollte es funktionieren kann ich dir ja noch mein einfaches Modell 
nennen.

Gruß Thomas

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
Noch kein Account? Hier anmelden.