MATLAB中绘制蓄电池通用模型下充放电特性曲线代码
时间: 2024-02-05 16:11:01 浏览: 151
matlab蓄电池模型
4星 · 用户满意度95%
蓄电池通用模型是一种常用的电池模型,其充放电特性曲线可以通过MATLAB绘制出来。下面是一个示例代码,其中使用了MATLAB内置的ode45函数求解微分方程,绘制出了蓄电池的电压随时间变化的曲线。
```
% 定义蓄电池通用模型参数
C = 50; % 电容量 (Ah)
R1 = 0.01; % 内阻 (Ω)
R2 = 0.005; % 极化内阻 (Ω)
K1 = 0.1; % 常数 (V)
K2 = 0.05; % 常数 (V)
% 定义充电电流函数
function I = charge_current(t)
if t < 0
I = 0;
elseif t < 3600
I = 10;
else
I = 5;
end
end
% 定义放电电流函数
function I = discharge_current(t)
if t < 0
I = 0;
elseif t < 7200
I = -5;
else
I = -10;
end
end
% 定义微分方程
function dydt = battery_ode(t, y, I)
V = y(1);
Q = y(2);
dydt = zeros(2, 1);
dydt(1) = -I*R1 - V/C + K1*exp(-Q/C/K2)/C;
dydt(2) = I - K1*exp(-Q/C/K2)/K2;
end
% 求解微分方程并绘图
tspan = [0, 10800];
y0 = [12.5, 0];
[t1, y1] = ode45(@(t, y) battery_ode(t, y, @charge_current), tspan, y0);
[t2, y2] = ode45(@(t, y) battery_ode(t, y, @discharge_current), tspan, y0);
plot(t1, y1(:,1), t2, y2(:,1));
xlabel('时间 (秒)');
ylabel('电压 (伏)');
legend('充电', '放电');
```
在上面的代码中,我们首先定义了蓄电池通用模型的参数,包括电容量、内阻、极化内阻和常数等。然后,我们定义了充电电流和放电电流的函数,这里我们假设在前3600秒内充电电流为10A,在之后的7200秒内降为5A;在前7200秒内放电电流为-5A,在之后的3600秒内升为-10A。接下来,我们定义了微分方程,其中y(1)表示电池的电压,y(2)表示电池的电荷量,dydt(1)表示电压的一阶导数,dydt(2)表示电荷量的一阶导数。最后,我们通过ode45函数求解微分方程,并绘制出充放电特性曲线。
阅读全文