Stateflow入门教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5. 添加注释:
如果需要在 Stateflow 的框图中使用 LaTex 字符集, 则需要按照下列步骤完成: (1) 在已经添加的文本上单击鼠标右键, 这时将显示快捷菜单; (2) 选择快捷菜单中 Text Format 子菜单中的 LaTex Instructions 复选项; (3) 用鼠标单击已经添加的文本注释, 重新进入文本编辑模式; (4) 添加 LaTex 字符, 例如键入 y ={\itAe}^{\alphax}sin(\beta\itt); (5) 在文本编辑区外单击鼠标完成注释的添加,此时的注释内 容将变为y = Aeax sin( bt) ,如图所示。
包括左对齐、 居中和右对齐。
第二章 状态图的仿真
➢状态图的基本概念 ➢事件 ➢数据对象 ➢状态图的更新模式 ➢stateflow模型查看器
状态图的基本概念
状态图管理和维护着当前模型中活动的状态。 一旦包含了状态转移的状态图 处于活动的状态,则状态图将一直处于这种活动状态,直到整个模型仿真计 算结束。 并且,只要状态图处于活动状态, 则必定至少有一个状态处于激活 状态。状态图从非活动状态到活动状态以及状态之间的切换, 都要由事件触 发, 即在事件的驱动之下,状态图才能仿真运行。
动作
在状态上单击鼠标右键,在快捷菜单中选择 Properties 命令, 可以 通过状态的属性对话框进一步定义状态
2 . 创建连接节点 连接节点作为转移通路的判决点或汇合点,也是在状态图中常用的图形元素之一,
特别是在流程图中, 由于流程图不能包含任何状态, 因此只有依靠连接节点完成通路的连 接和判断分支,连接节点不是记忆元件。
创建转移的具体步骤是: (1) 当鼠标光标接近状态的边缘时, 鼠标光标将变成十字形状。 (2) 按下鼠标左键并保持, 将引出的转移线拖放到目标状态的边缘即可,
给转移添加标签的方法:
(1) 左键单击选中相应的转移,此时转移将显示问号; (2) 左键单击出现的问号, 则进入文本编辑状态; (3) 在光标处插入文本; (4) 单击 Stateflow 编辑器中任意一处, 结束标签的插入。
如果用户设置事件的 Scope 属性为 Input from Simulink 或者 Output to Simulink,则添加事件的对话框会发生变化,
Trigger 属性:Trigger 属性总共有四个可能值, 分别为 Either、 Falling、 Rising 和 Function Call。在 Simulink 条件执行子系统中, 特别是 在使能或者触发子系统中, 触发子系统工作的 触发源就具有不同属性。 触发子系统的触发源 与这里的 Trigger 属性的意义完全一样, 分别 为双边沿触发、 下降沿触发、 上升沿触发。 Function Call(函数调用)是一类比较特殊的触发 属性
执行 Stateflow 图形编辑器的 Add 菜单中 Data 子菜单下的任何一个命令, 例 如 Local,则 Stateflow 会打开如图所示的对话框。
Scope 属性:Local、 Input、Output 与事件相同 Constant:所定义的数据对象在 Stateflow 模型中为常量 即保持静态,数据对象在Simulink/Stateflow 模型运行过程 中其数值一般不发生变化,并且数据在模型中为只读,不 可写的状态。 Parameter:所定义的数据对象将通过 Stateflow 框图的上 层 Simulink 子系统封装之后的参数获取初值。也就是说当 Stateflow 的框图位于某个封装子系统内部时,Stateflow 的 Parameter 类型数据对象可以直接获取封装子系统设定 的参数。具有 Parameter 属性的数据对象与具有Constant 属性的数据对象类似,在整个仿真过程中,Stateflow 不能 修改其数值。 Data Store Memory: 所定义的数据对象与 Simulink 数据 空间共享, 也就是说, 该数据对象与 Simulink 工作空间 中的某个数据对象相互绑定。 此时该数据对象的名称必须 与Simulink 工作空间中数据对象的名称一致。
事件:
添加事件:
执行 Stateflow 图形编辑器 Add 菜单下 Event 子菜单中的任何一个命令, 例如执行 Local 命令,则 Stateflow 将弹出如图所示的对话框。
Scope 属性:该属性定义事件的作用类型。在 Add 菜单下的 Event 子菜单中具有三个菜单命令,分别 为 Local、Input from Simulink 和 Output to Simulink, 通过这三个菜单命令定义事件,得到的 Scope 属性不 一致。 具有Local属性的事件是在状态图内部发挥作用。 具有Input from Simulink 属性的事件是从 Simulink框 图输入到 Stateflow 中的,也就是 Stateflow 框图的外 部 触发事件。 具有 Output to Simulink 属性的事件是从Stateflow 框 图 输出到 Simulink 中的,即利用 Stateflow 定义的事件驱 动或者触发其他 Stateflow 框图或者子系统动作。
由于 Stateflow 是一种事件驱动模型建模环境,不允许出现模型运行的二义性, 因此,正确的使用默认转移就非常重要, 因为默认转移就是用来改变状态机 或者父层次状态被激活时, 相应的子状态二义性的图形元素
在默认转移上添加标签的方法和在一般的转移上添加标签的方法是一样的,可以 在默认转移的标签上加上事件和条件来进行限制,也可以将动作和默认转移 相关联。不过, 一个有限状态系统必须确保能够正确地被激活, 这一点在使 用默认转移时非常重要, 因为状态机的默认转移只有一次执行的机会。如果 没有明确的子状态能够被激活,系统会报告二义性错误
第一章 创建状态图
➢Stateflow编辑器 ➢创建和编辑状态图
Stateflow编辑器
创建 Simulink 模型 1. 直接在 MATLAB 命令行窗体中键入指令 sfnew 2. 打开 Simulink 库浏览器,
在库浏览器中找到 Stateflow 的模块库
双击模型文件或者库文件中的 Stateflow 图块打开 Stateflow 编辑器
在图形对象面板的连接节点图标 上按下鼠标左键并保持, 将状态拖 放到Stateflow 编辑器的空白区域中。
节点上单击鼠标右键,通过弹出的快捷菜单 执行 Properties 命令,进入属性框
3. 创建转移 转移是 Stateflow 框图中最常见的图形元素之一,无论是包含状态的状态图中还是没
有状态的流程图中,几乎都存在转移。转移描述的是有限状态系统内的逻辑流。转移管理 了当系统从当前状态改变时,这个系统可能发生的模式改变。当转移发生时,源状态变为 非活动的状态, 目标状态变为活动的状态。转移是带有箭头的线,这就使整个状态图或者 流程图成为了“有向图”,状态或者流程之间的转换, 将直接受到转移方向的约束。
执行 Stateflow 编辑器 File 菜单下 的 Chart Properties 命令,打开属性框
创建和编辑状态图
插入图形对象
1 . 创建状态
在图 形对象面板的状态图标上按下鼠标左键并保持,将状态 Stateflow 编辑器的空白区域中
Keyword : State Actions 就是状态动作。 为数据对象进行赋值或者进行数据对象的运算 也可以通过状态动作进行事件广播以触发其他 系统的变化 状态动作的关键字主要有三种: entry:当状态被激活时执行相应的动作。 exit:当状态退出活动状态时执行相应的动作 during:当状态保持其活动状态时执行相应的
编辑图形对象外观:
改变尺寸和位置
单击右键
单击右键
在注释上单击鼠标右键而出现的快捷菜单。在 菜单中,共计有三个子菜单可以用来修改注释 文本的外观, 分别为:
Font Size: 设置注释文本的尺寸。 Text Format:设置注释文本的基本格式,包
括粗体、 斜体和 LaTex 字符支持。 Text Alignment:设置注释文本的对齐方式,
(1) 数学运算表达式或者逻辑运算表达式。 (2) 调用函数。 (3) 事件广播。
4. 默认转移:
默认转移是一类特殊的转移, 可以把它看做是状态转移的特例。 默认转移确定当有限 状态机或者父层次状态处于活动状态的时候,在其所有的子状态中第一个被激活的状态。 根据有限状态机的要求, 当有限状态系统被激活时, 必有相应的确定的某个状态被激活。 而默认转移就定义了当状态机被激活或者层次模型中父层次状态被激活时, 具体哪个子状 态被激活。
组成转移标签的四个部分不一定完整地出现, 但是不论出现哪几个部分,标签的内容必须 按照上面指定的顺序书写。 条件动作与转移动作两者之间的区别:条件动作在条 件满足的情况下就能够执行,而转移动作需要在整个 转移通路都有效的情况下, 在执行转移的时候才执行。
百度文库
Stateflow 中都可以使用三类语法元素作为动作:
stateflow教程
Stateflow概述:
Stateflow 是集成于 Simulink 中的图形化设计与开发工具,主要 用于针对控制系统中的复杂控制逻辑进行建模与仿真,Stateflow 适用于 针对事件响应系统(Reactive System)进行建模和仿真。与事件响应系统 相对应的就是动态变换系统(Dynamic Transformational System)。动态 变换系统通常可以利用数学表达式、 方程等组成的输入/输出关系进行 描述,像这样的系统利用 Simulink 进行建模是最为方便的。而事件响 应系统通常利用一些自然语言或者逻辑表达式进行描述,这样的系统 就需要利用 Stateflow 来进行建模。Stateflow 与Simulink 结合起来, 可以创建确定性监管控制系统。 利用 Stateflow 可视化的模型和直观的 仿真能力,可以清晰、 简洁地反映出复杂动态逻辑关系。 Stateflow 的基础是有限状态机理论,它通过对状态图、 流程图的创建, 对事件 驱动系统进行建模和仿真。
创建事件实例:
运行过程中, 单击 Manual Switch 模块向 Stateflow 框图发出事件
使用多个输入事件:
同一个 Stateflow 的图块可以使用多个输入事件。 但是, 不论用户为 Stateflow 的图块定义了多少个输入事件, 每个 Stateflow 的图块都只 能具有一个事件输入端口 。因此,在向Stateflow 的图块增加不止一 个输入事件时, 需要将不同的事件通过 Mux 块组合成为输入事件向 量, 然后将组合后的输入事件向量连接到 Stateflow 图块上。
所谓 Stateflow 的事件触发, 就是事件驱动的发生。 触发可以由系统隐含发 生, 也可以按照要求显性地定义。在 Simulink 中, 显性定义的事件就是某些 过零信号的发生, 也就是说, 只有过零信号才能够触发状态转移的发生或者 状态机的激活。由这种触发而引起的相应的动作执行, 被称为事件驱动。
创建默认转移的方法如下:
鼠标单击图形对象面板中的默认转移图标, 然后将默认的转移(注意鼠标光标的 变化)放置在状态或者连接节点的边缘, 就可以完成默认转移的创建了
说明:
Stateflow 的状态图中,同一层次上的状态只有两种工作模式,一种叫做异或(OR) 模式,另 一种叫做并行(AND)模式。在异或模式下,同 一层次上的子状态必 须有一个子状态具有默认的转移,同时该子状态被称为默认状态。
数 据 对 象:
Stateflow 使用数据对象来管理维护 Stateflow 框图内部的数据信息。在 Stateflow 中, 数据对象主要用于动作或者条件中。用户既可以限制数据对象 在相应的图形对象内部使用,也可以将数据对象作为 Stateflow 与 Simulink 模型之间的接口来使用。
相关文档
最新文档