Stateflow教程.pdf
《Stateflow教程.pdf》由会员分享,可在线阅读,更多相关《Stateflow教程.pdf(33页珍藏版)》请在冰豆网上搜索。
Stateflow介绍介绍创建框图之后,可以将其锁定,具体做法是:
1.选择Edit菜单下的ChartProperties选项打开Chart属性对话框2.在Editor域里面选择Locked选项。
在matlab窗口中输入sfnew,则出现了带chart的simulink工作界面Inf代表无穷大两个chart的并行状态的设置:
在Stateflow的空白处,右击鼠标,选择Decomposition-parallel(AND)此时两个状态的边框将变成虚线,并出现边框状态(state):
双击它就可以在其中写一些命令,格式如下(%后面的是我自加的,方便解释):
name/%此状态的名称entry:
entryaction%刚转换到此状态时执行entryactionduring:
duringaction%在此状态之中时执行duringactionexit:
exitaction%退出此状态时执行exitaction(可以是事件触发)Stateflow中的动作:
触发时间迁移条件关系式条件动作/迁移动作。
注意注意StateFlow同层次的图执行顺序是从上到下,从左到右的优先级原则,during和on事件的执行顺序由他们在状态图中的位置决定,先写的先执行onevent_name:
onevent_nameaction%当某事件发生时执行onevent_nameaction历史节点(HistoryJunction):
一旦一个状态框中有这个历史节点,在退出这个状态时会将这个状态的一些信息保存下来,当下次再进入此状态时,此状态的初始状态就会是前面保存过的那些信息。
默认转换(defaulttransition):
把他拖到一个状态的旁边,它就会指向一个状态,表示系统启动后将首先进入这个状态。
节点(Junction):
它是方便画状态图的,当各个状态之间的转换很复杂时,可以设立中间节点,将一些相同的转换指向它,然后再由它指向各个状态(或另一个中间节点)转换线(transition):
将鼠标放在一个状态的旁边,当它变成+形状的时候,按下左键不动,就会拉出一条线来,当拉到另一个状态旁边时松开左键,这样就画出了一条由一个状态指向另一个状态的转换线,选中这条线,将鼠标停留在上面,鼠标会变成一个I的样子,这时按下鼠标,就可以在上面写语句,例:
switch(switch事件使状态转换)或outputmaxtime(当此条件满足时进行状态的转变)。
交汇连接点:
主要用于处理状态迁移过程中的迁移信号的分离和汇合,合理的使用可以实现if_else的功能图形函数工具;格式:
返回形参=函数名(形参)状态流的图形函数是使用交汇连接工具和状态转移工具绘制状态流图形,在调用函数时,函数必须执行完全,所以图形函数中不能含有状态。
一个最小的图形函数至少要包含一个缺省的迁移和一个终止的交汇连接工具可以在状态流的状态动作好状态迁移中反复调用它,调用的格式与函数的格式完全相同,知识需要将形参换成实际使用的参数变量。
历史交汇工具的使用:
Stateflow图进入上层状态时,缺省状态迁移线连接的子系统首先被激活,单在某些情况下,希望在进入上层状态时首先激活以前的最后的状态,这样就要求在上层状态中引入历史交汇工具完成。
嵌入式MATLAB函数:
格式:
函数名(形参)内嵌函数的调用类似于图形函数的调用方法,用户可以在状态的动作和迁移过程中对内嵌函数进行反复的调用。
函数的格式:
functionMaxMin(x)len=length(x);XMax=max(x);XMin=min(x);XMean=avg(x,len);functionmean=avg(array,size)mean=sum(array)/size;真值表的决策和使用:
Stateflow使用函数在处理Stateflow图中反复处理的动作和判断。
在真值表中,用户可以使用条件、决策和动作来做逻辑判断,并执行相应的动作,对于纯粹的逻辑来讲,真值表还可以告诉用户是否对于指定的条件做出足够的或过多的决策。
Stateflow使用真值表函数实现逻辑决策及相应动作的执行。
Stateflow真值表含有条件、决策和动作。
Stateflow还允许真值表函数添加初始和终止动作。
初始动作指仁和决策判断前的动作。
终止动作指顶真值表函数即将退出最后执行的动作。
在动作编辑表中使用INIT和FINAL来为真值表函数指定初始和终止动作为什么初始动作和结束动作不能用决策列隐含着各个条件的“与”操作。
最后一个决策称为缺省策略。
可以很好的实现if_else的功能。
缺省策略怎么实现Box工具整理状态流图:
状态图右击TypeBox,也可以直接创建Box,在里边创建其他的对象,创建好之后可以打包MakeContentGroup,Box中的对象就变成了子图。
对Box添加数据,可以是Box中的所有原始共享该数据。
多数情况下Boxes不改变Stateflow图的逻辑判断功能,但是存在并行状态时,她却影响着StateFlow图中的激活顺序。
在一个Box中,顺序是从上到下,Box之间是左到右以上的共同点:
创建的时候参数需要在model中创建输入参数和输出的参数。
Stateflow中的动作:
触发时间迁移条件关系式条件动作/迁移动作。
任何Stateflow事件都(包括enter事件、exit事件、或change事件等隐含事件)都可以作为瞬时动作的基事件。
可以使用simulink的输入。
也可以使用隐含时间wakeup或(tick)来唤醒Stateflow图(不能用在缺省的途中。
常用的逻辑操作:
After(10,CLK)&temp=COLD与CLKafter(10,CLK)&temp=COLD意义相同下边是一个定时器的转换图:
说明:
格式触发事件条件关系式条件动作/迁移动作Stateflow中的动作:
触发时间迁移条件关系式条件动作/迁移动作。
触发事件表示只要迁移关系式是真,该触发事件可以引发状态的迁移,缺省触发事件时,任何事件均可以在条件关系式为真的情况下引发状态的迁移,在图12.7中,只有条件off_count=0为真,事件off_switch可以引发状态On致状态Off的迁移。
条件关系式一般为布尔关系式,写在方括号中,使得对于特定的信号有效,本例中,只有off_count=0为真时,发生事件off_switch才可以引发状态的迁移。
条件动作是指当条件关系式一旦成立(即为真时),就执行的动作,通常发生在迁移终点被确认有效之前。
如果没有规定条件关系式,则认为条件关系式为真,即刻执行条件动作。
条件动作必须写在花括号中。
在图12.7中,只要条件off_count=0为真,即刻执行条件动作off_count+。
迁移动作是指当迁移终点已经确定有效才执行的动作,如果迁移包含很多阶段,迁移动作只有在整个迁移通道到终点确认为有效厚方可执行。
迁移动作写在斜线/之后,在图12.7中的实例中,当条件off_count=0为真,发生了off_switch事件,迁移终点状态Off确认为有效,此时执行迁移动作LED_off。
教会连接if_else的实现和for循环功能在simulink中,自己可以手动的调整开关,canstant中的数据可以修改,调试仿真。
?
自己生成的那个错误是什么原因在buhao.Mdl运行中怎么有红圈和篮圈,分别带表什么?
能不能调用子状态:
的作用是什么?
fin=0:
1/2000:
1-1/20001:
-1/500:
1/500;t=0:
4999;value=finfin;jaws=tvalue;Data:
jawsSampletime:
1Formoutputafterfinaldatavalueby:
SettingToZero.t=0:
0.1:
10;%表示输入信号的时间范围u=sin(t);%产生输入正弦信号sim_input=t,u;%传递至Simulink系统模型的变量接下来,采用默认的系统仿真参数并运行系统仿真。
sim_input是在ConfigueationParameters里的dataimport/export里设置的输入。
最后使用MATLAB命令绘制出原始输入信号与系统运算结果,plot(t,u,tout,yout,-)%绘制系统输入信号与仿真结果,使用sim命令进行动态系统仿真什么是有限元状态机?
有限元状态机是具有有限个状态的系统的理论表述。
它以某些缺省的状态为起点,根据所定义的事件和转移进行操作。
转移表示状态机如何对事件进行响应(控制流程)。
它有明确的输入和输出的个数,可以明确地配置所有的模式或状态。
它也定义了导致系统从一个状态转换到另一个状态的逻辑或事件。
状态(States)在有限状态机里,状态描述的是系统的一种模式。
状态具有布尔行为,也就是说在任何给定的时刻它或者是活动的或者是非活动的。
状态在系统中被看作为记忆元件。
它保持系统的当前模式,一旦被激活,状态就保持活动的模式,直到系统改变模式,状态才变为非活动的。
在层次的同一级里,所有的状态要么是互斥(OR)的要么是并行(AND)的。
如果状态之间是互斥的,那么在任何给定的时刻只有一个状态是活动的,如果状态之间是并行的,在同一时刻所有的状态都是活动的。
在同一级里面不可能有既是互斥的又是并行的状态存在。
它们必须是或者互斥或者并行。
转移(Transitions)转移描述的是有限状态系统内的逻辑流。
转移管理了当系统从当前状态改变时,这个系统可能发生的模式改变。
当转移发生时,源状态变为非活动的,目标状态变为活动的。
事件(Events)Stateflow中的动作:
触发事件迁移条件关系式条件动作/迁移动作。
事件控制有限状态系统的执行。
只有某个事件发生后系统才能从一个状态改变到另一个状态。
事件是非图形对象每个事件都被定义成一个独立的名字。
如果一个转移用一个事件名做为标签,仅当那个事件发生时,转移才有效。
如果转移没用事件名作为标签,只要有事件发生转移就有效。
条件(Conditions)条件是有限状态系统中的有效流,条件必须定义在括号中。
当一个事件发生时,只有当括号中的语句为真或非零时,带有条件标签的转移才有效。
转移可以同时拥有事件和条件;条件要放在事件名之后。
当转移标签既有事件又有条件时,只有当指定的事件发生并且条件为真时转移才有效动作(Actions)转移动作是当一个转移发生时要执行的命令。
转移动作定义在/之后,动作能影响系统本身,并且(或者)影响到与有限状态系统相关的一些外部元素。
动作能够处理数据,调用函数,发生触发事件。
如果把动作和转移相关联,动作语句要放在事件标签和条件语句的后面。
数据对象(DataObjects)数据对象存储了关于条件和动作的一些必要的信息。
数据对象是非图形对象每一个数据对象都被指定成一个独立的名字。
连接节点(ConnectiveJunction)连接节点作为转移通路的判决点或汇合点。
它不是记忆元件。
因此,转移的执行不能停留在节点上,必须到达某个状态时,转移才能停止。
连接节点可以作为一个决策点。
由于连接节点不是记忆元件,转移必须到达某个状态时,执行才能结束。
因此,可以利用这个特点来简化模型。
缺省转移(DefaultTransitions)缺省转移确定当有限状态机或者父状态处于活动状态的时候,在所有的子状态中第一个被激活的状态。
图中当有限状态机变为活动的时候,它首先尝试激活带有缺省转移的子状态,同时可以在缺省转移的标签上加上事件和条件来进行限制,也可以将动作和缺省转移相关联。
注意:
缺省转移并不意味着停止状态在最初就是活动的,它仅仅标志着当DVD播放机系统变为活动的时候这个状态是活动的状态转移Stateflow状态图被称为状态转移图,这些状态图中包含了所谓的状态、状态转移管理和维护当前内存中活动的状态