一、基础知识

Simulink是MATLAB的一个附加产品,用于模拟、生成和测试动态系统。Stateflow是Simulink的一个附加工具,它提供了一个图形化的编程环境,用于设计和模拟复杂系统的控制逻辑和状态机。Stateflow是设计复杂控制逻辑和状态机的强大工具,特别适用于需要精确控制和状态管理的系统,如汽车电子、航空航天和工业自动化等领域。

作用与优势:

  1. 状态机建模:Stateflow允许你创建状态机,这些状态机可以描述系统在不同状态下的行为。

  2. 层次化状态图:你可以创建层次化的状态图,这使得复杂的状态逻辑更加清晰和易于管理。

  3. 并行状态:Stateflow支持并行状态,这意味着你可以模拟同时发生的多个状态。

  4. 事件和转移:Stateflow允许你定义事件和状态之间的转移条件,这有助于模拟复杂的逻辑和条件。

  5. 代码生成:Stateflow支持代码生成,这意味着你可以从Stateflow图表生成C/C++代码,用于嵌入式系统开发。

二、光讲理论不讲实操就是耍流氓!

状态迁移图示意:  基于不同条件跳转至不同的状态!

以如下状态图为例,建立状态机

三、详细步骤

话不多说直接上手

打开matlab,打开simulink,建立空模型

在库浏览器输入stateflow,选择这个chart,也可以直接双击空白处,输入chart。

双击这个chart进去

选择一个状态,鼠标左键点击,会引出一条线,可以连接别的状态,这条线就是状态转移的条件,达到条件后,会从该状态转移至箭头所指的状态

自己完成余下操作,将三个状态互相的连接起来,如下图

点击你连的线,发现会有三个参数,我这里一 一给你解释

事件名称,或者是信号名称

判断条件,满足则跳转

动作,跳转后携带的动作或者是属性改变

直接在信号线上面输入条件,我举个很简单的例子,我这里设置为a>b

另外一种添加状态的动作:这里介绍一下,点击State里面,输入控制代码

entry:b=a;字面意思,进入,然后执行一次;那么如果想每个周期都执行一个动作呢?

那就用during:b=a;

这里关键字后面要有冒号:,冒号后面接动作,语句结束要加分号;

exit:字面意思,退出动作

以上都是为了教学基本操作,赋值都是乱来的,现在可以自己研究,创建条件以及执行语句。

当然啦,也可以继续跟着博主进行,这里为了方便运行,这里把状态条件以及执行动作都稍稍改动了一下,懒得换图片了,不会的跟着前面操作,一模一样的操作,改成这样。

现在,状态机画好了,但是有一个新的问题,我的a,b变量没有创建,现在回去创建一下这两个变量。

点击添加变量,把类型改成输入,因为我们要以外部的条件作为状态A的输入,这下懂了吧,好哥们儿们!

同样的方式,我们创建一个变量b,这里类型需要改一下可以看出我么这个a作为输入,b作为输出的状态机就做好啦,自己可以双击这个chart改个名字。

现在我们接一个输入输出来源,输入选一个常数模块,输出连接一个示波器。直接点击运行!

双击示波器,检查一下图像!

这里仿真时间只有十秒,我们看不太出来明显的现象,我们把仿真时间设置为无穷大,让它一直跑起来!

这就是最简单的状态机,后续更多知识持续更新中!!!!

手把手教会!!!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐