主要内容

Stateflow 图的建模规范

使用这些规范可以使用事件、状态和转移高效地为图建模。

对输入事件使用相同数据类型的信号

当使用多个输入事件触发一个图时,请验证所有输入信号都使用相同的数据类型。否则,停止仿真并显示一条错误消息。有关详细信息,请参阅输入事件允许的数据类型

使用默认转移将第一个状态标记为互斥 (OR) 状态中的激活状态

此规范可防止图执行期间出现状态不一致错误。

尽可能使用条件动作而不是转移动作

只要条件的计算结果为 true,条件动作会立即执行。直到转移路径完成后,转移动作才会执行到终止结点或某个状态。

除非执行延迟是必要的,否则请使用条件动作而不是转移动作。

验证流程图中的预期回溯行为

如果您的图包含意外的回溯行为,则会出现一条警告消息,其中包含如何避免该问题的说明。有关详细信息,请参阅创建流程图的最佳做法

使用父状态来包含共享相同状态动作的子状态

当您有多个执行相同状态动作的互斥 (OR) 状态时,请将这些状态组合到一个父状态中,并在该级别定义状态动作。

此规范支持重用适用于多个子状态的状态动作。您只需编写一次状态动作,而不必在每个子状态中分别编写状态动作。

注意

您无法将图框用于此目的,因为图框不支持状态动作。

使用 MATLAB 函数在图中执行数值计算

MATLAB® 函数比图形函数、真值表或 Simulink® 函数更擅长处理数值计算。

在函数签名中使用描述性名称

描述性函数名称可增强图对象的可读性。

使用历史结点记录状态历史记录

如果重新进入具有互斥 (OR) 分解的状态取决于先前激活子状态,请使用历史结点。当图退出状态时,此类型的结点记录激活子状态。如果您没有记录先前激活子状态,则会发生默认转移,并且错误的子状态可能会在状态重新进入时变为激活状态。

不要在具有并行 (AND) 分解的状态中使用历史结点

此规范可以防止编译时错误。由于处于层次结构的同一级别的所有并行状态同时处于激活状态,因此历史结点没有任何意义。