您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Stateflow使用方法
Stateflow软件使用方法Stateflow软件简介有限状态机简介各功能模块的使用方法——yyStateflow的基本简介:Statefolw是一种图形化的设计开发工具,是有限状态机的图形实现工具,也称之为状态流。主要用于simulink中控制和检测逻辑关系。使用这种图形化的工具可以实现各个状态之间的转换,解决复杂的监控逻辑问题。它和Simulink同时使用使得Simulink更具有事件驱动控制能力。有限状态机简介:Stateflow的仿真原理是有限状态机(finitestatemachine,简称FSM)理论。所谓有限状态机是指系统中存在可数的状态,在某些事件发生时,系统从一个状态转换成另一个状态,故又称为事件驱动的系统。在有限状态机的描述中,可以设计出由一种状态转换至另一种状态的条件,并将每对可转换的状态均设计出状态迁移的事件,从而构造出状态迁移图。有限状态机示意图:Stateflow允许用户:(1)建立有限的状态。(2)用图形的形式绘制出状态迁移的条件。(3)使用规定的命令设计状态迁移执行的任务。完成以上操作即构造出整个有限状态机系统。注:Stateflow模型一般是嵌在Simulink模型下运行的,Stateflow是由事件驱动的,这些事件可以来自某一个Stateflow图中,也可以来自Simulink。在MATLAB窗口中点开Simulink,在Simulink的library中点开Stateflow,将chart拖入一个新建的文件中,结果如下图所示。双击untitled*窗口中的Stateflow模块打开如图下图所示的Stateflow编辑界面,用户可以在此窗口中编辑所需的Stateflow模型。Stateflow提供了强大的图形编辑功能,用户可以使用它描述很复杂的逻辑关系式。1.状态工具2.历史交汇工具3.缺省状态迁移工具4.交汇连接工具5.真值表6.图形函数工具7.内嵌Matlab函数8.模型整理工具10放大缩小工具9.函数调用在Stateflow编辑界面中点击鼠标右键,可以看到下图(a)所示的快捷菜单,选择其中的Properties(属性)菜单,可以打开图(b)所示的对话框,用户可以在此对话框中设置整个Stateflow模型的属性。用户可以利用Stateflow编辑界面左侧的编辑工具绘制Stateflow图形,下面介绍常用的编辑工具。1.状态工具2.历史交汇工具3.缺省状态迁移工具4.交汇连接工具5.真值表6.图形函数工具7.内嵌Matlab函数8.模型整理工具10放大缩小工具9.函数调用状态工具系统的状态是指系统运行的模态。在Stateflow下,状态有两种行为:活动的(active)和非活动的(inactive)。单击状态工具按钮并拖动到编辑界面的空白处,即可绘制出一个状态的示意模块。我们可以在该模块右上角的问号位置填写状态的名称及动作描述。entry为一种状态动作。右图中状态的动作描述为:entry:speed=1,将speed的值赋为1。使用Ctrl+C和Ctrl+V或使用edit菜单下的复制及粘贴命令,即可再复制一个同样的模块。(2)右击建立的状态图标,并选择快捷菜单中的Properties菜单项,可打开如下图所示的设置状态属性的对话框。可以在Label栏填写状态的名称和动作描述。状态名称与动作的描述:(1)双击已拖出的状态模块右上角的问号,可在该位置填写状态的名称及动作描述。状态模块的名称状态属性设置对话框在Label栏填写状态的名称和动作描述。选择状态动作状态迁移关系设置:把鼠标放在一个状态块的边界,当出现十字光标时按下鼠标键并拖动至另一个状态的边界释放,可以绘制出从一个状态到另一个状态的连线。单击此连线,在该连线上会出现一个问号,我们可以在该问号处添加状态迁移标记。。状态迁移标记可以含有触发事件、迁移条件、条件动作及迁移动作,或他们中的任意组合。状态迁移标记的一般形式是:触发事件[迁移条件关系式]{条件动作}/迁移动作触发事件:表示只要迁移关系式是真,该触发事件可以引发状态的迁移。缺省触发事件时,任何事件均可在条件关系式为真的情况下引引发状态的迁移。迁移条件关系式:写在方括号中,该关系式为真时,触发事件可以引发状态的迁移。条件动作:是指当迁移条件关系式一旦成立(即为真),就执行的动作,通常发生在迁移终点被确定有效之前。如果没有规定迁移条件关系式,则认为条件关系式为真,即刻执行条件动作。条件动作必须写在花括号中。迁移动作:是指当迁移终点已经确定有效,才执行的动作。如果迁移包含很多阶段,迁移动作只有在整个迁移通道到终点确认为有效后方可执行。迁移动作写在斜线’/’之后。状态迁移标记的一般形式举例上图表明只要当条件关系式off_count==0为真时,发生的事件off_switch才可引发状态On至状态Off的迁移发状态迁移。只要迁移条件[off_count==0]为真,即可执行条件动作off_count++;当条件[off_count==0]为真,发生了off_switch事件,迁移终点状态Off确认为有效,此时执行迁移动作LED_off条件动作迁移关系表达式触发事件迁移动作缺省状态转移设置ss3.缺省状态转移设置的作用是告诉Stateflow图形,当它开始工作时,哪个状态先处激活状态。点击Stateflow图形编界面中的图标,然后将鼠标移动到要设置为初始状态的状态即可。如图:4.事件与数据设置前面为状态迁移规定了迁移触发事件的名称,也就是说状态的迁移仅在这些事件发生的时候才开始。为了利用这些事件触发,我们必须先定义这些事件。下面以下图为例,讲解如何定义on_switch和off_switch事件。从stateflow编辑界面的add菜单选择Event,并在随后弹出的下拉菜单下选择InputfromSimulink,打开事件对话框,见图。将事件对话框中的Name改为off_switch/on_switch,trigger选择为Falling(即下降沿触发)/Rising(即上升沿触发),点击OK保存off_switch事件的设置。事件的范围(Scope)有三种选择:Local是指利用本Stateflow图形界面产生的触发事件;InputfromSimulink是指从Simulink模型引入事件至Stateflow图形界面;OutputtoSimulink是指将Stateflow图形界面产生的事件输出到Simulink模型中。事件的触发方式(Trigger)有四种选择:Either、Rising、Falling和FunctionCall。其中选择Rising或Falling分别指利用事件的上升沿或下降沿触发;Either是指不管上升沿还是下降沿事件均可以触发;FunctionCall是一种函数调用的触发方式。前面我们还为状态设置了动作,如状态On的动作描述为entry:speed=1,是希望在状态On激活时将speed的值赋为1,这个数据是要在Simulink模型中使用的,所以要将数据传递到Simulink模型中。在能够被利用之前,这个数据必须先定义。从stateflow编辑界面的add菜单选择Data,并在随后弹出的下拉菜单下选择OutputtoSimulink,打开数据对话框,如图;将数据名Name改为speed,点击OK保存设置即可。常用设置:数据范围(Scope)可以设置为Local(局部数据)、Input(从Simulink模型中输入数据)、Output(向Simulink模型输出数据)、Constant(常数)、parameter(变量)和Datastorememory(存储的数据)六种形式。数据的类型(Type)可以是Double(双精度)、Single(单精度)、Int32(整数)及Boolean(布尔数)等,也可以设置为Inherited,即继承原来的设置。另一种定义事件和数据的方式:在Stateflow编辑界面中,选择Tools菜单中的Explore,将会打开模型管理器ModelExplorer。如图:2019/11/13第24页点击该处添加事件点击该处添加数据5交汇连接设置ljm使用Stateflow编辑界面中的交汇连接工具可以产生交汇连接点。该工具主要用于处理状态迁移过程中的迁移信号的分离和汇合。简单的使用了交汇连接工具的实例:事实上,交汇连接工具的合理使用可以完成非常复杂的逻辑关系:例如实现如下if_then判断功能if[Cond1]{Action1if[Cond2]{Action2}elseif[Cond3]{Action3}}还可实现For循环功能:6、图形函数的设置及其调用前面例子中的Stateflow图中多次利用了条件关系式[temp=120]。对于这种多次使用的关系式,我们可以设置一个图形函数Function,使用时调用这个函数即可。状态流的图形函数是使用交汇连接工具和状态迁移工具绘制的状态流图形。用户可以建立一个图形函数,在里面加入流程图,然后在状态的动作和迁移过程中反复调用。因为调用函数时,函数必须执行完全,所以图形函数中不能含有状态。一个最小的图形函数至少要包含一个缺省状态迁移和一个终止的交汇连接工具。要在一个Stateflow图添加一个图形函数Function,只需点击Stateflow图中的图形函数工具,移动鼠标至Stateflow图中的适当位置,再点击一下鼠标左键即可。在图形函数function后写入函数的返回变量及函数名格式为:返回形参=函数名(形参);回车后即可建立该图形函数。一旦建立了图形函数,用户可以在状态流的状态动作和状态迁移中反复调用它,调用的格式与函数的格式完全相同,只是需要将形参换成实际的参数变量。这两个工具必须有!2019/11/13第36页7、多层状态的嵌套继续上面的例子:当系统开始处于休眠状态时,状态Off激活时,状态High和Low实际上均需要On_switch事件激活,这样我们可以利用一个状态来包含这两个状态,这样可以使Stateflow图更简单明了。下面说明如何进行多层状态的设计以及多层状态在仿真时如何进行状态迁移的。可以将上层状态包含的状态迁移图设置成子图的形式。用户只需在上层状态On内的任意点点击鼠标右键,在出现的下拉菜单中选择MakeContents中的Subchart即可。MakeContents中的Subchart具有复选功能,再选它时,上层状态又变回非子图形式了。双击打开子图历史交汇工具的功能和使用方法ss8.•功能:Stateflow图进入上层状态时,缺省状态迁移线连接的子状态首先被激活。但在有些情况下,希望在进入上层状态时首先激活前一次运行时最后激活的那个子状态。这样的要求可以通过在上层状态中引入历史交汇工具完成。•使用方法:点击Stateflow图左侧的历史交汇工具图标,然后将鼠标移至上层状态中的任意位置,再点击鼠标即添加了一个历史交汇工具。如图:9、嵌入式M函数的设置及其调用•嵌入式MATLAB函数使用户可以利用MATLAB强大的功能,在Stateflow图中编MATLAB语言函数,调用MATLAB的各类函数。Simulink利用嵌入MATLAB函数的状态流实现Simulink模型中嵌入MATLAB模块功能。9、嵌入式M函数的设置及其调用•单击M文件图标后将其拖入工作区,在左上图中问号处单击写入MATLAB函数名及其形参名,如MaxMin(x)•双击新建的M文件会出现函数编辑窗口,当MATLAB中自带函数不能实现所需功能,我们可以在该窗口编辑实现目标功能所需的函数。M文件图标10、真值表的设置及其使用•Stateflow模块使用函数来处理在Stateflow图中需反复处理的动作或判断。•在真值表中,用户可以用条件、决策和动作来做逻辑判断,并执行相应的动作。•对于纯粹的逻辑来讲,真值表比图形函数更容易编写、维护,也更容易阅读。真值表还可以告诉用户是否对于指定的条件做出了足够的或过多的决策。10、真值表的设置及其使用•Stateflow使用真值表函数实现逻辑决策及相应动作
本文标题:Stateflow使用方法
链接地址:https://www.777doc.com/doc-1806548 .html