simulink stateflow 状态机

该文详细介绍了Stateflow的使用,包括调试设置、数据类型、状态动作、执行流程、流程图/交汇点、内置函数以及层次结构。文章通过实例探讨了如何构建和控制状态机,如在状态转换中应用条件和动作,以及如何在状态机中组织复杂逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章目录


前言


一、基操

  1. 在tooltrip中选择DEBUG,通过Animation Speed可更改动画的播放速度。
    示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

  2. 添加状态机的快捷操作
    在这里插入图片描述

  3. transition上的数字代表执行顺序,选中transition后在toolstrip -> Execution Order可更改执行顺序
    在transition上可进行 EventName [Condition] {Action} 的操作
    在这里插入图片描述

  4. 下图的状态机中junction不属于状态,只负责条件的跳转,可用于实现类似if-else的结构
    after(N, sec)为EventName
    – Milliseconds : msec
    – Microseconds: usec
    – Simulation time steps: tick
    在这里插入图片描述

  5. Default transition不能有任何的Event [Conditon]
    在这里插入图片描述

二、stateflow 数据

  1. 打开位置
    请添加图片描述

  2. 数据类型
    在这里插入图片描述逻辑数据:仅在状态机内部使用
    在这里插入图片描述输入:状态机的输入信号
    在这里插入图片描述输出:状态机输出信号
    在这里插入图片描述参数:从MATLAB工作空间中读取的常量or simulink mask parameter

  3. 在Symbols Pane中rename信号后按下shift+enter应用于所有的同名信号,然后按下ctrl+shift+A自动重新调整模型排布
    在这里插入图片描述

  4. 同时在PORT栏下可更改端口顺序

三、chart动作

这里介绍两类动作:

  • 状态动作,当某一状态激活时执行的动作
    请添加图片描述

    • 常用的state actions: entry, during, exit
      请添加图片描述
  • 条件动作,当transition条件为true时执行的动作
    请添加图片描述
    请添加图片描述

  • action language
    除了支持MATLAB外还支持C,可以搜索文档查看:
    Modify the Action Language for a Chart

在default transition处添加condition action
体会during: 的作用
在这里插入图片描述

四、chart的执行

searchchar execution在document中

状态流每个时间步执行一次。执行结果为以下二选一:

  • transition有效,变更为一个新的状态
  • transition无效,维持当前状态

请添加图片描述
案例一中,存在有效的transition,当离开StateA时,x首先设为1;然后,当进入StateB后,x再设为2;
案例二中,因为没有有效的transition所以在此次时间步中,依然停留在StateA中,此时触发during state action, x = x + 1.

五、flow chart / junction

模拟if-else结构:
请添加图片描述

default transition必须有一条不带任何condition的通路
请添加图片描述

利用junction可创建数种模式

请添加图片描述

六、状态机中的函数 Stateflow Functions

重点介绍两类函数:

  1. 图形函数
  2. MATLAB函数

其他函数可搜索 Reusable Functions in Charts
函数可在state actioncondition action中调用,如果函数的返回结果是布尔值,也可当成transition condition

图形函数

  1. 创建
    请添加图片描述
    请添加图片描述
  2. 使用
    请添加图片描述

MATLAB函数

  1. 创建请添加图片描述
    请添加图片描述
    请添加图片描述
  2. 使用
    请添加图片描述

七、chart层次结构

在这里插入图片描述

八、案例——吸尘器机器人的驱动模式

背景
使用层次模型将状态分组。在次例中,你将对吸尘器机器人的驱动逻辑进行层次化建模。机器人有两种驱动模式:docking 或 vacuuming:

  • SeekDock - 移动至充电底座人后停止
  • Vacuum - 驱动至房间的角落然后使用 zig-zag模式

因此,机器人需要两种驱动行为:移动到某处然后使用zig-zag模式。这可以通过层次结构的顶层状态实现。每个的子状态是每种特定行为的专用状态。例如,当移动到指定位置后,机器然的移动可以分为旋转、移动和停止
请添加图片描述
项目
在此项目中,你将要装配dock 和 RandomDrive模式。并且他们为父状态。然后还有个TaskComple状态,意指没有进一步的命令发送。
请添加图片描述
假设机器人的动力学模型已经内建。
请添加图片描述
bumpCount
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值