建模指南Stateflow图表
使用这些指导方针可以有效地为带有事件、状态和转换的图表建模。
对输入事件使用相同数据类型的信号
当您使用多个输入事件来触发图表时,请验证所有输入信号是否使用相同的数据类型。否则,模拟将停止并显示错误消息。有关更多信息,请参见输入事件允许的数据类型。
使用默认转换将第一个状态标记为独占(OR)状态中的活动状态
这个准则防止在图表执行过程中出现状态不一致错误。
尽可能使用条件动作而不是转换动作
条件操作在条件求值为true时立即执行。在转换路径完成之前,转换操作不会执行到终止连接或状态。
除非执行延迟是必要的,否则请使用条件操作而不是转换操作。
使用显式排序来控制一组传出转换的测试顺序
你可以指定显式的或隐式的转换的排序。默认情况下,图表使用显式排序。如果切换到隐式排序,则当图形对象移动时,转换测试顺序可能会更改。
在流程图中验证预期的回溯行为
如果图表包含意外的回溯行为,则会出现一条警告消息,说明如何避免该问题。有关更多信息,请参见创建流程图的最佳实践。
使用超状态来封装共享相同状态操作的子状态
当您有多个执行相同状态操作的排他(OR)状态时,请将这些状态分组在一个超状态中,并在该级别定义状态操作。
该准则允许重用应用于多个子状态的状态操作。您只需编写一次状态操作,而不是在每个子状态中分别编写它们。
请注意
您不能将框用于此目的,因为框不支持状态操作。万博1manbetx
使用MATLAB在图表中执行数值计算的函数
MATLAB®函数比图形函数、真值表或Simulink更擅长处理数值计算万博1manbetx®功能。
在函数签名中使用描述性名称
描述性函数名可以增强图表对象的可读性。
使用历史结点来记录状态历史
如果重新进入具有排他(OR)分解的状态依赖于先前活动的子状态,则使用历史连接。当图表退出活动子状态时,这种类型的结记录活动子状态。如果您没有记录先前活动的子状态,则会发生默认转换,并且错误的子状态可能在状态重新进入时变为活动状态。
不要在并行(AND)分解的状态下使用历史连接
该准则可防止解析错误。由于同一层次上的所有平行状态同时处于活动状态,因此历史连接没有意义。
使用显式排序来控制并行(AND)状态的执行顺序
你可以指定显式的或隐式的平行状态的排序。默认情况下,图表使用显式排序。如果您切换到隐式排序,则执行顺序可以在并行状态移动时更改。