Stateflow教程学习教程.pptx
《Stateflow教程学习教程.pptx》由会员分享,可在线阅读,更多相关《Stateflow教程学习教程.pptx(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Stateflow概述:Stateflow 是集成于 Simulink 中的图形化设计与开发工具,主要用于针对控制系统中的复杂控制逻辑进行建模与仿真,Stateflow 适用于针对事件响应系统(Reactive System)进行建模和仿真。与事件响应系统相对应的就是动态变换系统(Dynamic Transformational System)。动态变换系统通常可以利用数学表达式、方程等组成的输入/输出关系进行描述,像这样的系统利用 Simulink 进行建模是最为方便的。而事件响应系统通常利用一些自然语言或者逻辑表达式进行描述,这样的系统就需要利用 Stateflow 来进行建模。State
2、flow 与Simulink 结合起来,可以创建确定性监管控制系统。利用 Stateflow 可视化的模型和直观的仿真能力,可以清晰、简洁地反映出复杂动态逻辑关系。Stateflow 的基础是有限状态机理论,它通过对状态图、流程图的创建,对事件驱动系统进行建模和仿真。第1页/共68页第一页,编辑于星期六:二十二点 三十分。第一章第一章 创建状态图创建状态图Stateflow编辑器创建和编辑状态图第2页/共68页第二页,编辑于星期六:二十二点 三十分。StateflowStateflow编辑器编辑器创建 Simulink 模型1.直接在 MATLAB 命令行窗体中键入指令 sfnew2.打开 S
3、imulink 库浏览器,在库浏览器中找到 Stateflow 的模块库第3页/共68页第三页,编辑于星期六:二十二点 三十分。双击模型文件或者库文件中的 Stateflow 图块打开 Stateflow 编辑器 执行 Stateflow 编辑器 File 菜单下 的 Chart Properties 命令,打开属性框第4页/共68页第四页,编辑于星期六:二十二点 三十分。创建和编辑状态图创建和编辑状态图插入图形对象1.创建状态 在图 形对象面板的状态图标上按下鼠标左键并保持,将状态Stateflow 编辑器的空白区域中Keyword:State Actions 就是状态动作。为数据对象进行赋
4、值或者进行数据对象的运算也可以通过状态动作进行事件广播以触发其他系统的变化状态动作的关键字主要有三种:entry:当状态被激活时执行相应的动作。exit:当状态退出活动状态时执行相应的动作during:当状态保持其活动状态时执行相应的 动作第5页/共68页第五页,编辑于星期六:二十二点 三十分。在状态上单击鼠标右键,在快捷菜单中选择 Properties 命令,可以通过状态的属性对话框进一步定义状态2.创建连接节点 连接节点作为转移通路的判决点或汇合点,也是在状态图中常用的图形元素之一,特别是在流程图中,由于流程图不能包含任何状态,因此只有依靠连接节点完成通路的连接和判断分支,连接节点不是记忆
5、元件。第6页/共68页第六页,编辑于星期六:二十二点 三十分。在图形对象面板的连接节点图标 上按下鼠标左键并保持,将状态拖放到Stateflow 编辑器的空白区域中。节点上单击鼠标右键,通过弹出的快捷菜单执行 Properties 命令,进入属性框3.创建转移 转移是 Stateflow 框图中最常见的图形元素之一,无论是包含状态的状态图中还是没有状态的流程图中,几乎都存在转移。转移描述的是有限状态系统内的逻辑流。转移管理了当系统从当前状态改变时,这个系统可能发生的模式改变。当转移发生时,源状态变为非活动的状态,目标状态变为活动的状态。转移是带有箭头的线,这就使整个状态图或者流程图成为了“有向
6、图”,状态或者流程之间的转换,将直接受到转移方向的约束。第7页/共68页第七页,编辑于星期六:二十二点 三十分。创建转移的具体步骤是:(1)当鼠标光标接近状态的边缘时,鼠标光标将变成十字形状。(2)按下鼠标左键并保持,将引出的转移线拖放到目标状态的边缘即可,第8页/共68页第八页,编辑于星期六:二十二点 三十分。给转移添加标签的方法:(1)左键单击选中相应的转移,此时转移将显示问号;(2)左键单击出现的问号,则进入文本编辑状态;(3)在光标处插入文本;(4)单击 Stateflow 编辑器中任意一处,结束标签的插入。组成转移标签的四个部分不一定完整地出现,但是不论出现哪几个部分,标签的内容必须
7、按照上面指定的顺序书写。条件动作与转移动作两者之间的区别:条件动作在条件满足的情况下就能够执行,而转移动作需要在整个转移通路都有效的情况下,在执行转移的时候才执行。第9页/共68页第九页,编辑于星期六:二十二点 三十分。Stateflow 中都可以使用三类语法元素作为动作:(1)数学运算表达式或者逻辑运算表达式。(2)调用函数。(3)事件广播。4.默认转移:默认转移是一类特殊的转移,可以把它看做是状态转移的特例。默认转移确定当有限状态机或者父层次状态处于活动状态的时候,在其所有的子状态中第一个被激活的状态。根据有限状态机的要求,当有限状态系统被激活时,必有相应的确定的某个状态被激活。而默认转移
8、就定义了当状态机被激活或者层次模型中父层次状态被激活时,具体哪个子状态被激活。第10页/共68页第十页,编辑于星期六:二十二点 三十分。创建默认转移的方法如下:鼠标单击图形对象面板中的默认转移图标,然后将默认的转移(注意鼠标光标的 变化)放置在状态或者连接节点的边缘,就可以完成默认转移的创建了说明:Stateflow 的状态图中,同一层次上的状态只有两种工作模式,一种叫做异或(OR)模式,另 一种叫做并行(AND)模式。在异或模式下,同 一层次上的子状态必须有一个子状态具有默认的转移,同时该子状态被称为默认状态。由于 Stateflow 是一种事件驱动模型建模环境,不允许出现模型运行的二义性,
9、因此,正确的使用默认转移就非常重要,因为默认转移就是用来改变状态机或者父层次状态被激活时,相应的子状态二义性的图形元素在默认转移上添加标签的方法和在一般的转移上添加标签的方法是一样的,可以在默认转移的标签上加上事件和条件来进行限制,也可以将动作和默认转移相关联。不过,一个有限状态系统必须确保能够正确地被激活,这一点在使用默认转移时非常重要,因为状态机的默认转移只有一次执行的机会。如果没有明确的子状态能够被激活,系统会报告二义性错误第11页/共68页第十一页,编辑于星期六:二十二点 三十分。5.添加注释:如果需要在 Stateflow 的框图中使用 LaTex 字符集,则需要按照下列步骤完成:(
10、1)在已经添加的文本上单击鼠标右键,这时将显示快捷菜单;(2)选择快捷菜单中 Text Format 子菜单中的 LaTex Instructions 复选项;(3)用鼠标单击已经添加的文本注释,重新进入文本编辑模式;(4)添加 LaTex 字符,例如键入 y=itAealphaxsin(betaitt);(5)在文本编辑区外单击鼠标完成注释的添加,此时的注释内 容将变为y=Aeax sin(bt),如图所示。第12页/共68页第十二页,编辑于星期六:二十二点 三十分。编辑图形对象外观:改变尺寸和位置单击右键单击右键在注释上单击鼠标右键而出现的快捷菜单。在菜单中,共计有三个子菜单可以用来修改注
11、释文本的外观,分别为:Font Size:设置注释文本的尺寸。Text Format:设置注释文本的基本格式,包 括粗体、斜体和 LaTex 字符支持。Text Alignment:设置注释文本的对齐方式,包括左对齐、居中和右对齐。第13页/共68页第十三页,编辑于星期六:二十二点 三十分。第二章第二章 状态图的仿真状态图的仿真状态图的基本概念事件数据对象状态图的更新模式stateflow模型查看器第14页/共68页第十四页,编辑于星期六:二十二点 三十分。状态图的基本概念状态图管理和维护着当前模型中活动的状态。一旦包含了状态转移的状态图处于活动的状态,则状态图将一直处于这种活动状态,直到整个
12、模型仿真计算结束。并且,只要状态图处于活动状态,则必定至少有一个状态处于激活状态。状态图从非活动状态到活动状态以及状态之间的切换,都要由事件触发,即在事件的驱动之下,状态图才能仿真运行。所谓 Stateflow 的事件触发,就是事件驱动的发生。触发可以由系统隐含发生,也可以按照要求显性地定义。在 Simulink 中,显性定义的事件就是某些过零信号的发生,也就是说,只有过零信号才能够触发状态转移的发生或者状态机的激活。由这种触发而引起的相应的动作执行,被称为事件驱动。第15页/共68页第十五页,编辑于星期六:二十二点 三十分。事件:添加事件:执行 Stateflow 图形编辑器 Add 菜单下
13、 Event 子菜单中的任何一个命令,例如执行 Local 命令,则 Stateflow 将弹出如图所示的对话框。Scope 属性:该属性定义事件的作用类型。在 Add菜单下的 Event 子菜单中具有三个菜单命令,分别为 Local、Input from Simulink 和 Output to Simulink,通过这三个菜单命令定义事件,得到的 Scope 属性不一致。具有Local属性的事件是在状态图内部发挥作用。具有Input from Simulink 属性的事件是从 Simulink框图输入到 Stateflow 中的,也就是 Stateflow 框图的外部触发事件。具有 Out
14、put to Simulink 属性的事件是从Stateflow 框图输出到 Simulink 中的,即利用 Stateflow 定义的事件驱动或者触发其他 Stateflow 框图或者子系统动作。第16页/共68页第十六页,编辑于星期六:二十二点 三十分。如果用户设置事件的 Scope 属性为 Input from Simulink 或者 Output to Simulink,则添加事件的对话框会发生变化,Trigger 属性:Trigger 属性总共有四个可能值,分别为 Either、Falling、Rising 和 FunctionCall。在 Simulink 条件执行子系统中,特别是
15、在使能或者触发子系统中,触发子系统工作的触发源就具有不同属性。触发子系统的触发源与这里的 Trigger 属性的意义完全一样,分别为双边沿触发、下降沿触发、上升沿触发。Function Call(函数调用)是一类比较特殊的触发属性第17页/共68页第十七页,编辑于星期六:二十二点 三十分。创建事件实例:运行过程中,单击 Manual Switch 模块向 Stateflow 框图发出事件第18页/共68页第十八页,编辑于星期六:二十二点 三十分。使用多个输入事件:同一个 Stateflow 的图块可以使用多个输入事件。但是,不论用户为 Stateflow 的图块定义了多少个输入事件,每个 St
16、ateflow 的图块都只能具有一个事件输入端口。因此,在向Stateflow 的图块增加不止一个输入事件时,需要将不同的事件通过 Mux 块组合成为输入事件向量,然后将组合后的输入事件向量连接到 Stateflow 图块上。第19页/共68页第十九页,编辑于星期六:二十二点 三十分。数 据 对 象:Stateflow 使用数据对象来管理维护 Stateflow 框图内部的数据信息。在 Stateflow 中,数据对象主要用于动作或者条件中。用户既可以限制数据对象在相应的图形对象内部使用,也可以将数据对象作为 Stateflow 与 Simulink 模型之间的接口来使用。执行 Statefl
17、ow 图形编辑器的 Add 菜单中 Data 子菜单下的任何一个命令,例如 Local,则 Stateflow 会打开如图所示的对话框。Scope 属性:Local、Input、Output 与事件相同Constant:所定义的数据对象在 Stateflow 模型中为常量即保持静态,数据对象在Simulink/Stateflow 模型运行过程中其数值一般不发生变化,并且数据在模型中为只读,不可写的状态。Parameter:所定义的数据对象将通过 Stateflow 框图的上层 Simulink 子系统封装之后的参数获取初值。也就是说当 Stateflow 的框图位于某个封装子系统内部时,Sta
18、teflow的 Parameter 类型数据对象可以直接获取封装子系统设定的参数。具有 Parameter 属性的数据对象与具有Constant 属性的数据对象类似,在整个仿真过程中,Stateflow 不能修改其数值。Data Store Memory:所定义的数据对象与 Simulink 数据空间共享,也就是说,该数据对象与 Simulink 工作空间中的某个数据对象相互绑定。此时该数据对象的名称必须与Simulink 工作空间中数据对象的名称一致。第20页/共68页第二十页,编辑于星期六:二十二点 三十分。数据类型模式(Data Type Mode)Inherited 类型的数据对象一般
19、为 Stateflow 的输入或者输出数据对象,它能够通过与Simulink 模块相连接的信号线来判断具体的数据类型对象。Built-in 类型是 Stateflow 数据对象默认的数据类型,通常情况下,都使用 Simulink 内建的数据类型作为数据对象的数据类型。Expression 类型是指可以通过一个表达式来表示数据类型Fixed point 类型用于模型的定点数据设置,若选择了该类型,则可以完成 Stateflow 模型数据的量化处理。第21页/共68页第二十一页,编辑于星期六:二十二点 三十分。状态图的更新模式不是所有的有限状态系统都具有外部事件的定义,有些模型就没有针对 Stat
20、eflow 模型定义任何输入事件,可是 Stateflow 的模型依然能够正常地运行。那么对于这种没有定义任何输入事件的系统,它是如何运行的呢?这就是状态图的更新模式所发挥的作用。Stateflow 的框图有三种更新模式,分别为 Inherited、Discrete 和 Continuous第22页/共68页第二十二页,编辑于星期六:二十二点 三十分。系统默认使用 Inherited 更新模式,在这种更新模式下可能存在以下三种情况:(1)有输入事件定义。如果 Stateflow 框图定义了输入事件,并且 Simulink 提供了相应输入事件,则整个框图就按照所定义的事件触发来更新。也就是说,在
21、相应类型的事件发生时,Stateflow 框图进行相应的工作,例如状态的转移、动作的执行等。(2)未定义输入事件但定义了输入数据。如果 Stateflow 框图没有定义事件而定义了输入数据,则 Stateflow 框图按照其连接的 Simulink 输入信号中更新频率最高的信号更新周期来更新框图,这相当于输入数据的采样更新触发了 Stateflow 框图的执行。(3)既未定义输入事件又未定义输入数据。如果 Stateflow 框图既没有定义输入事件,又没有定义输入数据,则 Stateflow 框图继承其父层次模型的更新周期。如果 Stateflow 框图位于系统模型的顶层,则 Stateflo
22、w 框图继承模型的仿真周期作为自己的更新周期。Discrete 更新模式,是将 Stateflow 框图看做有固定周期的离散块,在设置该更新模式时,Stateflow 框图属性对话框中的 Sample Time 属性需要设置具体的更新周期,单位为秒。Continuous更新模式,则 Stateflow 框图好比 Simulink 模型中的一个连续系统模块,此时 Stateflow 的框图将按照系统仿真步长完成更新。第23页/共68页第二十三页,编辑于星期六:二十二点 三十分。注意:如果为框图定义了输入事件,则框图的更新模式就只能设置为 Inherited,此时 Stateflow框图将严格按照
23、事件的发生来驱动有限状态系统的运行。当使用外部事件进行触发更新状态图时,默认地,第一个事件的发生用来唤醒状态图(激活状态图),而不是进行状态转移的执行。如果需要改变此模式,则需要设置 Stateflow框图属性中的 Execute(enter)Chart At Initialization 选项。选择了该选项,则意味着当 前的 Stateflow 框图将在模型初始化阶段就被激活,这样,在后续的事件触发过程中,就直接进行状态的 转换了第24页/共68页第二十四页,编辑于星期六:二十二点 三十分。第三章第三章 流程图流程图转移冲突流程图的创建图形函数stateflow模型调试器第25页/共68页第
24、二十五页,编辑于星期六:二十二点 三十分。概述:在 Stateflow 框图中,流程图是比较特殊的一种。流程图中不包含任何状态,它仅仅由连接节点和转移组成。由于流程图没有任何状态,因此流程图就不包含任何记忆元件(Stateflow 中只有状态是记忆元件),所以,在一次更新之中,流程图从检测其默认转移开始,到检测完每一条有效的通路且到达不具备有效出口的转移为止,在连续的两次触发之间,一直处于非活动的状态。转移冲突:所谓转移冲突,就是在 Stateflow 框图运行的过程中可能在某一时刻同时存在几个有效的转移,那么此时 Stateflow 将根据一些原则来处理这些冲突,这就是转移冲突的处理原则。假
25、设当前事件 E 发生并且条件 C 也满足,则四个转移通路都是有效的,即形成了转移冲突。那么 Stateflow 是如何处理这种情况呢?第26页/共68页第二十六页,编辑于星期六:二十二点 三十分。原则:当事件发生需要进行转移检测时,Stateflow 总是首先检测具有最多限制的转移,如果能够满足则执行这个转移,其他的有效转移就统统忽略。(1)如果此时发生的事件是 E 且条件 C 也满足,即该转移有效,则执行这个转移,其余的转移就不再进行检测和执行了(2)条件不满足则检测只有事件限制的转移;条件 C 不满足,此时发生的事件是 E,即该转移有效,则执行这个转移,其余的转移就不再进行检测和执行了。(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Stateflow 教程 学习
限制150内