stateflow的简单使用
的有关信息介绍如下:stateflow是一个基于有限状态机和流程图来构建组合和时序逻辑决策模型并进行仿真的环境。可以用来进行复杂控制逻辑的建模,并生成C语言或者matlab语言(m语言)代码,可以将生成的代码移植到其他平台上使用。并且stateflow可以直接嵌入到simulink中,与simulink共同构建复杂的控制算法。
首先需要安装matlab软件,安装过程就不多少了,网上有许多关于这方面的教程。之后打开matlab,如下图。
stateflow是simulink工具箱下的一个子工具,这里点击simulink。之后点击stateflow,这里面有chart,state transition,truthtable三个工具。我们要用到的就是Chart。
打开stateflow可以有更简单的方式,直接在命令窗口输入>>sf,就可以了。这个命令也会直接将stateflow工具箱打开。打开simulink可以使用命令>>simulink
新建一个stateflow文件,输入>>sfnew。
双击Chart,弹出如下窗口。点击File --> New --> Chart创建一个新的Chart,如下图所示。
按下Ctrl+S或者点击保存,先保存一个名字,我保存为Test,后缀名默认为slx。
给Chart更换名字,不然的话等会模型搭建好了之后会提示错误,我换成了Test(双击名字之后输入新名字)。双击这个图标进入逻辑编辑界面,可以看到里面什么都没有。
建立如图所示的模型。点击图标进行拖动就可以了其中的箭头可以将鼠标放置到方框的边上就会出现一个加号,之后按住鼠标左键拖动就可以了。
注意:第一个方框的上面的箭头(Default transition),这是默认转移,就是运行这个模块的时候首先进入的地方,如果没有这个剪头的话会出现运行错误。
点击第一个方框(State)的?。编程蓝色之后就可以编辑了。
输入:
Name1
entry:output=1;
第二个方框输入:
Name2
entry:output=-1;
其中Name1和Name2是这两个状态(State)的名字,名字是不能重复的。
entry是一个关键字。表示进入这个状态之后执行的操作。关键字还有en,during,exit等。
点击箭头(两个方框之间的箭头),会出现一个问号,点击这个问号进行编辑,输入转移的条件。如图
这个简单的模型就创建成功了,可以进行验证了。点击Test返回上一级。
这时出现的Test模块是没有输入输出接口的。需要添加输入输出接口。
现在还要构建一个输入输出接口,不然的话,其他模块不能进行调用。
点击菜单栏的View --> Model Exprorer -->Model Exprorer
也可以直接使用快捷键Ctrl+H。
选中Test,点击菜单栏的Add --> Data。添加数据。需要添加两个,一个输出,一个输入。
直接在右边工具栏的General下修改就可以了
Name:默认是data,需要修改成刚才模型中定义的名字(inoput或者output)
Scope:方式是输入还是输出,刚才建立的模型inpu属于输入模型,选择input
output是输出模型,选择output
Type:数据类型选择double。
其他的不用管。
选择simulink窗口,在搜索框中输入sine wave。西安则一个三角函数波形发生器。
注意:选择sine wave,别选择第一个sine wave function。
这个再搜索scope,选择示波器,查看输出结果。
连接成如下图所示的方式。
点击上方的Run图标,运行模型。
点击Scope,出现运行结果。
解释:这个模型的运行结果将大于等于0的的值变成1输出,小于0的值变成-1输出,所以会出现图中所示的方波。
说明:如果出现报错的话,根据具体的错误进行解决。可能是数据类型不对,也有可能是保存文件的路径不在matlab路径中。这是就需要添加路径了。
在matlab主界面上添加。如图。