Simulink thermal model in Matlab
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello I am working on converting this model into a Matlab model, Here are my codes for it:
1- ODE function
function dX_dt = odes_thermal5(~ ,X, Tout,stat)
% TinIC = 26;
r2d = 180/pi;
Troom=X(1);
Qlosses=X(2);
Qheater=X(3);
% stat=X(4);
% -------------------------------
% Define the house geometry
% -------------------------------
% House length = 30 m
lenHouse = 30;
% House width = 10 m
widHouse = 10;
% House height = 4 m
htHouse = 4;
% Roof pitch = 40 deg
pitRoof = 40/r2d;
% Number of windows = 6
numWindows = 6;
% Height of windows = 1 m
htWindows = 1;
% Width of windows = 1 m
widWindows = 1;
windowArea = numWindows*htWindows*widWindows;
wallArea = 2*lenHouse*htHouse + 2*widHouse*htHouse + ...
2*(1/cos(pitRoof/2))*widHouse*lenHouse + ...
tan(pitRoof)*widHouse - windowArea;
% -------------------------------
% Define the type of insulation used
% -------------------------------
% Glass wool in the walls, 0.2 m thick
% k is in units of J/sec/m/C - convert to J/hr/m/C multiplying by 3600
kWall = 0.038*3600; % hour is the time unit
LWall = .2;
RWall = LWall/(kWall*wallArea);
% Glass windows, 0.01 m thick
kWindow = 0.78*3600; % hour is the time unit
LWindow = .01;
RWindow = LWindow/(kWindow*windowArea);
% -------------------------------
% Determine the equivalent thermal resistance for the whole building
% -------------------------------
Req = RWall*RWindow/(RWall + RWindow);
% c = cp of air (273 K) = 1005.4 J/kg-K
c = 1005.4;
% -------------------------------
% Enter the temperature of the heated air
% -------------------------------
% The air exiting the heater has a constant temperature which is a heater
% property. THeater =20 deg C
THeater = 50;
% Air flow rate Mdot = 1 kg/sec = 3600 kg/hr
Mdot = 3600; % hour is the time unit
% -------------------------------
% Determine total internal air mass = M
% -------------------------------
% Density of air at sea level = 1.2250 kg/m^3
densAir = 1.2250;
M = (lenHouse*widHouse*htHouse+tan(pitRoof)*widHouse*lenHouse)*densAir;
%% %%
dQheater_dt= (THeater-Troom)*Mdot*c*stat;dQlosses_dt=(Troom-Tout)/Req;
dTroom_dt=(1/(M*c))*( dQheater_dt - dQlosses_dt );
dX_dt=[dTroom_dt;dQlosses_dt;dQheater_dt];
end
And here is how I called it:
% clear;
% t=0:1:48;
% f=1/3600;
% Tout = @(t) T_const + k * sin(t);
% % Tout = k * sin(2*pi*f*t);
% plot(t,Tout(1:end))
clear;
T_const = 50; k = 15;
f=2/48;
ts=1/3600;
T=48;
tsin=1:ts:T;
y=T_const+k*sin(2*pi*f*tsin);
Tout = decimate( y , 3599 );
tsin2 = decimate( tsin, 3599 ); t1=22;t2=26;
Troom=zeros(48,1);
Qheater=zeros(48,1);
Qlosses=zeros(48,1);
stat=zeros(48,1);
%
Troom_vec=[];
Qheater_vec=[];
Qlosses_vec=[];
tm=[]; for i=1:48
if(i==1)
Troom_0=28;Qlosses_0=0;Qheater_0=0;
X0=[Troom_0;Qlosses_0;Qheater_0];
stat(i)=1;
end
if(i==2)
Troom_0=Troom(i-1);Qlosses_0=Qlosses(i-1);Qheater_0=Qheater(i-1);
X0=[Troom_0;Qlosses_0;Qheater_0];
stat(i)=1;
end
if(i>2)
Troom_0=Troom(i-1);Qlosses_0=Qlosses(i-1);Qheater_0=Qheater(i-1);
X0=[Troom_0;Qlosses_0;Qheater_0]; if(Troom(i-1)-Troom(i-2)>0 & Troom(i-1)>t1 & Troom(i-1)<t2)
stat(i)=1;
end
if(Troom(i-1)-Troom(i-2)<=0 & Troom(i-1)>t1 & Troom(i-1)<t2)
stat(i)=0;
end
if(Troom(i-1)>t2)
stat(i)=0;
end
if(Troom(i-1)<t1)
stat(i)=1;
end
end
tspan = i-1:0.1:i; % Obtain solution at specific times
% tspan = 0:1; % Obtain solution at specific times[tx,X] = ode45(@(t,y) odes_thermal5(t,y,Tout(i),stat(i)),tspan,X0);
Troom_vec=[Troom_vec;X(:,1)];
Qlosses_vec=[Qlosses_vec; X(:,2)];
Qheater_vec= [Qheater_vec;X(:,3)]; Troom(i)=X(6,1);
Qlosses(i)=X(6,2);
Qheater(i)=X(6,3);
tm=[tm;tx];
end
% stat=X(:,4);
figure(1);
plot(tsin2,Troom);
hold on
plot(tsin2,stat*10);
hold off
ylabel('Troom');
xlabel('t');My output is basically Troom, but the response I got was Tout, as if I don't have a heater model. Here is how the output looks like, any idea why its like that?
Thanks
0 comentarios
Respuestas (0)
Ver también
Categorías
Más información sobre General Applications en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!