simulink stateflow 状态机

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、基操
  • 二、stateflow 数据
  • 三、chart动作
  • 四、chart的执行
  • 五、flow chart / junction
  • 六、状态机中的函数 Stateflow Functions
  • 七、chart层次结构
  • 八、案例——吸尘器机器人的驱动模式


前言


一、基操

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

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

  3. transition上的数字代表执行顺序,选中transition后在toolstrip -> Execution Order可更改执行顺序
    在transition上可进行 EventName [Condition] {Action} 的操作
    simulink stateflow 状态机_第1张图片

  4. 下图的状态机中junction不属于状态,只负责条件的跳转,可用于实现类似if-else的结构
    after(N, sec)为EventName
    – Milliseconds : msec
    – Microseconds: usec
    – Simulation time steps: tick
    simulink stateflow 状态机_第2张图片

  5. Default transition不能有任何的Event [Conditon]
    simulink stateflow 状态机_第3张图片

二、stateflow 数据

  1. 打开位置
    simulink stateflow 状态机_第4张图片

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

  3. 在Symbols Pane中rename信号后按下shift+enter应用于所有的同名信号,然后按下ctrl+shift+A自动重新调整模型排布
    simulink stateflow 状态机_第5张图片

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

三、chart动作

这里介绍两类动作:

  • 状态动作,当某一状态激活时执行的动作
    simulink stateflow 状态机_第6张图片

    • 常用的state actions: entry, during, exit
      simulink stateflow 状态机_第7张图片
  • 条件动作,当transition条件为true时执行的动作
    simulink stateflow 状态机_第8张图片
    请添加图片描述

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

在default transition处添加condition action
体会during: 的作用
simulink stateflow 状态机_第9张图片

四、chart的执行

searchchar execution在document中

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

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

simulink stateflow 状态机_第10张图片
案例一中,存在有效的transition,当离开StateA时,x首先设为1;然后,当进入StateB后,x再设为2;
案例二中,因为没有有效的transition所以在此次时间步中,依然停留在StateA中,此时触发during state action, x = x + 1.

五、flow chart / junction

模拟if-else结构:
simulink stateflow 状态机_第11张图片

default transition必须有一条不带任何condition的通路
simulink stateflow 状态机_第12张图片

利用junction可创建数种模式

simulink stateflow 状态机_第13张图片

六、状态机中的函数 Stateflow Functions

重点介绍两类函数:

  1. 图形函数
  2. MATLAB函数

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

图形函数

  1. 创建
    请添加图片描述
    simulink stateflow 状态机_第14张图片
  2. 使用
    simulink stateflow 状态机_第15张图片

MATLAB函数

  1. 创建请添加图片描述
    simulink stateflow 状态机_第16张图片
    simulink stateflow 状态机_第17张图片
  2. 使用
    simulink stateflow 状态机_第18张图片

七、chart层次结构

simulink stateflow 状态机_第19张图片

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

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

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

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


你可能感兴趣的:(simulink,matlab,simulink)