版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、状态流系统建模技术,2010年7月5日,1,执行摘要,状态流和基本概念简介创建状态图,状态转换流图,建模状态图的分层并行机制,2,状态流简介2,状态流是一个交互式设计工具,用于建模和模拟复杂的事件驱动模型系统。通过与Simulink和MATLAB的紧密结合,Stateflow将复杂的控制和监控逻辑有效地结合到Simulink模型中,为Simulink用户设计嵌入式系统提供了一个完美的解决方案。Stateflow简介3、Stateflow可以做到:基于有限状态机理论对复杂响应系统进行可视化建模和仿真,设计和开发复杂的监控逻辑,并通过在同一个Stateflow框图中使用流程图和状态转移图表示,从模
2、型中自动生成整数或浮点代码,可以随时方便地修改设计、评估结果和验证系统性能。stateflow基本概念、动作数据对象连接节点默认转换、状态转换事件条件、有限元状态机、5、示例:DVD播放机、8默认转换、1状态、2转换、3事件、4条件、5动作、7连接节点、6计数器数据对象、状态机执行摘要、状态流和基本概念简介:创建状态图、状态转换流程图、建模状态图的分层并行机制、7、创建状态图、插入框图、在MATLAB命令窗口中输入sfnew、直接将图表块从状态流库拖动到模型、拖动、8、创建每个图表称为一个状态流图块,每个图块都有一个对应的状态流框图,模型中所有图块的集合称为状态流状态机,并且只有一个、状态机、
3、图块、图块,双击、图块中包含的内容,9、创建一个状态图编辑器。您可以使用编辑器来开发状态流框图。在模拟过程中,您可以使用编辑器来显示状态图的执行过程。10、创建状态图编辑器,并锁定框图:文件图表属性锁定选项、11、创建状态图以插入状态和节点,首先单击选择对象按钮,然后在编辑区域左键单击拖放对象以插入对象的多个副本,双击对象按钮,然后在编辑区域左键单击添加,右键单击停止添加要删除的对象,选择、12、后按删除键删除,并创建状态图的缩放,缩放范围为20%到500%。左键单击缩放按钮的上部放大。左下缩放点击两个缩放按钮的中间,调用下拉菜单选择缩放比例。将鼠标移动到两个缩放按钮的中间位置。保持左键不动,
4、直到出现双箭头。上下拖动可缩放。2个缩放按钮、13、创建状态图以更改状态大小。通过用左键拖动来保持状态的圆角。当鼠标移动到状态的圆角时,会出现一个双箭头。也就是说,您可以用左键保留此圆角,然后拖动它直到大小令人满意,14,创建状态图以更改节点大小,右键单击节点,弹出快捷菜单,然后选择“交叉点大小”选项以选择所需的大小,15,创建状态图以移动和复制对象,左键单击以保留和拖动对象,移动状态或右键单击以保持拖动对象, 复制一个对象如果你想移动或复制一组对象,你应该首先选择你感兴趣的对象,然后按照上面的方法操作。 注意:单击时,必须指向对象的边缘,并为状态图的状态创建一个标签。每个州都必须有一个名字。
5、当标签处于状态时,左键单击问号并在光标处输入文本。请注意,当鼠标指针接近问号时,它是如何变化的。状态名应该以中间没有空格的字符串开头,但是可以写成多行。编辑状态标签时,左键单击标签进入文本编辑模式。17、创建状态图创建一个转换,从源对象的边缘按住它,并将其拖到目标对象的边缘。在状态中,过渡只能在直线的边缘开始或结束(在状态中,它不能是圆角)。当鼠标指针接近状态的直边时,光标会变成十字。默认情况下,传输的确切行为是有效的。要使其无效,您可以右键单击传输并清除快捷菜单上的智能选项。18、创建状态图创建默认过渡,左键单击图形编辑器左侧工具栏上的第三个按钮,然后左键单击默认状态的直线边缘。如果转换与状
6、态或节点的边缘分离,它将成为默认转换。19、创建状态变化图的过渡,从一个状态的边缘到另一个状态的边缘,您可以改变过渡的任何一端(带或不带箭头):左键保持在您想要改变的过渡的末端,然后将它从原始边缘拖开以到达所需目标的边缘,释放过渡的末端, 如果要在不影响转场两端连接的情况下更改转场路线,请重新连接转场,左键单击转场两端之间的线,然后拖动以更改它。 20、创建状态图转换标签并移动,标记转换:左键单击转换选择它,左键单击问号,并在光标处插入文本。左键单击文本,进入文本编辑模式,编辑传送的标签。移动转移的标签:左键单击标签位置并将其拖动到所需位置。您可以将转移的标签移动到框图中的任何位置。21、创建
7、一个状态图并添加注释。在框图中的指定位置添加注释:右键单击要在框图中注释的位置。弹出快捷菜单,选择快捷菜单中的添加注释选项,在光标处插入文本,左键单击文本进入编辑模式,编辑文本,注释,22,创建状态图,自定义对象属性,右键单击对象,弹出快捷菜单,选择属性选项,将出现关于该对象的属性对话框。不同的对象有不同的属性对话框。传输属性对话框、状态属性对话框、23、创建状态图并设置字体大小。设置标签的字体大小以及状态和传送的注释信息:通过左键单击所选对象,选择编辑菜单下的设置字体大小选项,或通过对象的快捷菜单进行设置;右键单击对象以选择字体大小选项,以选择合适的大小;24、创建状态图以设置箭头大小并修改
8、传送箭头大小:右键单击传送以弹出快捷菜单,并从箭头大小子菜单中选择适当的大小。从状态的快捷菜单中设置此选项,指向状态边缘的所有箭头的大小都将改变。25、创建状态图图形显示配置,并配置框图的图形样式。包括自定义状态、过渡、节点、标签和背景的颜色,以及状态和过渡标签的字体。通过选择“编辑”菜单下的样式选项进行编辑,打开“图形样式”对话框。在对话框中:左键单击对象或标签,设置颜色,右键单击标签,设置字体,26,执行摘要,Stateflow简介和基本概念创建状态图,状态转换流程图对状态图的层次并行机制进行建模,27,状态转换概念,Stateflow状态图被称为“状态转换图”,这些状态图包含所谓的状态,
9、状态转换管理和当前活动状态在内存中的维护。一旦包含状态转换的状态图处于活动状态,状态图将保持在该活动状态,直到整个模型仿真计算完成。当必要的工作在某个时间步长内完成时,状态图只是进入暂时挂起状态,而不是非活动状态。也就是说,状态图在两个连续的触发事件之间总是活动的。28、状态转移的概念(续),状态转移的Stateflow状态图相当于一个包含离散系统模块的触发子系统。这个子系统在内存中保持自己的状态,当有触发器时更新自己的输出,并在两个连续的触发器之间保持自己的状态。29、状态转移的概念(续),当一个状态转移图处于活动状态时,这个状态转移图首先试图激活相应的状态和相邻状态。如果状态机在第一层,执
10、行的第一个元素是系统的默认转换。由于状态机总是在模型运行结束之前处于活动状态,因此默认转换只有效一次,即状态机第一次被激活,这一点必须注意。如果第一级状态只有一个状态,则不能使用默认转换。一旦进入某个状态,它将一直保持活动状态,直到您退出。类似于状态机,状态在两个连续的触发器之间暂停,而不变为非活动状态。30、状态转换事件驱动,所谓事件指的是触发器的发生。触发器可以隐式存在,并根据预设配置自动发生。同样,触发器也可以显式定义。当具有过零特性的信号出现或被函数调用时,触发发生,即发出事件。由该触发器引起的相应动作执行在Stateflow中称为事件驱动,所有状态图的操作都依赖于事件驱动。换句话说,
11、状态图是活动的,取决于事件。事件也会驱动状态变化。每当它被触发时,状态图将被再次判断。31、状态转换由过零触发,过零有三种形式:1上升沿触发:过零信号从负值变为正值,或从负值变为0,或从0变为正值2下降沿触发:过零信号从正值变为负值,或从正值变为0,或从0变为负值3双沿触发:上述两种触发机制的组合、下降沿、上升沿、 30以下模块可用于在Simulink中产生相应的过零信号:振荡函数脉冲发生器的阶跃信号(每个阶跃信号只能产生一个事件)双端输入开关静态模块,33、状态转换输入事件定义、事件类型,34、状态转换定义多个输入事件、35、状态转换默认转换注释,当父状态再次从非活动状态进入活动状态时,将再
12、次执行默认转换。 当默认转换在状态图的第一层时,要小心。如果第一个触发事件发生时默认转换无效,系统将发出模糊警告。当父状态被激活并且父状态中的子状态不能确认哪个被激活时,通常会发出此警告错误。此时,状态图被激活,但是没有明确的状态被激活。注意:如果从状态流调试器的错误检测选项字段中删除了状态不一致,将不会发出上述模糊错误警告。36、状态转换的默认转换注意事项(续),必须记住,一旦激活状态流状态图,状态图将保持激活状态,直到系统模拟结束。由于默认转换的执行依赖于父状态的重新激活,这里的默认转换将不再有机会被执行。如果需要通过事件来控制状态的执行,可以创建一个虚拟状态,或者将状态图放在启用子系统中
13、,并将相应的触发事件设置为复位。例如:exp01_1和exp01_2,37、状态转换使用数据对象,这些数据对象主要用于条件和动作语句。您可以根据需要限制状态流图中数据对象的使用,也可以使用数据对象作为图表与外部环境的接口,这是Simulink模型中的其他模块。、用于条件、用于操作、38、状态转换定义数据对象、添加数据、数据名称、数据对象范围、数据类型、39、状态转换活动状态输出,可用作Stateflow块的输出。在状态属性对话框中选择输出状态活动选项。Stateflow块创建一个数据对象并将其输出到模型。数据对象的名称与状态的名称相同,数值只能是1或0。exp02,40,状态转换浏览器,您可以
14、通过使用浏览器来观察定义的数据和事件来运行浏览器:使用工具菜单下的资源管理器命令。浏览器的左栏显示了状态机中包含的所有层次结构、事件和数据。层次结构,41,状态转换浏览器(续),您可以在浏览器中定义事件和数据对象的属性,用鼠标右键拖放事件或数据对象,并完成复制操作。浏览器中的“添加”菜单可以完成将数据和事件对象添加/定义到层次树中选定的状态流程图的操作,42、状态转换使用条件、条件表达式包括:使用布尔运算符比较两个数据对象;以布尔变量作为返回值的函数;条件表达式不能通过调用函数来更改数据对象或影响图中状态分配表达式的更改;它们不能用作条件表达式;使用“与”运算符“”完成条件表达式的“与”运算;
15、使用或运算符“| |”完成条件表达式的或运算;43、状态转移动作,转移动作标签主要由四部分组成。没有必要将上述所有部分都包含在转移操作标签中,但是转移操作标签必须按照图中所示的顺序书写。条件动作和转移动作是有区别的。条件动作在条件满足时运行,而传输动作需要在整个传输路径有效时运行。参见示例exp03、事件、条件、条件动作、转换动作、44、状态转换状态动作。在以下情况下,会发生状态动作:最初为非活动状态,事件驱动的激活进入动作最初为活动状态,事件驱动的进入非活动状态退出动作最初为活动状态。事件不会改变其活动状态。在动作期间或在动作上,状态动作通常是状态名称标签的一部分,紧接着是标签名称。一些关键
16、字可以用来识别动作类型。45、状态转换状态动作(续),状态动作有四种类型:系统默认状态动作是entry,46、状态转换动作执行顺序,当事件被驱动且条件满足时,相应条件动作的执行有效,系统只执行转换动作。原始状态的退出动作在执行转换动作之前执行,然后是组含义动作,然后是目标状态的进入动作。47、状态转换动作语言、Stateflow动作语言是在图表内部进行交互,而接口动作语言的功能是在图表和外部环境之间进行交互:执行数学计算:操作数据对象调用函数:使用MATLAB或C语言函数触发事件:影响内部或外部状态,48、状态转换支持的数学运算,二进制运算:*/%-=| | | |酉运算:-赋值操作:=-*=/=位操作:|=|=,49,状态转换调用MATLAB函数,调用MATLAB函数,并且需要在函数名称前使用MATLAB命名空间运算符。例如,当用ml运算符调用MATLAB函数时,ml y=ml.abs(x)应注意以下几点:对于用ml关键字调用的MATLAB函数,当只以标量或字符串作为输入参数调用函数时,括号是必需的,不管被调用的函数是否有参数,如果被调用的函数有返回参数,返回值的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论