Stateflow使用方法.ppt

上传人:不*** 文档编号:3291917 上传时间:2020-07-30 格式:PPT 页数:57 大小:1.77MB
返回 下载 相关 举报
Stateflow使用方法.ppt_第1页
第1页 / 共57页
Stateflow使用方法.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《Stateflow使用方法.ppt》由会员分享,可在线阅读,更多相关《Stateflow使用方法.ppt(57页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Stateflow软件使用方法,Stateflow软件简介 有限状态机简介 各功能模块的使用方法,yy,Stateflow的基本简介:,Statefolw 是一种图形化的设计开发工具,是有限状态机的图 形实现工具,也称之为状态流。 主要用于simulink 中控制和检测逻辑关系。 使用这种图形化的工具可以实现各个状态之间的转换,解决复 杂的监控逻辑问题。 它和Simulink 同时使用使得Simulink 更具有事件驱动控制能力。,有限状态机简介:,Stateflow 的仿真原理是有限状态机(finite state machine,简 称FSM)理论。 所谓有限状态机是指系统中存在可数的状态

2、,在某些事件发生 时,系统从一个状态转换成另一个状态,故又称为事件驱动的系统。 在有限状态机的描述中,可以设计出由一种状态转换至另一种 状态的条件,并将每对可转换的状态均设计出状态迁移的事件,从 而构造出状态迁移图。,有限状态机示意图:,Stateflow允许用户: (1)建立有限的状态。 (2)用图形的形式绘制出状态 迁移的条件。 (3)使用规定的命令设计状 态迁移执行的任务。 完成以上操作即构造出整 个有限状态机系统。,注:Stateflow 模型一般是嵌在Simulink 模型下运行的,Stateflow 是由事件 驱动的,这些事件可以来自某一个Stateflow 图中,也可以来自Sim

3、ulink。,在MATLAB窗口中点开Simulink,在Simulink的library中点开 Stateflow,将chart拖入一个新建的文件中,结果如下图所示。,双 击 untitled* 窗口中的Stateflow 模块打开如图下图 所示的Stateflow 编辑界面,用户可以在此窗口中编辑所需的Stateflow 模型。Stateflow 提供了强大的图形编辑功能,用户可以使用它描述很复杂的逻辑关系式。,1.状态工具,2.历史交汇工具,3.缺省状态迁移工具,4.交汇连接工具,5.真值表,6.图形函数工具,7.内嵌Matlab函数,8.模型整理工具,10放大缩小工具,9.函数调用,在

4、Stateflow 编辑界面中点击鼠标右键,可以看到下图(a)所 示的快捷菜单,选择其中的Properties(属性)菜单,可以打开图 (b)所示的对话框,用户可以在此对话框中设置整个Stateflow 模 型的属性。,用户可以利用Stateflow 编辑界面左侧的编辑工具绘制Stateflow图形,下面介绍常用的编辑工具。,1.状态工具,2.历史交汇工具,3.缺省状态迁移工具,4.交汇连接工具,5.真值表,6.图形函数工具,7.内嵌Matlab函数,8.模型整理工具,10放大缩小工具,9.函数调用,状态工具,系统的状态是指系统运行的模态。在Stateflow 下,状态有两种行为:活动的(ac

5、tive)和非活动的(inactive)。 单击状态工具按钮并拖动到编辑界面的空白处,即可绘制出一个状态的示意模块。我们可以在该模块右上角的问号位置填写状态的名称及动作描述。,entry为一种状态动作。 右图中状态的动作描述为: entry:speed = 1, 将speed 的值赋为1。 使用CtrlC 和CtrlV 或使用edit菜单下的复制及粘贴命令,即可再复制一个同样的模块。,(2)右击建立的状态图标,并选择快捷菜单中的Properties 菜 单项,可打开如下图所示的设置状态属性的对话框。可以 在Label 栏填写状态的名称和动作描述。,状态名称与动作的描述:,(1)双击已拖出的状态

6、模块右上角的问号,可在该位置填写状态 的名称及动作描述。,状态模块的名称,状态属性设置对话框,在Label 栏填写状态 的名称和动作描述。,选择状态动作,状态迁移关系设置:,把鼠标放在一个状态块的边界,当出现十字光标时按下鼠标键并拖动至另一个状态的边界释放,可以绘制出从一个状态到另一个状态的连线。单击此连线,在该连线上会出现一个问号,我们可以在该问号处添加状态迁移标记。 。,状态迁移标记可以含有触发事件、迁移条件、条件动作及迁移动作,或他们中的任意组合。,状态迁移标记的一般形式是: 触发事件迁移条件关系式条件动作/迁移动作,触发事件:表示只要迁移关系式是真,该触发事件可以引发状态的迁移。 缺省

7、触发事件时,任何事件均可在条件关系式为真的情况下引 引发状态的迁移。 迁移条件关系式:写在方括号中,该关系式为真时,触发事件可以引发状 态的迁移。 条件动作:是指当迁移条件关系式一旦成立(即为真),就执行的动作, 通常发生在迁移终点被确定有效之前。如果没有规定迁移条件 关系式,则认为条件关系式为真,即刻执行条件动作。条件动 作必须写在花括号中。 迁移动作:是指当迁移终点已经确定有效,才执行的动作。如果迁移包含 很多阶段,迁移动作只有在整个迁移通道到终点确认为有效后 方可执行。迁移动作写在斜线/之后。,状态迁移标记的一般形式举例,上图表明只要当条件关系式off_count=0 为真时,发生的事件

8、off_switch 才可引发状态On至状态Off 的迁移发状态迁移。只要迁移条件off_count=0 为真,即可执行条件动作off_count+;当条件off_count=0为真,发生了 off_switch 事件,迁移终点状态Off 确认为有效,此时执行迁移动作LED_off,条件动作,迁移关系表达式,触发事件,迁移动作,缺省状态转移设置,ss,3.,缺省状态转移设置的作用是告诉Stateflow图形,当它开始工作时,哪个状态先处激活状态。点击Stateflow 图形编界面中的 图标,然后将鼠标移动到要设置为初始状态的状态即可。如图:,4.,事件与数据设置,前面为状态迁移规定了迁移触发事

9、件的名称,也就是说状态的迁移仅在这些事件发生的时候才开始。为了利用这些事件触发,我们必须先定义这些事件。下面以下图为例,讲解如何定义on_ switch 和off_switch 事件。,从stateflow 编辑界面的add 菜单选择 Event,并在随后弹出的下拉菜单下选择 Input from Simulink ,打开事件对话框,见图。,将事件对话框中的 Name 改为off_switch/on_switch,trigger 选择为Falling (即下降沿触发)/Rising(即上升沿触发),点击 OK 保存off_switch 事件的设置。,事件的范围(Scope)有三种选择:Loca

10、l 是指利用本 Stateflow 图形界面产生的触发事件; Input from Simulink 是指从 Simulink 模型引入事件至 Stateflow 图形界面;Output to Simulink 是指将Stateflow 图形界面产生的事件输出到Simulink 模型中。 事件的触发方式(Trigger)有四种选择:Either、Rising、Falling 和 Function Call 。其中选择Rising 或Falling 分别指利用事件的上升沿或下降沿触发;Either 是指不管上升沿还是下降沿事件均可以触发;Function Call 是一种函数调用的触发方式。,前

11、面我们还为状态设置了动作,如状态 On的动作描述为 entry:speed = 1 ,是希望在状态 On激活时将speed 的值赋为 1 ,这个数据是要在 Simulink 模型中使用的,所以要将数据传递到Simulink 模型中。在能够被利用之前,这个数据必须先定义。,从stateflow 编辑界面的add 菜单选择 Data ,并在随后弹出的下拉菜单下选择 Output to Simulink ,打开数据对话框,如图; 将数据名Name改为speed,点击OK保存设置即可。,常用设置: 数据范围(Scope)可以设置为Local(局部数据)、Input(从Simulink 模型中输入数据)

12、、Output(向 Simulink 模型输出数据)、 Constant(常数)、parameter(变量)和Data store memory(存储的数据)六种形式。 数据的类型(Type)可以是Double(双精度)、Single (单精度)、Int32(整数)及 Boolean(布尔数)等,也可以设置为 Inherited ,即继承原来的设置。,另一种定义事件和数据的方式: 在Stateflow 编辑界面中,选择Tools菜单中的Explore,将会打开模型管理器 Model Explorer。如图:,2020/7/30,第 24 页,点击该处添加事件,点击该处添加数据,5 交汇连接设置

13、,ljm,使用Stateflow编辑界面中的交汇连接工具 可以产生交汇连接点。 该工具主要用于处理状态迁移过程中的迁移信号的分离和汇合。,简单的使用了交汇连接工具的实例:,事实上,交汇连接工具的合理使用可以完成非常复杂的逻辑关系: 例如实现如下if_then 判断功能,if Cond1 Action1 if Cond2 Action2 elseif Cond3 Action3 ,还可实现For 循环功能:,6、图形函数的设置及其调用,前面例子中的Stateflow 图中多次利用了条件关系式temp=120。对于这种多次使用的关系式,我们可以设置一个图形函数Function,使用时调用这个函数即

14、可。 状态流的图形函数是使用交汇连接工具和状态迁移工具绘制的状态流图形。 用户可以建立一个图形函数,在里面加入流程图,然后在状态的动作和迁移过程中反复调用。 因为调用函数时,函数必须执行完全,所以图形函数中不能含有状态。一个最小的图形函数至少要包含一个缺省状态迁移和一个终止的交汇连接工具。,要在一个 Stateflow 图添加一个图形函数Function,只需点击Stateflow 图中的图形函数工具 ,移动鼠标至Stateflow 图中的适当位置,再点击一下鼠标左键即可。在图形函数function 后写入函数的返回变量及函数名 格式为:返回形参函数名(形参); 回车后即可建立该图形函数。一旦

15、建立了图形函数,用户可以在状态流的状态动作和状态迁移中反复调用它,调用的格式与函数的格式完全相同,只是需要将形参换成实际的参数变量。,这两个 工具必 须有!,2020/7/30,第 36 页,7、多层状态的嵌套,继续上面的例子:当系统开始处于休眠状态时,状态Off 激活时,状态High 和Low 实际上均需要On_switch事件激活,这样我们可以利用一个状态来包含这两个状态,这样可以使Stateflow 图更简单明了。下面说明如何进行多层状态的设计以及多层状态在仿真时如何进行状态迁移的。,可以将上层状态包含的状态迁移图设置成子图的形式。 用户只需在上层状态On 内的任意点点击鼠标右键,在出现

16、的下拉菜单中选择Make Contents 中的Subchart 即可。 Make Contents 中的Subchart 具有复选功能,再选它时,上层状态又变回非子图形式了。,双击打开子图,历史交汇工具的功能和使用方法,ss,8.,功能:Stateflow 图进入上层状态时,缺省状态迁移线连接的子状态首先被激活。但在有些情况下,希望在进入上层状态时首先激活前一次运行时最后激活的那个子状态。这样的要求可以通过在上层状态中引入历史交汇工具完成。 使用方法:点击Stateflow 图左侧的历史交汇工具图标 ,然后将鼠标移至上层状态中的任意位置,再点击鼠标即添加了一个历史交汇工具。如图:,9、嵌入式

17、 M 函数的设置及其调用,嵌入式 MATLAB 函数使用户可以利用MATLAB 强大的功能,在Stateflow 图中编MATLAB 语言函数,调用MATLAB 的各类函数。Simulink 利用嵌入MATLAB 函数的状态流实现Simulink 模型中嵌入MATLAB 模块功能。,9、嵌入式 M 函数的设置及其调用,单击M文件图标后将其拖入工作区,在左上图中问号处单击写入MATLAB 函数名及其形参名,如MaxMin(x) 双击新建的M文件会出现函数编辑窗口,当MATLAB中自带函数不能实现所需功能,我们可以在该窗口编辑实现目标功能所需的函数。,M文件图标,10、真值表的设置及其使用,Sta

18、teflow 模块使用函数来处理在Stateflow 图中需反复处理的动作或判断。 在真值表中,用户可以用条件、决策和动作来做逻辑判断,并执行相应的动作。 对于纯粹的逻辑来讲,真值表比图形函数更容易编写、维护,也更容易阅读。真值表还可以告诉用户是否对于指定的条件做出了足够的或过多的决策。,10、真值表的设置及其使用,Stateflow 使用真值表函数实现逻辑决策及相应动作的执行。 Stateflow 真值表含有条件、决策和动作。,Condition(条件)列中的每个条件先要判断是真(T)或 假(F),对于上表,就是判断x1,y1,z1 是否成立。每个条件可以如上表标记为T、F 或-(即不 论T

19、 或F),10、真值表的设置及其使用,每个Decision(决策)列隐含着各个条件的“与”操作。表12.1 中Decision1 列中,当x1 为真,而y1 和z1 同时为假时,Decision1 为真。 执行过程中,Stateflow 会从Decision1 开始判断真值表中的每个决策,如果哪个Decision为真,就执行该Decision 对应的动作。如当x1 为真,而y1 和z1 同时为假时,Decision1为真,执行动作将t 置为1。 表中的最后一个决策称为缺省决策,它包含着除了前面列举的决策外的所有其他决策。如果Decision13 都是假的,则Default Decision 自

20、动为真,执行其对应的动作,将t 值置为4。,10、真值表的设置及其使用,单击M文件图标后将其拖入工作区,在左上图中问号处单击写入MATLAB 函数名及其形参名,如MaxMin(x) 双击新建的M文件会出现真值表编辑窗口,当内嵌窗口不能实现所需功能,我们可以在该窗口编辑所需函数,真值表图标,10、真值表的设置及其使用-真值表编辑窗口,单击 增添条件编辑表和动作编辑表中的行数。 单击 增添Decision 决策的列数,用Box工具整理状态流程图,Boxes 能够很方便地用来整理Stateflow 图。,yy,Box的创建方法:,(1)利用 Stateflow 编辑界面左边的Box 工具 。 点击图

21、标 ,将鼠标移至Stateflow 编辑界面的适当位置,再点击鼠标,即可创建一个Box 对象,在Box 的问号处写入该Box 的名称。,(2)可以先建立一个状态,将该状态转换为Box。 右击创建好的状态,在弹出的下拉菜单中选择TypeBox 即可创建一个Box 对象。,创建好 Box 工具后,用户可以在此Box 工具中创建其他的对象以 完成一定的逻辑判断功能。,(3)有的时候,用户可能已经建立了一些对象了,这时,可以利用 上述的两种方法创建 Box 对象,然后将Box 框扩大到能够包含 所以需要包入的对象。,图形的打包处理: 将所有的对象放入Box 中后,用户还可以将整个含对象的Box打包成一

22、个图形对象,只要右击Box,在弹出的下拉菜单中选择Make ContentsGroup 或简单的双击该Box 对象,即可完成打包过程,打包的对象边框变粗,如图(a) 内保图形的隐藏: 用户也可以右击Box,在弹出的下拉菜单中选择Make Contents Subcharted 隐含Box 中的对象,将Box 中的对象变成子图形式,如图(b)。,(a),(b),(1)对于逻辑顺序的影响: 大多数情况下,Boxes 不改变Stateflow 图实现的逻辑判断功能,但是在存在并行状态时,它却影响着Stateflow 图中的激活顺序。Stateflow 图中左边的的Box 比它右边任何并行状态或者Bo

23、x 要先激活。在某一个Box 内,并行状态的激活顺序依然是上下左右的顺序。(关于并行状态的问题,下节即将讲述),其他问题的说明:,(2)关于数据的适用范围 对一个 Box 添加数据,可以使Box 中的所有元素共享该数据。,12、含并行执行状态的Stateflow图,单一状态(Exclusive State 或称为Or State),单一状态的边界是实线。单一状态的最大特征是同一时间,父状态中仅有一个子状态可以处于激活状态。 并行状态(Parallel State 或称为And State)的边界是虚线,并行状态的特点是父状态中的多个子状态可以同时处于激活状态。 并行状态在状态图中的位置决定着其激活的顺序。位于上部的状态较位于下部的状态较早被激活,同一高度层中,位于左边的状态较位于右边的状态较早被激活。激活的顺序依照上下,左右的原则。,12、含并行执行状态的Stateflow图,在Stateflow 编辑界面的空白处,右击鼠标,在弹出的下拉菜单中选择DecompositionParallel(AND)即可将两个状态Fan1 和Fan2 设置为并行状态,表现为该两状态的边框变为虚线,且Stateflow 按照上下左右的原则,自动给出此两个并行状态执行的顺序,并在其右上角标出顺序号。,

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

当前位置:首页 > 技术资料 > 实施方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com