Stateflow 原理与建模2020.5.28

三. Stateflow 原理与建模
  1. 概述
    1. 状态

      状态有2种行为,激活(active)和非激活(inactive),一旦状态被激活,则这个状态一直处于激活状态,直到退出为止。

      1. 互斥状态

        Or 两种状态不能同时激活,不能同时执行,用实线框表示,状态A 和状态B 是互斥的。

        image-20200528164935

      2. 并行状态

        And 状态并行,不是同时激活,按照一定的顺序激活执行,优先级较高的状态具有较高的次序编号,可以右键根据priority 的定义执行的次序编号

      3. 状态命名

        定义状态名称和相应的状态动作

      4. 状态切换

        选择Decomposition - Exclusive(OR)/ Parallel (AND)

      5. 状态动作

        初始为非活动状态,entry 事件激活,关键字entry 或en

        初始为活动状态,exit 事件进入非活动,关键字exit 或ex

        初始活动状态,事件没有改变活动状态- during 动作,关键字during 或du 或on

        处于活动状态,有驱动事件- on event 动作,关键字on event

        处于活动状态或其子状态处于活动状态,bind 动作,关键字 bind

    2. 迁移

      迁移+ 默认迁移

      迁移标签的优先级: 事件迁移优先条件迁移

    3. 事件

      当simulnk 的信号不止一个多输入事件时,而每个stateflow 只允许一个事件输入端口,必须要通过mux 模块组合成一个信号向量

    4. 数据对象

      model explorer 中添加,

      **local 定义的数据只能在stateflow 图表中使用;**constant 定义的数据只读常数量,在stateflow 图表的父级和子级都可以使用

    5. 条件与动作

      条件: 指定布尔表达式,使用 []

      条件动作: {}, 只要条件为真,无论条件是否有效,条件动作都会执行

    6. 连接节点

      1. 同一源状态到多个目标状态迁移

        image-20200528163809

      2. 多个源状态到单一目标状态迁移

        image-20200528163820

      3. 基于同一事件目标状态迁移

        image-20200528163815

      4. if else

        image-20200528163818

      5. for 循环

        image-20200528163824

      6. 自循环迁移

        image-20200528163827

  2. 流程图
    1. 手动流程图

      image-20200528163830

    2. 快速流程图(判断逻辑, 循环逻辑, 多条件逻辑)

      选择Patterns → Add,可以选择不同的逻辑流程图,参考车速控制例程

  3. 状态图层次

    stateflow 图表是具有层次的,允许有子状态,同样的就有超状态,,允许在不同层次状态之间存在迁移,如果迁移穿越了父状态的边界直接达到了低层次的子状态→ 超迁移

    image-20200528163832

    machine: 状态机对象,是当前模型中所有状态框图的集合,状态机对象包含stateflow的simulink 模型

    chart :状态图对象,状态图对象是状态机的子对象

    state/function/box: 3个对象可以互相包含,互相嵌套,并且也可以包含事件、数据对象、注释、迁移、连接节点。

    历史节点: 记录退出状态父状态时正处于激活的子状态,再次进入父状态时默认激活上一次的所记录的子状态。

    迁移的层次性:

  4. 并行机制
    1. 事件广播状态动作

    2. 事件广播迁移动作

    3. 事件广播条件动作

    4. 直接事件广播

    5. 隐含事件

      内置事件,不是由用户显式定义触发的,而是当状态图执行时就会自动发生的

      image-20200528163835

    6. 时间逻辑事件

    时间逻辑操作符(at,every,after 和before)分别完成相应的Boolean 运算,处理stateflow 事件的发生次数

    1. at(n, event): 当事件第n次触发
    
    2. every(n, event):当事件每触发n次后
    
    3. after (n,event): 当事件触发n 次后
    
    4. before(n, event):当事件第n 次触发
    
  5. 其他图形对象
    1. 真值表

      image-20200528163838

    2. 图形盒

      图形盒是组织图表中的状态、函数等其他对象的图形对象,图形盒不能定义every、during、和exit 动作,也不能定义来自或迁移至图形盒的迁移,可以在图形盒内部定义状态的迁移

      创建在图形盒内部的本地数据对象只能被图形盒内部包含的对象使用,可以在模型浏览器中添加相应的输入/输出数据对象

    3. 图形函数

      图形函数是用包含stateflow 动作的流程图定义的函数,

  6. Embedded Matlab函数
    1. Embedded MATLAB M-file 的限制

      Embedded MATLAB 规范检查

      编辑指令: 在M -code 文件开头或第一行末尾加上“%# eml”,相当于一个开关,用于检查代码是否满足Embedded MATLAB 编程规范

    2. 常用命令

      emlmex:从M-code 文件产生MEX函数文件

      emlc: 从M-code 文件直接生成C代码

      eml.ceval: 集成已存在的用户C 代码到EMbedded MATLAB 模块中

      eml.extrinsic; 定义那些EMbedded MATLAB 子集不支持的Matlb 函数为外部函数,它只能被执行,不能产生嵌入式C 代码

      image-20200528163841

  7. Simulink 函数

    Simulink 函数调用类似Simulink 模型中的函数调用子系统模块,但是Simulink 函数在执行中不需要函数调用输出事件,也不需要信号线,而且不支持基于帧的输入/输出信号。

    如果Simulink 函数定义在状态内,则只有该状态及其子状态内调用该simulink 函数; 如果Simulink 函数定义在Stateflow 图表中, 则图表中的任何状态及其迁移动作、条件动作都能调用该simulink 函数

  8. Stateflow 建模实例

输出事件,也不需要信号线,而且不支持基于帧的输入/输出信号。

如果Simulink 函数定义在状态内,则只有该状态及其子状态内调用该simulink 函数; 如果Simulink 函数定义在Stateflow 图表中, 则图表中的任何状态及其迁移动作、条件动作都能调用该simulink 函数

  1. Stateflow 建模实例
  • 4
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: matlab-simulink-stateflow-targetlink指导手册.pdf 是一份关于立 matlab-simulink-stateflow-targetlink 型的指南手册。该手册主要分为三个部分:Matlab、Simulink 和 Stateflow,每个部分都详细介绍了的方法和技巧。 Matlab 部分主要讲解了 Matlab 的基本操作和函数,例如矩阵运算、数据分析和可视化等。同时,还介绍了如何在 Matlab 中创型和设置参数等。 Simulink 部分介绍了 Simulink 的基本操作和使用方法。其中包括了 Simulink 环境的配置、块的使用和参数设置等。此外,该部分还讨论了如何使用 Simulink 进行仿真和代码生成等。 Stateflow 部分详细介绍了 Stateflow 的方法和技巧。其中包括了 Stateflow 块的创和设置、状态转换、图表和状态机的设计等。 最后,handbooks 还介绍了 TargetLink 工具的使用方法。TargetLink 是一种支持自动代码生成的工具,可以将 simulink 型转换成可执行代码。该手册将介绍TargetLink 的配置和使用方法。 总之,该手册详细介绍了立 matlab-simulink-stateflow-targetlink 型所需要的全部步骤和技术,是一个非常有价值的参考资料。 ### 回答2: 《matlab-simulink-stateflow-targetlink指导手册.pdf》是一本详细介绍MATLAB、Simulink和Stateflow指导手册。其中,TargetLink指导手册也被包含在其中。 该手册适合于那些想要使用MATLAB型、进行仿真和生成代码的工程师和科学家。本手册详细介绍了MATLAB、Simulink和Stateflow的各种应用及其使用方法。它包含了从初步入门到高级应用的内容,并提供了相关的案例和实例,以帮助读者更好地理解的基础和高级原理。 此外,TargetLink指导手册也详细介绍了从Simulink型生成嵌入式系统代码的方法,包括代码生成和代码集成等方面。它适用于在汽车行业、空间控制、通信等方面的工程师和科学家,他们需要将型快速转化为实际的嵌入式系统代码。 总之,《matlab-simulink-stateflow-targetlink指导手册.pdf》是一本非常有价值的指导手册,可以帮助工程师和科学家更好地理解Matlab、Simulink和Stateflow的基础原理,同时也从基础到高级提供了大量实例,让读者能够更好地掌握技巧,实现快速设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值