通过广播事件同步模型组件
一个事件是状态流吗®对象,该对象可以触发以下对象之一的操作:
状态流图中的并行状态
另一个状态流程图
一个金宝app仿真软件®触发或函数调用子系统
出于模拟目的,状态流图中的事件数量没有限制。然而,对于代码生成,底层C编译器强制执行2的理论限制311事件。
事件类型
一个隐式的事件是在图表执行期间广播的内置事件。这些事件是隐式的,因为您没有显式地定义或触发它们。有关更多信息,请参见使用隐式事件控制图表行为.
一个明确的事件是您显式定义的事件。显式事件可以有其中一种类型。
类型 | 描述 |
---|---|
输入事件 | 从图表外部广播到状态流图表的事件。有关更多信息,请参见通过发送输入事件激活状态流程图而且利用状态流程图设计人机界面逻辑. |
当地的活动 | 可以发生在状态流图中的任何位置,但仅在父对象及其后代对象中可见的事件。在MATLAB中的独立状态流程图中不支持本金宝app地事件®.有关更多信息,请参见广播本地事件以同步并行状态. |
输出事件 | 在状态流程图中发生但广播到Simulink块的事件。金宝appMATLAB中独立的状态流程图不支持输出事件金宝app。有关更多信息,请参见通过发送输出事件激活S金宝appimulink块. |
您可以在statflow层次结构的这些级别上定义本地事件。
层级 | 可见性 |
---|---|
图表 | 局部事件对图表及其所有状态和子状态可见。 |
子图表 | 局部事件对子图及其所有状态和子状态可见。 |
状态 | 局部事件对状态及其所有子状态可见。 |
在图表中定义事件
属性可以将事件添加到状态流图符号窗格、状态流编辑器菜单或模型资源管理器。
通过符号窗格添加事件
在建模选项卡,在设计数据中,选择符号面板.
单击创建事件图标.
在新事件的一排,在下面类型,点击图标,选择:
输入事件
当地的活动
输出事件
编辑事件的名称。
对于输入和输出事件,单击港口字段,并选择端口号。
要指定事件属性,请打开属性检查器.在符号窗格中,右键单击事件所在行并选择探索.有关更多信息,请参见设置事件的属性.
属性添加事件Stateflow编辑菜单
在Simulink模型中的状态流图中,选择与要添加的金宝app事件类型对应的菜单选项。
类型 菜单选项 输入事件 在建模选项卡,在设计数据,点击事件输入. 输出事件 在建模选项卡,在设计数据,点击事件输出. 当地的活动 在建模选项卡,在设计数据,点击当地的活动. 在“事件”对话框中,指定数据属性。有关更多信息,请参见设置事件的属性.
通过模型资源管理器添加事件
在建模选项卡,在设计数据中,选择模型浏览器.
在模型层次结构窗格中,选择statflow层次结构中要使新事件可见的对象。您选择的对象将成为新事件的父对象。
在Model Explorer菜单中,选择添加>事件.属性中显示具有默认定义的新事件内容窗格的模型资源管理器。
在事件窗格中,指定事件的属性。有关更多信息,请参见设置事件的属性.
访问事件信息Stateflow图表
您可以显示输入或本地事件的属性,或者直接从状态流图打开输出事件的目的地。右键单击包含感兴趣事件的状态或转换并选择探索.上下文菜单列出状态或转换中所有已解析符号的名称和作用域。从上下文菜单中选择一个输入或本地事件,将在Model Explorer中显示其属性。从上下文菜单中选择输出事件,打开与该事件关联的Simulink子系统或状态流图。金宝app
中使用事件的最佳实践Stateflow图表
使用发送
命令广播动作中的显式事件
要广播状态或转换操作中的本地或输出事件,请使用发送
操作符。例如,要在转换有效时广播输出事件,请避免使用事件名称作为条件操作。
{output_event;}
相反,请调用发送
操作符。
{发送(output_event);}
虽然这两个操作都是有效的,但是使用发送
运算符增强了图表的可读性,并确保显式事件不会被误认为数据。
避免使用显式事件触发条件操作
使用条件转换而不是事件,当你想:
表示条件语句,例如,
[x < 1]
或[x == 0]
.表示数据值的变化,例如,
(改变了(x))
.
避免使用隐式事件输入
检查状态活动
要检查状态活动,请使用在
运算符代替隐式事件输入
.有关更多信息,请参见使用in操作符检查状态活动.
不要在图表中混合边缘触发和函数调用输入事件
混合使用边缘触发器和函数调用的输入事件会导致编译时错误。