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

Моделирование системы вентиляции в здании с системой терморегулирования

В данном примере продемонстрировано моделирование системы вентиляции в здании с системой терморегулирования.

Принцип работы модели

Модель системы вентиляции здания описывается блоками библиотек физического моделирования, такими как "Газ" и "Тепло".

Подсистемы Параметры системы и внешние условия и Система управления температурой состоят из направленных блоков базовой библиотеки.

Подсистема Вентиляционная установка состоит из блоков библиотеки "Газ", а также блоков базовой библиотеки.

Блоки Зона 1, Зона 2, Зона 3 и Зона 4 представляют собой объёмы воздуха в разных помещениях.

Охлаждённый воздух поступает в Зону 1 из Вентиляционной установки и распределяется в Зону 2 и 4, попадая затем в Зону 3, из которой выбрасывается в окружающую среду через Вытяжку или направляется обратно в Вентиляционную установку через Воздуховод.

Схема модели:

building_ventilation_control_1749124445531.png

Регулирование температуры происходит в Зоне 1, датчик подаёт сигнал в Систему управления температурой, где вычисляется сигнал рассогласования и формируется управляющий сигнал. Сигнал управления поступает в подсистему Вентиляционная установка, где проходит через блок Табличная функция для вычисления необходимого массового расхода блока Вентилятор.

Подсистема "Параметры системы и внешние условия"

building_ventilation_control_1749128402033.png

Подсистема "Система управления температурой"

building_ventilation_control_1749128297713.png

Подсистема "Вентиляционная установка"

building_ventilation_control_1749128465971.png

Подсистема "Теплообмен с внешней средой"

building_ventilation_control_1749129063623.png

Определение функции для загрузки и запуска модели:

In [ ]:
function start_model_engee()
    try
        engee.close("building_ventilation_control", force=true) # закрытие модели 
        catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
            m = engee.load("$(@__DIR__)/building_ventilation_control.engee") # загрузка модели
        end;

    try
        engee.run(m) # запуск модели
        catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
            m = engee.load("$(@__DIR__)/building_ventilation_control.engee") # загрузка модели
            engee.run(m) # запуск модели
        end
end
Out[0]:
start_model_engee (generic function with 1 method)

Запуск симуляции

In [ ]:
start_model_engee();

Выделение из переменной simout данных о температуре участков и их запись в переменные:

In [ ]:
result = simout;
res = collect(result)
Out[0]:
10-element Vector{WorkspaceArray}:
 WorkspaceArray{Float64}("building_ventilation_control/Теплообмен с внешней средой
Зона 1.Температура")
 WorkspaceArray{Float64}("building_ventilation_control/Теплообмен с внешней средой
Зона 4.Температура")
 WorkspaceArray{Float64}("building_ventilation_control/Параметры системы и внешние условия.Открытие двери")
 WorkspaceArray{Float64}("building_ventilation_control/Система управления температурой.Сигнал управления")
 WorkspaceArray{Float64}("building_ventilation_control/Параметры системы и внешние условия.Температура подаваемого воздуха")
 WorkspaceArray{Float64}("building_ventilation_control/Режимы пользователя.RefTemp")
 WorkspaceArray{Float64}("building_ventilation_control/Теплообмен с внешней средой
Зона 2.Температура")
 WorkspaceArray{Float64}("building_ventilation_control/Теплообмен с внешней средой
Зона 3.Температура")
 WorkspaceArray{Float64}("building_ventilation_control/Параметры системы и внешние условия.Внешняя температура")
 WorkspaceArray{Float64}("building_ventilation_control/Параметры системы и внешние условия.Рециркуляция")

Запись сигналов с датчиков температуры в переменные:

In [ ]:
T1 = collect(res[1])
T2 = collect(res[7])
T3 = collect(res[8])
T4 = collect(res[2])
T5 = collect(res[9])
T6 = collect(res[6])
door = collect(res[3])
recycling = collect(res[10]);

Визуализация результатов моделирования

График температур с зонах, внешняя температура и значение температуры, регулируемое пользователем:

In [ ]:
using Plots
gr()
plot(T1[:,1], T1[:,2], label=L"T, C^o, Зона 1", linewidth=3)
plot!(T2[:,1], T2[:,2], label=L"T, C^o, Зона 2", linewidth=3)
plot!(T3[:,1], T3[:,2], label=L"T, C^o, Зона 3", linewidth=3)
plot!(T4[:,1], T4[:,2], label=L"T, C^o, Зона 4", linewidth=3)
plot!(T5[:,1] .- 273.15, T5[:,2] .- 273.15, label="Внешняя температура", linewidth=3)
plot!(T6[:,1], T6[:,2], label="Режимы пользователя", linewidth=3, legend=:right)
Out[0]:

Факторы, оказывающие влияние на циркуляцию воздуха - открытие двери и принудительная рециркуляция:

In [ ]:
plot(recycling[:,1], recycling[:,2] .* 2, linewidth=4, label="Рециркуляция, %")
plot!(door[:,1], door[:,2] ./ 10000, linewidth=2, label="Открытие двери, %")
Out[0]:

Вывод:

В данном примере было продемонстрировано моделирование системы вентиляции в здании с системой автоматического управления температурой воздуха. В приведённом сценарии моделирования на систему оказывалось влияние посредством открытия двери (управляемое сужение) и рециркуляционного контура (воздуховод). Проанализировав результаты можно заметить, что открытие двери не имеет заметного влияния на зональное распределение температур, в то время как рециркуляция серьезно меняет картину этого распределения. Температурный режим, выставленный пользователем, корректно соблюдается для зоны 1, но не в остальных зонах, ввиду их удалённости от вентиляционной установки.