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

Variablenübergabe von Matlab an Simulink

 

Deniz
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2010, 17:09     Titel: Variablenübergabe von Matlab an Simulink
  Antworten mit Zitat      
Hallo!
Ich habe ein kleines Problem, bei dem ich auf dem Schlauch stehe:
Ic habe ein Simulink-Modell und im Editor Variablen für das Modell hinterlegt, die ich übergeben möchte.

Code:
mein Programm lautet
% umgebungswerte
T0 = 300.00; % [K] umgebungstemperatur
p0 = 101325.00; % [Pa] umgebungsdruck
h0 = 112.67; % [kJ/kg] enthalpie bei umgebungsbedingung - H2O fluessig
s0 = 3.90E-01; % [kJ/kgK] entropie bei umgebungsbedingung - H2O fluessig
v0 = 1.00E-03; % [m^3/kg] spezifisches volumen bei umgebungsbedingung - H2O fluessig
M = 550.00; % [kg/s] massenstrom arbeitsfluid - H2O

% vorgegebene werte an punkt 1 des kreisprozesses
T1 = 350.00; % [K] temperatur 1
p1 = 1.00E+05;   % [Pa] druck 1
p2 = 60.00E+05;  % [Pa] druck 2
eta_pumpe = 0.90; % wirkungsgrad der speisewasserpumpe

% parameter zur berechnung der dichte - H20 - fluessig
A_rho_fl = 1.505E+00;
B_rho_fl = 3.642E-02;
C_rho_fl = 6.178E+02;
D_rho_fl = 5.871E-02;

% berechnung cp_fl an punkt 1
A_cp_fl = 3.092E+03;
B_cp_fl = 1.233E+01;
C_cp_fl = -4.450E-02;
D_cp_fl = 5.226E-05;
E_cp_fl = 0.000E+00;
cp_fl_1 = quad(@(T) A_cp_fl+B_cp_fl*T+C_cp_fl*T.^2+D_cp_fl*T.^3+E_cp_fl*T.^3,T0,T1);
cp_fl_2 = quad(@(T) A_cp_fl+B_cp_fl*T+C_cp_fl*T.^2+D_cp_fl*T.^3+E_cp_fl*T.^3,T0,T2);

% berechnung der temperatur an punkt 2 über T(h2,p2)
p_stern = 1000000; % [Pa]
h_stern = 2500000.00; % [J/kg]
n_1 = -0.23872489924521E+03;
n_2 = 0.40421188637945E+03;
n_3 = 0.11349746881718E+03;
n_4 = -0.58457616048039E+01;
n_5 = -0.15285482413140E-03;
n_6 = -0.10866707695377E-05;
n_7 = -0.13391744872602E+02;
n_8 = 0.43211039183559E+02;
n_9 = -0.54010067170506E+02;
n_10 = 0.30535892203916E+02;
n_11 = -0.65964749423638E+01;
n_12 = 0.93965400878363E-02;
n_13 = 0.11573647505340E-06;
n_14 = -0.25858641282073E-04;
n_15 = -0.40644363084799E-08;
n_16 = 0.66456186191635E-07;
n_17 = 0.80670734103027E-10;
n_18 = -0.93477771213947E-12;
n_19 = 0.58265442020601E-14;
n_20 = -0.15020185953503E-16;


Im Simulink sind diese Werte jeweils als Konstanten-Blöcke eingefügt und sind mit der gleichen Bezeichnung beschriftet. Die Sache ist, dass bis einschließlich cp_fl_1 alles funtktioniert, sprich die Werte werden übergeben und es kann mit ihnen gerechnet werden.
h-stern z.b. erkennt das programm nicht an, obwohl ich meiner meinung nach ja nichts anders gemacht habe als zuvor.

zudem habe ich noch eine Frage: beim Integral von cp_fl_2 integriere ich bis zum Wert T2, dieser Wert wird jedoch in Simulink berechnet. Was muss ich denn machen, damit ich den ausgerechneten Wert T2 an das M-File übergebe?

vielen Dank für die Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2010, 09:03     Titel:
  Antworten mit Zitat      
ok, nachdem ich cp_fl_2 auskommentiert habe, werden die restlichen Parameter erkannt und übernommen. Anscheinend liegt es daran, dass meine eine Integrationsgrenze (T2) im Simulink-Modell berechnet wird und diese anscheinend nicht an das M-File übergeben wird. Was muss ich denn machen, damit in meinem M-File mit einem berechnet Wert aus dem Simulink-Modell gerechnet wird?
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 01.09.2010, 09:38     Titel:
  Antworten mit Zitat      
Hi,

Kannst du nicht einfach den Wert mit einem "toWorkspace" Block
an den Matlab Worspace zurückgeben und ihn danach weiterverwenden?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2010, 10:14     Titel:
  Antworten mit Zitat      
Hi!
Also ich kenn mich in Matlab nicht so gut aus, aber ich habe jetzt mal den berechneten Wert T2 zu dem Block toWorkspace geführt, den ich ebenfalls mit T2 benannt habe, funktioniert aber trotzdem nicht. da ich mich nicht so gut auskenne, denke ich mal, dass ich wohl was falsch mache.(hab mal ein Bild gemacht)

Modell.jpg
 Beschreibung:
Hier habe ich mal einen screenshot von meinem Modell gemacht

Download
 Dateiname:  Modell.jpg
 Dateigröße:  99.28 KB
 Heruntergeladen:  717 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 01.09.2010, 13:06     Titel:
  Antworten mit Zitat      
Hi,

Hast schon richtig gemacht so wie ich das sehe. Als was speicherst du denn den Wert T2 als Array?

Bei der weiteren verwendung musst du dann drauf achten, dass T2 nicht nur eine Zahl ist sondern dir zu jedem berechneten Zeitschritt den dazu passenden Wert von T2 bekommst also einen Vektor.
Wenn du nur an dem Endwert interessiert bist musst du nich den letzten Wert aus dem Array auslesen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
engineer
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 02.09.10
Wohnort: Hessen
Version: ---
     Beitrag Verfasst am: 02.09.2010, 19:55     Titel:
  Antworten mit Zitat      
Für diese Fälle habe ich mir ein Standard-Array gemacht, in das ich per Excel nur neue Werte reinkopiere. Die Zeiten sind schon drin.
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 02.09.2010, 21:01     Titel:
  Antworten mit Zitat      
Hi,

Ich versteh nicht ganz was das vorgefertigte Array in Excel bringen soll. Das Array aus Excel musst ja auch wieder mithilfe von Matlab einlesen. Kannst du du das vl. näher erläutern?

Wie machst du dass wenn du z.B. keine konstante Schrittweite hast?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Deniz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2010, 23:51     Titel:
  Antworten mit Zitat      
Hi!
Entschuldigung für die späte Antwort!
Also ich hoffe, dass ich dich richtig verstanden habe und von daher auch richtig antworte!
Mein aufgebautes Modell ist zeitunabhängig, von daher speichere ich auch nichts als Array ab.(so wie ich dich jetzt verstanden habe)

meinen berechneten Wert habe ich im Editor auch nicht speziell abgespeichert, wüsste auch nicht wie das geht. Hab den Wert nur als Integrationsgrenze in meinem M-File. Daran liegt es dann wohl auch, dass es nicht funktioniert.

Ich habe es jetzt aber mit einem Embedded MATLAB Function-Block gelöst und es sieht so aus, als ob es funktionieren würde.

der code im Block lautet
Code:

function cp_fl_2 = fcn(T)

cp_fl_2 = T;


müsste richtig sein oder? bin mir nur unsicher wegen dem fcn(T), ob ich für das fcn evtl etwas anderes schreiben müsste.

mfg
Deniz
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 06.09.2010, 08:15     Titel:
  Antworten mit Zitat      
Guten Morgen,

Sieht in meinen Augen richtig aus. Bin mir aber auch nicht 100% sicher.

Grüße
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.