Stateflow使用方法

上传人:l**** 文档编号:131735309 上传时间:2020-05-10 格式:PPT 页数:58 大小:2.41MB
返回 下载 相关 举报
Stateflow使用方法_第1页
第1页 / 共58页
Stateflow使用方法_第2页
第2页 / 共58页
Stateflow使用方法_第3页
第3页 / 共58页
Stateflow使用方法_第4页
第4页 / 共58页
Stateflow使用方法_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《Stateflow使用方法》由会员分享,可在线阅读,更多相关《Stateflow使用方法(58页珍藏版)》请在金锄头文库上搜索。

1、Stateflow软件使用方法 Stateflow软件简介有限状态机简介各功能模块的使用方法 yy Stateflow的基本简介 Statefolw是一种图形化的设计开发工具 是有限状态机的图形实现工具 也称之为状态流 主要用于simulink中控制和检测逻辑关系 使用这种图形化的工具可以实现各个状态之间的转换 解决复杂的监控逻辑问题 它和Simulink同时使用使得Simulink更具有事件驱动控制能力 有限状态机简介 Stateflow的仿真原理是有限状态机 finitestatemachine 简称FSM 理论 所谓有限状态机是指系统中存在可数的状态 在某些事件发生时 系统从一个状态转换

2、成另一个状态 故又称为事件驱动的系统 在有限状态机的描述中 可以设计出由一种状态转换至另一种状态的条件 并将每对可转换的状态均设计出状态迁移的事件 从而构造出状态迁移图 有限状态机示意图 Stateflow允许用户 1 建立有限的状态 2 用图形的形式绘制出状态迁移的条件 3 使用规定的命令设计状态迁移执行的任务 完成以上操作即构造出整个有限状态机系统 注 Stateflow模型一般是嵌在Simulink模型下运行的 Stateflow是由事件驱动的 这些事件可以来自某一个Stateflow图中 也可以来自Simulink 在MATLAB窗口中点开Simulink 在Simulink的libr

3、ary中点开Stateflow 将chart拖入一个新建的文件中 结果如下图所示 双击untitled 窗口中的Stateflow模块打开如图下图所示的Stateflow编辑界面 用户可以在此窗口中编辑所需的Stateflow模型 Stateflow提供了强大的图形编辑功能 用户可以使用它描述很复杂的逻辑关系式 1 状态工具 2 历史交汇工具 3 缺省状态迁移工具 4 交汇连接工具 5 真值表 6 图形函数工具 7 内嵌Matlab函数 8 模型整理工具 10放大缩小工具 9 函数调用 在Stateflow编辑界面中点击鼠标右键 可以看到下图 a 所示的快捷菜单 选择其中的Properties

4、 属性 菜单 可以打开图 b 所示的对话框 用户可以在此对话框中设置整个Stateflow模型的属性 用户可以利用Stateflow编辑界面左侧的编辑工具绘制Stateflow图形 下面介绍常用的编辑工具 1 状态工具 2 历史交汇工具 3 缺省状态迁移工具 4 交汇连接工具 5 真值表 6 图形函数工具 7 内嵌Matlab函数 8 模型整理工具 10放大缩小工具 9 函数调用 状态工具 系统的状态是指系统运行的模态 在Stateflow下 状态有两种行为 活动的 active 和非活动的 inactive 单击状态工具按钮并拖动到编辑界面的空白处 即可绘制出一个状态的示意模块 我们可以在该

5、模块右上角的问号位置填写状态的名称及动作描述 entry为一种状态动作 右图中状态的动作描述为 entry speed 1 将speed的值赋为1 使用Ctrl C和Ctrl V或使用edit菜单下的复制及粘贴命令 即可再复制一个同样的模块 2 右击建立的状态图标 并选择快捷菜单中的Properties菜单项 可打开如下图所示的设置状态属性的对话框 可以在Label栏填写状态的名称和动作描述 状态名称与动作的描述 1 双击已拖出的状态模块右上角的问号 可在该位置填写状态的名称及动作描述 状态模块的名称 状态属性设置对话框 在Label栏填写状态的名称和动作描述 选择状态动作 状态迁移关系设置

6、把鼠标放在一个状态块的边界 当出现十字光标时按下鼠标键并拖动至另一个状态的边界释放 可以绘制出从一个状态到另一个状态的连线 单击此连线 在该连线上会出现一个问号 我们可以在该问号处添加状态迁移标记 状态迁移标记可以含有触发事件 迁移条件 条件动作及迁移动作 或他们中的任意组合 状态迁移标记的一般形式是 触发事件 迁移条件关系式 条件动作 迁移动作 触发事件 表示只要迁移关系式是真 该触发事件可以引发状态的迁移 缺省触发事件时 任何事件均可在条件关系式为真的情况下引引发状态的迁移 迁移条件关系式 写在方括号中 该关系式为真时 触发事件可以引发状态的迁移 条件动作 是指当迁移条件关系式一旦成立 即

7、为真 就执行的动作 通常发生在迁移终点被确定有效之前 如果没有规定迁移条件关系式 则认为条件关系式为真 即刻执行条件动作 条件动作必须写在花括号中 迁移动作 是指当迁移终点已经确定有效 才执行的动作 如果迁移包含很多阶段 迁移动作只有在整个迁移通道到终点确认为有效后方可执行 迁移动作写在斜线 之后 状态迁移标记的一般形式举例 上图表明只要当条件关系式off count 0为真时 发生的事件off switch才可引发状态On至状态Off的迁移发状态迁移 只要迁移条件 off count 0 为真 即可执行条件动作off count 当条件 off count 0 为真 发生了off switc

8、h事件 迁移终点状态Off确认为有效 此时执行迁移动作LED off 条件动作 迁移关系表达式 触发事件 迁移动作 缺省状态转移设置 ss 3 缺省状态转移设置的作用是告诉Stateflow图形 当它开始工作时 哪个状态先处激活状态 点击Stateflow图形编界面中的图标 然后将鼠标移动到要设置为初始状态的状态即可 如图 4 事件与数据设置 前面为状态迁移规定了迁移触发事件的名称 也就是说状态的迁移仅在这些事件发生的时候才开始 为了利用这些事件触发 我们必须先定义这些事件 下面以下图为例 讲解如何定义on switch和off switch事件 从stateflow编辑界面的add菜单选择E

9、vent 并在随后弹出的下拉菜单下选择InputfromSimulink 打开事件对话框 见图 将事件对话框中的Name改为off switch on switch trigger选择为Falling 即下降沿触发 Rising 即上升沿触发 点击OK保存off switch事件的设置 事件的范围 Scope 有三种选择 Local是指利用本Stateflow图形界面产生的触发事件 InputfromSimulink是指从Simulink模型引入事件至Stateflow图形界面 OutputtoSimulink是指将Stateflow图形界面产生的事件输出到Simulink模型中 事件的触发方

10、式 Trigger 有四种选择 Either Rising Falling和FunctionCall 其中选择Rising或Falling分别指利用事件的上升沿或下降沿触发 Either是指不管上升沿还是下降沿事件均可以触发 FunctionCall是一种函数调用的触发方式 前面我们还为状态设置了动作 如状态On的动作描述为entry speed 1 是希望在状态On激活时将speed的值赋为1 这个数据是要在Simulink模型中使用的 所以要将数据传递到Simulink模型中 在能够被利用之前 这个数据必须先定义 从stateflow编辑界面的add菜单选择Data 并在随后弹出的下拉菜单

11、下选择OutputtoSimulink 打开数据对话框 如图 将数据名Name改为speed 点击OK保存设置即可 常用设置 数据范围 Scope 可以设置为Local 局部数据 Input 从Simulink模型中输入数据 Output 向Simulink模型输出数据 Constant 常数 parameter 变量 和Datastorememory 存储的数据 六种形式 数据的类型 Type 可以是Double 双精度 Single 单精度 Int32 整数 及Boolean 布尔数 等 也可以设置为Inherited 即继承原来的设置 另一种定义事件和数据的方式 在Stateflow编辑

12、界面中 选择Tools菜单中的Explore 将会打开模型管理器ModelExplorer 如图 2020 5 9 第24页 点击该处添加事件 点击该处添加数据 5交汇连接设置 ljm 使用Stateflow编辑界面中的交汇连接工具可以产生交汇连接点 该工具主要用于处理状态迁移过程中的迁移信号的分离和汇合 简单的使用了交汇连接工具的实例 事实上 交汇连接工具的合理使用可以完成非常复杂的逻辑关系 例如实现如下if then判断功能 if Cond1 Action1if Cond2 Action2 elseif Cond3 Action3 还可实现For循环功能 6 图形函数的设置及其调用 前面例

13、子中的Stateflow图中多次利用了条件关系式 temp 120 对于这种多次使用的关系式 我们可以设置一个图形函数Function 使用时调用这个函数即可 状态流的图形函数是使用交汇连接工具和状态迁移工具绘制的状态流图形 用户可以建立一个图形函数 在里面加入流程图 然后在状态的动作和迁移过程中反复调用 因为调用函数时 函数必须执行完全 所以图形函数中不能含有状态 一个最小的图形函数至少要包含一个缺省状态迁移和一个终止的交汇连接工具 要在一个Stateflow图添加一个图形函数Function 只需点击Stateflow图中的图形函数工具 移动鼠标至Stateflow图中的适当位置 再点击一

14、下鼠标左键即可 在图形函数function后写入函数的返回变量及函数名格式为 返回形参 函数名 形参 回车后即可建立该图形函数 一旦建立了图形函数 用户可以在状态流的状态动作和状态迁移中反复调用它 调用的格式与函数的格式完全相同 只是需要将形参换成实际的参数变量 这两个工具必须有 2020 5 9 第36页 7 多层状态的嵌套 继续上面的例子 当系统开始处于休眠状态时 状态Off激活时 状态High和Low实际上均需要On switch事件激活 这样我们可以利用一个状态来包含这两个状态 这样可以使Stateflow图更简单明了 下面说明如何进行多层状态的设计以及多层状态在仿真时如何进行状态迁移

15、的 可以将上层状态包含的状态迁移图设置成子图的形式 用户只需在上层状态On内的任意点点击鼠标右键 在出现的下拉菜单中选择MakeContents中的Subchart即可 MakeContents中的Subchart具有复选功能 再选它时 上层状态又变回非子图形式了 双击打开子图 历史交汇工具的功能和使用方法 ss 8 功能 Stateflow图进入上层状态时 缺省状态迁移线连接的子状态首先被激活 但在有些情况下 希望在进入上层状态时首先激活前一次运行时最后激活的那个子状态 这样的要求可以通过在上层状态中引入历史交汇工具完成 使用方法 点击Stateflow图左侧的历史交汇工具图标 然后将鼠标移

16、至上层状态中的任意位置 再点击鼠标即添加了一个历史交汇工具 如图 9 嵌入式M函数的设置及其调用 嵌入式MATLAB函数使用户可以利用MATLAB强大的功能 在Stateflow图中编MATLAB语言函数 调用MATLAB的各类函数 Simulink利用嵌入MATLAB函数的状态流实现Simulink模型中嵌入MATLAB模块功能 9 嵌入式M函数的设置及其调用 单击M文件图标后将其拖入工作区 在左上图中问号处单击写入MATLAB函数名及其形参名 如MaxMin x 双击新建的M文件会出现函数编辑窗口 当MATLAB中自带函数不能实现所需功能 我们可以在该窗口编辑实现目标功能所需的函数 M文件图标 10 真值表的设置及其使用 Stateflow模块使用函数来处理在Stateflow图中需反复处理的动作或判断 在真值表中 用户可以用条件 决策和动作来做逻辑判断 并执行相应的动作 对于纯粹的逻辑来讲 真值表比图形函数更容易编写 维护 也更容易阅读 真值表还可以告诉用户是否对于指定的条件做出了足够的或过多的决策 10 真值表的设置及其使用 Stateflow使用真值表函数实现逻辑决策及相应动

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号