事件在状态流程图中的工作方式
什么是事件?
事件是一个Stateflow®对象,它可以触发以下对象中一个动作:
Simulink®触发子系统
Simulink函数调用子系统
状态流程图
何时使用事件
当你想:
激活Simulink触发的子系统
激活Simulink函数调用子系统
在状态流程图的并行状态中触发操作
尽管Stateflow软件不限制图表中可以使用的事件数量,但底层C编译器对生成的代码强制执行理论上的(2^31)-1事件限制。
我什么时候应该使用条件而不是事件?
当您希望:
1.表示条件语句,例如,x<1或x==0
2.表示Simulink块的输入值变化。
范围 | 描述 |
---|---|
local | 该事件可以发生在Stateflow计算机中的任何位置,但仅在父对象(以及父对象的子对象)中可见。 |
Input from Simulink | 发生在Simulink块中但被广播到状态流程图的事件 |
Output to Simulink | 发生在状态流程图中但被广播到Simulink块的事件。 |
隐式事件是在图表执行期间自动广播的内置事件。
哪里可以使用事件
chart | 图表以及所有状态和子状态 |
---|---|
subchart | 子部分以及所有状态和子状态 |
state | 状态和所有子状态 |
用于检测未使用事件的诊断
如果图表中有未使用的事件,则在模拟过程中会显示一条警告消息,其中包含可以删除的事件列表。通过删除对模拟没有影响的对象,可以减小模型的大小。此诊断检查Stateflow事件的使用情况,以下类型除外:
函数调用输入事件
边沿触发的输入事件
选择要删除的事件后,会出现一个对话框来确认您的选择。在此对话框中,您可以指定在不进行确认的情况下进行其他删除。如果阻止出现确认对话框,则可以随时通过在命令提示符下键入以下内容重新启用该对话框:
sfpref(‘showDeleteUnusedConfGui’, 1)
您可以在“Model Configuration Parameters ”对话框的Diagnostics > Stateflow窗格中控制未使用事件的诊断操作级别。