SysML中的参数图仿真
SysML中的参数图可以对模型中的数据进行计算,执行类似Matlab的数据计算功能。原理图如下:
使用SysML参数图仿真的过程如下:
首先定义算法:定义模块中的算法和输入输出的变量,
然后再对算法仿真:指定输入变量的数值,执行仿真计算。
查看结果:通过数值的图形化显示器查看输出的数据。
今天,我们介绍一下使用SysML的参数图进行算法仿真示例:水箱压力调节器。它显示了两个水箱之间的水位。我们首先模拟一个平衡良好的系统,然后模拟一个水将从第二个水箱溢出的系统。
水箱压力调节器示意图
该图描绘了两个连接在一起的水箱,以及一个可以填充第一个水箱的水源。每个水箱都连接有比例积分(PI)连续调节器,该调节器将水箱中的水位调节到参考水位。当水源向第一个水箱注满水时,比例积分连续调节器会根据水箱的实际水位调节水箱的出水量。第一个水箱的水会流入第二个水箱,比例积分调节器也会对其进行调节。这是自然的不是特定领域的物理问题。
操作方法如下:
创建SysML算法模型,使用了模块定义图和参数图;
启动SysML算法仿真器
创建SysMLSim工件并配置
设置参数数据
执行仿真,查看结果
操作1:创建SysML算法模型
首先我们在EA中创建水箱压力调节器模型,模型包括如下部分:
1、模块定义图(BDD)Block Definition Diagram
模型定义图是最常见的SysML 图,在BDD中我们可以定义模块,值类型,约束模块、端口等。本案例我们创建了4个模块:
LiquidSource:水源
Tank: 水箱
BaseController:基本控制器
PIcontinuousController:比例积分调节器
以下是我们定义的模块的各个端口:
模块 |
端口 |
LiquidSource水源
|
qOut:用于水流出流量,类型为LiquidFlow |
Tank水箱
|
qIn:用于输入流量
qOut:用于输出流量
tSensor:用于提供液位测量
tActuator:用于设置水箱出口处阀门位置 |
BaseController基本控制器 |
cIn:输入传感器
cOut:对执行器的控制 |
模块中还有一些属性和约束,后续我们一 一介绍。
模块定义图
除了水源,水箱之外,我们还要定义3个和水流动相关的模块:
ActSignal:发送给调节器的控制阀门的信号
LiquidFlow:流入或流出的水流,属性为“ lflow”,单位为“ m 3 / s”
ReadSignal:读取液位,属性为“ val”,单位为“ m”
2、内部模块图(IBD)Internal Block Diagram
内部模块图与模块定义图及参数图互补,通过组件(Parts)、端口、连接器来用于描述系统模块的内部结构。IBD的外框总是代表你在系统模型某处定义的模块。在外框之中,你可以显示模块的组成部分属性和引用属性,以及把它们连接在一起的连接器。
我们建立一个水箱的系统的内部结构图
然后建立2个连接的水箱的系统的内部结构图。
3、约束模块ConstraintBlocks
SysML引入约束模块来支持参数模型的构建。约束模块是一个特定类型的模块用来定义等式。约束模块有2个主要特征:一组参数集和约束参数的一个表达式。
约束模块的一个使用被称为一个约束属性。定义和约束模块的使用分别被表示在模块定义图和参数图上。
在本示例中 当时间= 150时,流量急剧增加到先前流量水平的三倍,这产生了一个有趣的控制问题,水箱的控制器必须处理该问题。
水源约束模块
调节水箱性能的中心方程是质量平衡方程。输出流量通过“ flowGain”参数与阀位置相关。传感器仅读取罐的液位。
水箱约束模块
下面这2个图中说明了为“ BaseController”和“ PIcontinuousController”定义的约束。
这样示例的基本模型就建立好了。
操作2:启动SysMLSim仿真器
TankPI和TanksConnectedPI被定义为“ SysMLSimModel”,因此它们将在“模拟”页面上的“模型”的组合框中列出。
选择TanksConnectedPI,并观察发生的变化:
• “数据集”组合框:将填充TanksConnectedPI中定义的所有数据集
• “依赖”列表:将自动收集所有的块,约束,和SimFunctions由值类型直接或间接引用TanksConnectedPI(这些元素将作为OpenModelica代码生成)
• “要绘制的属性”:将收集一长串“叶”变量属性(即它们没有属性);您可以选择一个或多个进行模拟,然后该属性将显示在图例中
操作3、创建SysMLSim工件并进行仿真环境设置
选择'Simulate > System Behavior > Modelica/Simulink
> SysMLSim Configuration Manager',
包中的元素将被加载到配置管理器中。
如下表所示配置这些块及其属性。
备注:默认情况下,未配置为“ SimConstant”的属性为“ SimVariable”。
模块 |
属性 |
LiquidSource
|
配置为“
SysMLSimClass” 。
属性配置:
flowLevel:设置为“ SimConstant” |
Tank
|
配置为“
SysMLSimClass”。
属性配置:area: 设置为“ SimConstant”
flowGain: 设置为“ SimConstant”
maxV: 设置为“ SimConstant”
minV: 设置为“ SimConstant” |
BaseController |
配置为“
SysMLSimClass”。
属性配置:
K:设为“ SimConstant”
T:设置为“ SimConstant”
Ts:设置为“ SimConstant”
ref:设置为“ SimConstant” |
PIcontinuousController |
配置为“
SysMLSimClass”。 |
TankPI |
配置为“
SysMLSimModel”。 |
TanksConnectedPI |
配置为“
SysMLSimModel”。 |
操作4、设置参数数据
右键单击每个元素,选择“Create Simulation Dataset”选项,然后配置该数据集,如下表所示。
模块 |
数据集 |
LiquidSource
|
flowLevel:
0.02 |
Tank
|
h.start:
0
flowGain: 0.05
area: 0.5
maxV: 10
minV: 0 |
BaseController
|
T:
10
K: 2
Ts: 0.1
|
PIcontinuousController |
无需配置。
默认情况下,特定的块将使用超级块的默认dataSet中的配置值。
|
TankPI
|
可以在“配置仿真数据”对话框中加载默认值。例如,我们将在每个Block元素上配置为默认dataSet的值加载为TankPI属性的默认值。单击每一行上的图标,以将属性的内部结构扩展到任意深度。
单击确定按钮,然后返回到配置管理器。然后配置这些值:
tank.area:1会覆盖Tank Block数据集中定义的默认值0.5。
piContinuous.ref:0.25 |
TanksConnectedPI |
controller1.ref:0.25
controller2.ref:0.4 |
操作5、执行仿真,查看结果
仿真与分析1
选择这些变量,然后单击“Solve”按钮。图下图所示:
• 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
• Tank2之前没有任何流量,所以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”,并绘制属性
• 单击“Solve”按钮,执行仿真。
以下是结果分析:
• 我们的更改仅适用于tank2;tank1可以像以前一样在0.02 m 3 / s和0.06 m
3 / s上进行调节
• 当源流量为0.02 m 3 / s时,tank2可以像以前一样进行调节
• 但是,当源流量增加到0.06 m 3 / s时,阀太小而无法使流出流量与流入流量匹配;唯一的结果是tank2的水位增加了
• 然后由用户来解决此问题。例如,更换为更大的阀门,减少源流量或制造一个额外的阀门
总而言之,此示例显示了如何通过复制现有的DataSet来调整参数值。
通过这个示例我们可以掌握如何在EA中创建SysML模型,如何对模型进行仿真 以及评估仿真结果。
火龙果软件提供团队协同建模环境的咨询服务,可以帮助用户搭建完整的团队建模和MBSE解决方案,详细信息请见http://tool.uml.com.cn/ToolsEA/introduce.asp
希望本文对您的建模工作有帮助。更多的有关EA建模资料如下:
如果您希望了解更多信息:
本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们。
如果您对我们的培训、咨询和工具感兴趣:
|