概述
MATLAB、Stateflow、Simulink三者关系
1.内容:状态转换图、流程图、状态转换表、流程图
2.作用:描述MATLAB算法和Simulink模型,能够设计并开发监控,任务调度,故障管理,通信协议,用户界面和混合系统。
3.说明:对组合和顺序决策逻辑建模,这些模型可以作为simulink模型中的块进行模拟,也可以作为MATLAB中对的对象执行。
对有限状态机建模
状态流是一个基于有限状态机的图形化编程环境。
使用 Stateflow,可以测试和调试您的设计,考虑不同的仿真场景,并从状态机生成代码。
有限状态机是从一种操作模式(状态)转换到另一种操作模式(状态)的动态系统的表示。
状态机:
-
作为复杂软件设计过程的高级起点。
-
能够专注于操作模式以及从一种模式进入下一种模式所需的条件。
-
设计出清晰简洁的模型,即使模型复杂程度增加也是如此。
将图表作为 MATLAB 对象执行
状态层次结构、时序逻辑和输入事件
-
层次结构:该图包含一个父状态
gear_logic
,其中包含了上例中的四速自动变速器图。此父状态控制车辆的速度和加速度。在执行期间,gear_logic
始终处于激活状态。 -
时序逻辑:在
gear_logic
状态中,动作on every(0.25,sec)
决定车速。运算符every
创建一个 MATLAB 计时器,它执行图并每隔 0.25 秒更新一次图数据speed
。 -
输入事件:输入事件
SpeedUp
、Cruise
和SlowDown
重置图数据delta
的值。此数据决定汽车在每个执行步中是加速还是保持其速度。
将图作为具有本地事件的 Simulink 模块进行仿真
状态层次结构、并行机制、激活状态数据、本地事件和时序逻辑
-
层次结构:状态
gear_state
包含四速自动变速器图的一个修改版本。状态selection_state
包含代表稳定状态、升挡和降挡工作模式的子状态。当需要升挡或降挡时,这些子状态将被激活。 -
并行机制:并行状态
gear_state
和selection_state
显示为带有虚线边框的矩形。这些状态同时工作,即使其内部的子状态存在互斥也是如此。 -
激活状态数据:输出值
gear
反映仿真过程中挡位的选择。图会根据gear_state
中的激活子状态生成此值。 -
本地事件:此图不使用布尔条件,而是使用本地事件
UP
和DOWN
触发挡位之间的转移。这些事件由selection_state
中的send
命令触发,当车速超出所选挡位的工作范围时会发出这些命令。Simulink 函数calc_th
根据选择的挡位和发动机转速确定工作范围的边界值。 -
时序逻辑:为了防止连续快速换挡,
selection_state
使用时序逻辑运算符after
来延迟UP
和DOWN
事件的广播。仅当所需的换挡时间超过某个预定时间TWAIT
时,状态才会广播这些事件之一。
将图作为带时序条件的 Simulink 模块进行仿真
该图合并了状态层次结构、激活状态数据和时序逻辑。
-
层次结构:此模型将四速自动变速器图置于父状态
gear
中。该父状态监控车辆速度和发动机转速,并触发换挡。状态 gear 左上角列出的动作确定了所选挡位的运行阈值以及布尔条件up
和down
的值。标签en,du
指示在状态第一次被激活 (en
=entry
) 和在状态已激活时的每个后续时间步 (du
=during
) 执行状态动作。 -
激活状态数据:输出值
gear
反映仿真过程中挡位的选择。图会根据gear
中的激活子状态生成此值。 -
时序逻辑:为了防止连续快速换挡,布尔条件
up
和down
使用时序逻辑运算符duration
来控制挡位之间的转移。当车速保持在所选挡位工作范围之外超过某个预定时间TWAIT
(以秒为单位测量)时,条件有效。
最后
以上就是雪白高山为你收集整理的StateFlow 状态流对有限状态机建模的全部内容,希望文章能够帮你解决StateFlow 状态流对有限状态机建模所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复