模型有限状态机
Stateflow®图形化编程环境是基于什么有限状态机.使用Stateflow,您可以测试和调试您的设计,考虑不同的模拟场景,并从状态机生成代码。
有限状态机是动态系统的表示,它从一种操作模式(状态)转换到另一种。状态机:
可以作为复杂软件设计过程的高级起点。
使您能够专注于操作模式以及从一个模式转换到下一个模式所需的条件。
帮助您设计模型,即使在模型复杂性增加的情况下也能保持清晰和简洁。
控制系统设计严重依赖于状态机来管理复杂的逻辑。应用包括设计飞机、汽车和机器人控制系统。
的例子Stateflow图表
在状态流图中,您组合状态、转换和数据来实现有限状态机。此状态流程图展示了汽车四速自动变速器系统中换挡逻辑的简化模型。图表用状态表示每个齿轮位置,显示为矩形标记第一个
,第二个
,第三
,或第四
.就像它们所代表的齿轮一样,这些状态是排他的,所以一次只有一个状态是活动的。
图左侧的箭头表示默认转换,并指示第一个变为活动的状态。执行图表时,此状态将在画布上高亮显示。其他箭头表示状态之间可能的转换。要定义状态机的动态,您可以将每个转换与布尔条件或触发器事件关联起来。例如,这个图表监视汽车的速度,并在速度超过固定阈值时切换到不同的档位。在模拟过程中,图表中的高亮显示会随着不同状态的激活而变化。
这个图表提供了一个简单的设计,忽略了发动机转速和扭矩等重要因素。通过将此状态流图与MATLAB中的其他组件链接起来,您可以构建一个更全面、更真实的模型®或仿真软件®.下面的例子描述了三种可能的方法。
作为MATLAB对象执行图表
这个例子展示了一个自动传输系统的修改版本,它包含了状态层次结构、时序逻辑和输入事件。
层次结构:这个图表由一个超级国家组成
gear_logic
这围绕着前面示例中的四速自动变速器图表。这个超状态控制着汽车的速度和加速度。在执行期间,gear_logic
总是活跃的。时序逻辑:在这个州
gear_logic
,动作在每一个(0.25秒)
决定汽车的速度。操作员每一个
创建一个MATLAB定时器,执行图表并更新图表数据速度
每0.25秒。输入事件:输入事件
加速
,巡航
,经济放缓
重置图表数据的值δ
.这些数据决定了汽车在每个执行步骤中是加速还是保持速度。
您可以直接通过命令窗口或使用脚本在MATLAB中作为对象执行此图表。您还可以编写MATLAB应用程序,通过图形用户界面控制图表的状态。例如,当您单击按钮时,此用户界面向图表发送输入事件。图中为MATLAB函数小部件
控制接口上的仪表和灯的值。要开始这个示例,请在App Designer工具栏中单击运行.示例将继续运行,直到关闭用户界面窗口。
或者,在“状态流编辑器”中状态图选项卡上,单击运行.控制汽车的速度,在符号窗格中,使用加速,经济放缓,巡航按钮。若要停止示例,请单击停止.
有关将状态流程图作为MATLAB对象执行的详细信息,请参见MATLAB执行.
将图表模拟为带有本地事件的Simulink块
这个例子为自动变速器系统提供了一个更复杂的设计。状态流图在Simulink模型中显示为块。模型中的其他块表示相关的汽车组件。图表通过输入和输出连接共享数据与其他块进行接口。要打开图表,请单击工具左下角的箭头shift_logic
块。
此图表结合了状态层次结构、并行性、活动状态数据、本地事件和时间逻辑。
层次结构:国家
gear_state
包含一个修改版本的四速自动变速箱图表。国家selection_state
包含表示稳定状态、上升和下降运行模式的次状态。当环境需要切换到更高或更低的档位时,这些状态就会变得活跃。并行性:平行状态
gear_state
而且selection_state
显示为带有虚线边界的矩形。这些状态同时运行,即使其中的基态开启和关闭。活动状态数据:输出值
齿轮
反映模拟过程中齿轮的选择。图表从中的活动子状态生成此值gear_state
.当地的事件:这个图表使用本地事件来代替布尔条件
向上
而且下来
触发齿轮之间的转换。这些事件起源于发送
命令selection_state
当车速超出所选档位的工作范围时。Simulink函数calc_th
根据所选齿轮和发动机转速确定操作范围的边界值。时序逻辑:为了防止快速连续换挡,
selection_state
使用时间逻辑运算符后
延迟广播向上
而且下来
事件。只有当需要换挡的时间超过预定时间时,国家才会广播其中一个事件TWAIT
.
运行模型的模拟:
双击用户输入块。在“信号编辑器”对话框中,从配置文件中选择预定义的制动-油门配置文件活跃的场景列表。默认的概要文件是
通过操作
.点击运行.在Stateflow Editor中,图表动画突出显示模拟期间的活动状态。减慢动画,在调试选项卡上,选择
慢
从动画速度下拉列表。在Scope块中,检查模拟的结果。每个示波器在模拟过程中显示其输入信号的图形。
将图表模拟为具有时态条件的Simulink块
这个例子为汽车中的传动系统建模提供了另一种选择。状态流图在Simulink模型中显示为块。模型中的其他块表示相关的汽车组件。图表通过输入和输出连接共享数据与其他块进行接口。要打开图表,请单击工具左下角的箭头Gear_logic
块。
这个图表结合了状态层次结构、活动状态数据和时间逻辑。
层次结构:该模型将四速自动变速器图置于超状态
齿轮
.超级状态监测车辆和发动机的速度,并触发档位变化。状态齿轮左上角列出的动作决定了所选齿轮的操作阈值和布尔条件的值向上
而且下来
.标签恩,杜
指示在状态首次变为活动时执行状态操作(在
=条目
),并且在状态处于活动状态时的每个后续时间步骤(杜
=在
).活动状态数据:输出值
齿轮
反映模拟过程中齿轮的选择。图表从中的活动子状态生成此值齿轮
.时序逻辑:为了防止快速连续换挡,布尔条件
向上
而且下来
使用时间逻辑运算符持续时间
控制齿轮之间的转换。当汽车的速度保持在所选档位的操作范围之外超过预定时间时,条件是有效的TWAIT
(以秒计)。
运行模型的模拟:
双击用户输入块。在“信号编辑器”对话框中,从配置文件中选择预定义的制动-油门配置文件活跃的场景列表。默认的概要文件是
通过操作
.点击运行.在Stateflow Editor中,图表动画突出显示模拟期间的活动状态。减慢动画,在调试选项卡上,选择
慢
从动画速度下拉列表。在Scope块中,检查模拟的结果。该范围显示图形的齿轮选择期间模拟。