前页 | 后页 |
水箱压力调节器
在本节中,我们将介绍为水箱压力调节器创建 SysML 参数模型,该模型由两个连接的水箱、一个源和两个控制器组成,每个控制器监控水位并控制阀门以调节系统.
我们将解释 SysML模型,创建它并设置 SysMLSim 配置。然后我们将使用运行仿真。
正在建模的系统
此图描绘了连接在一起的两个源,以及填充第一个水箱的水源。每个水箱都有一个与其相连的比例积分 (PI) 连续控制器,它将水箱中的水位调节到参考水位。当源向第一个水箱注水时,PI 连续控制器根据水箱的实际水位调节水箱的流出量。第一个水箱中的水流入第二个水箱,PI 连续控制器也试图对其进行调节。这是一个自然的、非特定领域的物理问题。
创建 SysML模型
部件 |
讨论 |
---|---|
端口类型 |
坦克有四个端口,它们分别输入到这三个块中:
|
块定义图表 |
LiquidSource:进入水箱的水一定来自某个地方,因此我们在水箱系统中有一个液体源组件,属性flowLevel的单位为“m 3 /s”。 A “端口”键入为“端口”。 水箱:水箱通过端口连接到控制器和液体源。
|
约束块 |
流量在时间=150 时急剧增加至先前流量水平的三倍,这产生了一个有趣的控制问题,罐的控制器必须处理。
调节罐性能的中心方程是质量平衡方程。 输出流量通过“flowGain”参数与阀门位置相关。 传感器只是读取水箱的液位。
这些图中说明了为“BaseController”和“PIcontinuousController”定义的约束。
|
内部块图表 |
这是具有单个水箱的系统的内部块图。
这是具有两个连接罐的系统的内部块图。
|
运行仿真
由于TankPI和TanksConnectedPI被定义为“SysMLSimModel”,因此它们将列在“仿真”页面的“模型”组合框中。
选择TanksConnectedPI ,并观察这些 GUI 发生的变化:
- “数据集”组合框:将填充TanksConnectedPI中定义的所有数据集
- 'Dependencies' 列表:将自动收集 TanksConnectedPI 直接或间接引用的所有 Blocks、约束、 SimFunctions和 ValueTypes(这些元素将生成为 OpenModelica 代码)
- '属性Plot':将收集一长串'叶子'变量属性(即它们没有属性);您可以选择一个或几个进行模拟,属性将显示在图例中
工件和配置
选择“仿真>系统行为> Modelica/Simulink >配置管理器”
包中的元素将被加载到配置管理器中。
配置这些块及其属性,如本表所示。
注记:未配置为“属性”的属性默认为“SimVariable”。
块 |
属性 |
---|---|
液体源 |
配置为“配置”。 属性配置:
|
坦克 |
配置为“配置”。 属性配置:
|
基本控制器 |
配置为“配置”。 属性配置:
|
PI连续控制器 |
配置为“配置”。 |
坦克PI |
配置为“配置”。 |
TanksConnectedPI |
配置为“配置”。 |
设置数据集
右键单击每个元素,选择“创建仿真数据集”选项,然后配置数据集,如本表所示。
元素 |
数据集 |
---|---|
液体源 |
流量等级:0.02 |
坦克 |
h.开始:0 流量增益:0.05 面积:0.5 最大V:10 最小伏特:0 |
基本控制器 |
T :10 K : 2 TS: 0. 1 |
PI连续控制器 |
无需配置。 默认情况下,特定块将使用超级块的默认数据集中配置的值。 |
坦克PI |
这里有趣的是可以在“配置仿真数据”对话框中加载默认值。例如,我们在每个块元素上配置为默认数据集的值被加载为属性的默认值。单击每行上的图标可将属性的内部结构扩展到任意深度。
点击确定按钮,返回配置管理器。然后配置这些值:
|
TanksConnectedPI |
|
仿真分析1
选择这些变量并单击求解按钮。这个情节应该提示:
- 源.qOut.lflow
- tank1.qOut.lflow
- 坦克1.h
- 坦克2.h
以下是对结果的分析:
- 液体流量在时间=150 时急剧增加,达到 0.06 m 3 /s,是之前流量 (0.02 m 3 /s) 的三倍
- Tank1 调节高度 0.25,tank2 调节高度 0.4 符合预期(我们通过数据集设置参数值)
- 在模拟过程中,tank1 和 tank2 都进行了两次调节;首次调节流量0.02 m 3 /s;第二次调节流量 0.06 m 3 /s
- 在 tank1 有任何流量之前 Tank2 是空的
仿真分析2
在示例中,我们将坦克的属性“minV”和“maxV”分别设置为值 0 和 10。在现实世界中,10 m 3 /s 的流量需要在水箱上安装一个非常大的阀门。
如果我们将“maxV”的值更改为 0.05 m 3 /s 会发生什么?基于之前的模型,我们可能会做出这些改变:
- 在 TanksConnectedPI 的现有“DataSet_1”上,右键单击并选择“复制数据集”,然后重命名为“Tank2WithLimitValveSize”
- 单击按钮进行配置,展开“tank2”并在“属性”的“值”列中键入“0.05”
- 在“仿真”页面上选择“Tank2WithLimitValveSize”并绘制属性
- 单击求解按钮执行模拟
以下是对结果的分析:
- 我们的更改仅适用于 tank2; tank1 可以像以前一样在 0.02 m 3 /s 和 0.06 m 3 /s 上调节
- 当源流量为0.02 m 3 /s时,tank2可以像以前一样调节
- 然而,当源流量增加到 0.06 m 3 /s 时,阀门太小,无法让流出流量与流入流量匹配;唯一的结果是tank2的水位升高
- 然后由用户来解决这个问题;例如,换一个更大的阀门,减少源流量或制作一个额外的阀门