Engee 文档
Notebook

液压冲击模拟

在这个例子中,我们将探讨如何建模[гидроудар](https://ru.wikipedia.org/wiki/Гидравлический_удар )在使用等温液体(IL)库块的长管道中。

管内液体的流动由阀门控制。 首先,控制系统平稳地打开阀门,增加流量,但保持流动的静止性质。 然后,当阀门突然关闭(0.1s)时,我们可以观察到水锤的效果。

模型描述

在顶层,模型看起来像这样:

image.png

管道连接两个储液罐,在第一个储液罐中保持6个大气压的压力。 液体将流入第二个罐,其中的压力也是恒定的,等于5个大气压。

在两个长度为25米的管道之间有一个子系统"传感器",其中流量和压力传感器位于其中。 为了保持模型的拓扑结构,绘图模块被放置在一个单独的子系统"设备"中。 可以在那里过滤数据,但在这个模型中,我们只将总压力以帕斯卡为单位乘以一个常数,以获得大气*中的读数。

阀控制单元的操作取决于状态变量 sqitching_mode,其中可以取值 "Fast""Slow". 流的快速关闭使系统进入一个非常活跃的非平稳模式,我们将演示。

In [ ]:
switching_mode = "Fast";

为了模拟阀门,我们使用块 Variable Local Restriction (IL),管道用块表示 Pipe (IL). 要查看水锤的效果,管道模型必须允许您模拟液体的可压缩性和惯性(默认情况下,管道不考虑惯性,必须在块设置中启用 Pipe (IL)).

快速阀门关闭的模拟

在模型的该变型中,使用传递函数平滑设置阀重叠的阶跃函数。 . 因此,我们正在目睹一个相当突然的过渡进程。

In [ ]:
# Установим модель в режим быстрого переключения
switching_mode = "Fast";

# Загрузим и запустим модель
modelName = "water_hammer"
model = modelName in [m.name for m in engee.get_all_models()] ? engee.open( modelName ) : engee.load( "$(@__DIR__)/$(modelName).engee");
data = engee.run( modelName )
Out[0]:
Dict{String, DataFrames.DataFrame} with 2 entries:
  "p_f"  => 2501×2 DataFrame…
  "mdot" => 2501×2 DataFrame

而且,正如我们在图表中所看到的,经过长时间的稳定运行后,管道开始出现突然的压力激增,液体的位移质量在3到5公斤/秒之间波动。

In [ ]:
gr()
plot(
    plot( data["p_f"].time, data["p_f"].value, leg=false, title="Массовый расход, кг/с" ),
    plot( data["mdot"].time, data["mdot"].value, leg=false, title="Давление, атм" ),
    layout=(2,1)
)
Out[0]:

慢速阀门关闭的模拟

如果您控制阀门足够慢(使用传递函数平滑步骤 ),然后我们观察到一个平稳的过渡过程。

In [ ]:
# Установим модель в режим быстрого переключения
switching_mode = "Slow";

# Запустим другой вариант модели
data = engee.run( modelName )
Out[0]:
Dict{String, DataFrames.DataFrame} with 2 entries:
  "p_f"  => 2501×2 DataFrame…
  "mdot" => 2501×2 DataFrame
In [ ]:
gr()
plot(
    plot( data["p_f"].time, data["p_f"].value, leg=false, title="Массовый расход, кг/с" ),
    plot( data["mdot"].time, data["mdot"].value, leg=false, title="Давление, атм" ),
    layout=(2,1)
)
Out[0]:

结论

使用最少的辅助块,我们已经获得了液压冲击效果的相当令人信服的演示。 我们建立了一个有两个操作选项(快速和慢速阀门关闭)的系统,并通过一个单独的子系统带出仪表板,成功地使用了模块 FromGoto.

为了使模型更直观,可以添加更多管道段并测量它们之间的压力,或模拟阻尼储层。