Engee 文档
Notebook

罐内自动液位控制系统的模拟

本示例演示了基于物理组件的罐液位控制系统模型。

该模型是一个闭式控制回路,其中液体通过受控泵进入油箱,并通过以液压阻力为特征的出口流出。 液位传感器连续测量罐内液柱的当前高度,并将此信号传输到控制单元。

模型图:

liquid_level_control_system--1759324713591.png

定义加载和运行模型的函数:

In [ ]:
function start_model_engee()
    try
        engee.close("liquid_level_control_system", force=true) # 关闭模型
        catch err # 如果没有模型关闭和engee。close()不执行,它将在catch之后加载。
            m = engee.load("$(@__DIR__)/liquid_level_control_system.engee") # 加载模型
        end;

    try
        engee.run(m) # 启动模型
        catch err # 如果模型没有加载和engee。run()不执行,catch后最下面的两行将被执行。
            m = engee.load("$(@__DIR__)/liquid_level_control_system.engee") # 加载模型
            engee.run(m) # 启动模型
        end
end
Out[0]:
start_model_engee (generic function with 2 methods)

运行模拟

In [ ]:
start_model_engee();

从simout变量中分离液位和设定点信号:

In [ ]:
result = simout;
res = collect(result);

向变量写入信号:

In [ ]:
level = collect(res[15])
sin_sig = collect(res[24]);
tank_mfr = collect(res[11])
pump_mfr = collect(res[25]);

模拟结果的可视化

液位图和设定点信号:

In [ ]:
using Plots
gr()
plot(sin_sig[:,1], sin_sig[:,2], label="液位传感器", linewidth=3, xlabel="时间,从", ylabel="液位,m")
plot!(level[:,1], level[:,2], label="罐内液位", linewidth=3, linestyle=:dash)
Out[0]:

通过泵和通过罐出口的液体的质量流量的曲线图:

In [ ]:
plot(tank_mfr[:,1], tank_mfr[:,2], label="从水箱排出", linewidth=3, xlabel="时间,从", ylabel="质量流量,kg/s")
plot!(pump_mfr[:,1], pump_mfr[:,2], label="进料的质量流量", linewidth=3, linestyle=:dash)
Out[0]:

结论:

在本例中,演示了罐内自动液位控制系统的模拟。 这些模型可用于优化广泛的工艺,从填充水塔开始,到化工行业的复杂工艺结束。