预订演示
前页 后页

建模

在创建旨在呈现为状态流图的状态机图时,您有多种选择。这些包括可以使用哪些元素和连接器、状态机的放置、可以在模型中定义代码的位置以及可以使用什么格式的代码。

状态机放置

在创建要生成为状态流图的模型时,必须将状态机图放在一个SysML块下,并有一个子状态机元素,在该状态机元素下有一个状态机图。

例如本例中的“控件”有一个子状态机名称为“块”,它有一个子状态机图“ControlStateMachine”:

注记该块必须仅包含状态机图;它不应包含其他图表。

定义代码

在状态机模型中放置脚本有多种选择。这样做的关键考虑因素是:脚本的格式是什么,它可以放在哪里?

代码格式

当您编写任何有效的 SysML 代码时,它将被转换为有效的状态流代码。 SysPhS 规范将 Modelica 数学语言定义为“标准”,这是Enterprise Architect接受的状态机图中的代码片段,并将这些转换为 MATLAB/状态流等效项。有关详细信息,请参阅OMG SysPhS 规范的第 10 节。

代码放置

在状态内部并且符合UML规范,状态流支持三个标准操作:

  • 入口
  • 出口
其中每一个都可以包含代码,这些代码在状态的行为下的操作中定义。例如,这是一个条目的代码片段:

在转换中,使用代码有三个关键选项:

  • 转移
    守卫条件
  • 转移
    影响
  • 触发器
例如,这是一个转移

中定义的条件语句转移

守卫条件:

使用块属性

对于代码,可以在脚本中引用常量、端口等属性块。在端口的情况下,输入到块的详细信息是使用输入端口名称派生的,并且可以将类似的值分配给与输出端口同名的变量。

例如:

注记

这些 SysML状态机特征在状态流中不可用:

  • 深历史状态
  • 具有要在所有默认条目上使用的传出转换(即初始状态)的历史状态
  • 分叉/汇合
  • 同步
  • 连接点(只有选择-连接点才会被选择)
  • 入口/出口点
  • 引用其他状态机;状态流可以做子状态机但不能再次引用
  • 每个 SysML块只有一个状态机

学到更多