|
|
Modell einer elektrisch beheizten Rohrleitung |
|
artego |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 10.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.07.2012, 10:44
Titel: Modell einer elektrisch beheizten Rohrleitung
|
|
|
|
|
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ß
|
|
|
|
|
cybbi |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 23.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Alle
|
|
|
|
|
|
Verfasst am: 10.07.2012, 15:42
Titel:
|
|
Wenn du dir schon so viel Mühe mit screenshots gemacht hast... Könntest du nicht auch das Modell hochladen (inkl. Parameter)?
|
|
|
artego |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 10.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.07.2012, 16:58
Titel:
|
|
Das ist natürlich einfacher.
Beschreibung: |
|
Download |
Dateiname: |
parameter_heizung.m |
Dateigröße: |
130 Bytes |
Heruntergeladen: |
454 mal |
Beschreibung: |
|
Download |
Dateiname: |
heizung.mdl |
Dateigröße: |
36.61 KB |
Heruntergeladen: |
475 mal |
|
|
|
controlnix |
Forum-Century
|
|
Beiträge: 106
|
|
|
|
Anmeldedatum: 10.06.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.07.2012, 19:55
Titel:
|
|
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.
|
|
|
cybbi |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 23.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Alle
|
|
|
|
|
|
Verfasst am: 11.07.2012, 07:34
Titel:
|
|
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:
Das ganze mit der Formel umgesetzt:
Und dieses komplexe Ergebnis macht natürlich ein Problem. Also hier stimmt deine Gleichung nicht.
|
|
|
artego |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 10.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 08:48
Titel:
|
|
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?
|
|
|
cybbi |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 23.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Alle
|
|
|
|
|
|
Verfasst am: 11.07.2012, 09:08
Titel:
|
|
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.
|
|
|
artego |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 10.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 10:01
Titel:
|
|
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.
Beschreibung: |
|
Download |
Dateiname: |
heizung.mdl |
Dateigröße: |
39.14 KB |
Heruntergeladen: |
422 mal |
|
|
|
cybbi |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 23.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Alle
|
|
|
|
|
|
Verfasst am: 11.07.2012, 10:37
Titel:
|
|
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
|
|
|
artego |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 10.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 10:55
Titel:
|
|
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.
|
|
|
controlnix |
Forum-Century
|
|
Beiträge: 106
|
|
|
|
Anmeldedatum: 10.06.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 12:35
Titel:
|
|
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).
Beschreibung: |
|
Download |
Dateiname: |
heizung_mod.mdl |
Dateigröße: |
33.59 KB |
Heruntergeladen: |
418 mal |
|
|
|
artego |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 10.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2012, 07:22
Titel:
|
|
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.
|
|
|
controlnix |
Forum-Century
|
|
Beiträge: 106
|
|
|
|
Anmeldedatum: 10.06.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2012, 13:02
Titel:
|
|
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.
|
|
|
artego |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 10.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2012, 14:37
Titel:
|
|
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?
|
|
|
controlnix |
Forum-Century
|
|
Beiträge: 106
|
|
|
|
Anmeldedatum: 10.06.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2012, 20:46
Titel:
|
|
|
|
|
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., 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.
Beschreibung: |
|
Download |
Dateiname: |
heizung_mod1.mdl |
Dateigröße: |
38.14 KB |
Heruntergeladen: |
464 mal |
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|