Simulink建模: 状态机_01
·
Simulink建模: 状态机_01
注:本文章是根据另一博客学习后,仍有不懂的地方,查找资料后完成并以此作为记录。
另一博客链接如下:
Simulink算法建模:状态机基础
文章目录
一、Chart模块
1、chart模块的用处
在 Simulink 中,“Chart” 特指 Stateflow Chart(状态流图表),它虽然名称包含 “Chart”(图表),但本质上是用于建模 状态机(State Machine) 的工具。
即用于不同状态之间的跳转,当条件变化时,会对应的不同的状态。
现在要用状态机实现的内容是:
- 当车速>阈值时,车辆状态是MOVE;
- 当车速<阈值时;车辆状态是STOP;
2、创建chart模块(方法之一):


3、状态机条件设置


将内容修改成如下:
解释:
- 左上角是状态的名称,两个矩形框分别代表Stop和Move两个状态;
- 状态框中的en表示进入状态的那一刻时,要执行的语句;du表示进入该状态之后要执行的语句;这里是进入状态时给MotionState赋值对应的常数;
- 状态之间的箭头表示跳转,方括号内的语句为条状条件,这里是当车速大于一定的值以后由Stop跳转到Move,小于该值从Move跳转会Stop;
- Stop上方的箭头表示初始时刻默认跳转到Stop中;
4、状态机的输入输出设置
在空白处右键,选择输入变量:
在弹出的选项框中修改名称:
再创建输出,选第二个
创建好输出和输入之后返回上一层,可以看到变化:
二、打开Model Explorer添加变量 (Ctrl + H)

再添加变量并修改对应的属性:
可以把VehicleSpeed和MotionState对应的DataType属性也改了;
三、整体逻辑
1、添加剩余模块,完成整体的系统搭建:

Signal中可以如下设置:
2、初始化变量设置:
在命令运行窗口给到这些变量的初始值;

3、结果
当VehicleSpeed > P_VehStopThres (=0.5)时,MotionState ==MOVE(=1);
当VehicleSpeed < P_VehStopThres (=0.5)时,MotionState ==STOP (=0);
更多推荐

所有评论(0)