Система топливных элементов
Author
Система топливных элементов
В этом примере показана система топливных элементов, работающая при стехиометрических условиях и номинальных параметрах. Вырабатываемая мощность изменяется в зависимости от давления водорода.
Модель

Функции командного управления моделью
In [ ]:
function init_model()
model_name = "FuelCell"
model_path = joinpath(@__DIR__, "FuelCell.engee")
loaded_models = engee.get_all_models()
model_names = [m.name for m in loaded_models]
if model_name in model_names
println("Модель '$model_name' уже загружена")
model = engee.open(model_name)
else
println("Загружаем модель из: $model_path")
model = engee.load(model_path, force=true)
model = engee.open(model_name)
end
return model_name
end
function start_model(model_name::String)
try
println("Запускаем модель '$model_name'...")
result = engee.run(model_name)
println("Модель успешно запущена")
return result
catch err
println("Ошибка при запуске: $err")
println("Пытаемся перезагрузить модель...")
model_path = joinpath(@__DIR__, "FuelCell.engee")
engee.load(model_path, force=true)
engee.open(model_name)
println("Повторный запуск...")
result = engee.run(model_name)
println("Модель успешно запущена после перезагрузки")
return result
end
end
Out[0]:
Параметры системы
In [ ]:
pH2_arr = [2.5 2.75 3.0 3.25 3.5 3.75 4.0 4.25 4.5 4.75 5.0]
pH2 = 2.5;
Eoc = 65;
A = 0.23;
Ri = 0.05;
i0 = 80;
i_lim = 200;
N_cell = 65;
number_unit = 10;
pH2_nom = 150000;
pO2_nom = 100000;
thermal_mass = 15000;
Rload = 62.5;
Последовательный запуск модели
In [ ]:
res = []
Id = init_model()
for i in 1:length(pH2_arr)
pH2 = pH2_arr[i]
a = start_model(Id)
b = engee.get_results("FuelCell")
push!(res, b)
end
Построение графиков
In [ ]:
using Plots
power = [];
for i in 1:length(pH2_arr)
push!(power, res[i]["Мощность кВт"].value)
end
plot(res[1]["Мощность кВт"].time,power, xlabel="Время с.", ylabel="Мощность, кВт")
Out[0]:
In [ ]:
curr = [];
for i in 1:length(pH2_arr)
push!(curr, res[i]["Топливный элемент
.i_FC"].value)
end
plot(res[1]["Топливный элемент
.i_FC"].time,curr, xlabel="Время с.", ylabel="Ток А")
Out[0]:
In [ ]:
temp = [];
for i in 1:length(pH2_arr)
push!(temp, res[i][ "Топливный элемент
.thermal_port.T"].value)
end
plot(res[1]["Топливный элемент
.thermal_port.T"].time,temp, xlabel="Время с.", ylabel="Температура К")
Out[0]:
In [ ]:
volt = [];
for i in 1:length(pH2_arr)
push!(volt, res[i]["Voltage Sensor.V"].value)
end
plot(res[1]["Voltage Sensor.V"].time,volt, xlabel="Время с.", ylabel="Напряжение В")
Out[0]: