空气温度控制系统的模型
此示例的目的是演示图表块在形成管理各种对象的逻辑方面的能力。 特别是,在这个例子中,我们将考虑控制房间空气温度的选项。
操作原理
的模型(AirCond_Chart.engee)由几个子系统组成。 外部温度由随机信号产生,并在外部温度块中实现。 房间内部的热力学在子系统-房间热力学。 它模拟外部热流的影响,并计算当前空气温度,同时考虑到空调器的影响系数-热流,其值在图表块中确定。 您可以通过双击感兴趣的子系统来了解有关模型实现的更多信息。
图表块实现控制房间内空气温度的逻辑。
流程图的算法如下。 图表输入接收信号:
*temp-房间内的当前空气温度,F;
*tempDesired-所需的空气温度,F;
接下来,在块内部比较两个参数。 如果当前温度高于所需温度,则heatFlow参数将设置为-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]:
In [ ]:
run_model("AirCond_Chart",@__DIR__) # Запуск модели.
Out[0]:
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]:
结论
在这个例子中,我们研究了一种使用有限状态机库的图表块实现控制逻辑的方法。 简化了实现选项,但仿真结果表明该模型在保持温度方面做得很好。

