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);
在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐