罐内自动液位控制系统的模拟
本示例演示了基于物理组件的罐液位控制系统模型。
该模型是一个闭式控制回路,其中液体通过受控泵进入油箱,并通过以液压阻力为特征的出口流出。 液位传感器连续测量罐内液柱的当前高度,并将此信号传输到控制单元。
模型图:
定义加载和运行模型的函数:
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]:
运行模拟
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]:
结论:
在本例中,演示了罐内自动液位控制系统的模拟。 这些模型可用于优化广泛的工艺,从填充水塔开始,到化工行业的复杂工艺结束。
.png)
.png)