主要内容

广播本地事件以同步并行状态

A.本地事件是发生在状态流中的事件吗®图表和仅在图表中可见。这种类型的事件允许同一图表中的并行(和)状态彼此同步,以便一种状态下的操作触发另一种状态下的操作。一个图表中的操作无法将本地事件广播到另一个图表中的状态。要定义本地事件,请执行以下操作:

  1. 将事件添加到状态流程图中,如中所述在图表中定义事件

  2. 设定范围属性的事件地方的

MATLAB中的独立状态流程图不支持本地事金宝app件®. 有关详细信息,请参阅通过广播事件同步模型组件

当地广播事件

A.定向事件广播使用操作符将本地事件从一个状态直接发送到另一个状态发送:

发送(event_name state_name)
event_name是一项本地活动,并且州名是一个接受国。本地事件直接广播到接收状态及其任何子状态。本地事件必须对发送状态和接收状态都可见。在事件广播期间,接收状态必须处于活动状态。

例如,此图表包含两个平行(和)状态,A.B. 本地事件E_one属于图表,对两个州都可见。在国家A.即从基态的转变A1对亚态A2使用窗体的定向事件广播发送(E_1,B)发送本地事件E_oneB. 在里面B时,事件触发从子状态的转换地下一层对亚态地下二层.因此,在A.B它们是同步的。有关此示例语义的更多信息,请参见使用发送的定向事件广播

使用定向事件广播同步两个并行(和)状态的子状态的状态流程图。

这个州名参数可以包含状态的完整层次结构路径。例如,如果状态A.包含状态A1,则可以发送事件EA1通过本次广播:

发送(E,A.A1)

提示

不要将图表名称包含在状态的完整层次结构路径中。

在事件广播中使用限定的事件名称

要广播发送状态不可见的本地事件,请使用运算符发送使用限定的事件名称:

发送(状态\名称。事件\名称)
event_name是接收国拥有的本地事件州名. 本地事件直接广播到接收状态及其任何子状态。本地事件对接收状态可见,但对发送状态不可见。在事件广播期间,接收状态必须处于活动状态。

例如,此图表包含两个平行(和)状态,A.B. 本地事件E_one属于国家B并且只对该州可见。处于状态A.即从基态的转变A1对亚态A2使用窗体的定向事件广播发送(B.E_one)发送本地事件E_oneB. 在里面B时,事件触发从子状态的转换地下一层对亚态地下二层.因此,在A.B它们是同步的。有关此示例语义的更多信息,请参见使用限定事件名称进行定向事件广播

使用定向事件广播同步两个并行(和)状态的子状态的状态流程图。广播使用限定事件名称B.E_one。

这个州名参数可以包括到接收状态的完整层次结构路径。请勿在状态的完整路径名中使用图表名称。例如,假设状态A.包含状态A1,而且A1负责本地活动E.你可以发送事件EA1通过本次广播:

发送(A.A1.E)

无向事件广播

无向事件广播通过将事件名称用作条件操作,将本地事件发送到其可见的所有状态:

event_name;

或者打电话给接线员发送在不指定接收国的情况下:

发送(event_name)
event_name是发送状态可见的本地事件。

如果可能的话,使用有向事件广播而不是无向事件广播。有向事件广播防止了模拟过程中不必要的递归,提高了生成代码的效率。有关更多信息,请参见避免图表中不必要的递归

用于检测无向本地事件广播的诊断

在模拟过程中,状态流程图可以检测无向本地事件广播。要控制诊断操作的级别,请打开“配置参数”对话框。在诊断学>状态流窗格,用于无向事件广播诊断,您可以选择没有一个,警告错误.默认设置为警告. 有关详细信息,请参阅无向事件广播(金宝appSimulink)

另见

相关的话题