版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、a,1,Stateflow系统建模,同济大学 电子与信息工程学院 戴毅茹,a,2,内容提要,Stateflow入门介绍及基本概念 创建状态图 状态图仿真 流程图建模,a,3,Stateflow的基本简介:,Statefolw 是一种图形化的设计开发工具,是有限状态机的图 形实现工具,也称之为状态流。 主要用于simulink 中控制和检测逻辑关系。 使用这种图形化的工具可以实现各个状态之间的转换,解决复 杂的监控逻辑问题。 它和Simulink 同时使用,使得Simulink 更具有事件驱动控制能力。,a,4,有限状态机简介:,Stateflow 的仿真原理是有限状态机(finite stat
2、e machine,简 称FSM)理论。 所谓有限状态机是指系统中存在可数的状态,在某些事件发生 时,系统从一个状态转换成另一个状态,故又称为事件驱动的系统。 在有限状态机的描述中,可以设计出由一种状态转换至另一种 状态的条件,并将每对可转换的状态均设计出状态迁移的事件,从 而构造出状态迁移图。,a,5,有限状态机示意图:,Stateflow允许用户: (1)建立有限的状态。 (2)用图形的形式绘制出状态 迁移的条件。 (3)使用规定的命令设计状 态迁移执行的任务。 完成以上操作即构造出整 个有限状态机系统。,注:Stateflow 模型一般是嵌在Simulink 模型下运行的,Statefl
3、ow 是由事件 驱动的,这些事件可以来自某一个Stateflow 图中,也可以来自Simulink。,a,6,实例:DVD播放机,8缺省转移,1状态,2转移,3事件,4条件,5动作,7连接节点,6Counter数据对象,一个状态机(可以包含多个Chart),a,7,用户可以利用Stateflow 编辑界面左侧的编辑工具绘制Stateflow图形,下面介绍常用的编辑工具。,1.状态工具,2.历史交汇工具,3.默认转移,4.连接节点,5.真值表,6.图形函数工具,7.内嵌Matlab函数,8.模型整理工具,10放大缩小工具,9.函数调用,a,8,创建状态图插入图块Chart,在MATLAB命令窗口
4、输入 sfnew 直接从stateflow库中拖Chart块到模型中,拖,a,9,创建状态图几个术语,每个Chart被称作一个stateflow图块,每个图块都有对应的stateflow框图,模型中所有的图块的集合叫做stateflow状态机,且一个模型中只有一个状态机。,状态机,图块,框图,双击,图块包含的内容,a,10,创建状态图的几个重要图形对象,状态 连接节点 转移 转移标签 默认转移 添加注释,a,11,状态(Chart),a,12,状态具有层次性,父状态,子状态,a,13,状态(Chart),a,14,状态(Chart),a,15,状态(Chart),a,16,连接节点,a,17,
5、转移,a,18,转移标签,事件,条件,条件动作,转移动作,如果在转移上没有定义事件和条件,则意味着该转移在任何事件发生时都会执行。,a,19,状态转移使用条件,条件表达式包括 : 逻辑运算或关系运算 以布尔变量作为返回值的函数 条件表达式不能通过调用函数而更改数据对象或影响状态 赋值表达式不能作为条件表达式 使用“与”操作符“&”完成条件表达式的与操作 使用“或”操作符“| |”完成条件表达式的或操作,a,20,转移标签,事件,条件,条件动作,转移动作,a,21,转移标签,a,22,状态转移动作语言,动作语言的功能: 执行数学计算:操作数据对象 调用函数:使用MATLAB或C语言的函数 触发事
6、件:影响内部或外部的状态,a,23,状态转移支持的数学运算,二元操作:* / % + - = & | & | 一元操作: ! - + - 赋值运算:= += -+ *= /= 位操作: & | &= = |=,a,24,状态转移调用MATLAB函数,调用MATLAB 函数,需要在函数的名字前使用MATLAB命名空间运算符,如 y = ml.abs(x) 在使用ml运算符调用MATLAB函数时需要注意以下几点: 使用ml关键字调用的MATLAB函数,仅能使用标量或者字符串作为函数的输入参量 调用函数时的圆括号是必须,无论被调用的函数是否具有参量 如果调用的函数具有返回参数,则返回数值的类型必须为
7、double型 如果具有多个返回变量,仅有第一个返回变量被赋值,a,25,状态转移C语言数学函数,调用C语言数学函数:如y=abs(x) 下表中所列的数学函数可以被调用,a,26,状态转移调用函数,调用MATLAB函数时需要使用ml操作符,而调用C语言函数的时候则比较简单 ,,调用C语言函数,调用MATLAB函数,a,27,默认转移,a,28,默认转移,a,29,添加注释,a,30,状态图基本概念,a,31,事件触发,状态图处于非活动状态且有事件触发时(被激活),则执行的第一个元素是系统的默认转移,默认转移仅仅有效一次,即在状态机被激活的首次有效,如果状态图只有一个状态,则可以不使用默认转移。
8、一旦进入一个状态,这个状态就一直处于活动状态,直到退出为止。 事件触发:事件驱动的发生。在SIMULINK中,定义的事件就是某些过零信号的产生,只有过零信号才能触发状态转移的发生或者状态机的激活,由这种触发引起的相应的动作执行,被称为事件驱动。,a,32,过零触发,过零信号触发事件具有三种形式: 1上升沿触发:当过零信号由负值变为正值,或者由负值变为0,或者由0变为正 2下降沿触发:当过零信号由正值变为负值,或者由正值变为0,或者由0变为负值 3双边沿触发:上述两种触发机制的结合,下降沿,上升沿,a,33,事件触发,在SIMULINK中能够产生过零信号的模块有:正弦振荡信号、方波产生器、阶跃信
9、号、双端输入开关和静态模块。,a,34,事件添加,添加事件:通过Add下的Event子菜单 Name:事件的名称,与一般C语言变量的命名原则一致,使用字符开头,可以用字符及下划线。,a,35,事件添加,Scope:定义事件的作用类型,分别为 Local :在状态图的内部发挥作用 Input from simulink:从simulink框图输入到Stateflow中,也就是Stateflow外部触发事件 Output to simulink:从Stateflow输出到simulink中,利用Stateflow定义的事件驱动或者触发其它Stateflow系统动作。 Port属性:当SCOPE定义
10、为 Input from simulink和output to simulink时才发挥作用。当scope为Input from simulink时,该属性对应输入事件的索引。当scope为output to simulink时,该属性表示事件输出端口的序号。主要对应定义多个事件。 Trigger属性:分别为Either、Falling、Rising、Function Call。分别表示双边沿触发、下降沿触发、上升沿触发、函数调用触发 Debugger breakpoints:设置断点,提供调试作用。,a,36,事件输入,a,37,状态转移输入事件定义,事件类型,a,38,多个事件输入,只有一
11、个事件输入端口,a,39,状态转移定义多个输入事件,a,40,多个事件输入,第一个事件,最后一个事件,当多个事件同时发生,将按照定义事件的索引顺序依次处理。,事件向量中的索引。,a,41,数据对象,这里使用的是条件动作,没有增加任何事件和条件限制,该转移为无条件的转移。,a,42,数据对象,Name:数据对象命名,与一般C语言变量命名原则一致。 Scope属性: Local:数据对象仅能在所属状态图内使用。 Input:接收从SIMULINK模型提供的信号,每个输入数据对象独占一个数据输入端口,Stateflow图块上将出现数据输入端口。 Output:将Stateflow数据输出到SIMUL
12、INK模型,每个输出数据对象独占一个数据输出端口,Stateflow图块上将出现数据输出端口。 Constant:数据对象为常量,数值不发生变化。 Parameter:当Stateflow框图位于某个封装子系统内部时,直接获取封装子系统设定的参数,在整个仿真过程中,其值不变。 Data store memory:该数据对象与SIMULINK工作空间中的数据对象绑定。,a,43,数据对象,Size:数据对象的尺寸。属性值为5,则数据对象为5个元素的向量,属性值为2 3,数据对象为矩阵。,a,44,使用非标量数据对象,Dataexp1.mdl,a,45,状态图更新,当有外部事件定义时,Statef
13、low模型仿真按照事件进行触发。当没有定义任何输入事件的系统,状态图的仿真按照更新模式进行。 三种更新模式:,a,46,状态图更新,Inherited: (1)有输入事件定义。按照事件触发更新。当相应类型的事件发生时,进行状态的转移、动作的执行。 (2)未定义输入事件但定义了输入数据。模型按照与其连接的SIMULINK输入信号中更新频率最高的信号更新周期来仿真。如果输入数据是常量, 按照第三种情况。 (3)既未定义输入事件又未定义输入数据。模型继承其父层次模型的更新周期。 Discrete:模型看做具有固定周期的离散块。在设置该更新模式时,要设置属性“SAMPLE TIME”作为更新周期,单位
14、秒 Continuous:STATEFLOW框图好比SIMULINK模型中的一个连续系统模块,按照系统仿真步长完成更新。,a,47,状态图更新,按照不同的更新模式进行更新: Inherited:按照单位延迟的采集周期1秒 state_update_inherit.mdl Discrete:按照设定的Sample time state_update_discrete.mdl Continuous:按照整个系统的仿真长 state_update_continue.mdl,a,48,状态图更新,exp3.mdl,Inherited:事件触发,a,49,模型查看器,a,50,流程图,Stateflow
15、 图如果不包含任何状态就构成了一个流程图 流程图主要是由转移和连接节点组成 流程图一旦被触发,就会一直执行到退出为止 流程图在没有合法的转移分支的连接节点处执行结束 流程图所在的chart模块或状态(流程图可以嵌套在状态中)一旦被激活,流程图立即执行直至终止节点。,a,51,流程图建模转移检测优先权,如果有多个有效的转移,检测规则决定执行哪个转移 限制越多的转移,优先级越高: 既有事件又有条件的转移第一个被检测 仅具有事件的转移则被第二个检测 仅具有条件的转移第三个被检测 不加任何限制的转移最后被检测,a,52,流程图建模转移冲突,如果在同一个优先级中,具有多个合法的转移,在这种情况会触发一个
16、转移冲突错误的警告信息。 Stateflow 通过几何的方法解决这样的问题: 对于来自于一个节点的转移, 按顺时针方向检测转移 对于来自于一个状态的转移, 从状态的左上角开始,检测转移 新版本的stateflow可以自己设置转移执行的顺序,a,53,流程图建模转移冲突,新版本的stateflow可以自己设置转移执行的顺序,transition_conflict,a,54,流程图建模-基本逻辑结构选择结构:,a,55,流程图建模-基本逻辑结构选择结构:,a,56,流程图建模-基本逻辑结构选择结构:,a,57,流程图建模-基本逻辑结构循环结构:,a,58,流程图建模-基本逻辑结构循环结构:,a,59,流程图建模,创建流程图注意事项: 因为流程图中不存在状态,也就没有转移及转移动作,所有动作都在条件动作中完成。 在流程图中,存在且仅存在一个终止节点,流程图的更新执行最终终止在流程图的终止节点上。 所有转移通路都必须最终汇合到终止节点。 为每一个分支节点提供无条件的转移通路,用于控制一些异常情况或者未预料
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年少先队礼仪知识班会
- 2026年健康问题解决方案设计案例分享
- 2026年物业管理员法规知识考点题
- 运动系统康复护理的康复伦理
- 创新基金科研成果转化规定
- 儿科白血病患者的护理创新思维
- 内外科护理学疼痛管理方法
- 2026分级护理操作技能培训
- 阳台防水施工方案模板
- 手术患者VTE预防现状调查问卷
- 2024~2025学年江苏省泰州市兴化市统编版六年级下册期末毕业考试语文试卷
- 门窗厂安全生产管理制度
- 2025年中国品牌在东南亚市场的崛起报告-增长机遇及对区域竞争者的影响-欧睿国际
- 河道治理工程质量管理制度
- 中学实验技能赛方案
- T/CNSS 018-2023预包装食品血糖生成指数标示规范
- 2025内蒙古赤峰林西县招聘社区工作者74人备考考试试题及答案解析
- 城市污水管网沿线绿化与恢复方案
- 新疆保密管理办法
- 肝性脑病合并糖尿病护理
- 方太电烤箱KQD50F-C2说明书
评论
0/150
提交评论