Документация Engee
Notebook

Моделирование системы с ионистором

В данном примере будет продемонстрировано моделирование системы с ионистором и DC-DC преобразователем, предназначенной для поддержания стабильного напряжения на нагрузке. Изначально преобразователь обеспечивает питание нагрузки, что приводит к постепенному снижению напряжения на ионисторе. При достижении порога в 4 В срабатывает схема защиты, отключающая нагрузку. На 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="Ток, А")
Out[0]:

Выводы:

В данном примере мы рассмотрели модель ионистора с преобразователем. DC-DC преобразователь обеспечивает питание нагрузки. Схема защиты от низкого заряда отключает нагрузку, когда напряжение на ионисторе падает ниже 4 В. На 10-й секунде включается генератор, который начинает питать нагрузку и заряжать ионистор.