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

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

如果您要专注于实现逻辑而不担心状态的图形布局,请考虑使用状态转移表。
要了解有关创建状态转移表的详细信息,请参阅Model Bang-Bang Controller by Using a State Transition Table。
使用图
在创建图时,您通过在画布上排列表示状态和转移的图形对象来对状态机建模。如果您的逻辑需要以下各项,请考虑使用图:
可重用组件。例如,您可以在一个图中的多个位置重用代码,或在多个图中使用相同的代码。
事件驱动的工作模式。例如,当图的一个组件从不同组件接收信号时,您可以更改状态。
非线性流。例如,您可以使用循环或分支路径设计工作流。
要了解有关创建 Stateflow 图的详细信息,请按照以下步骤操作:
在教程中,您构建一个可充电电池系统。该系统有两个电池,这两个电池包含多个工作模式,共享可重用组件,并以并行方式执行。
