详解Stateflow建模与-应用实例.doc

上传人:小** 文档编号:3123546 上传时间:2019-05-22 格式:DOC 页数:81 大小:2.73MB
下载 相关 举报
详解Stateflow建模与-应用实例.doc_第1页
第1页 / 共81页
详解Stateflow建模与-应用实例.doc_第2页
第2页 / 共81页
详解Stateflow建模与-应用实例.doc_第3页
第3页 / 共81页
详解Stateflow建模与-应用实例.doc_第4页
第4页 / 共81页
详解Stateflow建模与-应用实例.doc_第5页
第5页 / 共81页
点击查看更多>>
资源描述

1、-_port_label(input,1,signal);port_label(output,1,gain);port_label(output,2,saturation);port_label(output,3,sample);port_label(output,4,error);image(imread(dianji.jpg)第 3 章 Stateflow 建模与应用Stateflow 是有限状态机 (finite state machine)的图形工具,它通过开发有限状态机和流程图扩展了 Simulink 的功能。Stateflow 使用自然、可读和易理解的形式,可使复杂的逻辑问题变得清

2、晰与简单,并且还与 MATLABSimulink 紧密集成,为包含控制、优先级管理、工作模式逻辑的嵌入式系统设计提供了有效的开发手段,是本书的核心内容之一。读者在 58 章将看到 Stateflow 应用于 MCU 器件的嵌入式开发,尤其显得得心应手,一些采用传统方法难于实现的算法,如果利用Stateflow 建模却非常容易。大到导弹、航空航天器的控制,小到点亮一个发光二极管,Stateflow 都非常称职。 Stateflow 状态图模型,还可利用 Stateflow Coder代码生成工具,直接生成 C 代码。Stateflow 的主要功能包括: 使用层次化、可并行的、有明确执行语义的元素

3、,来描述复杂的逻辑系统。 采用流程图定义图形化函数。 利用真值表实现表格形式的功能。 使用临时逻辑处理状态转移与事件。 支持 Mealy 和 Moore 有限状态机。 可集成用户自定义的 C 代码。 可用动画的形式显示状态图的仿真运行过程,并可记录数据。 调试器使用图形化断点进行单步调试,并可观察其中的数据。本章主要内容: Stateflow 工作原理与基本概念 建立 Stateflow 状态图与流程图 Stateflow 的层次结构与并行机制 Stateflow 应用3.1Stateflow 基本概念Stateflow 对象可分为图形对象与非图形对象。图形对象有状态、历史节点、迁移、默认迁移

4、、连接节点、真值表、图形函数、-_Embedded MATLAB 函数、盒函数、Simulink 函数;非图形对象有事件、数据、目标。本节首先介绍常用的对象:状态、迁移、数据、事件的概念和使用,连接节点留待 3.3 节、历史节点留待 3.4 节,其余对象留待 3.5 节说明。Stateflow 状态机使用一种基于容器的层次结构管理 Stateflow 对象,也就是说,一个 Stateflow 对象可以包含其他 Stateflow 对象。最高级的对象是 Stateflow 状态机,它包含了所有的 Stateflow 对象,因此也就包含了 Simulink 中的所有 Stateflow 状态图,以

5、及数据、事件、目标对象。同样地,状态图包含了状态、盒函数、函数、数据、事件、迁移、节点与注释事件(note events) 。用户可以使用这一系列对象,建立一个 Stateflow 状态图。而具体到一个状态,它也可以包含上述的对象。图 3.1.1 抽象地说明了这样的关系,而图 3.1.2 则具体地说明了 Stateflow 状态机的组成。状态机状态图状态 / 盒函数 / 函数 数据 /事件数据 /事件状态 /盒函数 /函数状态 /盒函数 /函数迁移迁移标注标注节点节点数据 /事件数据 /事件节点节点标注标注迁移迁移数据 /事件数据 /事件目标目标图 3.1.1Stateflow 层次机构(数据

6、字典)-_图 3.1.2 Stateflow 状态机的组成3.1.1 状态图编辑器在 Simulink 模块库浏览器,找到 Stateflow 模块,如图 3.1.3 所示,添加入模型窗口,如图 3.1.4 所示。图 3.1.3 Stateflow 模块用户也可以使用以下命令,建立带有 Stateflow 状态图的 Simulink 模型,如图3.1.4 所示,同时打开 Stateflow 模块库,如图 3.1.5 所示。sf-_图 3.1.4 带有 Stateflow 状态图的 Simulink 模型图 3.1.5 Stateflow 模块库用户还可以直接使用以下命令,快速建立带有 Stat

7、eflow 状态图的 Simulink 模型。sfnew双击 Chart 模块,打开 Stateflow 编辑器窗口,如图 3.1.6 所示,左侧工具栏列出了 Stateflow 图形对象的按钮。-_图 3.1.6 Stateflow 编辑器窗口3.1.2 状态状态可以理解为事件驱动系统中的模式,可分为激活与非激活状态,而状态是否激活则是由状态图中的事件与条件决定的,若没有预先定义的事件或条件发生,状态将一直保持其原先的激活或非激活状态。1. 状态的层次结构状态可以包含除了目标(详见第 3.6.6 节)以外的所有 Stateflow 对象,所以状态内部可以有其他状态,如图 3.1.7 所示,处

8、于外层的 A 称作超状态(或父状态),处于内部的 B 称作子状态。每一个状态都有其父状态,图 3.1.7 中,状态 A 的父状态就是 Stateflow 状态图本身。图 3.1.7 超状态与子状态2. 状态的横向结构在 Stateflow 状态图 的顶层或某一超状态下,通常并存有多个状态,它们之间的关系可分为互斥与并行。(1) 互斥状态(OR)互斥状态的矩形框边缘显示为实线,同一级的互斥状态,至多允许激活一个状态。如图 3.1.8 所示的状态图,状态 A 与状态 B 是互斥的,它们只能有一个处于激活状态;当状态 A 被激活时,同样其 子状态 A1 与 A2 也只能有一个处于激活状态。-_图 3

9、.1.8 互斥状态(2) 并行状态(AND)并行状态的矩形框边缘显示为虚线,同一级的并行状态,可在同一时刻被激活。如图 3.1.9 所示的状态图。状态 A 与状态 B 是并行的,它们 可同时处于激活状态;子状态 A1 与 A2 也同时处于激活状态,而子状态 B1 与 B2 只能有一个处于激活状态。图 3.1.9 并行状态状态层次结构与并行机制的详细概念与应用,见 3.4 与 3.5 节。3. 状态标签状态名仅是状态标签的一部分,完整的标签格式如下,第一行是状态名,以下若干行是各类动作,用户可以设置全部或部分的状态动作,当然也可以不设置任何动作。name/ 状态名entry: entry act

10、ions 进入该状态时的动作during: during actions 处于该状态时的动作exit: exit actions 退出该状态时的动作on event_name: on event_name actions 某事件发生时的动作bind: events, data 指定需要限制作用范围的事件与数据-_状态名状态名可由字母、数字、下划线组成,如果状态名后跟随的是回车符,则斜线是可有可无的。根据 Stateflow 的分层结构,同级的各个子状态不允许重名,但不同级的状态则不受限制。图 3.1.10 所示的 Stateflow 状态图是有效的,尽管看上去状态 C1、C2 有重名现象,但在

11、 Stateflow 分层结构中,它们的全名分别是:A.OnA.OffB.OnB.Off图 3.1.10 状态名状态动作状态动作如表 3.1.1 所列。表 3.1.1 状态动作类型动作类型 缩写 说明entry en 进入当前状态时的动作during du处于当前状态,并且某事件发生时的动作Executes when the state isactive and a specific eventoccursexit ex 离开当前状态时的动作bind 无 约束一个事件或数据,使得仅当前状态及其子状态有权限广播该事件或修改该数据on event_name 无 当前状态接收 1 次广播事件时的动作

12、on after(n,event_name) 无 当前状态完整接收 n 次广播事件后的动作on before(n,event_name) 无 当前状态完整接收 n 次广播事件前的动作on at(n, event_name) 无 当前状态完整接收 n 次广播事件时的动作on every(n,event_name) 无 当前状态每接收 n 次广播事件时的动作每个动作类型,用户可指定多个具体动作,每个动作之间以回车、分号、逗号区隔,动作类型关键词后必须跟随一个半角冒号。-_(1) entry 动作关键词为 entry(或缩写为 en) 。如果用户在状态名后加入斜线,并直接跟随具体动作,则该动作默认为

13、进入动作。如图 3.1.11 所示,进入状态 A 时,y=3 ,同时又执行 y+,最终的结果 y=4。图 3.1.11 entry 动作(2) during 动作关键词为 during(或缩写为 du) 。如图 3.1.12 所示,进入状态 A 时,y=3,同时不断执行 y+。若求解器的定点步长取 0.2,仿真时长取 2,则最终的结果y=13。图 3.1.12 during 动作(3) exit 动作关键词为 exit(或缩写为 ex) 。如图 3.1.13 所示,系统处于状态 A,当 A 的激活时间达到 5 个仿真步长,退出状态 A,进入状态 B,最终的结果 y=4,如图3.1.14 所示。

14、图 3.1.13 exit 动作-_图 3.1.14 输出结果(4) 广播事件动作表 3.1.1 所列的广播事件动作,能实现各种的事件触发。以单次广播事件动作为例,关键词为 on event_name,其中 event_name 表示某一广播事件名,事件名应是唯一的。如图 3.1.15 所示,系统处于状态 A,当检测到事件 stop,立即执行 c()。图 3.1.15 广播事件动作(5) bind 动作关键词为 bind。如图 3.1.16 所示,变量 y、事件 start 被绑定在状态 A,这表示仅有 A 状态及其子状态有权限修改变量 y 并广播事件 start,其他状态 B 能够读取变量 y、监听到事件 start,但无权修改变量 y、广播事件 start。图 3.1.16 bind 动作若运行该状态图,系统提示变量 y 仅能由状态 A 及其内部的状态迁移修改,事件 start 仅能在状态 A。-_图 3.1.17 错误提示与其他动作不同,bind 动作不需要判断当前状态是否已激活,也就是说它在整个 Stateflow 状态图范围内都是有效的,因此不同状态不允许约束同一个变量与事件。如图 3.1.18 所示,状态 A、B 同时约束了变量 y,系统提示这是不允许的。图 3.1.18 无效的 bind 动作图 3.1.19 错误提示3.1.3 迁移1.迁移

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 复习参考

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。