贵阳城乡建设网站,阜阳网站建设费用,wordpress怎么替换域名,做网站市场分析参考视频#xff1a;Simulink/stateflow的入门培训_哔哩哔哩_bilibili
一、概述 Stateflow是集成于Simulink中的图形化设计与开发工具#xff0c;主要用于针对控制系统中的复杂控制逻辑进行建模与仿真#xff0c;或者说#xff0c;Stateflow适用于针对事件响应系统进行建模…参考视频Simulink/stateflow的入门培训_哔哩哔哩_bilibili
一、概述 Stateflow是集成于Simulink中的图形化设计与开发工具主要用于针对控制系统中的复杂控制逻辑进行建模与仿真或者说Stateflow适用于针对事件响应系统进行建模与仿真。 下图所示的是TCP状态机系统每时每刻都会处于一个状态当满足某些条件后系统下一时刻的状态可能就会变换并做出指定动作Stateflow正是用于实现这种复杂的控制逻辑如果不使用Stateflow而仅仅依靠Simulink中的其它模块对状态机进行搭建这样不仅会使建模难度大大提升还可能会发生系统在同一时刻处于两种状态的情况。 二、基本的Stateflow创建和模块信号交互
1、Stateflow的创建
1方法一在命令行窗口中输入“sfnew”MATLAB会新建一个模型文件并在其中添加一个状态机。 2方法二直接打开模块库找到Chart模块并将其拖拽到模型文件中。 3方法三如下图所示在MATLAB的工具栏中可以直接新建一个模型文件并在其中添加一个状态机。较低版本的MATLAB可能不支持该方式 2、模块信号交互
1双击Chart模块即可进入Stateflow的编辑界面。 2和其它子系统模块一样Chart模块可以随意添加输入端口和输出端口在未旋转的前提下添加输入端口时将信号线往Chart模块左侧引进添加输出端口时将信号线往Chart模块右侧引进即可。 3使用Chart模块需要对其进行变量管理按下CtrlH可打开模型浏览器在这里可以更改输入变量、输出变量及内部变量的名称、数据类型等属性。 4Chart模块中只可对输出变量和内部变量进行更改对输入变量只有读的权限。
三、Stateflow中的基础功能块
1、State状态块与Default transition缺省转移
1每个状态在Chart模块中对应一个状态块状态块的添加方式如下图所示其它模块的添加方式亦是如此。 2在添加第一个状态块时会自动为该块添加缺省转移缺省转移可认为是状态机的入口决定状态机的初始状态是哪一个状态块它必须有且每个状态机中只能有一个。 3状态块的内容编辑可分为以下几部分其中关键词并不是必须都要有且下面没有列出全部关键词仅列出了三个常用的
①状态名称每个状态的名称置于状态块编辑区首行其命名规则和一般变量名一样。
②entry关键词在编辑区中键入“entry:”或者“en:”在下一个关键词出现之前以下的代码段用MATLAB编写都是该状态被激活时或者说进入该状态执行的动作且只是在进入状态之初执行一次并不是重复执行。
③exit关键词在编辑区中键入“exit:”或者“ex:”在下一个关键词出现之前以下的代码段用MATLAB编写都是该状态退出时执行的动作。
④during关键词在编辑区中键入“during:”或者“du:”在下一个关键词出现之前以下的代码段用MATLAB编写都是该状态下重复执行的动作重复频率取决于仿真步长在本章中如无特殊说明所有举例的仿真步长均为0.2s。 2、transition转移
1状态块与状态块之间需要依靠转移线连接转移线代表状态的转换路径其编辑区中提供了一对方括号和一对花括号。
①方括号内需要填写转移条件在有触发事件的前提下也可以不填写当状态机处于转移线首端的状态且转移条件为真时如果有触发事件事件需要已发生状态会根据该条转移线进行状态的切换也就是退出上一个状态并进入下一个状态。缺省转移没有转移条件
②花括号内填写的是转移发生时执行的动作也称条件动作条件动作可以不填写。
③括号之外可填写触发事件在有转移条件的前提下也可以不填写当状态机处于转移线首端的状态且事件发生时如果有转移条件转移条件需要为真状态会根据该条转移线进行状态的切换。缺省转移没有触发事件
④除了缺省转移外如果转移线不填写转移条件和触发事件仿真时也能运行但因为转移没有任何限制转移线首端的状态仅会持续一个仿真步长就会退出。
2点击状态块的边界除了四个角以外按住鼠标拖动即可从状态块引出一条转移线拖住转移线的末端即可将其连接到其它状态块上转移线两端可以连在同一个状态块上。 3比较常用的触发事件有时间触发事件after它有两个参数第一个是时间参数第二个是时间单位参数当进入转移线首端的状态时after开始计时当达到计时时间后事件发生。 4当一个状态块引出两条转移线时转移线上会有编号Chart模块会优先判断编号较小的转移线是否满足转移条件以下提到的“满足转移条件”均指的是转移条件为真且事件触发。 5当转移线两端连接同一个状态块时有两种情况
①转移线在状态块外部如果转移线生效当前状态会先退出再重新进入也就是要执行关键词entry下的代码段。
②转移线在状态块内部内部的转移线优先判断如果转移线生效当前状态不会退出不会执行关键词entry下的代码段。 3、Junction节点
1在Stateflow中流程图是一种比较特殊的应用流程图中不包含任何状态它仅由连接节点和转移线组成节点之间的转移线连接操作方法和状态块直接转移线的连接操作一样。
2由于流程图中没有任何状态因此不具备任何记忆元件状态块是记忆元件。
3流程图从检测其默认转移开始到检测完每一条有效的通路且到达不具备有效出口的转移线为止简单来说就是从流程图的入口开始“走流程”直到走到没有通往其它节点转移线的节点为止这个过程是在一个仿真步长内完成的这是和状态图最大的区别。
4使用节点和转移线搭建逻辑结构
①选择结构
[1]单分支if语句 if 条件表达式 满足条件执行的语句组 end [2]双分支if语句 if 条件表达式 满足条件执行的语句组 else 不满足条件执行的语句组 end [3]多分支if语句switch语句实际上也是多分支选择结构只是在流程图中表示起来可能稍微复杂些这里不进行演示 if 条件表达式1 满足条件1执行的语句组 elseif 条件表达式2 不满足条件1而满足条件2执行的语句组 ... ... elseif 条件表达式m 仅满足条件m执行的语句组 else 不满足所有条件执行的语句组 end ②循环结构
[1]for循环 for 循环变量 取值列表 %取值列表通常是一个向量 循环体 %不要在循环体内改变循环变量的值 end %循环语句可以嵌套使用 [2]while循环 while 条件表达式 循环体 end %循环语句可以嵌套使用 [3]do...while循环MATLAB中没有直接提供do...while循环结构的语句 4、Annotation和Image
1Annotation是文字说明模块相当于程序文字版注释不会影响状态机。
2Image是图片说明模块相当于程序图片版注释也不会影响状态机。 四、层次化建模
1、动作执行的顺序 在系统状态转换时可能涉及到多个动作它们是有先后执行顺序的首先状态机执行转移线上的条件动作然后执行旧状态退出时需执行的动作接着执行转移线上的转移动作转移动作的代码段也用花括号包含它位于条件动作之后二者用“/”分隔不过转移动作使用较少最后执行新状态进入时需执行的动作。