www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Reglerentwurf in Matlab


Autor: Mathias Wieland (etezabel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

im Rahmen meiner Abschlussarbeit muss ich u. a. einen Regler auslegen, 
der, siehe Anhang, aus der grünen Kurve die blaue Kurve ausregeln soll. 
Ich habe mir überlegt, dass ich in das Modell, das ich in Simulink 
entwickelt und aufgebaut habe, einen PID-Regler einfüge und so versuche 
das gewünschte Verhalten zu realisieren. Aber so richtig, klappt es 
nicht...

Habt Ihr eine Idee, wie ich die gewünschte blaue Kurve durch einen 
Reglereinsatz in Simulink erzielen kann??? Ich bin für jede Hilfe 
dankbar. Das Modell habe ich auch angefügt. In Matlab und Simulink bin 
ich totaler Anfänger. Ich bitte wirklich um Eure Hilfe......

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach mal lieber ein PNG vom Modell. Nicht jeder fähige 
Regelungstechniker hat MATLAB zu Hause.

Autor: gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so wie ich das sehe ist das eine füllstandsregelung.
schreib doch erst einmal die differenialgleichung auf und liniarisiere 
diese (am besten taylor ansatz nehmen). dann kann ich dir auch 
weiterhelfen. hab sowas schon paar mal gemacht

im anhang hast mal ein beispiel zum dreitank, den ich mal berechnet 
hatte

Autor: Karl der 2. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach mal lieber ein PNG vom Modell. Nicht jeder fähige
Regelungstechniker hat M$ zu Hause.

Was an PNG ist unklar?

Autor: Mathias Wieland (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

richtig, es ist ein Prinzip der Abflussregelung. Ich habe auch bereits 
eine Differentialgleichung zu Grunde gelegt, siehe Anhang. Es ist bei 
mir eine 1-Tank-System, also ein Tank mit einem Zu- (q1) und Abfluss.

Nach Deinem Tipp habe ich versucht meine Gleichung zu linearisieren. 
Linearisieren nach Tayloransatz heißt doch, es wird nach allen 
zeitabhängigen Größen einmal abgeleitet, hier q1 und hmax. Die 
lineariserte Gleichung, Anhang, ist dabei heraus gekommen.

Wie soll ich nun weiter machen?

Autor: Mathias Wieland (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier die Sache nochmal als Bild

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
am besten schaust dir mal meinen dreitank genauer an, da hab ich ja auch 
zu jedem tank die differenzialgleichung aufgestellt und linearisiert + 
in den laplace bereich gebracht
unterschied ist nur, dass z.b der ausgang von tank 1 gleichzeitig der 
eingang zu tank 2 ist
kannst da also mal deine ergebnisse vergleichen, wenn du soweit bist, 
dann poste mal deine übertragungsfunktion (also im laplace bereich), 
dann sehen wir weiter
die übertragungsfunktion dürfte im prinzip ja genau die selbe sein wie 
ei mir. zumindest vom typ. zeitkonstanten werden eben nur anders sein.

Autor: Mathias Wieland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich kann Dir morgen Vormittag die Übertragungsfunktion der Strecke 
posten. Schaue bitte am späten Vormittag nochmal ins Forum, dann müsste 
ich soweit sein.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach deiner dgl und der Linearisierung, handelt es sich um eine PT1 
Strecke, da wäre ein PID-Regler zu viel des Guten.
Ich würde einen PI-Regler nehmen, bei dem ich die Zeitkonstante auf die 
Zeitkonstante deiner Strecke legen würde. Die Verstärkung könntest du 
jetzt theoretisch unendlich aufdrehen. Kannst natürlich aber nicht, da 
du ja auch Stellbeschränkungen hast. Taste dich da am Besten langsam ran 
und pass auf dass die Regelung nicht instabil wird.
Wäre es kriitisch wenn die Regelung instabil wird??
Sonst könntest du auch einfach ein heuristisches Verfahren wie 
Ziegler-Nichols anwenden.
Da nimmt man erst einmal einen P-Regler und dreht die Verstärkung so 
lange auf, bis eine stabile Grenzschwingung auftritt. Das ist dann deine 
kritische Verstärkung Kkrit und die dazugehörige Periodendauer der 
Schwingung ist Tkrit.
Der PI-Regler berechnet sich dann einfach zu: 
Gr(s)=0.45*Kkrit(1+1/(0.85*Tkrit))
Das ist für Nichtregelungstechniker meist einfacher und kann auch gute 
Ergebnisse liefern.
Eine Berechnung nach der DGL ist natürlich eleganter und bedeutend 
schneller beim Ausregeln.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nachtrag, falls noch jemand anderes mitliest:
"Wäre es kriitisch wenn die Regelung instabil wird??"

Ich weiss natürlich, dass eine PT1 Strecke gar nicht instabil werden 
kann, aber mann weiss ja nicht was da noch alles dranhängt.

Autor: Mathias Wieland (etezabel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
> kannst da also mal deine ergebnisse vergleichen, wenn du soweit bist,
> dann poste mal deine übertragungsfunktion (also im laplace bereich),
> dann sehen wir weiter

So, ich habe nun meine Übertragungsfunktion aufgestellt. Es ist im 
Laplace-Bereich und hat den Grad 1, da ich ein 1-Tanksystem habe.

Ich habe mein Modell auch in die linearisierte Form mit den 
Koeffizienten gebracht, so habe ich nur noch lineare Elemente im Modell.

Der Plot soll auf ungefähr 45bar ausgeregelt werden.

und...nun...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deine ÜF lautet:
Gs=0,002865/(s+0,142)=0,002865/(0,142*(s/0,142+1))=0,02/(7,042*s+1)

in der Annahme deine ÜF ist richtig, würde ich einen PI Regler mit der 
Zeitkonstante Tn=7,042 wählen.

"Die Verstärkung könntest du
jetzt theoretisch unendlich aufdrehen. Kannst natürlich aber nicht, da
du ja auch Stellbeschränkungen hast. Taste dich da am Besten langsam 
ran."

Autor: Mathias Wieland (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke. Vielen Dank.

Meist Du den PID-Regler-Baustein in Simulink ohne D-Anteil, D-Anteil=0. 
Oder wie soll ich den PI-Regler aufbauen?

Bitte um Deine Hilfe...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nimm einfach eine "transfer function" und schreib als numerator [7.042 
1] und als denumerator [7.042 0]
als Verstärkung kannst einen "Gain" Block davor hängen und dann mal ein 
wenig mit der Verstärkung spielen

Autor: Mathias Wieland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke...

Ich finde die "transfer function" in der Simulink Library nicht. Wo 
finde ich die denn???

Autor: phil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise in der Simulink-Library unter "Continuous".. der Block 
heisst "Transfer Fcn"

Autor: Mathias Wieland (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich habe den Block in das Modell eingebaut und mit der Verstärkung 
herum gespielt.
Wenn ich eine kleine Verstärkung eintrage, bekomme ich ungefähr das 
Eingangssignal heraus. Stelle ich eine große Verstärkung ein, sehe ich 
vor lauter Signal gar nichts...
In meine Strecke musste ich meine Kq-Konstante wieder einbauen, da die 
Berechnung in der m-File nicht mit einem Regler oder Transfer Funktion 
funktioniert hat, wegen Array, was nicht auf den Reglereingang passt...
Weißt Du nun einen Rat, wie es nun auf einen geregelten Ausgang 
kommt...??????

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe schon mal dasss dein Regler falsch ist. Du hast einen I-Regler. 
Ich sagte aber du sollst einen PI-Regler nehmen.
Schreib im Numerator [7.042 1] rein, dann passt das auch wieder.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab eben mal allen unnötogen Schnulli rausgeschmissen und simuliert. 
Bei einer Verstärkung von 50 kopmm ich bei einer Führungsgröße von 45 
auf eine Anregelzeit von ca. 1s. Das sollte bei so langsamen Prozessen 
wie Füllständen sicher schonn reichen.

Autor: gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier noch das Simulink Modell

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sry schon mal an den Moderator für das "Mass-Posting".

Mit deinem I-Regler hast du zu der PT1-Strecke einen zusätzlichen Pol 
eingebracht. Das bedeutet, das in der Wurzelortskurve nun 2 Pole 
vorhanden sind. Dieser werden bei größer werdender Verstärkung 
aufeiander zulaufen und irgendwann abheben. Damit hast du dann ein 
konjungiert komplexes Polpaar, was wiederum bedeutet, dass dein Sytsem 
anfängt zu schwingen. ALso genau das was du beobachtet hast.

Mit einem PI-Regler hast du schon einmal die eine Polstellen mit einer 
Nullstelle kompensiert. Heist also es ist nur noch eine Polstelle bei 
s=0 übrig. Diese wwird bei größer werdender Verstärkung gegen -unendlich 
laufen. Heist es kommt nicht zum Aufchwingen und du kannst theoretisch 
die Verstärkung unendlich aufdrehen.

Autor: Mathias Wieland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Danke.
Nur ich habe nicht unbewusst über 10.000 sec simulieren lassen. Da ich 
in meiner Arbeit einen Zeitraum von einer Woche batrachte und dies sind 
umgerechnet 10.000 sec. Das Simulink-Modell sieht vom Ergebnis am 
Ausgang super aus, nur der Zeitraum passt nicht und ich muss mit einem 
variablen Eingangssignal, das ich mir in der m-File programmiert habe, 
auf den Eingang gehen. Wenn daraus der Verlauf Deines Ergebnis kommt ist 
es super perfekt...
Ich versuch gerade mein variables Signal per From Workspace auf Dein 
Modell zu legen, aber hierbei kommt am Ausgang nur eine Gerade raus...
Kannst Du bitte nochmal helfen...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn bei dir der Ausgang?
Schaust du dir das Scope an?

Wenn ja, dann schau mal auf den Zeitbereich des Scopes. Ein normales 
Scope speichert nur 5000 Werte und zeigt auch nur diese an.
Öffne einfach mal das Scope, geh auf Parameters (neben dem Drucker 
Symbol), dann zum Reiter 'Data Hystory' und nimm dort den HAcken für das 
Limit von 5000 Points raus.

Ein variabler Eingang kann bei der realen Regelung zum Problem werden. 
Deine Linearisierung geht ja von einem festen Areibtspunkt aus. Wenn du 
den extrem verlassen solltest, stimmt die Linearisierung nicht mehr und 
somit auch nicht die Zeitkonstante des Reglers. In den meisten Fällen 
ist dies unproblematisch. Mach einfach mal an paar Führungssprünge mit 
unterschiedlicher Höhe. Du wirst sehen, dass die Regelung bei dem 
Arbeitspunkt den du für die Linearisierung genommen hast, am Besten 
funktioniert. In allen anderen Arbeitspunkten wirst du ein (hoffentlich) 
geringes Überschwingen feststellen.

Autor: Mathias Wieland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, Danke.
Ich werde dann mal Deine Tipps umsetzen und mein Modell so weiter 
entwickeln. Wenn ich Fortschritte gemacht habe, sage ich Dir Bescheid.
Besten Dank...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.