前页 | 后页 |
水箱压力调节器
在本节中,我们将逐步为水箱压力调节器创建SysML参数模型,该模型由两个相连的水箱,一个水源和两个控制器组成,每个控制器监视水位并控制阀门以调节系统。
我们将解释SysML模型,创建它并设置SysMLSim配置。然后,我们将使用OpenModelica运行仿真。
正在建模的系统
该图描绘了两个连接在一起的水箱,以及一个填充第一个水箱的水源。每个水箱都连接有一个比例积分(PI)连续控制器,该控制器将水箱中的水位调节到参考水位。当水源向第一个水箱注满水时,PI连续控制器会根据水箱的实际水位调节水箱的出水量。来自第一个水箱的水流入第二个水箱,PI连续控制器也试图对其进行调节。这是一个自然且非特定领域的物理问题。
创建SysML模型
零件 |
讨论区 |
---|---|
端口类型 |
坦克有四个端口。将它们键入以下三个块:
|
块定义图 |
LiquidSource:进入水箱的水必须来自某个地方,因此水箱系统中有一个水源组件,其flowLevel属性的单位为'm 3 / s'。端口“ qOut”键入为“ LiquidFlow”。 储罐:储罐通过端口连接到控制器和液体源。
|
约束块 |
在时间= 150时,流量急剧增加到先前流量水平的三倍,这产生了一个有趣的控制问题,水箱的控制器必须处理该问题。
调节储罐性能的中心方程是质量平衡方程。 输出流量通过“ flowGain”参数与阀位置相关。 传感器仅读取罐的液位。
这些图中说明了为“ BaseController”和“ PIcontinuousController”定义的约束。
|
内部框图 |
这是具有单个储罐的系统的内部框图。
这是具有两个连接的储罐的系统的内部框图。
|
运行模拟
由于TankPI和TanksConnectedPI被定义为“ SysMLSimModel”,因此将在“模拟”页面上的“模型”的组合框中填充它们。
选择TanksConnectedPI ,并观察发生的这些GUI更改:
- “数据集”组合框:将填充TanksConnectedPI中定义的所有数据集
- “依赖”列表:将自动收集所有的块,约束,和SimFunctions由值类型TanksConnectedPI直接或间接引用(这些元素将作为Modelica的代码来生成)
- “要绘制的属性”:将收集一长串“叶”变量属性(即它们没有属性);您可以选择一个或多个进行模拟,它们将成为情节的传奇
创建工件并配置
选择“模拟>系统行为> Modelica / Simulink> SysMLSim配置管理器”
包中的元素将被加载到配置管理器中。
如下表所示配置这些块及其属性。
注意:默认情况下,未配置为“ SimConstant”的属性为“ SimVariable”。
块 |
物产 |
---|---|
液体源 |
配置为“ SysMLSimClass”。 属性配置:
|
坦克 |
配置为“ SysMLSimClass”。 属性配置:
|
BaseController |
配置为“ SysMLSimClass”。 属性配置:
|
PIcontinuousController |
配置为“ SysMLSimClass”。 |
TankPI |
配置为“ SysMLSimModel”。 |
TanksConnectedPI |
配置为“ SysMLSimModel”。 |
设置数据集
右键单击每个元素,选择“创建仿真数据集”选项,然后配置该数据集,如下表所示。
元件 |
数据集 |
---|---|
液体源 |
流量水平:0.02 |
坦克 |
h.start:0 流量增益:0.05 面积:0.5 最大V:10 minV:0 |
BaseController |
电话:10 K:2 Ts:0.1 |
PIcontinuousController |
无需配置。 默认情况下,特定的块将使用超级块的默认dataSet中的配置值。 |
TankPI |
有趣的是,可以在“配置仿真数据”对话框中加载默认值。例如,将我们在每个Block元素上配置为默认dataSet的值作为TankPI属性的默认值加载。单击每一行上的图标,以将属性的内部结构扩展到任意深度。
单击确定按钮,然后返回到配置管理器。然后配置这些值:
|
TanksConnectedPI |
|
仿真与分析1
选择这些变量,然后单击求解按钮。该图应提示:
- source.qOut.lflow
- tank1.qOut.lflow
- tank1.h
- tank2.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”上,右键单击并选择“ Duplicate DataSet”,然后重命名为“ Tank2WithLimitValveSize”
- 单击按钮进行配置,展开“ tank2”,然后在属性“ maxV”的“值”列中键入“ 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的水位增加了
- 然后由用户来解决此问题。例如,更换为更大的阀门,减少源流量或制造额外的阀门