我是靠谱客的博主 雪白高山,最近开发中收集的这篇文章主要介绍StateFlow 状态流对有限状态机建模,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

  • 输入事件:输入事件 SpeedUpCruise 和 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 状态流对有限状态机建模所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(132)

评论列表共有 0 条评论

立即
投稿
返回
顶部