主要内容

Stateflow 中设计有限状态机

Stateflow® 提供图形化编程环境,允许您通过将系统的工作模式定义为有限状态机中的状态,在 Simulink® 模型中创建控制逻辑。此外,您可以:

  • 跨模型重用和共享逻辑。

  • 使用 MATLAB® 代码或 Simulink 子系统作为状态机中的函数。

  • 通过实时动画可视化逻辑。

  • 通过使用断点和记录仿真数据来调试逻辑。

使用状态和转移定义逻辑

有限状态机将系统的工作模式建模为状态。状态可以修改数据、执行代码和事件,或包含其他状态。

有限状态机以一系列时间步执行。在每个时间步期间,每个状态或者处于激活状态或者处于非激活状态。激活状态可能执行动作或执行代码,而非激活状态则不能。随着状态机中条件的变化,激活状态也随之变化。

以汽车中的自动变速器为例。在此动画图像中,Stateflow 图将挡位建模为状态。随着车速的变化,变速器会换挡。

Chart animation showing states and transitions activating.

在状态机中,转移表示从一个状态到另一个状态的路径。例如,自动变速器系统可以从一挡换到二挡,从二挡换到一挡或三挡等。

在上图中,Stateflow 图将变速器系统中的转移表示为状态之间的箭头。每个转移有一个条件,该条件确定激活状态何时变化。例如,当车速变得大于 10 时,汽车从一挡换到二挡。

使用状态转移表和图对状态机建模

使用 Stateflow,您可以将状态机建模为状态转移表

使用状态转移表

状态转移表将状态和转移表示为表中的条目。例如,此状态转移表具有与前一节中自动变速器图相同的功能。

State transition table that models the automatic transmission of a car.

如果您要专注于实现逻辑而不担心状态的图形布局,请考虑使用状态转移表。

要了解有关创建状态转移表的详细信息,请参阅Model Bang-Bang Controller by Using a State Transition Table

使用图

在创建图时,您通过在画布上排列表示状态和转移的图形对象来对状态机建模。如果您的逻辑需要以下各项,请考虑使用图:

  • 可重用组件。例如,您可以在一个图中的多个位置重用代码,或在多个图中使用相同的代码。

  • 事件驱动的工作模式。例如,当图的一个组件从不同组件接收信号时,您可以更改状态。

  • 非线性流。例如,您可以使用循环或分支路径设计工作流。

要了解有关创建 Stateflow 图的详细信息,请按照以下步骤操作:

在教程中,您构建一个可充电电池系统。该系统有两个电池,这两个电池包含多个工作模式,共享可重用组件,并以并行方式执行。

A chart of a rechargeable battery system with main and emergency batteries that operate in parallel. Each battery has multiple layers of hierarchy.

另请参阅

主题