模型有限状态机
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
当汽车的速度超出所选档位的工作范围时。仿真软件的功能calc_th
根据所选齿轮和发动机转速确定工作范围的边界值。时序逻辑:为了防止换挡频繁,
selection_state
使用时态逻辑运算符后
延迟广播向上
而且下来
事件。只有当需要换挡的时间超过预定时间时,国家才会广播这些事件中的一个TWAIT
.
要运行模型的模拟:
双击用户输入块。在“信号编辑器”对话框中,从活跃的场景列表。默认配置文件为
通过操作
.点击运行.在Stateflow Editor中,图表动画突出显示模拟期间的活动状态。减慢动画速度,在调试选项卡上,选择
慢
从动画速度下拉列表。在Scope块中,检查模拟的结果。每个作用域在模拟过程中显示其输入信号的图形。
将图表模拟为具有时态条件的Simulink块
这个示例为建模汽车中的传动系统提供了另一种选择。状态流图在Simulink模型中以块的形式出现。模型中的其他块表示相关的汽车组件。图表通过输入和输出连接共享数据,从而与其他块进行接口。控件左下角的箭头可打开图表Gear_logic
块。
此图表结合了状态层次结构、活动状态数据和时间逻辑。
层次结构:该模型将四速自动变速器图表置于超状态
齿轮
.超状态监测车辆和发动机的速度,并触发换挡。列在状态齿轮左上角的操作决定了所选齿轮的操作阈值和布尔条件的值向上
而且下来
.标签恩,杜
指示在状态第一次激活时执行状态操作(在
=条目
)和在状态为活动时的每个后续时间步(杜
=在
).活动状态数据:输出值
齿轮
反映模拟过程中齿轮的选择。的活动子状态生成该值齿轮
.时序逻辑:为了防止快速连续换挡,布尔条件
向上
而且下来
使用时态逻辑运算符持续时间
控制齿轮之间的转换。当汽车的速度超出所选齿轮的工作范围超过预定的时间时,这些条件是有效的TWAIT
(以秒为单位)。
要运行模型的模拟:
双击用户输入块。在“信号编辑器”对话框中,从活跃的场景列表。默认配置文件为
通过操作
.点击运行.在Stateflow Editor中,图表动画突出显示模拟期间的活动状态。减慢动画速度,在调试选项卡上,选择
慢
从动画速度下拉列表。在Scope块中,检查模拟的结果。该范围显示在模拟过程中选择的齿轮的图形。