Stateflow教程实用教案_第1页
Stateflow教程实用教案_第2页
Stateflow教程实用教案_第3页
Stateflow教程实用教案_第4页
Stateflow教程实用教案_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1Stateflow教程教程(jiochng)第一页,共69页。Stateflow概述概述(i sh): Stateflow 是集成于 Simulink 中的图形化设计与开发工具,主要用于针对控制系统中的复杂控制逻辑进行建模与仿真,Stateflow 适用于针对事件响应系统(Reactive System)进行建模和仿真。与事件响应系统相对应的就是动态(dngti)变换系统(Dynamic Transformational System)。动态(dngti)变换系统通常可以利用数学表达式、 方程等组成的输入/输出关系进行描述,像这样的系统利用 Simulink 进行建模是最为方便的。而事

2、件响应系统通常利用一些自然语言或者逻辑表达式进行描述,这样的系统就需要利用 Stateflow 来进行建模。Stateflow 与Simulink 结合起来,可以创建确定性监管控制系统。 利用 Stateflow 可视化的模型和直观的仿真能力,可以清晰、 简洁地反映出复杂动态(dngti)逻辑关系。 Stateflow 的基础是有限状态机理论,它通过对状态图、 流程图的创建, 对事件驱动系统进行建模和仿真。第1页/共68页第二页,共69页。第一章第一章 创建创建(chungjin)(chungjin)状态图状态图Stateflow编辑器创建(chungjin)和编辑状态图第2页/共68页第三页

3、,共69页。第3页/共68页第四页,共69页。 执行(zhxng) Stateflow 编辑器 File 菜单下 的 Chart Properties 命令,打开属性框第4页/共68页第五页,共69页。Keyword : State Actions 就是状态(zhungti)动作。为数据对象进行赋值或者进行数据对象的运算也可以通过状态(zhungti)动作进行事件广播以触发其他系统的变化状态(zhungti)动作的关键字主要有三种:entry:当状态(zhungti)被激活时执行相应的动作。exit:当状态(zhungti)退出活动状态(zhungti)时执行相应的动作during:当状态(z

4、hungti)保持其活动状态(zhungti)时执行相应的 动作第5页/共68页第六页,共69页。2 . 创建创建(chungjin)连接节点连接节点 连接节点作为转移通路的判决点或汇合点,也是在状态图中常用的图形(txng)元素之一,特别是在流程图中, 由于流程图不能包含任何状态, 因此只有依靠连接节点完成通路的连接和判断分支,连接节点不是记忆元件。第6页/共68页第七页,共69页。节点上单击鼠标右键,通过弹出的快捷菜单执行 Properties 命令,进入(jnr)属性框3. 创建创建(chungjin)转移转移 转移是 Stateflow 框图中最常见的图形元素之一,无论是包含状态的状态

5、图中还是没有状态的流程图中,几乎都存在转移。转移描述的是有限状态系统内的逻辑流。转移管理了当系统从当前状态改变时,这个系统可能发生的模式改变。当转移发生时,源状态变为非活动的状态, 目标状态变为活动的状态。转移是带有箭头的线,这就使整个状态图或者流程图成为了“有向图”,状态或者流程之间的转换, 将直接受到转移方向的约束。第7页/共68页第八页,共69页。第8页/共68页第九页,共69页。组成转移标签的四个部分不一定完整地出现,组成转移标签的四个部分不一定完整地出现,但是不论出现哪几个部分,标签的内容必须但是不论出现哪几个部分,标签的内容必须按照按照(nzho)上面指定的顺序书写。上面指定的顺序

6、书写。条件动作与转移动作两者之间的区别:条件动作在条条件动作与转移动作两者之间的区别:条件动作在条件满足的情况下就能够执行,而转移动作需要在整个件满足的情况下就能够执行,而转移动作需要在整个转移通路都有效的情况下,转移通路都有效的情况下, 在执行转移的时候才执行。在执行转移的时候才执行。第9页/共68页第十页,共69页。中第一个被激活的状态。n根据有限状态机的要求, 当有限状态系统被激活时, 必有相应的确定的某个状态被激活。n而默认转移就定义了当状态机被激活或者层次模型中父层次状态被激活时, 具体哪个子状n态被激活。第10页/共68页第十一页,共69页。须有一个子状态具有默认的转移,同时该子状

7、态被称为默认状态。n由于 Stateflow 是一种事件驱动模型建模环境,不允许出现模型运行的二义性,因此,正确的使用默认转移就非常重要, 因为默认转移就是用来改变状态机或者父层次状态被激活时, 相应的子状态二义性的图形元素n在默认转移上添加标签的方法和在一般的转移上添加标签的方法是一样的,可以在默认转移的标签上加上事件和条件来进行限制,也可以将动作和默认转移相关联。不过, 一个有限状态系统必须确保能够(nnggu)正确地被激活,这一点在使用默认转移时非常重要, 因为状态机的默认转移只有一次执行的机会。如果没有明确的子状态能够(nnggu)被激活,系统会报告二义性错误第11页/共68页第十二页

8、,共69页。5. 添加添加(tin ji)注释:注释:如果需要在 Stateflow 的框图中使用 LaTex 字符集, 则需要按照下列步骤完成:(1) 在已经添加的文本上单击鼠标右键, 这时将显示快捷菜单;(2) 选择快捷菜单中 Text Format 子菜单中的 LaTex Instructions 复选项;(3) 用鼠标单击已经添加的文本注释, 重新进入文本编辑模式;(4) 添加 LaTex 字符, 例如键入 y =itAealphaxsin(betaitt);(5) 在文本编辑区外(q wi)单击鼠标完成注释的添加,此时的注释内 容将变为y = Aeax sin( bt) ,如图所示。

9、第12页/共68页第十三页,共69页。单击右键单击右键在注释上单击鼠标右键而出现的快捷菜单。在在注释上单击鼠标右键而出现的快捷菜单。在菜单中,共计有三个子菜单可以用来修改菜单中,共计有三个子菜单可以用来修改(xigi)注释注释文本的外观,文本的外观, 分别为:分别为:Font Size: 设置注释文本的尺寸。Text Format:设置注释文本的基本格式,包 括粗体、 斜体和 LaTex 字符支持。Text Alignment:设置注释文本的对齐方式, 包括左对齐、 居中和右对齐。第13页/共68页第十四页,共69页。第二章第二章 状态图的仿真状态图的仿真(fn zhn)(fn zhn)状态图

10、的基本概念事件数据(shj)对象状态图的更新模式stateflow模型查看器第14页/共68页第十五页,共69页。第15页/共68页第十六页,共69页。Scope 属性:该属性定义事件的作用类型。在 Add菜单(ci dn)下的 Event 子菜单(ci dn)中具有三个菜单(ci dn)命令,分别为 Local、Input from Simulink 和 Output to Simulink, 通过这三个菜单(ci dn)命令定义事件,得到的 Scope 属性不一致。具有Local属性的事件是在状态图内部发挥作用。具有Input from Simulink 属性的事件是从 Simulink框

11、图输入到 Stateflow 中的,也就是 Stateflow 框图的外部触发事件。具有 Output to Simulink 属性的事件是从Stateflow 框图输出到 Simulink 中的,即利用 Stateflow 定义的事件驱动或者触发其他 Stateflow 框图或者子系统动作。第16页/共68页第十七页,共69页。Trigger 属性:Trigger 属性总共有四个可能值, 分别为 Either、 Falling、 Rising 和 FunctionCall。在 Simulink 条件执行子系统中, 特别是在使能或者触发子系统中, 触发子系统工作的触发源就具有不同属性。 触发子

12、系统的触发源与这里的 Trigger 属性的意义完全一样, 分别为双边沿触发、 下降沿触发、 上升沿触发。 Function Call(函数调用)是一类比较(bjio)特殊的触发属性第17页/共68页第十八页,共69页。 运行过程(guchng)中, 单击 Manual Switch 模块向 Stateflow 框图发出事件第18页/共68页第十九页,共69页。第19页/共68页第二十页,共69页。Scope 属性:Local、 Input、Output 与事件相同Constant:所定义的数据对象在 Stateflow 模型中为常量即保持静态,数据对象在Simulink/Stateflow

13、模型运行过程中其数值一般不发生变化,并且数据在模型中为只读,不可写的状态。 Parameter:所定义的数据对象将通过 Stateflow 框图的上层 Simulink 子系统封装之后的参数获取初值。也就是说当 Stateflow 的框图位于某个封装子系统内部时,Stateflow的 Parameter 类型数据对象可以直接获取封装子系统设定的参数。具有 Parameter 属性的数据对象与具有Constant 属性的数据对象类似,在整个仿真过程中,Stateflow 不能修改其数值。Data Store Memory: 所定义的数据对象与 Simulink 数据空间(kngjin)共享, 也

14、就是说, 该数据对象与 Simulink 工作空间(kngjin)中的某个数据对象相互绑定。 此时该数据对象的名称必须与Simulink 工作空间(kngjin)中数据对象的名称一致。 第20页/共68页第二十一页,共69页。nFixed point 类型用于模型的定点数据设置, 若选择了该类型,则可以完成 Stateflow 模型数据的量化处理。第21页/共68页第二十二页,共69页。Stateflow 的框图有三种更新(gngxn)模式, 分别为 Inherited、 Discrete 和 Continuous第22页/共68页第二十三页,共69页。(2) 未定义输入事件但定义了输入未定义

15、输入事件但定义了输入数据。如果数据。如果 Stateflow 框图没有框图没有定义事件而定义了输入数据,定义事件而定义了输入数据,则则 Stateflow 框图按照其连接的框图按照其连接的Simulink 输入信号中更新频率输入信号中更新频率最高的信号更新周期来更新框最高的信号更新周期来更新框图,图, 这相当于输入数据的采样这相当于输入数据的采样更新触发了更新触发了 Stateflow 框图的执框图的执行。行。(3) 既未定义输入事件又未定义输既未定义输入事件又未定义输入数据。如果入数据。如果 Stateflow 框图既框图既没有定义输入事件,又没有定没有定义输入事件,又没有定义输入数据,则义

16、输入数据,则 Stateflow 框图框图继承其父层次模型的更新周期。继承其父层次模型的更新周期。如果如果 Stateflow 框图位于系统模框图位于系统模型的顶层,则型的顶层,则 Stateflow 框图继框图继承模型的仿真周期作为自己的承模型的仿真周期作为自己的更新周期。更新周期。Discrete 更新模式,更新模式, 是将是将Stateflow 框图看做有固定周期框图看做有固定周期的离散块,在设置该更新模式的离散块,在设置该更新模式时,时, Stateflow 框图属性对话框框图属性对话框中的中的 Sample Time 属性需要设属性需要设置具体的更新周期,置具体的更新周期, 单位单位

17、(dnwi)为秒。为秒。Continuous更新模式,则更新模式,则Stateflow 框图好比框图好比 Simulink 模模型中的一个连续系统模块,型中的一个连续系统模块, 此此时时 Stateflow 的框图将按照系统的框图将按照系统仿真步长完成更新。仿真步长完成更新。第23页/共68页第二十四页,共69页。选择了该选项, 则意味着当 前的 Stateflow 框图将在模型初始化阶段就被激活, 这样,在后续的事件触发过程中, 就直接进行状态(zhungti)的 转换了第24页/共68页第二十五页,共69页。第三章第三章 流程图流程图转移冲突流程图的创建图形函数(hnsh)stateflo

18、w模型调试器第25页/共68页第二十六页,共69页。的过程中可能在某一时刻同时存在几个有效的转移,那么此时 Stateflow 将根据(gnj)一些原则来处理这些冲突, 这就是转移冲突的处理原则。假设当前事件假设当前事件 E 发生并且条件发生并且条件 C 也满足,也满足,则四个转移则四个转移(zhuny)通路都是有效的,通路都是有效的, 即形成了即形成了转移转移(zhuny)冲突。那么冲突。那么 Stateflow 是如何处理这是如何处理这种情况呢?种情况呢? 第26页/共68页第二十七页,共69页。移有效,则执行这个转移,其余的转移就不再进行检测和执行了。n ( 3 )此时发生的事件不满足,

19、则接着检测具有条件的转移;如果此时条件 C 能够满足, 即该转移有效,则执行这个转移,其余的转移就不再进行检测和执行了。n(4)如果条件和事件都不匹配,最后检测的转移就是(jish)那条无条件的转移, 由于无条件的转移是肯定可以执行的n总结:转移的检测次序就是(jish)由上至下分别检测, 当系统发现一条有效的转移时,就立即执行,其他的转移即使有效,也都被忽略了。第27页/共68页第二十八页,共69页。状态 Standby 向 High 状态、 Medium 状态和 Low 状态的转移都对使用条件进行了限制。根据前面的介绍,这三个转移由于都仅仅使用条件进行了限制, 因此它们具有相同(xin t

20、n)的转移检测优先级别。所以这个框图在进行仿真的时候,就会报告转移冲突错误如果转移从状态出发,则从状态的左上角开始,按顺时针的方向决定转移的优先权;如果转移从连接(linji)节点出发, 则从连接(linji)节点的 12 点方向开始, 按顺时针的方向决定转移的优先权。几何原则几何原则:第28页/共68页第二十九页,共69页。两个步骤:(1)在 Stateflow 图形编辑器中单击右键,在弹出的菜单中选择(xunz) Execution Order 子菜单下的 Enable User specified execution order for this chart命令,(2)用鼠标右键单击需要

21、改变检测次序的转移, 例如要修改上图所示模型的第一个转移检测次 序,则用右键单击该转移,在出现的快捷(kui ji)菜单 的 Execution Order 子菜单下选择检测次序。 由于这里从状态 A 到状态 B具有四个转移, 因 此转移执行次序的选项为 14。 默认地, 该 转移检测次序为1,可以将其修改为其他数值, 修改某一条转移的检测次序后,其他的转移可 以根据用户指定的次序以及 Stateflow 默认的检 测次序原则进行重新排序。第29页/共68页第三十页,共69页。if(条件条件(tiojin)动作动作 A else 动作动作 Bif(条件条件 1)动作动作 A else if(条

22、件条件 2)动作动作 B else 动作动作 C第30页/共68页第三十一页,共69页。switch-case第31页/共68页第三十二页,共69页。while 循环循环(xnhun)while(Condition)Action;do-while 循环循环(xnhun)doAction; while(Condition)第32页/共68页第三十三页,共69页。if(c1) act1; if(c2) act2; else if(c3) act3; else act4;分析分析(fnx):假设,条件:假设,条件 c1 为真,为真, 条件条件 c2 和条件和条件 c3 为假为假第33页/共68页第三

23、十四页,共69页。n流程图不能出现回溯现象。n如果流程图位于 Stateflow 的 Chart 层次,则在连续两次更新之间, 整个 Stateflow 框图处于非活动的状态。第34页/共68页第三十五页,共69页。该 Stateflow 框图具有两个状态: 状态 Normal 和状态 Inverse。在这两个状态中都包含了流程图。 它们包含的流程图十分简单, 就是根据输入数据进行相应的逻辑判断, 然后决定具体的输出。从框图上看,这两个流程图的体系结构完全一致, 有所区别的就是参数,即处理的数据不同(b tn), 这里可以通过图形函数的形式来完成模型的创建。第35页/共68页第三十六页,共69

24、页。第36页/共68页第三十七页,共69页。状态面板(min bn)(StatusPane)控制面板(min bn)(Control Pane)选项面板(min bn)(Control Pane)显示面板(min bn)(Display Pane)第37页/共68页第三十八页,共69页。测是有效的,在执行前进入调试模式。事件的断点:Start of Broadcast: 在事件被广播之前进入调试模式End of Broadcast: 在事件广播结束后进入调试模式图形函数的断点:Function Call: 在函数被调用之前进入调试模式第38页/共68页第三十九页,共69页。第四章第四章 有限有

25、限(yuxin)(yuxin)状态系统状态系统层次化建模层次化建模状态动作层次化建模历史(lsh)节点内部转移子状态图stateflow的查询工具第39页/共68页第四十页,共69页。第40页/共68页第四十一页,共69页。 on event 事件相当于 during 事件的子集(z j), 即当 STEP_UP 事件发生时,首先执行 during 动作, 然后再来执行 on STEP_UP 动作。这样,在发生 STEP_UP 事件时, track数据对象每次累加了两次。数据对象 data 与状态(zhungti) A 进行了绑定, 这样在其他的地方就只能读取 data,而不能修改数据对象 d

26、ata。 第41页/共68页第四十二页,共69页。行广播的。此外, 类型为 Local 的事件也可以进行广播, 这就是在第 6 章将要介绍的本地事件广播。第42页/共68页第四十三页,共69页。第43页/共68页第四十四页,共69页。当 Stateflow 框图中的转移动作发出函数调用事件(shjin)之后,系统首先执行 Simulink 模型中的函数调用子系统;当函数调用子系统全部运行完毕,并将新的计算结果提供给 Stateflow 的输入数据对象后,Stateflow 才继续激活相应的目标状态。因此,在很多 Simulink 和 Stateflow 混合的系统模型中,都充分利用了这一“函数

27、调用” 特性,利用 Stateflow 模型来控制 Simulink 子系统的运行,合理完成数据的交互任务。第44页/共68页第四十五页,共69页。第45页/共68页第四十六页,共69页。第46页/共68页第四十七页,共69页。case1:假设, 当前 Super1 状态(zhungti)处于活动状态(zhungti)同时其子状态(zhungti) Sub2 也处于活动状态(zhungti),当事件 E发生时case2:如果 Super2 状态处于(chy)活动状态, 同时其子状态 Sub4 处于(chy)活动状态,当事件 E发生时第47页/共68页第四十八页,共69页。历史节点是一种特殊(t

28、sh)的 Stateflow 图形对象,它只能够用于具有层次的状态内部在层次化的框图子状态之间如果(rgu)存在超转移, 则历史节点也无法发挥作用历史节点能够影响默认转移的工作,使默认转移仅在首次激活系统时发挥作用,其余的时间就依赖于历史节点记录的状态来恢复子状态的活动情况第48页/共68页第四十九页,共69页。内部转移能够(nnggu)适当地减小模型复杂度, 提高模型的执行效率第49页/共68页第五十页,共69页。(1)当前状态 A 处于(chy)活动状态, 事件 E 发生, 但是条件 C1 不满足(2)事件(shjin) E 再次发生了,而且此时条件 C1 满足(3)事件 E 第三次发生,

29、 此时条件 C2 不满足(1)当前父状态 A 处于活动状态,同时子状态A1 处于活动状态, 当事件 R 发生时(2)如果当前父状态 A 处于活动状态,同时子状态 A2 处于活动状态,当事件 R 发生第50页/共68页第五十一页,共69页。父层次状态内边缘出发的转移。父层次状态内边缘出发的转移。(3)从活动的子状态开始检测转移。从活动的子状态开始检测转移。 从子状态从子状态外边缘出发穿越父状态边缘的转移外边缘出发穿越父状态边缘的转移超超转移,首先被检测。转移,首先被检测。(4) 然后是父状态内部子状态之间的转移被检然后是父状态内部子状态之间的转移被检测。测。第51页/共68页第五十二页,共69页

30、。假设此时父状态 A 处于(chy)活动状态并且子状态 A1处于(chy)活动状态,当触发发生时,根据前面介绍的层次化状态图转移检测优先权和转移冲突检测优先权,求系统处理的次序状态动作与状态执行状态动作与状态执行(zhxng)的次序的次序(1)当 Super 父状态(zhungti)被首次激活时(2)当父状态处于活动状态而此时 发生了某个事件触发时示例:讨论示例:讨论转移检测转移检测第52页/共68页第五十三页,共69页。第53页/共68页第五十四页,共69页。第五章第五章 有限有限(yuxin)(yuxin)状态系统状态系统并行机制并行机制并行机制本地事件广播隐含(yn hn)事件时间逻辑第

31、54页/共68页第五十五页,共69页。两种模式共存的情况。状态 Slot 和状态 Player 的边框是虚线,因此这两个状态就是处于(chy)并行状态的 Stateflow 状态其内部(nib)包含的子状态 NoDisk 和HasDisk 以及 Stop 和 Play 状态边框是实线,因此子状态之间是互斥的状态,子状态在相应的层次同一时刻只能有一个处于活动状态。第55页/共68页第五十六页,共69页。当第一个事件发生时,求系统首先激活整个状态(zhungti)图,依次激活相应的状态(zhungti)并执行动作当再次发生事件 E 时,求系统依次(yc)执行相应的转移并执行相应的动作第56页/共6

32、8页第五十七页,共69页。第57页/共68页第五十八页,共69页。第58页/共68页第五十九页,共69页。的状态,而不是(b shi)出现一呼百应的情况。直接事件广播需要通过函数 send 来实现,它的语法如下:send(event_name,state_name);第59页/共68页第六十页,共69页。事件广播事件广播(gungb)的执行次序的执行次序事件事件(shjin)广播很类似函数的调用,可以将广播事件广播很类似函数的调用,可以将广播事件(shjin)看做在动作执行的过程中调用了一个函数看做在动作执行的过程中调用了一个函数,在函数执行完毕退出之后在函数执行完毕退出之后,系统才继续后面的

33、工作。也就是说,当事件系统才继续后面的工作。也就是说,当事件(shjin)被广播后,系统将被广播后,系统将与事件与事件(shjin)广播相关的所有动作都执行完毕之后,广播相关的所有动作都执行完毕之后, 才会继续执行广播事件才会继续执行广播事件(shjin)动作之后需要执行动作之后需要执行的其他动作。的其他动作。第60页/共68页第六十一页,共69页。假设当前处于活动的子状态(zhungti)为 A1a 和 A2a, 当事件 E1 发生时如果此时活动的子状态同样为 A1a 和 A2a, 那么当事件(shjin) E1 发生时第61页/共68页第六十二页,共69页。假设当前处于(chy)活动的子状

34、态为 A1a 和 A2a,当事件 E1 发生时受限事件受限事件(shjin)广播的执行广播的执行假设当前处于活动的子状态为 A1a 和 A2a,当事件 E1 发生时第62页/共68页第六十三页,共69页。Stateflow 在处理状态机工作时实际上是一种单线程的工作方式, 事件广播会打断当前的工作流程,而且只有在广播事件相关(xinggun)的工作全部结束之后,才继续处理原来的后续工作。在这种处理方式下,事件广播对原有的工作流程有时可能会造成一些影响,并且产生一些冲突现象。针对不同的动作类型, Stateflow 解决的原则略有不同, 这里总结如下:Entry 动作: 如果与事件广播相关的所有动作都执行完毕之后, 状态已经不再处于活动状态,则所有剩余的 en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论