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

Modell einer elektrisch beheizten Rohrleitung

 

artego
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 10:44     Titel: Modell einer elektrisch beheizten Rohrleitung
  Antworten mit Zitat      
Hi!

Ich versuche ein Modell einer Treibstoffleitung zu erstellen, die zur Haltung der Temperatur zwischen Rohr und Isolierung einen elektrischen Heizleiter hat. Umgebungstemperatur und Eintrittstemperatur im betrachteten Rohrabschnitt habe ich als konstant angenommen. Der Regler soll den elektrischen Strom im Bereich 0-16A variieren. Die Spannung ist konstant bei 230V.
Letztlich geht es darum verschiedene Reglertypen in dieses System einzusetzen um dann den Energieverbrauch vergleichen zu können.

Die verwendeten Gleichungen:



Heizleistung/Verlustwärme des Kupferleiters:
U*I=c_p,Cu*m_Cu*T_punkt,heizleiter

Das Modell:


Die Simulation gibt eine Fehlermeldung aus.
"Derivative input 1 of 'heizung/Integrator T_out' at time 0 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)."

Im PID-Regler habe ich für den P-Anteil: U/(m_Cu*c_p,Cu) eingegeben und 1 für den I-Anteil.

Mir fehlt ein Ansatz zur Fehlersuche. Vielleicht fällt jemandem ein woran es liegen könnte.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


cybbi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 23.08.11
Wohnort: ---
Version: Alle
     Beitrag Verfasst am: 10.07.2012, 15:42     Titel:
  Antworten mit Zitat      
Wenn du dir schon so viel Mühe mit screenshots gemacht hast... Könntest du nicht auch das Modell hochladen (inkl. Parameter)? Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
artego
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 16:58     Titel:
  Antworten mit Zitat      
Das ist natürlich einfacher. Smile

parameter_heizung.m
 Beschreibung:

Download
 Dateiname:  parameter_heizung.m
 Dateigröße:  130 Bytes
 Heruntergeladen:  454 mal
heizung.mdl
 Beschreibung:

Download
 Dateiname:  heizung.mdl
 Dateigröße:  36.61 KB
 Heruntergeladen:  475 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
controlnix
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 19:55     Titel:
  Antworten mit Zitat      
Ich habe das Modell in eine ältere Simulink-Version umgewandelt. Dort erscheint eine völlig andere Fehlermeldung:
Warning: Log of a negative number in 'heizung/deltaT_m2'.
Vielleicht hilft das weiter.
Private Nachricht senden Benutzer-Profile anzeigen
 
cybbi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 23.08.11
Wohnort: ---
Version: Alle
     Beitrag Verfasst am: 11.07.2012, 07:34     Titel:
  Antworten mit Zitat      
Danke für das Modell.

Schaut man sich die Werte an, die zum Zeitpunkt t = 0 berechnet werden, so fällt auf, dass bei deinem Block "deltaT_m2" durch den Logarithmus ein Problem entsteht.

Die Werte von u zum Zeitpunkt t = 0 sind:

Code:
u(1) = 373
u(2) = 0
u(3) = 303


Das ganze mit der Formel umgesetzt:
Code:
((u(1)-u(3))-(u(2)-u(3)))/log( (u(1)-u(3))/(u(2)-u(3)) )
ans =
 -45.4818 -97.5169i


Und dieses komplexe Ergebnis macht natürlich ein Problem. Also hier stimmt deine Gleichung nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
artego
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 08:48     Titel:
  Antworten mit Zitat      
Ich habe dafür jetzt mal das arithmetische Mittel in umgestellter Form eingesetzt.

-((u(1)+u(2))/2-u(3))

Die Austrittstemperatur sieht schon relativ sinnvoll aus auch wenn ich den Ausschlag in den negativen Bereich innerhalb der ersten 10 Sekunden nicht nachvollziehen kann.

Jetzt fehlt mir allerdings noch die zugeführte elektrische Leistung. Letztlich gibt der PID-Regler doch einen Strom aus. Wenn ich die Konstante im I-Anteil (U/m_Cu*c_pCu) weglasse, als Block dahinter setze und dazwischen ein Scope einbaue sollte es doch funktionieren. Oder wie nehme ich das am besten ab?
Private Nachricht senden Benutzer-Profile anzeigen
 
cybbi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 23.08.11
Wohnort: ---
Version: Alle
     Beitrag Verfasst am: 11.07.2012, 09:08     Titel:
  Antworten mit Zitat      
Also dein PID Regler zeigt doch vernünftiges PID-Verhalten (hab einen Scope dran gehängt und mir das angeschaut). Du bekommst halt einen Sprung bei t = 1 durch den Step Input (bei dem ich sowieso nicht ganz verstehe, was der dort macht).

Der negative Ausschlag liegt an der Implementierung von deinen Gleichungen. Das hat mit dem PID Regler nichts zu tun. Eine sinnvolle Beschriftung von den Signalen hätte geholfen zu verstehen, was welche Linie repräsentieren soll (Strom? Heizleistung? ...?).
Vielleicht hilft es, deine Anfangsbedingung von den Integratoren richtig zu setzen. Ich weiß jetzt natürlich nicht, ob das so stimmt weil ich das System nicht kenne, aber eine 0 bei den Initial Conditions sieht mir hier nicht aus, als wäre das richtig.
Private Nachricht senden Benutzer-Profile anzeigen
 
artego
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 10:01     Titel:
  Antworten mit Zitat      
Ich habe alles nochmal genauer beschriftet und die Initial Conditions für den Eingangssprung verändert. Mir ist nur nicht klar wo ich den zugeführten elektrischen Strom abnehme. Bisher bin ich davon ausgegangen, dass der PID-Regler den elektrischen Strom als Ausgangsgröße hat. Das aktuelle Scope ist für meine Begriffe nicht sinnvoll, da die Leistung ja zu Beginn besonders hoch sein müsste und im laufe der Zeit abnehmen sollte.

heizung.mdl
 Beschreibung:

Download
 Dateiname:  heizung.mdl
 Dateigröße:  39.14 KB
 Heruntergeladen:  422 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
cybbi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 23.08.11
Wohnort: ---
Version: Alle
     Beitrag Verfasst am: 11.07.2012, 10:37     Titel:
  Antworten mit Zitat      
Der PID-Regler hat jetzt - physikalisch gesehen - natürlich keine Einwirkung darauf, was für eine Einheit hinten raus kommt. Er fasst nur eine PID-Regelstrecke in einem Block zusammen, macht also einen Soll-Ist-Vergleich.
Nach ein wenig rumspielen mit Parametern denke ich, dass der Proportionalitätsanteil vom PID-Regler dein Problem ist. Setz mal für den P Anteil "10" und für den I Anteil "1" ein und du hast schon ein deutlich besseres Verhalten. Dass der erst mal in die falsche Richtung ausschlägt halte ich jetzt für eine normale Reaktion des Reglers, da erst mal der Integratoranteil gefüllt werden muss (der anfangs 0 ist). Dies kannst du allerdings mit Initial Conditions abfangen.

Noch eine Sache.. warum ersetzt du nicht den Step Input Block durch einen Constant Block? Hat genau das gleiche Verhalten... und spart Rechenzeit Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
artego
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 10:55     Titel:
  Antworten mit Zitat      
Das hab ich jetzt geändert. Wie komme ich aber an den Strom für die elektrische Heizung heran. Ganz abgesehen davon kann die ausgegebene Temperatur nicht unter 303K fallen. Ich komm da nicht so wirklich weiter.
Private Nachricht senden Benutzer-Profile anzeigen
 
controlnix
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 12:35     Titel:
  Antworten mit Zitat      
Ich hab mal ein paar Änderungen durchgeführt:
1) Anfangsbedingung bei T_out-Integrator
2) Sollwert-Block so eingestellt, dass eine Temperaturerhöhung von 5K entsteht
3) Offset für Reglerausgang eingefügt, damit man von einem stationären Startpunkt beginnt
4) Reglerstruktur auf das zurückgeführt, was wirklich gebraucht wird (PI-Regler)
5) Reglerparameter eingestellt (kp=7.7, ki=29) -> dies führt auf eine Einregelzeit von ca 0.8 sec. Was wirklich an Regelkreisgeschwindigkeit gebraucht wird, hängt von den Wünschen/Anforderungen ab.
6) parameter_heizung.m wird immer aufgerufen, wenn die Simulation gestartet wird (Callback).

heizung_mod.mdl
 Beschreibung:

Download
 Dateiname:  heizung_mod.mdl
 Dateigröße:  33.59 KB
 Heruntergeladen:  418 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
artego
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2012, 07:22     Titel:
  Antworten mit Zitat      
Danke erstmal für die Änderungen. Ich kann aber nicht nachvollziehen wohin der Goto Block für den Strom führt und wie du auf die Werte für z.B. den Offset kommst.
Private Nachricht senden Benutzer-Profile anzeigen
 
controlnix
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2012, 13:02     Titel:
  Antworten mit Zitat      
Der Goto-Block für den Strom kann gelöscht werden (ich brauchte ihn nur für einen kurzen Zwischentest und habe vergessen ihn wegzulöschen).

Auf den Offset kommt bei abgekoppeltem Regler (Leitung zu oberem Eingang des Add3 vorübergehend weglöschen) durch folgende Überlegung:
Ziel ist, dass das System zu Beginn in Ruhe sein soll (stationärer Zustand). Also: Welcher Offset ist erforderlich, damit sich T_out nicht ändert? Bedingung hierfür ist, dass der IntergratorEINgang = 0 ist. Den erforderlichen Offset-Wert kann man jetzt durch Probieren ermitteln (=Simulation kurz starten und prüfen, ob sich der T_out-Ausgang ändert; Ergebnis ist recht schnell gefunden) oder wenn's wissenschaftlicher sein soll: Aufschreiben der Gleichung für dT_out/dt (Eingang des Integrators) in Abhängigkeit des Offsets, dT_out/dt = 0 setzen und nach Offset auflösen.
Private Nachricht senden Benutzer-Profile anzeigen
 
artego
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2012, 14:37     Titel:
  Antworten mit Zitat      
Hast du denn eine Idee wie man den zugeführten Strom des Systems feststellen kann? Ausserdem müsste hinter das Eingangssignal doch der Block für eine Transferfunktion oder ist das mit der Strecke schon erledigt?
Private Nachricht senden Benutzer-Profile anzeigen
 
controlnix
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2012, 20:46     Titel:
  Antworten mit Zitat      
A) Aufgrund deiner Frage zum Strom habe ich das Modell nochmals etwas geändert:
1) Offset wurde an die Stelle mit Twire verschoben -> Twire0. Grund: Die Grund-Temperatur am Draht muss bereits im stationären Zustand (also, wenn noch keine Energie zugeführt wird) höher sein als T_env.
2) Es wurde ein neuer Block 'Power' eingeführt (U*16 = 230*16). Der Reglerausgang schwächt diese Maximal-Leistung nur ab (Reglerausgang darf nur zwischen 0 und 1 liegen).
3) Reglerparameter angepasst (kp=0.48, ki=1.Cool, so dass sich die gleiche Dynamik ergibt. Begrenzer (Saturation) eingebaut, um sicherzustellen, dass der Regler auch wirklich nur Werte zwischen 0 und 1 liefert und kein Windup entsteht (dafür der com-Block).
4) Sollwert wird von T_env beginnend nur noch um 2K erhöht, weil sonst zu viel Leistung gebraucht werden würde. Diese Einschränkung kann vermutlich wieder beseitigt werden, wenn die restlichen Systemparameter richtig/realistischer eingestellt werden. Vorschlag: Gleichungen und gesamte Parameterierung nochmals überprüfen.

B) Deine zweite Frage ("Ausserdem müsste hinter das Eingangssignal doch der Block für eine Transferfunktion oder ist das mit der Strecke schon erledigt?") verstehe ich nicht: Welches Eingangssignal, welche Übertragungsfunktion? wozu? Bitte genauer.

heizung_mod1.mdl
 Beschreibung:

Download
 Dateiname:  heizung_mod1.mdl
 Dateigröße:  38.14 KB
 Heruntergeladen:  464 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.