Engee 文档
Notebook

飞机舱内自动压力调节系统(APS)模型

机舱内的自动压力调节系统 (APS) 设计用于在不同的飞行阶段(起飞、巡航飞行、着陆)保持机舱内的安全压力。

模型示意图:

pressure_control_system_in_aircraft_1743418578183.png

系统的物理部分

单元 SCV - 以恒定的压力和温度模拟空调系统的供气。

管道阻力(2 块)--模拟空气管道中的压力损失。

模块 车厢容积 - 动态车厢模型,压力随空气注入/排出而变化。

区块排气阀 - 调节超压排入大气,由区块大气描述。

控制系统

模型中的控制系统由红色块组成,其中包括 ** 以巴为单位的座舱压力传感器** - 将米为单位的海拔高度转换为同一高度的压力,根据定律:$P = (1 \cdot 10^{-5}) \cdot 101325 \cdot \left(1 - 0.003 \cdot u \cdot 0.3048 / 288.15\right)^{9.80665 / (0.0065 \cdot 287.05287)},$ ,其中$u$ 为海拔高度。

  • 总结器** - 计算设定值和测量值之间的不匹配信号。 PID 控制器、 ** 滞后单位、 ** 帕到巴的转换单位

外部条件

外部条件由蓝色图块定义。假设:温度恒定。压力由块定义,从海拔高度转换为海拔高度的压力,其定律为:$P = (1 \cdot 10^{-5}) \cdot 101325 \cdot \left(1 - 0.003 \cdot u \cdot 0.3048 / 288.15\right)^{9.80665 / (0.0065 \cdot 287.05287)},$ ,其中$u$ 为海拔高度。

飞行计划

代表飞行计划的图块描述了飞机高度如何随时间变化。它们在图中被涂成绿色。

飞行计划**块的输入为模型时间,输出为高度值(以米为单位)。

定义加载和启动模型的函数:

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

    try
        engee.run(m, verbose=true) # запуск модели
        catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
            m = engee.load("$(@__DIR__)/pressure_control_system_in_aircraft.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 10%
Progress 15%
Progress 21%
Progress 26%
Progress 32%
Progress 37%
Progress 42%
Progress 47%
Progress 53%
Progress 58%
Progress 63%
Progress 68%
Progress 74%
Progress 79%
Progress 84%
Progress 90%
Progress 95%
Progress 100%
Progress 100%

将模拟数据写入变量:

In [ ]:
t = simout["pressure_control_system_in_aircraft/Задатчик давления в кабине в барах"].time[:]
control_pressure = simout["pressure_control_system_in_aircraft/Задатчик давления в кабине в барах"].value[:]
cabin_pressure_bar = simout["pressure_control_system_in_aircraft/Давление в кабине в барах"].value[:]
altitude = simout["pressure_control_system_in_aircraft/Высота в метрах"].value[:]
external_pressure = simout["pressure_control_system_in_aircraft/Давление на высоте, в Па"].value[:]
cabin_pressure_pa = simout["pressure_control_system_in_aircraft/Датчик давления в кабине, Па.1"].value[:];

数据可视化

In [ ]:
using Plots

飞行计划包括 5 个步骤: 1.地面停车(1355 秒)。 2.起飞和爬升(500 秒)。 3.巡航飞行(1200 秒)。 4.下降和着陆(400 秒)。 5.飞行后停车(1531 秒)。

In [ ]:
plot(t, altitude, linewidth=2, xlabel="Время, с", ylabel="Высота, м", title="План полёта", legend=false)
Out[0]:

根据飞行高度的变化,外部压力以及机舱内的压力都会按照控制规律发生变化:

In [ ]:
plot(t, external_pressure, linewidth=2, label="Давление на высоте полёта")
plot!(t, cabin_pressure_pa, linewidth=2, label="Давление в кабине", xlabel="Время, с", ylabel="Давление, Па", legend=:bottomright)
Out[0]:

为了保证乘客在飞机上的舒适度,需要保持这种压力差。但机舱内的压力比正常情况下的压力要低一些,这是由飞机结构的强度要求决定的。

设定和测量的机舱压力图:

In [ ]:
plot(t, control_pressure, linewidth=2, label="Заданное давление в кабине")
plot!(t, cabin_pressure_bar, linewidth=2, label="Измеренное давление в кабине", xlabel="Время, с", ylabel="Давление, бар", legend=:bottomright)
Out[0]:

结论

在这个例子中,我们考虑了飞机机舱内的自动压力控制系统模型。分析图表后,我们可以得出这样的结论:在飞行的各个阶段,调节器都能将压力保持在设定的水平。