Stateflow中的转换动作和条件动作

问题描述 投票:0回答:3

在下面的两个状态图中,第一个从StateA移到StateD时具有要执行的动作,即。 / {z = 5};第二个必须执行动作{z = 5};我了解这是一个过渡动作,但我无法理解这两个过渡之间有什么区别

enter image description here

enter image description here

matlab charts simulink statechart stateflow
3个回答
1
投票

请参阅@ am304提供的链接以获取特定信息,但要简要介绍,

  • 在您的第一张图片中,您有一个Transition Action,它会在发生过渡时执行(并且[after任何状态退出操作-如果您有State A,则有此操作,

    ]]] >
  • 在您的第二张图像中,您有一个Condition Action,当确定与转换相关联的任何条件为true时执行。您没有任何明确的条件(即没有e1[cond1]{z = 5}之类的条件),因此当发生任何事件时,该条件就被视为正确。即使未进行转换,此操作也将执行(即,它仅取决于条件。)这意味着它将在任何状态退出操作(如果您对State A进行任何操作)下发生[[[before

  • )。 )鉴于以上情况,在您的特定情况下(即State A没有退出操作,并且转换没有条件),这两个结果相同。

0
投票
“转移动作” /z=5;等于目的地状态entry: z=5;的“进入动作”。如果您有多个目标状态,但想根据先前的状态和许多其他逻辑(在您的示例中未设置)来设置值,则它可能看起来像是一种“优雅”的解决方案。

0
投票
条件条件一经评估为真,但在确定转换目标有效之前,将执行条件动作。如果未指定任何条件,则隐含条件的计算结果为true,并执行条件操作。过渡动作仅在采用完整的过渡路径之后才执行。它们在确定转换目标有效之后执行,并且条件(如果指定)为true。
© www.soinside.com 2019 - 2024. All rights reserved.