Verfasst am: 07.12.2018, 11:13
Titel: Plot über einen Zeitraum
Hey,
ich möchte eine Leistung (Q_Verlust) über einen Zeitraum von 30 Tagen mit einer Zeitschrittweise von 120 Sekunden darstellen und auch die Gesamtleistung in diesem Zeitraum berechnen.
Ich habe dafür eine Vorlage wo allerdings nur die Leistung berechnet wird jedoch ohne Zeitraum.
Code:
clearall; % gesamter Arbeitsspeicher wird gelöscht clc; % Befehlsfenster wird gelöscht; closeall; % alle Figures bzw. Diagramme werden geschlossen
%####################################################################
% EINLESEN VON MESSDATEN, Simulationsdaten etc. % vorliegende TXT-Datei hat als Spalten-Trennzeichen einen Tabulator % Dezimaltrennzeichen ist der Punkt!! % erste Zeile beinhaltet die Spaltenüberschrift
Data=dlmread('TWW_Profil_userdefined.txt','\t',1,0);
time_TWW=3600*Data(:,1);
TWW_Bedarfsprofil=Data(:,2);
Wasserbedarf=240; % l bzw. kg
V_dot_TWW=Wasserbedarf.*TWW_Bedarfsprofil./(1000*3600);
%####################################################################
%####################################################################
% Angabe für die instationäre Betrachtung der homogenen Speichertemperatur
t = max(time_TWW); % s % [0:10:48*3600]';
P_elek_NENN = 2000; % W
rho_w = 1000; % kg/m³
c_w = 4200; % J/kgK
T_KW = 10; % °C
V_SP = 0.5; % m³
T_SP_0 = 65; % °C
%####################################################################
%####################################################################
% weitere Angaben, wie der Zusammenhang zur Berücksichtigung der % Speicherverluste und der Schaltdifferenz des 2-Punkt-Reglers zum % aktivieren oder deaktivieren der Heizpatrone
phi_t=0.16*sqrt(V_SP*1000);
T_umg=15; % Umgebungstemperatur
g_o=60; % Ausschaltwert der Heizpatrone
g_u=45; % Einschaltwert der Heizpatrone
%####################################################################
%####################################################################
% numerische Lösung
delta_t=300; % s
t_numerisch=(0:delta_t:max(t))';
V_dot_TW = interp1(time_TWW,V_dot_TWW,t_numerisch,'previous'); % Interpolation entsprechend der Vorgabe "Stufenprofil"
T_Sp_numerisch(1,1)=T_SP_0;
Q_dot_Verl(1,1)=phi_t*(T_Sp_numerisch(1,1) - T_umg);
P_elek(1,1)=0;
for i=2:size(t_numerisch,1) if T_Sp_numerisch(i-1,1)>g_o % Wenn Speichertemp. über dem Ausschaltwert liegt, wird die Heizpatrone abgeschalten
P_elek(i,1)=0;
elseif T_Sp_numerisch(i-1,1)<g_u % Wenn Speichertemp. unter dem Einschaltwert liegt, wird die Heizpatrone eingeschalten
P_elek(i,1)=P_elek_NENN;
else
P_elek(i,1)=P_elek(i-1,1); % Ansonsten behält die Heizpatrone ihren aktuellen Zustand bei (entweder bleibt sie ein- oder ausgeschalten) end
T_Sp_numerisch(i,1)=T_Sp_numerisch(i-1,1) + (P_elek(i,1) - Q_dot_Verl(i-1,1) + ...
V_dot_TW(i,1)*rho_w*c_w*(T_KW-T_Sp_numerisch(i-1,1)))/ ... (V_SP*rho_w*c_w)*delta_t;
Q_dot_Verl(i,1)=phi_t*(T_Sp_numerisch(i,1) - T_umg); % Berechnung der Speicherverluste mit der aktuellen Speichertemperatur end
%% Darstellung figure('Position',[100100900700],'Color',[0.920.920.92]);
subplot(8,1,1:5);
box on;
hold on;
grid on;
set(gca,'FontSize',14,'xminorgrid','on','yminorgrid','on');
p1=plot(t_numerisch/3600,T_Sp_numerisch,'Color',[1000.35],'LineWidth',2,'DisplayName',['numerische Lösung: \Deltat=' num2str(delta_t) 's']);
p2=plot([0max(t_numerisch/3600)],[g_o g_o],'-.k','DisplayName','Aus- und Einschaltwert');
p3=plot([0max(t_numerisch/3600)],[g_u g_u],'-.k','DisplayName','Aus- und Einschaltwert');
xlim([0720]);
set(gca,'xtick',[0:72:720]);
xlabel('Zeit t in h');
ylabel({'Homogene Speichertem-';'peratur T_{SP} in °C'});
legend([p1 p2],'Location','North','Orientation','horizontal'); % nur die ersten zwei Linien werden in der Legende angezeigt!
subplot(8,1,7:8);
box on;
hold on;
grid on;
set(gca,'FontSize',14,'xminorgrid','on','yminorgrid','on');
plot(t_numerisch/3600,(P_elek>0),'Color',[1000.35],'LineWidth',2,'DisplayName',['OnOff-Heizpatrone: \Deltat=' num2str(delta_t) 's']);
xlim([0720]);
ylim([-0.21.2]);
set(gca,'xtick',[0:72:720],'ytick',[01]);
xlabel('Zeit t in h');
ylabel({'Einschaltsignal';'Heizpatrone'});
LG=legend('show','Location','North','Orientation','horizontal'); % nur die ersten zwei Linien werden in der Legende angezeigt!
LG.Position(2)=1.2*LG.Position(2);
Bin leider ein vollkommener Neuling - das Plot hab ich mittlerweile und weiß auch wie ich die Leistung darstelle allerdings bekomme ich es mit der Zeit nicht hin.
Verfasst am: 10.12.2018, 14:40
Titel: Re: Plot über einen Zeitraum
Hallo Reinhard,
Das ist eine Menge Code. Welchen Teil davon betrifft Deine Frage?
Zitat:
allerdings bekomme ich es mit der Zeit nicht hin.
Das ist zu allgemein, um beantwortet zu werden. Beschreibe bitte genauer, was Du womit nicht hinbekommst und was Du erreichen möchtest.
Gruß, Jan
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
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.