Engee 文档
Notebook

离子电阻系统的仿真

这个例子将演示一个系统的模拟与离子电阻和直流-直流转换器设计,以保持一个稳定的电压跨越负载。 最初,转换器向负载提供功率,这导致离子电阻两端的电压逐渐降低。 当达到4V阈值时,保护电路被激活,断开负载。 在10秒时,发电机打开,并向负载和电容器供电以对其充电。

模型图:

ultracapacitor_converter--1743002263965.png

定义加载和运行模型的函数:

In [ ]:
function start_model_engee()
    try
        engee.close("ultracapacitor_converter", force=true) # 关闭模型
        catch err # 如果没有模型关闭和engee。close()不执行,它将在catch之后加载。
            m = engee.load("$(@__DIR__)/ultracapacitor_converter.engee") # 加载模型
        end;

    try
        engee.run(m, verbose=true) # 启动模型
        catch err # 如果模型没有加载和engee。run()不执行,catch后最下面的两行将被执行。
            m = engee.load("$(@__DIR__)/ultracapacitor_converter.engee") # 加载模型
            engee.run(m, verbose=true) # 启动模型
        end
end
Out[0]:
start_model_engee (generic function with 1 method)

运行模拟

In [ ]:
start_model_engee();
Building...
Progress 0%
Progress 5%
Progress 11%
Progress 16%
Progress 21%
Progress 27%
Progress 33%
Progress 38%
Progress 43%
Progress 48%
Progress 53%
Progress 59%
Progress 64%
Progress 70%
Progress 75%
Progress 81%
Progress 86%
Progress 91%
Progress 97%
Progress 100%
Progress 100%

将仿真数据写入变量:

In [ ]:
t = simout["Load.i"].time[:]
load_current = simout["Load.i"].value[:]
ultracapacitor_current = simout["Ultra-capacitor.i"].value[:]
generator_current = simout["Generator/Diode.i"].value[:]
load_voltage = simout["Load.v"].value[:]
ultracapacitor_voltage = simout["Ultra-capacitor.v"].value[:]
Out[0]:
WorkspaceArray{Float64}("Ultra-capacitor.v").value

数据可视化

In [ ]:
using Plots
In [ ]:
plot(t, load_voltage, linewidth=2, label="负荷/负荷")
plot!(t, ultracapacitor_voltage, linewidth=2, label="离子电阻器", xlabel="时间,从", ylabel="例如,在")
Out[0]:
In [ ]:
plot(t, load_current, linewidth=2, label="负荷/负荷")
plot!(t, ultracapacitor_current, linewidth=2, label="离子电阻器")
plot!(t, generator_current, linewidth=2, label="发电机", xlabel="时间,从", ylabel="电流,A")
Out[0]:

结论:

在这个例子中,我们考虑了带有转换器的离子晶体管的模型。 DC-DC转换器为负载供电。 当离子电阻两端的电压降至4v以下时,低电荷保护电路关闭负载。在第10秒,发电机打开,开始为负载供电并为离子电阻充电。