放电 - 给电池充电¶
本示例演示模拟标称电压为 300 V、容量为 100 A∙h 的电池模型。如果您想进行模拟,本演示示例可作为起点:
- 一个 LESS 存储子系统
- 电池单元充电管理系统 (BMS)
- 电动汽车的牵引锂离子电池
该模型使用真实的直流链路负载曲线,该曲线由电动汽车的动态驾驶周期决定。总模拟时间为 3600 秒。
模型概览¶
电池与真实的直流链路负载曲线相连,并通过 "从工作区 "模块 (https://engee.com/helpcenter/stable/base-lib-sources/from-workspace.html) 进行模拟。该模块将负载曲线图作为 i = f(t) 信号传输到模型中的受控电流源。
使用软件控制实现模型运行:¶
加载导入电流时间相关性所需的库:
In [ ]:
Pkg.add(["MAT"])
In [ ]:
using DataFrames
using MAT
gr()
Out[0]:
读取 mat 文件并将其转换为工作区数组(WorkspaceArray),以便在 From Workspace 块中使用:
In [ ]:
vars = matread("I_dc_discharge.mat");
data = vars["array"];
t = data[:,1];
current = data[:,2];
df = DataFrame(time=t, value=current);
I_dc = WorkspaceArray(string(rand()), df);
In [ ]:
vars = matread("I_dc_discharge.mat");
data = vars["array"];
t = data[:,1];
current = data[:,2];
df = DataFrame(time=t, value=current);
I_dc = WorkspaceArray(string(rand()), df);
加载模型
In [ ]:
model_name = "HV_battery"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
运行已加载的模型
In [ ]:
results = engee.run(model_name)
Out[0]:
建模结果¶
导入模拟结果
In [ ]:
simulation_time = results["Напряжение, В"].time;
i = results["Ток, А"].value;
v = results["Напряжение, В"].value;
temperature = results["Температура батареи,°C"].value;
charge = results["Заряд батареи, %"].value;
电池充电时间间隔为 0 至 500 秒:
In [ ]:
plot(simulation_time[1:50000], charge[1:50000])
plot!(title = "Заряд батареи, %", ylabel = "Заряд батареи, %", xlabel="Время, c")
Out[0]:
按 0 至 500 秒的时间间隔计算负载电流:
In [ ]:
plot(simulation_time[1:50000], i[1:50000])
plot!(title = "Ток, А", ylabel = "Ток, А", xlabel="Время, c")
Out[0]:
在模拟过程中,如果负载电流反向,电池不仅会放电,还会充电。当 LESS 起作用以平滑负载波动或电动汽车加速和减速时,就会出现这种情况。
0 至 500 秒时间间隔内的电池电压:
In [ ]:
plot(simulation_time[1:50000], v[1:50000])
plot!(title = "Напряжение, В", ylabel = "Напряжение, В", xlabel="Время, c")
Out[0]:
0 至 500 秒时间间隔内的电池温度:
In [ ]:
plot(simulation_time[1:50000], temperature[1:50000])
plot!(title = "Tемпература,°C", ylabel = "Tемпература,°C", xlabel="Время, c")
Out[0]:
结论¶
在本示例中,我们使用工具来指挥一个模拟持续时间为 1 小时的电池模型。电池负载曲线从 mat 文件导入工作区。仿真结果被导入脚本,并使用交互式 Plots 库图表对给定时间间隔进行可视化。