Engee 文档
Notebook

气温控制系统型号

本例的目的是演示图表模块在形成控制各种对象的逻辑方面的功能。在本例中,我们将特别考虑控制室内空气温度的变体。


运行原理

该模型 (AirCond_Chart.engee) 由多个子系统组成。外部温度由随机信号产生,并在外部温度模块中实现。 房间内的热力学在子系统 - 房间热力学中实现。其中模拟了外部热流的影响,并计算了当前的空气温度,同时考虑了空调的影响系数 - heatFlow,其值在图表块中定义。 您可以双击感兴趣的子系统,了解更多有关模型实施的信息。

acflowchart_1711368039318.png

图表单元实现了控制室温的逻辑。

acflowchart_1711188821557.png

模块电路的算法如下。图表输入接收信号:

  • temp - 室内当前空气温度,华氏度;
  • tempDesired - 理想的空气温度,华氏度;

然后在程序块内对这两个参数进行比较。如果当前温度高于期望温度,则热流参数取值为-1,温度开始下降。如果当前温度低于预期温度,则 heatFlow 参数将设为 1,温度开始上升。如果当前温度在可接受值范围内,则热流参数设置为 0。

让我们运行模型并查看执行结果。

In [ ]:
# Подключение вспомогательной функции запуска модели.
function run_model( name_model, path_to_folder )
    
    Path = path_to_folder * "/" * name_model * ".engee"
    
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end

    return model_output
end
Out[0]:
run_model (generic function with 1 method)
In [ ]:
run_model("AirCond_Chart",@__DIR__) # Запуск модели.
Building...
Progress 100%
Out[0]:
Dict{String, DataFrames.DataFrame} with 3 entries:
  "Chart.heatFlow" => 202×2 DataFrame…
  "T"              => 202×2 DataFrame…
  "T_ext"          => 202×2 DataFrame
In [ ]:
# Считывание из simout залогированных сигналов
T_ext = simout["AirCond_Chart/T_ext"];
T_ext = collect(T_ext);

heatFlow = simout["AirCond_Chart/Chart.heatFlow"];
heatFlow = collect(heatFlow);

T = simout["AirCond_Chart/T"];
T = collect(T);
In [ ]:
using Plots
plot(T_ext.time, T_ext.value, label = "T_ext")
plot!(T.time, T.value, label = "T")
Out[0]:

正如您所看到的,当室外温度骤升时,室内温度也开始变化,但由于控制逻辑的作用,温度始终保持在可接受的范围内。让我们绘制一张 heatFlow 参数变化图,以确保图表模块正常工作。

In [ ]:
plot(heatFlow.time, heatFlow.value, label = "heatFlow")
Out[0]:

输出

在本示例中,我们考虑了使用有限自动机库的图表模块来实现控制逻辑的方法。虽然实施过程有所简化,但模拟结果表明,该模型能够很好地应对温度维持问题。

示例中使用的块