主要内容

建立有限状态机模型Stateflow图表

一个有限状态机是事件驱动的反应式系统的表示,当定义更改的条件为真时,该系统将从一种操作模式转换到另一种操作模式。例如,您可以使用状态机来表示汽车的自动变速器。变速器有停车、倒车、空挡、驱动和低速等工作模式。当驾驶员移动换挡时,系统从一种工作模式过渡到另一种工作模式。

类型的Stateflow

要表示有限状态机的输入、输出和操作模式之间的关系,可以添加Stateflow®块到Simulink®模型来创建状态转换图、状态转换表和真值表:

  • 一个图表是基于状态转换图的有限状态机的图形表示。在状态流图中,状态和转换构成了顺序逻辑系统的基本构建块。状态对应于操作模式,转换表示状态之间的路径。有关更多信息,请参见通过使用状态表示操作模式而且运行模式转换

  • 一个状态转换表表示表式顺序模态逻辑的有限状态机。您可以使用状态转换表,而不是在Stateflow图中绘制状态和转换,以一种简洁、紧凑的格式为状态机建模,这种格式需要对图形对象进行最少的维护。有关更多信息,请参见状态流中的状态转换表

  • 一个真值表以表格格式实现组合逻辑设计。您可以使用真值表块为故障检测和管理以及模式切换的决策建模。有关更多信息,请参见使用真值表来建模组合逻辑

实现控制逻辑、状态流图和状态转换表模块可以使用MATLAB®或C作为动作语言。真值表块只使用MATLAB作为动作语言。有关更多信息,请参见作为动作语言的MATLAB和C的语法差异

提示

要将状态机编程的优点与MATLAB的完整功能结合起来,可以创建一个独立的Stateflow图。您可以直接通过命令窗口或使用脚本将独立图表作为MATLAB对象执行。您还可以编写一个MATLAB应用程序,通过图形用户界面控制图表的状态。有关更多信息,请参见创建状态流图执行作为MATLAB对象

项目是Stateflow图表

创建一个建模有限状态机的状态流图:

  1. 通过调用函数创建一个包含空状态流图的Simulink模型sfnew

    sfnew

  2. 要打开状态流编辑器,双击图表块。有关使用状态流编辑器的更多信息,请参见Stateflow编辑操作

  3. 对于系统中的每个操作模式,绘制一个状态并通过添加状态标签来实现状态操作,如通过使用状态表示操作模式

  4. 要表示状态之间的流逻辑的方向,绘制转换并通过添加转换标签实现转换条件,如中所述运行模式转换

  5. 如果您的系统有输入或输出,或依赖于任何状态变量,请添加输入、输出和本地数据,如中所述添加Stateflow数据

  6. 如果系统对事件触发器作出反应,或者必须触发图表或模型中的其他块中的操作,请添加输入、输出或本地事件,如中所述通过广播事件同步模型组件

  7. 如果图表有复杂的状态操作或转换条件,请向图表中添加可重用函数。通过从以下函数中选择,使用对状态动作或转换条件中的计算类型最自然的函数格式:

    或者,您也可以编写自己的C或c++代码与图表集成。有关更多信息,请参见在状态流图中重用自定义代码

  8. 使用输入和输出端口将图表连接到Simulink模型中的其他块。

  9. 要模拟模型,单击运行.在模拟过程中,Stateflow Editor通过图表动画突出显示活动状态和转换。

有关说明此工作流程的教程,请参见构造并运行状态流程图

参考文献

Harel[1],大卫。“状态图:复杂系统的视觉形式主义。”计算机程序设计学8、3号(1987年6月):231 - 74。

哈特利,德里克J.和Imtiaz A. Pirbhai。实时系统规范的策略。纽约,纽约州:多塞特出版社,1988年。

另请参阅

|||

相关的话题

Baidu
map