1、概述

控制对象建模——Stateflow主要的用途就是结合Simulink对控制系统进行建模和仿 真。例如对汽车发动机进行建模的时候,需要对发动机的风冷系统进行建模。此时就可以 使用 Stateflow 建立发动机温度的监控模型,模拟激活风扇、水泵等制冷设备的动态过程。

■ 状态逻辑切换——当针对复杂逻辑系统进行建模的时候,往往需要建立各个子系统 之间的相互关联关系,例如如果用 Simulink 创建复杂逻辑控制/切换模型时,就可以使用 Stateflow 进行其中的逻辑控制和约束,根据系统在运行仿真过程中计算得到的各种数据, 在不同的工况之间进行切换,模拟实际工作过程。

■ 复杂逻辑的可视化开发——利用 Stateflow 可以进行可视化的编程,针对复杂逻辑, 例如 If-Else 结构、循环结果等进行可视化的开发。如图 1-28 所示,这里表示了一个选择分 支结构

目前,利用 Stateflow 可以建立下列系统的模型:

■ 嵌入式系统应用: 航空电子设备; 车辆设备; 电信设备,例如路由算法; 通信系统,例如计算机外设; 可编程逻辑控制器(PLCs); 工业机械。

■ 人机界面(MMI):图形化用户界面(GUI)。

■ 复杂系统:航空空管通信系统,其中包含了 DSP、控制系统以及人机界面的开发等。

2、创建状态图

Stateflow 是一种图形化的建模和仿真环境,在这种环境下,可以实现有限 状态机理论的各种基本元素,构建有限状态机实现逻辑转换模型或者事件驱动 系统模型。本章将详细介绍在 Stateflow 中创建基本图形对象的方法以及详细的 操作步骤。 本章的主要内容包括:

■ Stateflow 编辑器。

■ 创建和编辑状态图,包括:定义状态、定义转移、定义节点、默认转移。

2.1、创建simulink模型

一、直接在 MATLAB 命令行窗体中键入指令 sfnew

二、在已有的 Simulink 模型中插入 Stateflow 模块,即打开 Simulink 库浏览器, 在库浏览器中找到 Stateflow 的模块库

2.2、stateflow编辑器概览

2.3、创建状态:状态在系统中被看做记忆元件。它本身能够保持系统的当前模式,一旦被激活,状态 就保持活动的模式,直到系统改变其模式,状态才变为非活动的。同理,如果状态是非活 动的,则状态就会一直保持非活动的状态,直到系统改变其工作模式为止。 和 Simulink 的模型类似,Stateflow 的框图也可以具有层次,在同一级层次里,所有的 状态要么是互斥(OR)的,要么是并行(AND)的。所谓状态之间是互斥的,是指在任何给定的 时刻只有一个状态是活动的,不可能同时出现两个状态同时活动;所谓状态之间是并行的, 是指在同一时刻该层次的所有状态都是活动的。在同一级里面不可能有既是互斥的又是并 行的状态存在,即状态要么是互斥的要么是并行的

2.3.1、状态的标签一般可以由三个部分组成:状态名称、注释和相应的状态动作

其中,位于“/*”和“*/”之间的部分为状态的注释,而 Keyword : State Actions 就是状 态动作。状态动作的关键字主要有三种,分别为:

■ entry:当状态被激活时执行相应的动作。

■ exit:当状态退出活动状态时执行相应的动作。

■ during:当状态保持其活动状态时执行相应的动作。

提示: 在上述的状态动作中,heat 为数据对象,这里对该数据对象进行了赋值操作。注意在书 写动作表达式时,结尾的分号为结束符。 创建状态之后,也可以通过查看其属性来修改相应的设置。在状态上单击鼠标右键, 在快捷菜单中选择 Properties 命令,可以通过状态的属性对话框进一步定义状态,如图 2-12 所示。

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐