Stateflow系统建模技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Stateflow系统建模技术2010年7月5日内容提要•Stateflow入门介绍及基本概念•创建状态图•状态转移•流程图建模•状态图的层次•并行机制Stateflow入门介绍•Stateflow是一个交互式设计工具,用来对复杂的事件驱动模型系统进行建模与仿真。通过紧密地与Simulink和MATLAB集成,Stateflow将复杂的控制和监督逻辑有效地结合到Simulink模型中,为Simulink用户提供了一个设计嵌入式系统的完美解决方案。Stateflow入门介绍Stateflow能够做:•基于有限状态机理论对复杂的响应型系统进行可视化建模与仿真•设计和开发复杂的监控逻辑•在同一个Stateflow框图中同时使用流程图和状态转移图表示法•自动地从模型中生成整数或浮点数代码•可随时方便修改设计,评估结果,验证系统性能stateflow基本概念动作数据对象连接节点缺省转移状态转移事件条件有限元状态机stateflow基本概念—状态机•有限元状态机是具有有限个状态的系统的理论表述。它以某些缺省的状态为起点,根据所定义的事件和转移进行操作。转移表示状态机如何对事件进行响应。它有明确的输入和输出个数,可以明确地配置所有的模式或状态。它定义了导致系统从一个状态转换到另一个状态的逻辑或事件•直观理解:模型中包含的所有stateflow块的集合stateflow基本概念—状态•在有限元状态机里,状态描述的是系统的一种模式。状态具有布尔行为,也就是说在任何给定的时刻它或者是活动的或者是非活动的。•状态在系统中被看作为记忆元件。它保持系统的当前模式,一旦被激活,状态就保持活动的模式,直到系统改变模式,状态才变为非活动的。•在层次的同一级里,所有的状态要么是互斥(OR)的要么并行(AND)的。如果状态之间是互斥的,那么在任何给定的时刻只有一个状态是活动的,如果状态之间是并行的,在同一时刻所有的状态都是活动的。在同一级里面不可能有既是互斥的又是并行的状态存在。它们必须是或者互斥或者并行。stateflow基本概念—转移•转移描述的是有限状态系统内的逻辑流。转移管理了当系统从当前状态改变时,这个系统可能发生的模式改变。当转移发生时,源状态变为非活动的,目标状态变为活动的。stateflow基本概念—事件•事件控制有限状态系统的执行。只有某个事件发生后系统才能从一个状态改变到另一个状态。事件是非图形对象——每个事件都被定义成一个独立的名字。如果一个转移用一个事件名做为标签,仅当那个事件发生时,转移才有效。如果转移没用事件名作为标签,只要有事件发生转移就有效。stateflow基本概念—条件•条件是有限状态系统中的有效流,条件必须定义在[]括号中。当一个事件发生时,只有当[]括号中的语句为真或非零时,带有条件标签的转移才有效。转移可以同时拥有事件和条件;条件要放在事件名之后。当转移标签既有事件又有条件时,只有当指定的事件发生并且条件为真时转移才有效stateflow基本概念—动作•转移动作是当一个转移发生时要执行的命令。转移动作定义在“/”之后,动作能影响系统本身,并且(或者)影响到与有限状态系统相关的一些外部元素。动作能够处理数据,调用函数,发生触发事件。•如果把动作和转移相关联,动作语句要放在事件标签和条件语句的后面。stateflow基本概念—数据对象•数据对象存储了关于条件和动作的一些必要的信息。数据对象是非图形对象–每一个数据对象都被指定成一个独立的名字。stateflow基本概念—连接节点•连接节点作为转移通路的判决点或汇合点。它不是记忆元件。因此,转移的执行不能停留在节点上,必须到达某个状态时,转移才能停止。•连接节点可以作为一个决策点。由于连接节点不是记忆元件,转移必须到达某个状态时,执行才能结束。因此,可以利用这个特点来简化模型。stateflow基本概念—缺省转移•缺省转移确定当有限状态机或者父状态处于活动状态的时候,在所有的子状态中第一个被激活的状态。图中当有限状态机变为活动的时候,它首先尝试激活带有缺省转移的子状态,同时可以在缺省转移的标签上加上事件和条件来进行限制,也可以将动作和缺省转移相关联。•注意:缺省转移并不意味着停止状态在最初就是活动的,它仅仅标志着当DVD播放机系统变为活动的时候这个状态是活动的实例:DVD播放机8缺省转移1状态2转移3事件4条件5动作7连接节点6Counter数据对象一个状态机(也可以包含多个Chart)内容提要•Stateflow入门介绍及基本概念•创建状态图•状态转移•流程图建模•状态图的层次•并行机制创建状态图—插入图块Chart•在MATLAB命令窗口输入sfnew•直接从stateflow库中拖Chart块到模型中拖创建状态图—几个术语•每个Chart被称作一个stateflow图块,每个图块都有对应的stateflow框图,模型中所有的图块的集合叫做stateflow状态机,且一个模型中只有一个状态机图块框图双击图块包含的内容创建状态图—编辑器•可以用编辑器开发stateflow框图•仿真过程中可以用编辑器来显示状态图的执行过程创建状态图—编辑器•将框图锁定的方法:File→ChartProperties→Locked选项创建状态图—插入状态和节点•先左键单击选中对象按钮,然后在编辑区左键单击放下对象•要插入一个对象的多个拷贝,双击对象按钮,然后再编辑区左键单击添加,右键单击停止添加•要删除某个对象,选中后按Delete键删除创建状态图—框图的缩放•缩放范围20%至500%•左键单击zoom按钮上部放大,下部缩小•左键单击两个zoom按钮的中间调用下拉菜单来选择缩放的比例•移动鼠标到两个zoom按钮的中间空白处,左键保持在该处直到出现双箭头,向上向下拖拉进行缩放2个zoom按钮创建状态图—改变状态尺寸•左键保持状态的一个圆角拖拉即可,当移动鼠标到状态的圆角时,会出现一个双箭头,这是就可以左键保持这个圆角,然后拖拉直到满意的尺寸大小创建状态图—改变节点尺寸•右键单击节点,弹出一个快捷菜单,然后选择JunctionSize选项选择需要的大小尺寸创建状态图—移动和复制对象•左键保持并且拖拉对象,移动一个状态或节点•右键保持拖动对象,拷贝一个对象•如果想移动或拷贝一组对象,首先要框选所感兴趣的对象,然后按上面的方法操作•注:单击时必须点到对象的边缘里面创建状态图—状态的标签•每个状态都必须要有一个名字。标签一个状态时,左键单击问号,在光标处输入文本。注意鼠标点接近问号时它所发生的变化。状态名要以字符串开始,中间不能有空格,但可以写成多行。编辑状态标签时,左键单击标签进入文本编辑模式。创建状态图—创建转移•从源对象的边缘左键保持并且拖拉到目标对象边缘。转移只能开始或终止于状态的直线的边缘(不能是状态的圆角)。当鼠标点接近状态的直线边缘时光标变为十字花。•默认情况下,转移的精确行为是有效的,要想使他无效,可以在转移上右键单击,在快捷菜单上清掉Smart选项。创建状态图—创建缺省转移•左键单击图形编辑器左边的一列工具条上的第三个按钮,然后左键单击缺省状态的直线边缘。如果转移从状态或节点的边缘分离出来,它就会变成缺省转移。创建状态图—转移的变更•从一个状态的边缘到另一个状态的边缘,可以改变转移的任何一个末端(带箭头或不带箭头的):左键保持在想改变的转移的末端,然后拖拉它离开原来的边缘到达想要的目标的边缘时释放转移的末端,重新连接转移•要想改变转移的线路而不影响它的两端的连接时,左键保持在转移的两个末端之间的线上,拖拉即可改变创建状态图—转移标签及移动•给转移加标签:左键单击转移选中它,左键单击出现的问号,在光标处插入文本。左键单击文本进入文本编辑模式进行编辑转移的标签•移动转移标签:左键保持在标签位置,拖拉到想安放的位置,可以把转移标签移到框图内的任何位置创建状态图——添加注释•在框图中指定位置添加注释:右键单击框图中要加注释的位置,弹出快捷菜单选择快捷菜单中的AddNote选项在光标处插入文本•左键单击文本进入到编辑模式编辑文本注释创建状态图—定制对象属性•右键单击某一对象,弹出快捷菜单,选择Properties选项,就会出现关于这个对象的属性对话框。•不同对象,属性对话框有所差异转移属性对话框状态属性对话框创建状态图—设置字体大小•设置状态和转移的标签及注释信息的字体大小:左键单击选中对象选取Edit菜单下的SetFontSize选项选择合适的字体•也可以通过对象的快捷菜单进行设置:右键单击对象弹快捷菜单选取FontSize选项选择合适的尺寸创建状态图—设置箭头尺寸•修改转移箭头尺寸的方法:右键单击转移弹出快捷菜单,从ArrowheadSize子菜单中选取合适的尺寸。从状态的快捷菜单下对该选项进行设置,所有指向该状态的边缘的箭头尺寸都将改变创建状态图—图形显示配置•可以配置一个框图的图形风格。包括定制状态、转移、节点、标签和背景的颜色,状态和转移标签的字体。通过选取Edit菜单下的Style选项打开图形风格对话框来进行编辑。•对话框中:左键单击对象或标签,设置颜色右键单击标签,设置字体内容提要•Stateflow入门介绍及基本概念•创建状态图•状态转移•流程图建模•状态图的层次•并行机制状态转移—概念•Stateflow状态图被称为“状态转移图”,这些状态图中包含了所谓的状态、状态转移管理和维护当前内存中活动的状态•一旦包含了状态转移的状态图处于活动的状态,则状态图将一直处于这种活动状态,直到整个模型仿真计算结束。•当在某一个制定的时间步长内完成了必要的工作后,状态图简单地进入到一种暂时挂起的状态,而不是非活动状态。也就是说,在连续两次触发事件之间,状态图是一直处于活动状态的。状态转移—概念(续)•具有状态转移的Stateflow状态图相当于一种包含了离散系统模块的触发子系统。这种子系统在内存中保持自己的状态,在有触发时更新自己的输出,而在两个连续的触发之间保持自己的状态。状态转移—概念(续)•当一个状态转移图处于活动状态时,这个状态转移图首先尝试激活相应的状态,以及邻近的状态。如果,状态机处于第一层,则执行的第一个元素是系统的默认转移。由于状态机在模型运行结束之前一直处于活动状态,默认转移仅仅有效一次,即在状态机被激活的首次有效,这一点必须注意。如果状态的第一层仅有一个状态,则可以不使用默认的转移。一旦进入一个状态,这个状态就一直处于活动状态,直到退出为止。与状态机类似,状态也在连续两次触发之间挂起而不会成为不活动状态。状态转移—事件驱动•所谓事件是指触发的发生。一个触发可以是隐含存在的,按照预先的配置自动的发生。同样,触发也可以显性的定义,在一个具有过零特性的信号发生,或者被函数调用时,触发发生,也就是发出了事件。由于这种触发而引起的相应的动作执行,被称之为事件驱动•在Stateflow中,所有的状态图的运行都是依靠事件驱动。换句话说,状态图是依赖于事件而活动的。事件同样驱动状态的变化。•每次触发一次,状态图就重新进行判断一次。状态转移—过零触发•过零触发事件具有三种形式:1上升沿触发:当过零信号由负值变为正值,或者由负值变为0,或者由0变为正2下降沿触发:当过零信号由正值变为负值,或者由正值变为0,或者由0变为负值3双边沿触发:上述两种触发机制的结合下降沿上升沿状态转移—产生事件•利用下列的模块可以在Simulink中产生相应的过零信号:震荡函数脉冲发生器阶跃信号(每个阶跃信号仅能产生一个事件)双端输入开关静态模块状态转移—输入事件定义•使用事件驱动具体的转移时,需要在相应的转移上标注事件的名称。然而,所有Stateflow状态机使用的事件都必须在数据字典中明确定义•定义一个从Simulink输入事件的过程比较简单,选择Add菜单下Event命令,接着选择InputFromSimulink命令。在弹出的对话框中写入需要定义事件的名称,这个名称必须与状态转移标签上标注的名称一致。同样,需要选择触发的类型,这里需要注意的

1 / 114
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功