Stateflowmatlab教程.ppt
《Stateflowmatlab教程.ppt》由会员分享,可在线阅读,更多相关《Stateflowmatlab教程.ppt(114页珍藏版)》请在三一办公上搜索。
1、Stateflow系统建模技术,2010年7月5日,内容提要,Stateflow入门介绍及基本概念创建状态图状态转移流程图建模状态图的层次并行机制,Stateflow入门介绍,Stateflow是一个交互式设计工具,用来对复杂的事件驱动模型系统进行建模与仿真。通过紧密地与Simulink和MATLAB集成,Stateflow将复杂的控制和监督逻辑有效地结合到Simulink模型中,为Simulink用户提供了一个设计嵌入式系统的完美解决方案。,Stateflow入门介绍,Stateflow能够做:基于有限状态机理论对复杂的响应型系统进行可视化建模与仿真设计和开发复杂的监控逻辑在同一个State
2、flow框图中同时使用流程图和状态转移图表示法自动地从模型中生成整数或浮点数代码可随时方便修改设计,评估结果,验证系统性能,stateflow基本概念,动作数据对象连接节点缺省转移,状态转移事件条件,有限元状态机,实例:DVD播放机,8缺省转移,1状态,2转移,3事件,4条件,5动作,7连接节点,6Counter数据对象,一个状态机(也可以包含多个Chart),内容提要,Stateflow入门介绍及基本概念创建状态图状态转移流程图建模状态图的层次并行机制,创建状态图插入图块Chart,在MATLAB命令窗口输入 sfnew直接从stateflow库中拖Chart块到模型中,拖,创建状态图几个术
3、语,每个Chart被称作一个stateflow图块,每个图块都有对应的stateflow框图,模型中所有的图块的集合叫做stateflow状态机,且一个模型中只有一个,状态机,图块,框图,双击,图块包含的内容,创建状态图编辑器,可以用编辑器开发stateflow框图仿真过程中可以用编辑器来显示状态图的执行过程,创建状态图编辑器,将框图锁定的方法:FileChartPropertiesLocked选项,创建状态图插入状态和节点,先左键单击选中对象按钮,然后在编辑区左键单击放下对象要插入一个对象的多个拷贝,双击对象按钮,然后再编辑区左键单击添加,右键单击停止添加要删除某个对象,选中后按Delete
4、键删除,创建状态图框图的缩放,缩放范围20%至500%左键单击zoom按钮 上部放大,下部缩小左键单击两个zoom按钮的中间调用下拉菜单来选择缩放的比例移动鼠标到两个zoom按钮的中间空白处,左键保持在该处直到出现双箭头,向上向下拖拉进行缩放,2个zoom按钮,创建状态图改变状态尺寸,左键保持状态的一个圆角拖拉即可,当移动鼠标到状态的圆角时,会出现一个双箭头,这是就可以左键保持这个圆角,然后拖拉直到满意的尺寸大小,创建状态图改变节点尺寸,右键单击节点,弹出一个快捷菜单,然后选择Junction Size选项选择需要的大小尺寸,创建状态图移动和复制对象,左键保持并且拖拉对象,移动一个状态或节点右
5、键保持拖动对象,拷贝一个对象如果想移动或拷贝一组对象,首先要框选所感兴趣的对象,然后按上面的方法操作注:单击时必须点到对象的边缘里面,创建状态图状态的标签,每个状态都必须要有一个名字。标签一个状态时,左键单击问号,在光标处输入文本。注意鼠标点接近问号时它所发生的变化。状态名要以字符串开始,中间不能有空格,但可以写成多行。编辑状态标签时,左键单击标签进入文本编辑模式。,创建状态图创建转移,从源对象的边缘左键保持并且拖拉到目标对象边缘。转移只能开始或终止于状态的直线的边缘(不能是状态的圆角)。当鼠标点接近状态的直线边缘时光标变为十字花。默认情况下,转移的精确行为是有效的,要想使他无效,可以在转移上
6、右键单击,在快捷菜单上清掉Smart选项。,创建状态图创建缺省转移,左键单击图形编辑器左边的一列工具条上的第三个按钮,然后左键单击缺省状态的直线边缘。如果转移从状态或节点的边缘分离出来,它就会变成缺省转移。,创建状态图转移的变更,从一个状态的边缘到另一个状态的边缘,可以改变转移的任何一个末端(带箭头或不带箭头的):左键保持在想改变的转移的末端,然后拖拉它离开原来的边缘 到达想要的目标的边缘时释放转移的末端,重新连接转移要想改变转移的线路而不影响它的两端的连接时,左键保持在转移的两个末端之间的线上,拖拉即可改变,创建状态图转移标签及移动,给转移加标签:左键单击转移选中它,左键单击出现的问号,在光
7、标处插入文本。左键单击文本进入文本编辑模式进行编辑转移的标签移动转移标签:左键保持在标签位置,拖拉到想安放的位置,可以把转移标签移到框图内的任何位置,创建状态图添加注释,在框图中指定位置添加注释:右键单击框图中要加注释的位置,弹出快捷菜单选择快捷菜单中的Add Note选项在光标处插入文本左键单击文本进入到编辑模式编辑文本,注释,创建状态图定制对象属性,右键单击某一对象,弹出快捷菜单,选择Properties选项,就会出现关于这个对象的属性对话框。不同对象,属性对话框有所差异,转移属性对话框,状态属性对话框,创建状态图设置字体大小,设置状态和转移的标签及注释信息的字体大小:左键单击选中对象选取
8、Edit菜单下的Set Font Size选项选择合适的字体也可以通过对象的快捷菜单进行设置:右键单击对象弹快捷菜单选取Font Size选项选择合适的尺寸,创建状态图设置箭头尺寸,修改转移箭头尺寸的方法:右键单击转移弹出快捷菜单,从Arrowhead Size子菜单中选取合适的尺寸。从状态的快捷菜单下对该选项进行设置,所有指向该状态的边缘的箭头尺寸都将改变,创建状态图图形显示配置,可以配置一个框图的图形风格。包括定制状态、转移、节点、标签和背景的颜色,状态和转移标签的字体。通过选取Edit菜单下的Style选项打开图形风格对话框来进行编辑。对话框中:左键单击对象或标签,设置颜色右键单击标签,
9、设置字体,内容提要,Stateflow入门介绍及基本概念创建状态图状态转移流程图建模状态图的层次并行机制,状态转移概念,Stateflow状态图被称为“状态转移图”,这些状态图中包含了所谓的状态、状态转移管理和维护当前内存中活动的状态一旦包含了状态转移的状态图处于活动的状态,则状态图将一直处于这种活动状态,直到整个模型仿真计算结束。当在某一个制定的时间步长内完成了必要的工作后,状态图简单地进入到一种暂时挂起的状态,而不是非活动状态。也就是说,在连续两次触发事件之间,状态图是一直处于活动状态的。,状态转移概念(续),具有状态转移的Stateflow状态图相当于一种包含了离散系统模块的触发子系统。
10、这种子系统在内存中保持自己的状态,在有触发时更新自己的输出,而在两个连续的触发之间保持自己的状态。,状态转移概念(续),当一个状态转移图处于活动状态时,这个状态转移图首先尝试激活相应的状态,以及邻近的状态。如果,状态机处于第一层,则执行的第一个元素是系统的默认转移。由于状态机在模型运行结束之前一直处于活动状态,默认转移仅仅有效一次,即在状态机被激活的首次有效,这一点必须注意。如果状态的第一层仅有一个状态,则可以不使用默认的转移。一旦进入一个状态,这个状态就一直处于活动状态,直到退出为止。与状态机类似,状态也在连续两次触发之间挂起而不会成为不活动状态。,状态转移事件驱动,所谓事件是指触发的发生。
11、一个触发可以是隐含存在的,按照预先的配置自动的发生。同样,触发也可以显性的定义,在一个具有过零特性的信号发生,或者被函数调用时,触发发生,也就是发出了事件。由于这种触发而引起的相应的动作执行,被称之为事件驱动 在Stateflow中,所有的状态图的运行都是依靠事件驱动。换句话说,状态图是依赖于事件而活动的。事件同样驱动状态的变化。每次触发一次,状态图就重新进行判断一次。,状态转移过零触发,过零触发事件具有三种形式:1上升沿触发:当过零信号由负值变为正值,或者由负值变为0,或者由0变为正 2下降沿触发:当过零信号由正值变为负值,或者由正值变为0,或者由0变为负值 3双边沿触发:上述两种触发机制的
12、结合,下降沿,上升沿,状态转移产生事件,利用下列的模块可以在Simulink中产生相应的过零信号:震荡函数脉冲发生器阶跃信号(每个阶跃信号仅能产生一个事件)双端输入开关静态模块,状态转移输入事件定义,事件类型,状态转移定义多个输入事件,状态转移默认转移注意事项,当其父状态被激活的时候,默认转移仅仅执行一次。那么当父状态再次从非活动状态进入到活动状态,默认转移将再次执行当默认转移在状态图的第一层的时候,需要小心。如果第一次触发事件发生时默认转移无效,系统将发出一个二义性警告,这个警告错误一般在父状态被激活,而父状态下的子状态不能确认具体哪一个被激活时发出。这时候,状态图被激活了,但是没有一个确定
13、的状态被激活。注:如果在Stateflow调试器中从错误检测选项字段中去除State Inconsistency,则上述的二义性错误警告不会发出。,状态转移默认转移注意事项(续),一定要牢记一点,一旦Stateflow状态图被激活,则状态图会一直处于激活状态直到系统仿真的结束。由于默认转移的执行需要依赖父状态的再次激活,则这里的默认转移将不再有机会执行了。若需要通过事件来控制状态的执行,则可以建立一个哑元状态,或者将状态图置于使能子系统中,将相应的触发事件设置为Reset 例子:exp01_1和exp01_2,状态转移使用数据对象,数据对象主要是用在条件和动作语句中。可以根据需要在Statef
14、low图表中限制数据对象的使用,也可以使用数据对象作为chart和外部环境的接口,这里所说的外部环境即Simulink模型中的其他模块。,用在条件中,用在动作中,状态转移定义数据对象,添加数据,数据名称,数据对象范围,数据类型,状态转移活动状态输出,可以将状态的活动状态作为Stateflow块的输出,在状态属性对话框中选中Output State Activity选项,stateflow块就创建了一个数据对象输出到模型,而数据对象名称和状态的名称一致,数值只能是1或0例子exp02,状态转移浏览器,使用浏览器可以观察所定义的数据和事件运行浏览器:使用Tool菜单下的Explorer命令浏览器左
15、边列显示了状态机包含的所有层次结构,事件,数据,层次结构,状态转移浏览器(续),在浏览器中可以定义事件和数据对象属性用鼠标右键拖放事件或数据对象,可以完成复制操作浏览器中的Add菜单可以对在层次树中选择的stateflow图表完成添加/定义数据和事件对象的操作,状态转移使用条件,条件表达式包括:使用布尔运算符比较两个数据对象 以布尔变量作为返回值的函数 条件表达式不能通过调用函数而更改数据对象或影响改变图表中的状态 赋值表达式不能作为条件表达式 使用“与”操作符“&”完成条件表达式的与操作 使用“或”操作符“|”完成条件表达式的或操作,状态转移转移动作,转移动作标签主要由四个部分组成在转移动作
16、标签中不一定需要包含所有的上述部分,但是必须按照图中所示的顺序书写转移动作标签。条件动作和转移动作运行有所区别,条件动作在条件满足的时候就运行了,而转移动作需要在整个转移通路有效时才运行。见例子exp03,事件,条件,条件动作,转移动作,状态转移状态动作,在下列情况时,发生状态动作:初始为非活动状态,事件驱动使其激活entry动作初始为活动状态,事件驱动使其进入非活动状态exit动作 初始为活动状态,事件没有改变其活动的状态during动作或on动作 状态动作一般作为状态名称标签的一部分,可以紧跟在标签名称后面 可以使用一些关键字来标识动作的作用类型,状态转移状态动作(续),有四种类型状态动作
17、:,系统默认的状态动作为entry,状态转移动作执行顺序,在有事件驱动且条件满足的时候,执行相应的条件动作整条通路都有效,系统才执行转移动作原状态的退出动作在转移动作执行之前被执行接着是组含义动作,然后是目标状态的进入动作,状态转移动作语言,Stateflow的动作语言是图表内部进行交互,以及图表和外部环境进行交互的接口 动作语言的功能:执行数学计算:操作数据对象调用函数:使用MATLAB或C语言的函数触发事件:影响内部或外部的状态,状态转移支持的数学运算,二元操作:*/%+-=&|&|一元操作:!-+-赋值运算:=+=-+*=/=位操作:&|&=|=,状态转移调用MATLAB函数,调用MAT
18、LAB 函数,需要在函数的名字前使用MATLAB命名空间运算符,如ml y=ml.abs(x)在使用ml运算符调用MATLAB函数时需要注意以下几点:使用ml关键字调用的MATLAB函数,仅能使用标量或者字符串作为函数的输入参量 调用函数时的圆括号是必须,无论被调用的函数是否具有参量 如果调用的函数具有返回参数,则返回数值的类型必须为double型 如果具有多个返回变量,仅有第一个返回变量被赋值如果返回的参数不是标量,仅向量中的第一个元素被赋值,状态转移C语言数学函数,调用C语言数学函数:如y=abs(x)仿真目标代码生成器提供了min和max函数的宏定义下表中所列的数学函数可以被调用,状态转
19、移调用函数,调用MATLAB函数时需要使用ml操作符,而调用C语言函数的时候则比较简单,例exp04,调用C语言函数,调用MATLAB函数,状态转移图表更新,图表更新也是可以配置的,更新主要有三种形式:Triggered 或Inherited 状态或者被外部输入的事件触发,或者按照输入信号的采样频率进行触发Sampled 按照一个固定的频率触发状态转换 Continuous每个仿真步长触发状态转换执行File菜单下的Chart Properties命令,在弹出的对话框中,设置Update method 字段中的内容 系统默认的更新方式是Triggered or Inherited,状态转移触发
20、与继承,通过触发事件更新状态图需要在stateflow块输入具有过零特性的信号如果具有输入的事件,必须使用Triggered Inherited更新方法如果没有输入的事件,则状态图按照输入信号的采样频率自动更新使用继承更新方法,状态图依赖输入信号的更新而更新 exp05,采样周期设为0.2,状态转移采样更新,如果使用采样更新,则stateflow块类似于离散块具有固定的执行频率采样更新方法按照固定的时间步长触发状态图的更新使用该方法必须指定一个采样时间采样更新方法等同于状态图具有固定周期的驱动事件exp06,离散采样周期0.2,状态转移连续更新,使用连续更新方法时,状态图的运行类似于连续系统模
21、块连续更新方法在每一个仿真步长触发状态图的转换连续更新方法等同于状态图具有最小时间步长的触发事件exp07,状态转移调试器,使用stateflow调试器解决状态图中的错误在调试器中运行模型,可以完全控制模型运行的过程执行调试器:使用Tool菜单下的Debug命令,执行状态,全局断点,调试动作,错误检测,动画控制,控制信息,运行信息,状态转移设置断点,可以将转移或状态作为本地断点来控制状态图的运行右键单击对象在快捷菜单中选择Properties选项在breakpoints设置相应的属性设置也可以将断点设置为数据对象的修改或者事件的触发,而这些设置在Stateflow浏览器中完成。,断点控制,状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Stateflowmatlab 教程
链接地址:https://www.31ppt.com/p-5449532.html