预订演示

请注意 : 本帮助页面不适用于最新版本的Enterprise Architect. 最新的帮助文档在这里.

前页 后页

创建参数模型

在本主题中,我们讨论如何开发用于仿真的SysML模型元素(假设有SysML建模的现有知识),如何在“配置SysML仿真”窗口中配置这些元素,以及在某些不同的定义和建模方法下观察仿真的结果。这些点由本章提供的SysML Simulation示例中的图表和屏幕快照来说明。

创建参数模型时,可以应用以下三种方法之一来定义约束方程:

  • 在块元素上定义内联约束方程
  • 创建可重复使用的约束块,以及
  • 使用连接的约束属性
您还将考虑:
  • 物理互动中的流程
  • 默认值和初始值
  • 模拟功能
  • 价值分配,以及
  • 包装和进口

访问

色带

模拟>系统行为> Modelica / Simulink> SysMLSim配置管理器

在块上定义内联约束方程

直接在块中定义约束非常简单,并且是定义约束方程式的最简单方法。

在此图中,在块元素中定义了约束'f = m * a'。

Block Constraint in Modelica SysML System Simulation in Sparx Systems Enterprise Architect

提示:您可以在一个块中定义多个约束。

  1. 创建SysMLSim配置工件'Force = Mass * Acceleration(1)并将其指向软件包'FMA_Test'。
  2. 对于“ FMA_Test”,在“值”列中设置“ SysMLSimModel”。
  3. 对于零件“ a”,“ m”和“ f”,在“值”列中:将“ a”和“ m”设置为“ PhSConstant”,(可选)将“ f”设置为“ PhSVariable”。
  4. 在“模拟”选项卡上的“绘图属性”面板中,选中“ f”复选框。
  5. 单击求解按钮运行模拟。

图表应绘制为f = 98.1(来自10 * 9.81)。

关联约束属性

在SysML中,约束块中存在的约束属性可用于在定义约束时提供更大的灵活性。

在此图中,约束块“ K”定义了参数“ a”,“ b”,“ c”,“ d”和“ KVal”,以及三个约束属性“ eq1”,“ eq2”和“ eq3”,键入为“ K1”,“ K2”和“ K1MultiplyK2”。

Constraint Properties in Business Process Simulation in Sparx Systems Enterprise Architect

在约束块“ K”中创建一个参数图,并使用绑定连接器将参数连接到约束属性,如下所示:

Constraint Block in Business Process Simulation in Sparx Systems Enterprise Architect

  • 创建具有五个属性(零件)的模型MyBlock
  • 为MyBlock创建约束属性'eq'并显示参数
  • 将属性绑定到参数
  • 在数据集中提供值(arg_a = 2,arg_b = 3,arg_c = 4,arg_d = 5)
  • 在“配置SysML仿真”对话框中,将“模型”设置为“ MyBlock”,将“数据集”设置为“ DataSet_1”
  • 在“要绘制的属性”面板中,选中“ arg_K”复选框
  • 单击求解按钮以运行模拟

将计算并绘制结果120(计算为2 * 3 * 4 * 5)。这与使用笔和纸进行扩展时相同:K = K1 * K2 =(x * y)*(p * q),然后绑定值(2 * 3)*(4 * 5);我们得到120。

有趣的是,我们有意将K2的等式定义为'p = K2 / q',此示例仍然有效。

在此示例中,我们可以轻松地将K2求解为p * q,但是在某些复杂的示例中,很难从方程式中求解变量。但是, Enterprise Architect SysMLSim仍然可以正确解决。

总之,该示例向您展示了如何通过构造约束属性来更灵活地定义约束块。尽管我们仅演示了约束块中的一层,但此机制可以在任意使用级别的复杂模型上运行。

创建可重用约束块

如果一个方程式通常在许多块中使用,则可以创建一个约束块以用作每个块中的约束属性。这些是我们根据之前的示例进行的更改:

  • 创建具有三个参数“ a”,“ m”和“ f”以及约束“ f = m * a”的约束块元素“ F_Formula”

    提示:如果属性类型为空,则将应用基本类型“ Real”
  • 创建具有三个属性“ x”,“ y”和“ z”的块“ FMA_Test”,并将“ x”和“ y”的默认值分别设置为“ 10”和“ 9.81”
  • 在“ FMA_Test”中创建一个参数图,显示属性“ x”,“ y”和“ z”
  • 创建一个约束属性“ e1”,键入“ F_Formula”并显示参数
  • 如图所示,在“ x-m”,“ y-a”和“ f-z”之间绘制绑定连接器:

    Constraint Block in Modelica SysML System Simulation in Sparx Systems Enterprise Architect
  • 创建一个SysMLSimConfiguration Artifact元素并按照对话框插图中所示进行配置:
    -在“值”列中,将“ FMA_Test”设置为“ SysMLSimModel”
    -在“值”列中,将“ x”和“ y”设置为“ PhSConstant”
    -在“要绘制的属性”面板中,选中“ Z”复选框
    -单击求解按钮以运行模拟

图表应绘制为f = 98.1(来自10 * 9.81)。

身体互动中的流程

在为物理相互作用建模时,应将诸如电流,力,扭矩和流速之类的守恒物理物质的交换建模为流量,并且应将流量变量设置为“ isConserved”属性。

通过连接建立两种不同类型的耦合,具体取决于流量属性是电位(默认)还是流量(守恒):

  • 相等耦合,用于潜在(也称为努力)属性
  • 总和零耦合,用于流动(守恒)特性;例如,根据电子领域的基尔霍夫电流定律,电荷守恒使得所有电荷流到一个总和为零的点上
在生成的“电子电路”示例的Modelica代码中:

连接器ChargePort

流电流i; //如果'isConserved'= true,将生成流关键字

电压v;

结束ChargePort;

模型电路

来源来源;

电阻电阻;

接地;

方程

连接(source.p,电阻器.n);

connect(ground.p,source.n);

connect(resistor.p,source.n);

终端电路;

每个连接方程实际上都扩展为两个方程(在ChargePort中定义了两个属性),一个方程用于等式耦合,另一个方程用于零和耦合:

source.pv =电阻器.nv;

source.pi +电阻.ni = 0;

默认值和初始值

如果在SysML属性元素中定义了初始值(“属性”对话框>“属性”页面>“初始”字段),则可以将其作为PhSConstant的默认值或PhSVariable的初始值加载。

在该摆锤示例中,我们提供了属性“ g”,“ L”,“ m”,“ PI”,“ x”和“ y”的初始值,如图的左侧所示。由于“ PI”(数学常数),“ m”(摆锤的质量),“ g”(重力系数)和“ L”(摆锤的长度)在仿真过程中没有变化,因此请将它们设置为“ PhSConstant”。

生成的modelica代码类似于以下代码:

摆类

参数Real PI = 3.141;

                    参数Real m = 1 ;

参数实g = 9.81 ;

参数Real L = 0.5 ;

实数F;

实数x (开始= 0.5) ;

实数y (start = 0) ;

真实vx;

真正的vy;

......

方程

......

结束摆;

  • 属性“ PI”,“ m”,“ g”和“ L”是常量,并作为声明方程生成
  • 属性“ x”和“ y”是可变的;它们的起始值分别为0.5和0,并且初始值作为修改生成

模拟功能

仿真功能是用于编写复杂逻辑的强大工具,并且易于用于约束。本节描述了TankPI示例中的函数。

在约束块“ Q_OutFlow”中,定义了函数“ LimitValue”,并将其用于约束中。

  • 在块或约束块上,创建一个操作(在本示例中为“ LimitValue”),然后打开“功能”窗口的“操作”选项卡
  • 给操作定型“ SimFunction”
  • 定义参数并将方向设置为“输入/输出”

提示:可以将多个参数定义为“输出”,并且调用方以以下格式检索值:

(out1,out2,out3)= function_name(in1,in2,in3,in4,...); //方程式

(out1,out2,out3):= function_name(in1,in2,in3,in4,...); //声明形式

  • 在“属性”窗口的“代码”选项卡的文本字段中定义函数主体,如下所示:

    pLim:=
    如果p> pMax,则
    最大值
    否则,如果p <pMin,则
    最小
    其他
    ;

生成代码时, Enterprise Architect将收集在约束块和块中定义为“ SimFunction”的所有构造型操作,然后生成类似于以下代码:

函数LimitValue

输入实数pMin;

输入实数pMax;

输入实数p;

输出Real pLim;

算法

pLim:=

如果p> pMax,则

最大值

否则,如果p <pMin,则

最小

其他

;

结束LimitValue;

价值分配

该图显示了一个称为“力=质量*加速度”的简单模型。

Block Definition diagram, SysML System Simulation in Sparx Systems Enterprise Architect

  • 使用属性“ a”,“ f”和“ m”以及一个约束属性“ e1”(其类型为约束块“ F_Formula”)对“ FMA”块进行建模
  • 块“ FMA”的属性没有设置任何初始值,并且属性“ a”,“ f”和“ m”都是可变的,因此它们的值更改取决于模拟它们的环境
  • 创建一个块“ FMA_Test”作为SysMLSimModel并添加属性“ fma1”以测试块“ FMA”的行为
  • 将'a_value'约束为'sin(time)'
  • 将'm_value'约束为'cos(time)'
  • 绘制分配连接器以将环境中的值分配给模型“ FMA”
Internal Block diagram in SysML System Simulation in Sparx Systems Enterprise Architect
  • 选中“ fma1.a”,“ fma1.m”和“ fma1.f”的“绘图属性”复选框
  • 单击求解按钮以模拟模型

包装和进口

SysMLSimConfiguration工件收集包的元素(例如,块,约束块和值类型)。如果模拟依赖于此Package不拥有的元素(例如可重用库),则Enterprise Architect在Package元素之间提供一个Import连接器来满足此要求。

在电路示例中,工件被配置为“电气电路”包,其中包含几乎所有仿真所需的元素。但是,某些属性被键入值类型,例如“电压”,“电流”和“电阻”,它们在多个SysML模型中通常使用,因此被放置在各个SysML模型外部的名为“ CommonlyUsedTypes”的程序包中。如果使用导入连接器导入此程序包,则导入的程序包中的所有元素将显示在SysMLSim配置管理器中。

学到更多