在 Stateflow 中设计有限状态机
Stateflow® 是一种图形化编程环境,允许您使用有限状态机在 Simulink® 模型中创建控制逻辑。此外,您可以:
跨模型重用和共享逻辑。
使用 MATLAB® 代码或 Simulink 子系统作为状态机中的函数。
通过实时动画可视化逻辑。
通过使用断点和记录仿真数据来调试逻辑。
Stateflow 还支持真值表和流程图。有关详细信息,请参阅使用真值表对组合逻辑建模和在 Stateflow 中创建流程图。
使用状态和转移定义逻辑
有限状态机将系统的工作模式建模为状态。状态可以修改数据、执行代码和事件,或包含其他状态。
有限状态机以一系列时间步执行。在每个时间步期间,每个状态或者处于激活状态或者处于非激活状态。激活状态可以执行动作或运行代码,而非激活状态则不可以。随着状态机中条件的变化,激活状态也随之变化。
以汽车中的自动变速器为例,其中挡位处于工作模式。以下动画图像将挡位建模为状态,由矩形表示。随着车速的变化,变速器会换挡,由蓝色高亮表示。

在状态机中,转移表示从一个状态到另一个状态的路径。例如,自动变速器系统可以从一挡换到二挡,从二挡换到一挡或三挡等。
该动画图像将变速器系统中的转移表示为状态之间的箭头。每个转移有一个条件,该条件确定激活状态何时变化。例如,当车速变得大于 10 时,汽车从一挡换到二挡。
使用状态转移表和图对状态机建模
使用 Stateflow,您可以将状态机建模为 State Transition Table 或 Chart 模块。
使用状态转移表
状态转移表将状态和转移表示为表中的条目。例如,此状态转移表将自动变速器的挡位建模为状态。

如果您要专注于实现逻辑而不担心状态的图形布局,请考虑使用状态转移表。
有关创建状态转移表的教程,请参阅Model Rechargeable Battery System by Using a State Transition Table。
使用图
当您创建图时,您通过在画布上排列表示状态和转移的矩形和箭头对状态机进行建模,如上述动画所示。如果您的设计需要以下功能,请考虑使用图:
可重用组件。例如,您可以在一个图中的多个位置重用状态,或在多个图中使用相同的状态。
事件驱动的工作模式。例如,当图的一个组件从不同组件接收信号时,您可以更改状态。
非线性流。例如,您可以设计使用循环或分支路径的逻辑流。
有关创建 Stateflow 图的教程,请参阅Model Rechargeable Battery System as Chart。