matlab的stateflow(状态流)简单应用_第1页
matlab的stateflow(状态流)简单应用_第2页
matlab的stateflow(状态流)简单应用_第3页
matlab的stateflow(状态流)简单应用_第4页
matlab的stateflow(状态流)简单应用_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——matlab的stateflow(状态流)简单应用

发信人:xxhn(小湖南),信区:MathTools

标题:matlab的stateflow(状态流)简单应用--做一个计数器发信站:BBS水木清华站(ThuApr2418:00:572023),转信

精华区里只有关于stateflow的英文介绍,再加上前几天有网友问我怎么用它,我就拿我以前用stateflow做的计数器来简单介绍一下stateflow的用法,希望能够抛砖引玉。先介绍一下stateflow,从matlab的help中翻译过来的,stateflow要与simulink一起使用,他是一个用来在控制和管理中设计和开发规律图的工具(翻的不好,请大家见谅)。从我的理解来说,stateflow就是用来作状态流图的,可以用它设计一些状态和各个状态之间的转换条件,然后放在simulink中仿真。

说了这么多,我的手痒起来了,还是动手做吧,^_^。

一.开启simulink,新建一个model(保存为time.mdl),在simulink的左边找到state

flow并选中他,将右边的chart拖入新建的model中,双击这个chart,就出现了stateflow的编辑器,先介绍一下这里面能画的东东(在左边的工具栏上)

1.左边工具栏上第一个图标是方框似的东东,将它拖入编辑器中,就表示一个状态(state),双击它就可以在其中写一些

命令,格式如下(%后面的是我自加的,便利解释):name/%此状态的名称

entry:entryaction%刚转换到此状态时执行entryactionduring:duringaction%在此状态之中时执行duringaction

exit:exitaction%退出此状态时执行exitaction

onevent_name:onevent_nameaction%当某事件发生时执行onevent_nameaction2.左边工具栏上其次个图标是一个圆中有个H的东东,它的名字叫做历史节点(HistoryJunction),可将他拖入一个状态框中(就是上面说的).一旦一个状态框中有这个历史节点,在退出这个状态时会将这个状态的一些信息保存下来,当下次再进入此状态时,此状态的初始状态就会是前面保存过的那些信息。

3.左边工具栏上第三个图标是一个一根线指向一个方框的东东,叫默认转换(defaulttransition),把他拖到一个状态的旁边,它就会指向一个状态,表示系统启动后将首先进入这个状态。

4.左边工具栏上第四个图标(他的样子太繁杂了,不描述了,反正是最终一个,呵呵)代表的东东,叫节点(Junction),它是便利画状态图的,当各个状态之间的转换很繁杂时,可以设立中间节点,将一些一致的转换指向它,然后再由它指向各个状态(或另一个中间节点)

5.还得介绍一下画转换线(transition),将鼠标放在一个状态的旁边,当它变成+形

状的时候,按下左键不动,就会拉出一条线来,当拉到另一个状态旁边时松开左键,这样就画出了一条由一个状态指向另一个状态的转线,选中这条线,将鼠标停留在上面,鼠标会变成一个I的样子,这时按下鼠标,就可以在上面写语句,例:switch(switch事件使状态转换)或[output>maxtime](当此条件满足时进行状态的转变)。

二.再介绍一下stateflow是怎样跟simulink通讯的,在stateflow编辑器中点tool菜单下的explore,在左边支开time,选中chart,我们将在此添加一个事件和两个数据(计数器所需要的)。

1.点Add菜单下event,在右边就新产生了一行,将它的名字(name)改成switch,范围

(scope)改成inputfromsimulink,触发器形式(Trigger)改成Rising(其实这儿无所谓),此时你看看time.mdl,是不是chart模块上方多了一个上升的标志,此时在time.mdl添加一个pulsegenerator(在simulink\\sources里面),将他的输出接到chart的上方,就表示每当pulsegenerator产生的信号上升时,switch事件发生。

2.再添加两个data,点Add菜单下data,在右边将他的名字改成output,scope改成outputtosimulink,此时time.mdl中chart就多出来一个输出端口,它就是要给simulink用的,在这里output就是计数器的输出(我们的目标),可以接上一个scope或display看输出结果(simulink/sinks下,怎么添加及连线就介绍了),再点add--data,将他的名字改成

maxtime,scope改成constant,将它的FrWs画上勾,表示他是一个常量,将在matlab的workspace里设定,这里的含义就是计数器的最大值,当计数器的输出达到这个最大值时,输出将自动清零,表示重新开始计数。添加完成后,就可关闭explore了。

三.有了上述的准备,就可以在stateflow中画状态流图了,还是在stateflow编辑器里,从左边的工具栏上拉出一个状态来(上面介绍过方法了),双击它,在其中写上reset/%此状态的名称为reset

entry:output=0;%当进入此状态时,将output赋值为0,表示将计数器输出清零再拉入一个默认转换(Defaulttransition,左边工具栏上第三个),拖到reset状态的旁

边,使它指向reset状态,这样就表示reset状态将是系统启动后第一个进入的状态。再拉入一个状态,在其中写上

count/%此状态的名称为count

entry:output++;%当进入此状态时,output加1,说明计数器记一次数

此时再拖入一个节点(Junction,左边工具栏上第四个,其实可以不用,这儿是介绍一下他的用法),然后画两条转换线(transition,上面介绍怎么画了),一条由reset状态指向这

个节点,一条由count状态指向这个节点,在这两条线都写上switch,表示一旦switch事件发生,不管当前是哪个状态,都将转换到此节点上来(跟simulink联系来讲,就是当time.m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论