您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
使用SysML的参数图进行算法仿真

示例:水箱压力调节器

 
翻译:张贵显 俎涛(火龙果软件工程)
  1038  次浏览      1 次
2021-5-27
 

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建模资料如下:

    如果您希望了解更多信息:

    • 欢迎访问建模者频道 http://modeler.org.cn/
    • 也欢迎直接联系我们 zhgx@uml.net.cn ,010-62670969

    本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp

     

    后记

    希望您读了此文后有所受益。

    如果您有经验乐于分享,欢迎投稿给我们。

    如果您对我们的培训、咨询和工具感兴趣:

    课程:
  • 基于UML和EA进行分析设计
  • MBSE(基于模型的系统工程)  
  • 基于模型的需求管理)方法与实践
  • 基于SysML和EA进行系统设计与建模  
  • 企业架构建模
  • 系统架构建模方法与案例
  • 领域驱动的建模与设计
  • 基于模型的设计
  • 业务建模与业务分析
  • 基于模型的设计

  • MBSE工具链 :
  • 建模工具:EA
  • MBSE平台:iSpace
  • 模型共享:WebEA
  • 文档生成:DocGenerator
  • 模型仿真:Simulator
  • 质量管理:inspector

  • 咨询方案:
  • MBSE(基于模型的系统工程)
  • 基于UML的模型驱动的开发
  • 基于模型的工程管理
  • 基于Sys ML进行系统分析设计
  • 基于模型进行系统分析设计
  • 欢迎联系我们: 俎涛 Zutao@uml.net.cn

       
    1038 次浏览       1
     
    相关文章

    基于模型的Code执行分析(使用EA)
    AUTOSAR 建模和ARXML文件生成(基于EA)
    基于工程数据的研发管理
    基于EA建立DMN模型
     
    相关文档

    UML统一建模语言参考手册
    网上商城UML图
    UML建模示例:JPetStor
    UML序列图编写规范
     
    相关课程

    UML与面向对象分析设计
    UML + 嵌入式系统分析设计
    业务建模与业务分析
    基于UML和EA进行系统分析设计

    最新活动计划
    嵌入式linux内核、开发、性能优化 12-13 [北京]
    软件开发过程中的项目管理 12-16 [北京]
    配置管理方法、实践与应用 12-20 [北京]
    Springboot&Cloud、Java SSM框架 12-27 [直播]
    深度学习与知识图谱最佳实践 12-27 [直播]
    UML+EA+面向对象分析设计 1-21 [直播]
     
    最新文章
    iPerson的过程观:要 过程 or 结果
    “以人为本”的工程哲学
    企业架构、TOGAF与ArchiMate概览
    UML 图解:顺序图( sequence diagram )
    UML 图解:对象图( class diagram )
    最新课程
    基于UML和EA进行系统分析设计
    UML+EA+面向对象分析设计
    基于SysML和EA进行系统设计与建模
    UML + 嵌入式系统分析设计
    领域驱动的建模与设计
    更多...   
    成功案例
    某电信运营供应商 应用UML进行面向对象分析
    烽火通信 UML进行面向对象的分析设计
    西门子 UML与嵌入式软件分析设计
    航天科工某子公司 从系统到软件的分析、设计
    深圳某汽车企业 模型驱动的分析设计
    更多...