假设有一个系统, Cin、Cwall分别为室内空气等效热容、墙体等效热容;R1、R2分别为室内空气和墙体内侧的等效热阻、墙体外侧和室外空气的等效热阻;qin、qwall、qout分别为室内温度、墙体温度、室外温度;Pheat(t)为电采暖设备制热功率,Pheat(t)=S(t)PN,其中PN为电采暖设备的额定功率,S(t)为电采暖设备的开关状态,关闭时取0,开启时取1。C_in = 1.1e6 C_wall = 1.86e8 R_1 = 1.2e-3 R_2 = 9.2e-3 室外温度变化范围 = [0, -5, -10, -15, -20, -25];室内初始温度为20℃,在给定的室外温度下,典型住户只有一个房间,建筑面积80 m2(8m×10m×2.9m),采用一个额定功率为8 kW的电加热器,温控区间为18℃-22℃。小区电采暖设备总额定功率为4800 kW。计算并绘制一日24h的室内温度变化和相应的电采暖设备开关状态曲线用matlab求解该系统
时间: 2024-02-12 19:09:20 浏览: 74
C++推箱子小游戏
这是一个比较复杂的问题,需要一定的计算和编程。以下是一种可能的解决方案,供参考:
首先,我们需要定义一些变量和参数:
```
C_in = 1.1e6; % 室内空气等效热容
C_wall = 1.86e8; % 墙体等效热容
R_1 = 1.2e-3; % 室内空气和墙体内侧的等效热阻
R_2 = 9.2e-3; % 墙体外侧和室外空气的等效热阻
A = 80; % 建筑面积,单位:m2
H = 2.9; % 房间高度,单位:m
V = A * H; % 房屋体积,单位:m3
qout_range = [0, -5, -10, -15, -20, -25]; % 室外温度变化范围,单位:℃
Tin0 = 20; % 室内初始温度,单位:℃
T_range = [18, 22]; % 温控区间,单位:℃
PN = 8e3; % 电采暖设备的额定功率,单位:W
Ptotal = 4800e3; % 小区电采暖设备总额定功率,单位:W
dt = 60; % 时间步长,单位:s
t_range = 0:dt:24*3600; % 时间范围,单位:s
```
然后,我们可以定义一个函数来计算系统的状态和电采暖设备的开关状态。该函数的输入参数是当前时间和室外温度,输出参数是当前室内温度、电采暖设备的制热功率和开关状态。
```
function [Tin, Pheat, S] = calc_system(t, qout)
Tin = zeros(size(t));
Pheat = zeros(size(t));
S = zeros(size(t));
Tin(1) = Tin0;
for i = 2:length(t)
dt = t(i) - t(i-1);
qin = Pheat(i-1);
qwall = (Tin(i-1) - qout) / (R_1 + R_2);
dTin_dt = (qin - qwall) / C_in;
dTwall_dt = (qwall - (qout - Tin(i-1)) / R_2) / C_wall;
Tin(i) = Tin(i-1) + dTin_dt * dt;
Twall = qwall * R_1 + qout;
if Tin(i) < T_range(1)
Pheat(i) = PN;
S(i) = 1;
elseif Tin(i) > T_range(2)
Pheat(i) = 0;
S(i) = 0;
else
Pheat(i) = PN * (T_range(2) - Tin(i)) / (T_range(2) - T_range(1));
S(i) = 1;
end
end
end
```
最后,我们可以循环计算不同室外温度下的室内温度和电采暖设备的开关状态,并将结果绘制成图表。以下是完整的代码:
```
C_in = 1.1e6; % 室内空气等效热容
C_wall = 1.86e8; % 墙体等效热容
R_1 = 1.2e-3; % 室内空气和墙体内侧的等效热阻
R_2 = 9.2e-3; % 墙体外侧和室外空气的等效热阻
A = 80; % 建筑面积,单位:m2
H = 2.9; % 房间高度,单位:m
V = A * H; % 房屋体积,单位:m3
qout_range = [0, -5, -10, -15, -20, -25]; % 室外温度变化范围,单位:℃
Tin0 = 20; % 室内初始温度,单位:℃
T_range = [18, 22]; % 温控区间,单位:℃
PN = 8e3; % 电采暖设备的额定功率,单位:W
Ptotal = 4800e3; % 小区电采暖设备总额定功率,单位:W
dt = 60; % 时间步长,单位:s
t_range = 0:dt:24*3600; % 时间范围,单位:s
figure;
hold on;
for qout = qout_range
[Tin, Pheat, S] = calc_system(t_range, qout);
plot(t_range/3600, Tin, 'DisplayName', sprintf('qout=%d', qout));
end
xlabel('时间(小时)');
ylabel('室内温度(℃)');
title('一日24h的室内温度变化');
legend('show');
figure;
hold on;
for qout = qout_range
[Tin, Pheat, S] = calc_system(t_range, qout);
plot(t_range/3600, S, 'DisplayName', sprintf('qout=%d', qout));
end
xlabel('时间(小时)');
ylabel('电采暖设备开关状态');
title('相应的电采暖设备开关状态曲线');
legend('show');
function [Tin, Pheat, S] = calc_system(t, qout)
Tin = zeros(size(t));
Pheat = zeros(size(t));
S = zeros(size(t));
Tin(1) = Tin0;
for i = 2:length(t)
dt = t(i) - t(i-1);
qin = Pheat(i-1);
qwall = (Tin(i-1) - qout) / (R_1 + R_2);
dTin_dt = (qin - qwall) / C_in;
dTwall_dt = (qwall - (qout - Tin(i-1)) / R_2) / C_wall;
Tin(i) = Tin(i-1) + dTin_dt * dt;
Twall = qwall * R_1 + qout;
if Tin(i) < T_range(1)
Pheat(i) = PN;
S(i) = 1;
elseif Tin(i) > T_range(2)
Pheat(i) = 0;
S(i) = 0;
else
Pheat(i) = PN * (T_range(2) - Tin(i)) / (T_range(2) - T_range(1));
S(i) = 1;
end
end
end
```
运行以上代码,我们可以得到两张图表,分别是一日24h的室内温度变化和相应的电采暖设备开关状态曲线。
阅读全文