Stateflow系统建模技术

上传人:仙*** 文档编号:32720362 上传时间:2021-10-15 格式:PPT 页数:114 大小:1.25MB
收藏 版权申诉 举报 下载
Stateflow系统建模技术_第1页
第1页 / 共114页
Stateflow系统建模技术_第2页
第2页 / 共114页
Stateflow系统建模技术_第3页
第3页 / 共114页
资源描述:

《Stateflow系统建模技术》由会员分享,可在线阅读,更多相关《Stateflow系统建模技术(114页珍藏版)》请在装配图网上搜索。

1、Stateflow系统建模技术2010年7月5日内容提要 Stateflow入门介绍及基本概念入门介绍及基本概念 创建状态图 状态转移 流程图建模 状态图的层次 并行机制 Stateflow入门介绍 Stateflow是一个交互式设计工具,用来对复杂的事件驱动模型系统进行建模与仿真。通过紧密地与Simulink和MATLAB集成,Stateflow将复杂的控制和监督逻辑有效地结合到Simulink模型中,为Simulink用户提供了一个设计嵌入式系统的完美解决方案。 Stateflow入门介绍Stateflow能够做: 基于有限状态机理论对复杂的响应型系统进行可视化建模与仿真 设计和开发复杂的

2、监控逻辑 在同一个Stateflow框图中同时使用流程图和状态转移图表示法 自动地从模型中生成整数或浮点数代码 可随时方便修改设计,评估结果,验证系统性能stateflow基本概念l动作l数据对象l连接节点l缺省转移l状态l转移l事件l条件有限元状态机有限元状态机实例:DVD播放机8缺省转移1状态2转移3事件4条件5动作7连接节点6Counter数据对象一个状态机(也可以包含多个Chart)内容提要 Stateflow入门介绍及基本概念 创建状态图创建状态图 状态转移 流程图建模 状态图的层次 并行机制创建状态图插入图块Chart 在MATLAB命令窗口输入 sfnew 直接从stateflo

3、w库中拖Chart块到模型中拖拖创建状态图几个术语 每个Chart被称作一个stateflow图块,每个图块都有对应的stateflow框图,模型中所有的图块的集合叫做stateflow状态机,且一个模型中只有一个状态机状态机图块图块框图框图双击双击图块包含的内容图块包含的内容创建状态图编辑器 可以用编辑器开发stateflow框图 仿真过程中可以用编辑器来显示状态图的执行过程创建状态图编辑器 将框图锁定的方法: FileChartPropertiesLocked选项创建状态图插入状态和节点 先左键单击选中对象按钮,然后在编辑区左键单击放下对象 要插入一个对象的多个拷贝,双击对象按钮,然后再编

4、辑区左键单击添加,右键单击停止添加 要删除某个对象,选中后按Delete键删除创建状态图框图的缩放 缩放范围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菜单下的S

9、tyle选项打开图形风格对话框来进行编辑。 对话框中:左键单击对象或标签,设置颜色右键单击标签,设置字体内容提要 Stateflow入门介绍及基本概念 创建状态图 状态转移状态转移 流程图建模 状态图的层次 并行机制状态转移概念 Stateflow状态图被称为“状态转移图”,这些状态图中包含了所谓的状态、状态转移管理和维护当前内存中活动的状态 一旦包含了状态转移的状态图处于活动的状态,则状态图将一直处于这种活动状态,直到整个模型仿真计算结束。 当在某一个制定的时间步长内完成了必要的工作后,状态图简单地进入到一种暂时挂起的状态,而不是非活动状态。也就是说,在连续两次触发事件之间,状态图是一直处于

10、活动状态的。状态转移概念(续) 具有状态转移的Stateflow状态图相当于一种包含了离散系统模块的触发子系统。这种子系统在内存中保持自己的状态,在有触发时更新自己的输出,而在两个连续的触发之间保持自己的状态。状态转移概念(续) 当一个状态转移图处于活动状态时,这个状态转移图首先尝试激活相应的状态,以及邻近的状态。如果,状态机处于第一层,则执行的第一个元素是系统的默认转移。由于状态机在模型运行结束之前一直处于活动状态,默认转移仅仅有效一次,即在状态机被激活的首次有效,这一点必须注意。如果状态的第一层仅有一个状态,则可以不使用默认的转移。一旦进入一个状态,这个状态就一直处于活动状态,直到退出为止

11、。与状态机类似,状态也在连续两次触发之间挂起而不会成为不活动状态。状态转移事件驱动 所谓事件是指触发的发生。一个触发可以是隐含存在的,按照预先的配置自动的发生。同样,触发也可以显性的定义,在一个具有过零特性的信号发生,或者被函数调用时,触发发生,也就是发出了事件。由于这种触发而引起的相应的动作执行,被称之为事件驱动 在Stateflow中,所有的状态图的运行都是依靠事件驱动。换句话说,状态图是依赖于事件而活动的。事件同样驱动状态的变化。 每次触发一次,状态图就重新进行判断一次。状态转移过零触发 过零触发事件具有三种形式: 1上升沿触发:当过零信号由负值变为正值,或者由负值变为0,或者由0变为正

12、 2下降沿触发:当过零信号由正值变为负值,或者由正值变为0,或者由0变为负值 3双边沿触发:上述两种触发机制的结合下降沿下降沿上升沿上升沿状态转移产生事件 利用下列的模块可以在Simulink中产生相应的过零信号:震荡函数脉冲发生器阶跃信号(每个阶跃信号仅能产生一个事件)双端输入开关静态模块状态转移输入事件定义事件类型事件类型状态转移定义多个输入事件状态转移默认转移注意事项 当其父状态被激活的时候,默认转移仅仅执行一次。那么当父状态再次从非活动状态进入到活动状态,默认转移将再次执行 当默认转移在状态图的第一层的时候,需要小心。如果第一次触发事件发生时默认转移无效,系统将发出一个二义性警告,这个

13、警告错误一般在父状态被激活,而父状态下的子状态不能确认具体哪一个被激活时发出。这时候,状态图被激活了,但是没有一个确定的状态被激活。 注:如果在Stateflow调试器中从错误检测选项字段中去除State Inconsistency,则上述的二义性错误警告不会发出。状态转移默认转移注意事项(续) 一定要牢记一点,一旦Stateflow状态图被激活,则状态图会一直处于激活状态直到系统仿真的结束。由于默认转移的执行需要依赖父状态的再次激活,则这里的默认转移将不再有机会执行了。 若需要通过事件来控制状态的执行,则可以建立一个哑元状态,或者将状态图置于使能子系统中,将相应的触发事件设置为Reset 例

14、子:exp01_1和exp01_2状态转移使用数据对象 数据对象主要是用在条件和动作语句中。可以根据需要在Stateflow图表中限制数据对象的使用,也可以使用数据对象作为chart和外部环境的接口,这里所说的外部环境即Simulink模型中的其他模块。用在条件中用在条件中用在动作中用在动作中状态转移定义数据对象添加数据添加数据数据名称数据名称数据对象范围数据对象范围数据类型数据类型状态转移活动状态输出 可以将状态的活动状态作为Stateflow块的输出,在状态属性对话框中选中Output State Activity选项,stateflow块就创建了一个数据对象输出到模型,而数据对象名称和状

15、态的名称一致,数值只能是1或0 例子exp02状态转移浏览器 使用浏览器可以观察所定义的数据和事件 运行浏览器:使用Tool菜单下的Explorer命令 浏览器左边列显示了状态机包含的所有层次结构事件事件数据数据层次结构层次结构状态转移浏览器(续) 在浏览器中可以定义事件和数据对象属性 用鼠标右键拖放事件或数据对象,可以完成复制操作 浏览器中的Add菜单可以对在层次树中选择的stateflow图表完成添加/定义数据和事件对象的操作状态转移使用条件 条件表达式包括 :使用布尔运算符比较两个数据对象 以布尔变量作为返回值的函数 条件表达式不能通过调用函数而更改数据对象或影响改变图表中的状态 赋值表

16、达式不能作为条件表达式 使用“与”操作符“&”完成条件表达式的与操作 使用“或”操作符“| |”完成条件表达式的或操作 状态转移转移动作 转移动作标签主要由四个部分组成 在转移动作标签中不一定需要包含所有的上述部分,但是必须按照图中所示的顺序书写转移动作标签。 条件动作和转移动作运行有所区别,条件动作在条件满足的时候就运行了,而转移动作需要在整个转移通路有效时才运行。见例子见例子exp03事件事件条件条件条件动作条件动作转移动作转移动作状态转移状态动作在下列情况时,发生状态动作 :初始为非活动状态,事件驱动使其激活entry动作初始为活动状态,事件驱动使其进入非活动状态exit动作 初始为活动

17、状态,事件没有改变其活动的状态during动作或on动作 状态动作一般作为状态名称标签的一部分,可以紧跟在标签名称后面 可以使用一些关键字来标识动作的作用类型 状态转移状态动作(续) 有四种类型状态动作: entry/en在事件触发状态进入活动状态时执行exit/ex在事件触发状态退出活动状态时执行during/du在事件触发发生,状态保持原来活动状态时执行on event_name当以event_name命名的事件发生时,状态保持原有的活动状态而执行相应的动作 系统默认的状态动作为entry 状态转移动作执行顺序 在有事件驱动且条件满足的时候,执行相应的条件动作 整条通路都有效,系统才执行转

18、移动作 原状态的退出动作在转移动作执行之前被执行 接着是组含义动作,然后是目标状态的进入动作状态转移动作语言 Stateflow的动作语言是图表内部进行交互,以及图表和外部环境进行交互的接口 动作语言的功能: 执行数学计算:操作数据对象调用函数:使用MATLAB或C语言的函数触发事件:影响内部或外部的状态状态转移支持的数学运算 二元操作:* / % + - = = = = != & | & | 一元操作: ! - + - 赋值运算:= += -+ *= /= 位操作: & | &= = |=状态转移调用MATLAB函数 调用MATLAB 函数,需要在函数的名字前使用MATLAB命名空间运算符,

19、如ml y = ml.abs(x) 在使用ml运算符调用MATLAB函数时需要注意以下几点:使用ml关键字调用的MATLAB函数,仅能使用标量或者字符串作为函数的输入参量 调用函数时的圆括号是必须,无论被调用的函数是否具有参量 如果调用的函数具有返回参数,则返回数值的类型必须为double型 如果具有多个返回变量,仅有第一个返回变量被赋值如果返回的参数不是标量,仅向量中的第一个元素被赋值状态转移C语言数学函数 调用C语言数学函数:如y=abs(x) 仿真目标代码生成器提供了min和max函数的宏定义 下表中所列的数学函数可以被调用状态转移调用函数 调用MATLAB函数时需要使用ml操作符,而调

20、用C语言函数的时候则比较简单 ,例例exp04调用调用C语言函数语言函数调用调用MATLAB函数函数状态转移图表更新 图表更新也是可以配置的,更新主要有三种形式:Triggered 或Inherited 状态或者被外部输入的事件触发,或者按照输入信号的采样频率进行触发Sampled 按照一个固定的频率触发状态转换 Continuous每个仿真步长触发状态转换 执行File菜单下的Chart Properties命令,在弹出的对话框中,设置Update method 字段中的内容 系统默认的更新方式是Triggered or Inherited 状态转移触发与继承通过触发事件更新状态图需要在st

21、ateflow块输入具有过零特性的信号如果具有输入的事件,必须使用Triggered Inherited更新方法如果没有输入的事件,则状态图按照输入信号的采样频率自动更新使用继承更新方法,状态图依赖输入信号的更新而更新 exp05采样周期设为采样周期设为0.2状态转移采样更新 如果使用采样更新,则stateflow块类似于离散块具有固定的执行频率 采样更新方法按照固定的时间步长触发状态图的更新 使用该方法必须指定一个采样时间 采样更新方法等同于状态图具有固定周期的驱动事件 exp06离散采样周期离散采样周期0.2状态转移连续更新 使用连续更新方法时,状态图的运行类似于连续系统模块 连续更新方法

22、在每一个仿真步长触发状态图的转换 连续更新方法等同于状态图具有最小时间步长的触发事件 exp07状态转移调试器 使用stateflow调试器解决状态图中的错误 在调试器中运行模型,可以完全控制模型运行的过程 执行调试器:使用Tool菜单下的Debug命令执行状态执行状态全局断点全局断点调试动作调试动作错误检测错误检测动画控制动画控制控制信息控制信息运行信息运行信息状态转移设置断点可以将转移或状态作为本地断点来控制状态图的运行右键单击对象在快捷菜单中选择Properties选项在breakpoints设置相应的属性设置也可以将断点设置为数据对象的修改或者事件的触发,而这些设置在Stateflow

23、浏览器中完成。断点控制断点控制状态转移查询器从Tool 菜单栏中选择find选项, 你也可以使用按钮访问finder 你可以限制搜寻的范围,要么查找Stateflow组件,要么既查找Stateflow组件,同时也查找Simulink对象。 内容提要 Stateflow入门介绍及基本概念 创建状态图 状态转移 流程图建模流程图建模 状态图的层次 并行机制流程图建模转移检测优先权如果有多个有效的转移,检测规则决定执行哪个转移限制越多的转移,优先级越高:既有事件又有条件的转移第一个被检测 仅具有事件的转移则被第二个检测 仅具有条件的转移第三个被检测 不加任何限制的转移最后被检测 exp08低低高高流

24、程图建模转移冲突 如果在同一个优先级中,具有两个合法的转移,在这种情况会触发一个转移冲突错误的警告信息。 Stateflow 通过几何的方法解决这样的问题:对于来自于一个节点的转移, 按顺时针方向检测转移 对于来自于一个状态的转移, 从状态的左上角开始,检测转移 新版本的stateflow可以自己设置转移执行的顺序流程图建模流程图Stateflow 图如果不包含任何状态就构成了一个流程图 流程图主要是由转移和连接节点组成 流程图并不包含任何存储器 流程图一旦被触发,就会一直执行到退出为止 在两个连续的触发之间,这个流程图是不活动的 流程图在没有合法的转移分支的连接节点处执行结束 流程图建模终止

25、节点 终止节点就是连接节点,只不过该连接节点聚集了所有转移路径 终止节点类似函数中的return声明 在一个流程图中,必须要有一个无条件路径来终止连接,防止无穷递归 在一个流程图中, 以 表示的条件动作仅仅是一个可执行的动作 流程图建模If else结构If else结构结构If elseif else结构结构流程图建模迭代循环结构 for 循环结构循环结构 While循环结构循环结构流程图建模临时数据vs局部数据 状态图中的局部数据就相当于函数的全局变量: 只有在状态图中,数据才可见当状态图第一次被激活时,局部数据为初值。随后在状态图被激活时,局部数据为前一次数值重新赋初值时,它的值必须要重

26、置 状态图中的临时数据对象就相当于函数中的一个局部变量 它的值仅在状态图中可见永远从初值开始在状态图的以后激活的情况下,自动重置 只有在无状态的状态图中临时数据才是有效的 2009a版本中已没有临时数据类型?流程图建模密码检测逻辑密码检测逻辑的要求: 密码是具有四个数字的输入信号 流程图应分别检测每个数字是否与预设的密码匹配 把正确的密码数字声明为常量 如果密码正确,则输出为1,否则为0 见例见例exp10内容提要 Stateflow入门介绍及基本概念 创建状态图 状态转移 流程图建模 状态图的层次状态图的层次 并行机制状态图层次概念 当一个状态图具有第二层状态时就构成了层次 高层次的状态就被

27、称为父状态,而低层次的状态就被称为子状态 状态图中允许拥有的状态层次的数目是没有任何限制的 Stateflow允许在不同层次状态之间存在转移 如果转移穿越了父状态的边界直接到达了低层次的子状态,则转移被称之为超转移 子状态的各种对象仅仅父状态活动时,才有可能执行或者有效 直接从父状态发出的转移,可以不用考虑具体哪一个子状态处于活动状态 状态图层次层次化转移在具有层次的状态之间转移时,一般转移路径的源头是从最内部的子状态出发,而终止于目标状态的最内部的子状态。例例exp11状态图层次使用层次的目的在状态图中使用层次有如下几个目的: 使用层次,可以将相关的对象组合在一起,构成族群 可以将一些通用的

28、转移路径或者动作组合成为一个转移动作或路径,简化模型 适当地使用层次,可以有效地缩减生成代码的大小,也能够提高程序执行的效率和可读性状态图层次生成组合父状态 需要将父状态组合起来 ,这样就可以作为一个整体对状态图进行移动、拷贝或者重新定义尺寸操作 方法:右键单击父状态弹出快捷菜单,选择Make Contents子菜单下的Grouped命令或者左键双击父状态状态图层次低层次默认转移第二个层次状态的默认转移决定了当父状态被激活时,具体哪一个子状态被激活 思考下图?例例exp11和和exp12状态图层次历史节点 历史节点记录了在父状态退出活动状态时,具体哪一个子状态处于活动状态 当父状态再次被激活时

29、,如果子状态没有定义显性直接转移,则历史节点将使其记录的子状态处于活动状态。 例例exp13 历史节点历史节点状态图层次内部转移 内部转移是指从父状态边缘内部出发,终止于子状态外边缘的转移,转移始终处于父状态的内部。例例exp14状态图层次层次转移测试优先权 转移的测试从活动的父状态开始 向外的转移首先被测试(level 1)接着是内部转移(level 2) 然后从活动的子状态开始检测转移穿越父状态边缘的转移首先被检测(level 3) 然后是父状态内部子状态之间的转移被检测 (level 4) 在同等层次的转移之间,具有最严格限制的转移首先被检测 状态图层次内部转移规则 状态的外部转移优先于

30、内部转移被首先测试 内部转移仅在没有有效的外部转移使父状态退出活动状态时被执行 内部转移优先于子状态之间的转移被首先测试状态图层次状态动作vs转移测试 状态入口动作在默认转移之前被执行 状态的during或on-event动作在内部转移之前被执行 例例exp15状态图层次子状态图 子状态图是从父状态图中创建的 它在功能上有别于父状态 子状态利用灰色图块隐藏内部细节 简化了状态图的复杂程度 子状态图更类似与Simulink的子系统 创建子状态图:右键单击父状态弹出快捷菜单,使用Make Contents子菜单,选择Subcharted命令状态图层次子状态图之间超转移 从源状态出发,左键拖放转移

31、将转移拖过目标状态的边界,这时在子状态图中心将出现一个虫孔 继续拖放转移到虫孔中心,编辑窗体将自动切换到子状态图的内部,显示子图的细节 继续拖放转移,到最终的子状态的边界,这样完成了超转移的设置 虫孔虫孔状态图层次状态转移流程图 状态之间的转移可以使用流程图来完成复杂的逻辑控制 一旦发生了触发,状态转移中的流程图就会被执行,直到其中的一个分支到达了某个状态 如果存在终点是连接节点的转移分支,这个转移被认为无效 例例exp16状态图层次状态中的流程图包含于状态中,而没有状态终点的流程图能够控制动作的执行每次状态被激活,则流程图被执行一次流程图的运行直到流程图到达终点的节点,或者没有有效的转移路径

32、为止当流程图运行结束后,父状态保持活动状态状态图层次定义状态本地数据 可以将数据对象的作用范围定义成为Local或者静态,这样数据对象的有效范围就可以在某个状态内部了 通过浏览器的状态列表,执行浏览器的Tool菜单下的命令,可以为状态添加本地数据对象 利用浏览器的状态列表,可以右键拖放本地数据对象到其他的状态中状态状态添加数据按钮添加数据按钮状态图层次访问数据对象 在其他状态中访问其他状态的数据对象 ,需使用下面的语法结构:state_name.data_name 如果父状态中存在与本地数据对象名称一致的数据对象,访问这个数据对象时也要使用下列语法结构:parent_name.data_nam

33、e状态图层次图形函数 图形函数是指在状态图中以图形方式存在的函数 主要结构形式是状态图的流程图 函数一旦被创建,就可以重复使用 允许包含输入输出接口来调用相应的动作或者条件状态图层次创建图形函数内容提要 Stateflow入门介绍及基本概念 创建状态图 状态转移 流程图建模 状态图的层次 并行机制并行机制并行机制概念 边框为虚线的状态表示为并行状态 当父状态处于活动状态时,并行状态也处于活动状态 将默认转移终止到并行的状态时非法的并行机制设置状态解析关系 设置状态的并行关系需要将状态默认的解析关系从互斥变为并行 用鼠标右键单击状态的父状态,注意不是每个状态,然后在Decomposition子菜

34、单下选择Parallel命令 对于顶层的状态,直接在图形编辑器背景右键单击,然后在Decomposition子菜单下选择Parallel命令并行机制使用层次的并行状态 可以在任意的层次上设置并行状态 在同一个层次上的不同状态的解析关系必须保持一致 即在某个层次上,所有的状态要么是互斥的,要么就是并行的,两种解析状态是不可能同时存在于同一个父中 并行机制并行状态的激活顺序 并行状态的激活是有一定顺序的 并行状态的激活顺序在每一个状态的右上角标明 激活次序一般按照“从上至下,从左至右”的规则激活次序标注激活次序标注并行机制并行状态执行顺序 在并行状态中的所有有效的状态(包含子状态)执行到下一个有效

35、的状态被执行为止 exp19执行一次的结果:out=1out=4out=8out=11并行机制本地事件广播使用事件广播,可以在某个状态内部触发其他并行状态的执行被广播的事件在数据字典中定义为Local 。例例exp20事件广播事件广播并行机制本地事件优先级 本地事件广播的优先级相当于函数调用 当出现事件广播时,原有的执行顺序被打断,直到所有与事件广播有关的动作执行完毕 PLAY广播事件时,先执行与其有关的动作 见例见例exp21并行机制直接事件广播 使用直接事件广播可以限制广播的事件触发指定的状态 可以防止事件广播无意识的改变整个状态图的状态 使用直接事件广播的命令格式:send(event_

36、name,state_name) 例例exp22并行机制定义状态的本地事件 可以限制事件的作用范围在状态的内部 :在浏览器种选择某个状态 使用浏览器的Add 菜单添加事件到数据字典也可以通过浏览器修改事件的可见范围 也可以修改事件到不同的状态中 并行机制受限事件广播 状态之外触发状态的本地事件需要指定状态名,命令格式为:state_name.data_name 使用受限的事件广播可以将事件限制在具体的状态内例例exp23并行机制隐含事件和条件 有助于简化并行状态之间的依赖关系 减少数据字典中定义的事件数量,降低状态图的复杂程度 隐含事件 :entry(state_name) 或en(state

37、_name)exit(state_name) 或ex(state_name)change(data_name) 或chg(data_name)wakeup 或tick 隐含条件:in(state_name)并行机制使用隐含事件和条件例例exp24并行机制时间逻辑事件使用时间逻辑事件,可以根据事件发生的次数决定事件的逻辑转换 时间逻辑操作符(at, every,after和before)分别完成相应的Boolean 运算,处理Stateflow事件的发生次数 时间逻辑可以 :监测转移 控制on-event状态动作 语法:temporal_operator(number,event_name) S

38、tateflow中有四种时间逻辑:at(n,event) : 当事件第n 次触发时 every(n,event) :当事件每触发n 次时after(n,event) :当事件触发n 次后before(n,event) :当事件第n 次触发前 例例exp25并行机制时间逻辑事件(续) 下列情况下,事件计数器清零 :具有时间逻辑转移的源状态进入活动状态具有on-event 状态动作使用时间逻辑运算符的父状态被激活时stateflow基本概念状态机 有限元状态机是具有有限个状态的系统的理论表述。它以某些缺省的状态为起点,根据所定义的事件和转移进行操作。转移表示状态机如何对事件进行响应。它有明确的输入

39、和输出个数,可以明确地配置所有的模式或状态。它定义了导致系统从一个状态转换到另一个状态的逻辑或事件 直观理解:模型中包含的所有stateflow块的集合stateflow基本概念状态 在有限元状态机里,状态描述的是系统的一种模式。状态具有布尔行为,也就是说在任何给定的时刻它或者是活动的或者是非活动的。 状态在系统中被看作为记忆元件。它保持系统的当前模式,一旦被激活,状态就保持活动的模式,直到系统改变模式,状态才变为非活动的。 在层次的同一级里,所有的状态要么是互斥(OR)的要么并行(AND)的。如果状态之间是互斥的,那么在任何给定的时刻只有一个状态是活动的,如果状态之间是并行的,在同一时刻所有

40、的状态都是活动的。在同一级里面不可能有既是互斥的又是并行的状态存在。它们必须是或者互斥或者并行。stateflow基本概念转移 转移描述的是有限状态系统内的逻辑流。转移管理了当系统从当前状态改变时,这个系统可能发生的模式改变。当转移发生时,源状态变为非活动的,目标状态变为活动的。 stateflow基本概念事件 事件控制有限状态系统的执行。只有某个事件发生后系统才能从一个状态改变到另一个状态。事件是非图形对象每个事件都被定义成一个独立的名字。如果一个转移用一个事件名做为标签,仅当那个事件发生时,转移才有效。如果转移没用事件名作为标签,只要有事件发生转移就有效。stateflow基本概念条件 条

41、件是有限状态系统中的有效流,条件必须定义在括号中。当一个事件发生时,只有当括号中的语句为真或非零时,带有条件标签的转移才有效。转移可以同时拥有事件和条件;条件要放在事件名之后。当转移标签既有事件又有条件时,只有当指定的事件发生并且条件为真时转移才有效stateflow基本概念动作 转移动作是当一个转移发生时要执行的命令。转移动作定义在“/”之后,动作能影响系统本身,并且(或者)影响到与有限状态系统相关的一些外部元素。动作能够处理数据,调用函数,发生触发事件。 如果把动作和转移相关联,动作语句要放在事件标签和条件语句的后面。stateflow基本概念数据对象 数据对象存储了关于条件和动作的一些必

42、要的信息。数据对象是非图形对象 每一个数据对象都被指定成一个独立的名字。 stateflow基本概念连接节点 连接节点作为转移通路的判决点或汇合点。它不是记忆元件。因此,转移的执行不能停留在节点上,必须到达某个状态时,转移才能停止。 连接节点可以作为一个决策点。由于连接节点不是记忆元件,转移必须到达某个状态时,执行才能结束。因此,可以利用这个特点来简化模型。stateflow基本概念缺省转移 缺省转移确定当有限状态机或者父状态处于活动状态的时候,在所有的子状态中第一个被激活的状态。图中当有限状态机变为活动的时候,它首先尝试激活带有缺省转移的子状态,同时可以在缺省转移的标签上加上事件和条件来进行

43、限制,也可以将动作和缺省转移相关联。 注意: 缺省转移并不意味着停止状态在最初就是活动的,它仅仅标志着当DVD播放机系统变为活动的时候这个状态是活动的状态转移输入事件定义 使用事件驱动具体的转移时,需要在相应的转移上标注事件的名称。然而,所有Stateflow状态机使用的事件都必须事件都必须在数据字典中明确定义在数据字典中明确定义 定义一个从Simulink输入事件的过程比较简单,选择Add菜单下Event命令,接着选择Input From Simulink命令。在弹出的对话框中写入需要定义事件的名称,这个名称必须与状态转移标签上标注的名称一致。同样,需要选择触发的类型,这里需要注意的是在对话框Scope字段一定要设置为Input from Simulink 当单击OK或Apply按钮后,Stateflow块上将出现一个输入端口。同时,也显示了具有输入事件类型的标志事件类型的标志。状态转移定义多个输入事件 每个Stateflow块有且仅有一个事件输入端口。所以,在使用多个驱动事件输入时,必须通过Mux块将不同的事件整合为一个向量。这时,每一个输入事件的索引同Stateflow定义事件的顺序一一对应。需要注意的一点,Mux块的信号索引是由上至下(Mux块垂直放置)或者由左至右的(Mux块水平放置)。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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