WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Parameterwechsel PID-Regler nach Initialisierungsphase

 

Henrik_PB
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2018, 11:18     Titel: Parameterwechsel PID-Regler nach Initialisierungsphase
  Antworten mit Zitat      
Hallo zusammen,

nach einigen Grunderfahrungen in Matlab wollte ich mein erstes Simulink- Projekt starten.

Ich möchte mit einem PID-Regler die Temperatur eines Objektes mit bekannter Übertragungsfunktion regeln.

Da die Starttemperatur in aller Regel deutlich unter der Zieltemperatur liegt, lässt sich der Aufheizprozess grob in zwei Phasen aufteilen: Das initiale Hochheizen sowie anschließend das genaue Regeln auf die Temperatur.

Der erste Schritt soll so schnell wie möglich erfolgen, der zweite mit so wenigen Überschwingern wie möglich. Folglich variieren ist dies nicht mit den selben Reglerparametern möglich.

Wie kann ich meinem Regler sagen dass er nach 60 Simulationssekunden von Parametersatz 1 auf 2 umstellen soll?

Theoretisch möglich wäre eine sicherlich ein Aufbau mit zwei Reglern, wobei der Reglerausgang vom ersten nach 60 Sekunden mit 0 multipliziert wird, vom zweiten vor 60 Sekunden, Jedoch würde dies nicht den internen Integratorspeicher des Reglers mitnehmen, und richtig elegant wirkt diese Methode auch nicht.

Bin für jeden Tipp dankbar Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.08.2018, 11:55     Titel:
  Antworten mit Zitat      
Hallo,

ich finde deine Idee gar nicht so schlecht. Die Änderung der Parameter führt zu einer Unstetigkeit im Verhalten, und ich kann mir vorstellen, dass die internen Informationen des Integrators dann nur noch begrenzt hilfreich sind.
Eine Alternative kann sein, mit einem Regler zu arbeiten. Davor soll ja vermutlich nur maximal geheizt werden, und dafür braucht man an sich keinen Regler.
Ich würde auch schauen, ob nicht ein ähnlich gutes Ergebnis mit nur einem Regler erzielt werden kann.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Erano1
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2018, 12:01     Titel:
  Antworten mit Zitat      
Hallo,

eine Alternative zu dem Ansatz wäre ene Regelung mit zwei Freiheitsgeraden (2DOF). Der Vorteil dabei ist, dass zum einen auf gutes Folgeverhalten sowie auf gute Störungsunterdrückung gleichzeitig geachtet werden kann. Somit wird kümmert sich die Steuerung sozusagen darum wie dein System auf Veränderung in der Führungsgröße verändert, und der Regler darum, dass Störungen unterdrückt werden.

Bei der Auslegung von einem Regler für beides muss man immer Kompromisse machen, da ein schneller Regler mit dem das System die gewünschte Größe erreicht, bei Störungen starkes schwingen verursachen kann. Umgekehrt dauert das Einschwingen länger, wenn dafür das halten der gewünschten Größe besser funktioniert.

VG, Erano1
Private Nachricht senden Benutzer-Profile anzeigen
 
Henrik_PB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2018, 12:24     Titel:
  Antworten mit Zitat      
In C und Python habe ich den Regler schon fertig, und er funktioniert recht gut.

Dort habe ich es über eine if-Bedingung gelöst.
Code:

MyRegler.KP = Regler1.KP
MyRegler.KI = Regler1.KI
MyRegler.KD = Regler1.KD

while(true):
     if (t>t_change):
       
          MyRegler.KP = Regler2.KP
          MyRegler.KI = Regler2.KI
          MyRegler.KD = Regler2.KD
    y = e *....

 


Eine Regelung der Aufheizphase würde ich einer Steuerung schon vorziehen, da sie sowohl im Winter als auch im Sommer draußen funktionieren soll, und zwar unabhängig davon ob sie Anfangs komplett kalt oder schon vorgewärmt ist.

Bisher scheint mir zum Ausprobieren der Regelparameter eine wie im Startpost zeitabhängig geänderte Simulation das beste, bekomme bekomme es aber nicht zum laufen.

Alternativ den PID-Regler mit embedded Function Blocks nachbauen?
Und darein schreiben, dass sich die Parameter ändern sollen?
Falls ja, wie schreibe ich die Zeile nach der Zeitabfrage?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.08.2018, 12:47     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Falls ja, wie schreibe ich die Zeile nach der Zeitabfrage?

Du kannst einen Clock-Block als Eingang verwenden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.