前页 | 后页 |
加湿器示例
在本例中,我们通过创建室内加湿器的 SysPhS模型来说明信号流和状态机的使用。本例中的信号反映了物理量,但不同于物理物质意义上的物理相互作用与流速和电位。
完成加湿器示例是一组复杂的 SysML 模型,但它包含需要使用 MATLAB 的状态流进行仿真的部分。我们将使用示例的这一部分来完成 SysML状态机的使用,并查看它是如何在 MATLAB 中使用状态流以及在运行中配置和运行的。
先决条件
运行此模拟需要:
- OpenModelica 或
- MATLAB 的 Simulink 和 StateFlow
概述
完成模型中提供了完成模拟WebEA 。请参阅本主题末尾了解更多信息下的链接。
SysML状态机图为:
对于 MATLAB,生成的状态流图包括:
对于 Modelica,生成的图表如下所示:
创建 SysML状态机模型
此表显示了我们如何构建 SysML状态机模型来表示开关状态。
注记:完整的 SysML状态机特征仅在 MATLAB 的状态流和 Modelica 中得到部分支持。因此,为了在这些产品中创建用于仿真的状态图, Enterprise Architect的状态机模型中使用的连接器类型和对象类型需要仅包含状态流和 Modelica 中支持的相应特征。
节 |
描述 |
---|---|
块 |
在 SysML 中,使用 SysPhS,核心加湿器组件由块表示。对于这个例子,我们正在创建状态机模拟,聚焦在“控件”块上。块定义图 (BDD) 称为“加湿器组件”,其中包括“控件”块,它只是定义加湿器的 BDD 列表中的一个。 '控件'块下有状态机'ControlStateMachine'作为复合图;这在本主题开头的概述部分的第一个图表中进行了说明。 “控件”块是定义加湿器控制的端口和端口常数的位置。端口的类型为端口,即信号流。 |
公共类型 |
作为所有 SysPhS 模型的启动器,您需要确保 SysPhS 常用类型已加载到存储库中,并使用包'导入'连接器在新模型中引用。有关更多信息,请参阅参考 SysPhS 库 帮助话题。 |
端口 |
用于端口的值类型在端口仿真库中预先定义。使用的密钥类型是 RealInSignal ValueType (RealInSignalElement)。这可以作为端口拖到块上,然后重命名。 作为在端口上设置的示例,在本例中为fanPowerOut端口块,您将一个 RealInSignalElement 拖动到一个 RealInSignalElement 上并将其定义为一个端口块。 注记:
|
创建状态机 |
将状态机定义为块的复合子图:
|
创建状态和转换 |
在子状态机图中,添加初始元素、四个状态和一个终点元素。然后适当地命名它们。 注记:选中图表时按空格键,可以从上下文菜单中选择一个初始object ,然后使用快速链接器添加剩余的对象。 |
转移 |
状态之间的转换包含它们的守卫中的条件。这些条件在属性窗口的“约束”选项卡中定义。 使用的变量是“控件”块的控件常数和端口的。请参阅前面的Blocks行中的图像。 |
行为 |
每个状态都包含一个定义风扇模式和状态的脚本。这些脚本在“Entry”操作中设置。 要为此编辑脚本,请选择根状态机并按 Alt+7。 |
配置仿真行为
此表显示了 SysMLSim 配置的详细步骤。
节 |
行动 |
---|---|
创建一个工件 |
|
设置包 |
|
设置 Modelica 或 Simulink |
在顶部下拉列表中,选择要使用的模拟工具:
|
设置块为仿真 |
|
选择要绘制的属性 |
您现在可以选择要绘制的属性:
|
运行仿真
在“仿真”页面中,单击求解按钮。这显示了在以下位置生成的图的示例:
模型
Simulink
注记:由于 Simulink 模型的默认精度对于此特定示例来说不够,因此 Simulink 中的输出看起来不同。可以通过直接在 Simulink 中打开生成的文件来修改 Simulink 设置。
在 Modelica 或 Simulink 中视图模型
要在外部应用程序、Modelica 或 Simulink 中查看生成的模型,请参阅查看帮助或 Simulink视图的模型帮助主题,其中包含调试生成代码中任何问题的提示。