在stateflow中如何设置有限状态机执行的时间
创建框图之后,可以将其锁定,具体做法是: 1。 选择Edit菜单下的Chart Properties选项打开Chart属性对话框 2。 在Editor域里面选择Locked选项。 ?在matlab窗口中输入sfnew,则出现了带chart的simulink工作界面 Inf代表无穷大 两个chart的并行状态的设置:在Stateflow的空白处,右击鼠标,选择Decomposition-parallel(AND)此时两个状态的边框将变成虚线,并出现边框 状态(state):双击它就可以在其中写一些命令,格式如下(%后面的是我自加的,方便解释): ?name/ ? ? ? ? ? ? ? ? ...全部
创建框图之后,可以将其锁定,具体做法是: 1。 选择Edit菜单下的Chart Properties选项打开Chart属性对话框 2。 在Editor域里面选择Locked选项。 ?在matlab窗口中输入sfnew,则出现了带chart的simulink工作界面 Inf代表无穷大 两个chart的并行状态的设置:在Stateflow的空白处,右击鼠标,选择Decomposition-parallel(AND)此时两个状态的边框将变成虚线,并出现边框 状态(state):双击它就可以在其中写一些命令,格式如下(%后面的是我自加的,方便解释): ?name/ ? ? ? ? ? ? ? ? ? ? ? ? ?%此状态的名称 entry:entry action ? ? ? ? ?%刚转换到此状态时执行entry action during:during action ? %在此状态之中时执行during action exit:exit action ? ? ? ? ? ? ? ? %退出此状态时执行exit action(可以是事件触发) Stateflow中的动作: 触发时间[迁移条件关系式]{条件动作}/迁移动作。
?注意 StateFlow ?同层次的图执行顺序是从上到下,从左到右的优先级原则,during和on事件的执行顺序由他们在状态图中的位置决定,先写的先执行 on event_name:on event_name action ?%当某事件发生时执行on event_name action 历史节点(History Junction):一旦一个状态框中有这个历史节点,在退出这个状态时会将这个状态的一些信息保存下来,当下次再进入此状态时,此状态的初始状态就会是前面保存过的那些信息。
?默认转换(default transition):把他拖到一个状态的旁边,它就会指向一个状态,表示系统 启动后将首先进入这个状态。 ?节点(Junction):它是方便画状态图的,当各个状态之间的转换很复杂时,可以设立中间节点,将一些相同的转换指向它,然后再由它指向各个状态(或另一个中间节点) ?转换线(transition):将鼠标放在一个状态的旁边,当它变成 形状的时候,按下左键不动,就会拉出一条线来,当拉到另一个状态旁边时松开左键,这样就画出了一条由一个状态指向另一个状态的转换线,选中这条线,将鼠标停留在上面,鼠标会变成一个I的样子,这时按下鼠标,就可以在上面写语句,例:switch(switch事件使状态转换)或[output>maxtime](当此条件满足时进行状态的转变)。
交汇连接点:主要用于处理状态迁移过程中的迁移信号的分离和汇合,合理的使用可以实现if_else的功能 图形函数工具; ?格式:返回形参 = 函数名(形参) ? ?状态流的图形函数是使用交汇连接工具和状态转移工具绘制状态流图形,在调用函数时,函数必须执行完全,所以图形函数中不能含有状态。
一个最小的图形函数至少要包含一个缺省的迁移和一个终止的交汇连接工具 ? ? 可以在状态流的状态动作好状态迁移中反复调用它,调用的格式与函数的格式完全相同,知识需要将形参换成实际使用的参数变量。
历史交汇工具的使用:Stateflow图进入上层状态时,缺省状态迁移线连接的子系统首先被激活,单在某些情况下,希望在进入上层状态时首先激活以前的最后的状态,这样就要求在上层状态中引入历史交汇工具完成。
嵌入式MATLAB函数:格式:函数名(形参) 内嵌函数的调用类似于图形函数的调用方法,用户可以在状态的动作和迁移过程中对内嵌函数进行反复的调用。 函数的格式: function MaxMin(x) len=length(x); XMax=max(x); XMin=min(x); XMean=avg(x,len); ?function mean=avg(array,size) mean=sum(array)/size; 真值表的决策和使用:Stateflow使用函数在处理Stateflow图中反复处理的动作和判断。
在真值表中,用户可以使用条件、决策和动作来做逻辑判断,并执行相应的动作,对于纯粹的逻辑来讲,真值表还可以告诉用户是否对于指定的条件做出足够的或过多的决策。 ? ?Stateflow使用真值表函数实现逻辑决策及相应动作的执行。
Stateflow真值表含有条件、决策和动作。Stateflow还允许真值表函数添加初始和终止动作。初始动作指仁和决策判断前的动作。终止动作指顶真值表函数即将退出最后执行的动作。在动作编辑表中使用INIT和FINAL来为真值表函数指定初始和终止动作 为什么初始动作和结束动作不能用 ? ? ? ?决策列隐含着各个条件的“与”操作。
最后一个决策称为缺省策略。可以很好的实现if_else的功能。缺省策略怎么实现 Box工具整理状态流图: 状态图右击Type—Box,也可以直接创建Box,在里边创建其他的对象,创建好之后可以打包 MakeContent—Group,Box中的对象就变成了子图。
对Box添加数据,可以是Box中的所有原始共享该数据。多数情况下Boxes不改变Stateflow图的逻辑判断功能,但是存在并行状态时,她却影响着StateFlow图中的激活顺序。在一个Box。
收起