VCU——matlab/simulink软件建模
stateflow是 MATLAB/Simulink 环境中的一个工具,用于设计和仿真状态机和事件驱动系统。它是 Simulink 的扩展模块,专门用于处理复杂的逻辑控制、状态转换和事件触发的系统建模。Stateflow是一个图形化的工具,帮助用户通过状态图和流程图来描述系统的逻辑行为,特别适合那些需要基于状态变化或事件触发的系统。
一、认识MATLAB/Simulink
1. matlab主界面


2. simulink


二、Simulink 建模基础
1. Simulink模块
matlab 中比较两个浮点型,不要用==,采取差值和Compare To Constant的方案
1-1 逻辑运算模块

1-2 选择开关

1-3 查表模块
simulink查表模块1-D Lookup Table_simulink lookup table-CSDN博客
1-4 Signal Builder模块
matlab中Signal Builder模块的用法总结_signal builder信号不是阶跃变化-CSDN博客
file import导入.xlsx 数据,删除多余的sheet,1列数据为1组,第一列数据为步数轴。
步数轴不是时间轴,示波器中是时间轴,步数轴到时间轴得乘以步长。
simulink仿真的时长最好设置为 signalbuilder的行数*采样步长。
1-5 延迟模块
Matlab/Simulink的一些功能用法笔记(二)_matlab delay模块-CSDN博客
代数环:就是由于模型的输出反馈到模块或子系统的某个输入端,如果这个输入是直接馈入的,那么二者在同一个采样点内需得到求解,但是又相互依赖,不能正常的完成求解过程,导致错误产生。

累加器中的延时模块,假设延迟的长度为3个周期:-每3个周期才会更新一次累加值,每次更新时值增加1,形成阶梯状上升的输出波形。
假设初始条件为0,采样时间为1秒:
时刻0:
- Delay输出 = 0(初始值)
- Sum输出 = 0 + 1 = 1
时刻1:
- Delay输出 = 0(仍是初始值)
- Sum输出 = 0 + 1 = 1
时刻2:
- Delay输出 = 0(仍是初始值)
- Sum输出 = 0 + 1 = 1
时刻3:
- Delay输出 = 1(时刻0的Sum输出)
- Sum输出 = 1 + 1 = 2
时刻4:
- Delay输出 = 1(时刻1的Sum输出)
- Sum输出 = 1 + 1 = 2
时刻5:
- Delay输出 = 1(时刻2的Sum输出)
- Sum输出 = 1 + 1 = 2
时刻6:
- Delay输出 = 2(时刻3的Sum输出)
- Sum输出 = 2 + 1 = 3
时刻7:
- Delay输出 = 2(时刻4的Sum输出)
- Sum输出 = 2 + 1 = 3
2. 模型的仿真



3. 自动代码生成



三 Stateflow 建模基础
1. Stateflow简介
stateflow 是 MATLAB/Simulink 环境中的一个工具,用于设计和仿真 状态机 和 事件驱动系统。它是 Simulink 的扩展模块,专门用于处理复杂的逻辑控制、状态转换和事件触发的系统建模。
Stateflow 是一个图形化的工具,帮助用户通过 状态图 和 流程图 来描述系统的逻辑行为,特别适合那些需要基于状态变化或事件触发的系统。
1-1 Stateflow的核心概念
| 念 | 描述 | 示例 |
|---|---|---|
| 状态 (State) | 系统的某种特定条件或模式,每个状态可以有自己的行为逻辑。 | 汽车的“空档”、“前进档”、“倒车档”。 |
| 事件 (Event) | 触发状态转换的条件或信号。 | “按下启动按钮”或“速度超过40km/h”。 |
| 状态转换 (Transition) | 系统从一个状态切换到另一个状态的过程,通常由事件或条件触发。 | 洗衣机从“洗涤”状态切换到“漂洗”状态。 |
| 层次化状态 (Hierarchical States) | 支持嵌套状态,允许将复杂的状态机分解为多个层次,便于管理和理解。 | 自动驾驶中的“驾驶模式”包含“低速模式”和“巡航模式”的嵌套状态。 |
|
并行状态 (Parallel States) |
支持多个状态同时运行,适合建模多任务系统。 | 汽车的“空调控制”和“音响控制”可以是并行状态。 |
|
条件逻辑 (Condition Logic) |
支持在状态转换中添加条件判断,用于描述状态转换的条件。 | “如果速度 > 40km/h,则切换到巡航模式”。 |
1-2 创建Stateflow模型



1-3 状态图
1-4 流程图
1-3 simulink 和 stateflow的区别
- simulink:用于建模动力系统(如发动机、变速器)和传感器信号处理。
- simulink:常用与处理动态系统的连续变化。
- stateflow:用于建模驾驶模式切换(如空档、前进、倒车)和逻辑控制(如车速限制、故障检测)。
- stateflow:常用与处理动态系统的顺势变化。
| 特性 | Simulink | Stateflow |
|---|---|---|
| 功能定位 | 用于建模、仿真和分析动态系统,主要处理连续时间和离散时间的信号流和系统行为。 | 用于建模复杂的逻辑控制和状态机,处理事件驱动的系统和离散状态的转换逻辑。 |
| 建模方式 | 基于信号流的图形化建模(Block Diagram),强调数据流和系统的动态行为。 | 基于状态机和流程图的建模,强调状态之间的转换逻辑和事件驱动的行为。 |
| 适用场景 | 适合连续时间系统、离散时间系统、混合系统的建模和仿真。 | 适合复杂的逻辑控制、事件驱动系统、嵌套状态机和并行状态的建模。 |
| 数据处理 | 处理信号流(Signal Flow),支持连续信号和离散信号的传递和计算。 | 处理事件和状态,支持条件判断、事件触发和状态转换逻辑。 |
2.状态图的创建
在Stateflow模型中,将包含有状态的
2-1 图形对象
| 图形对象 | 符号表示 | 功能描述 | 示例 |
|---|---|---|---|
| 状态(State) | 圆角矩形 | 系统的一种工作模式 | OFF状态、ON状态 |
| 转换(Transition) | 箭头 | 状态间的切换条件和动作 | [x>0]{y=1;} |
| 事件(Event) | 名称 | 触发状态转换的信号 | button_press |
| 数据(Data) | 变量名 | 状态机中使用的变量 | counter, flag |
2-2 状态
- 状态指控制系统运行的模式。状态有两种行为:活动状态和非活动状态,不可能存在第三种行为
- 状态被看做记忆元件。它本身能保持系统的当前模式,一旦被激活,状态就保持活动的模式,知道系统改变其模式,状态才变为非活动的。
- 同理,如果状态是非活动的,则状态就会一直保持非活动状态,直到系统改变其工作模式。
- 状态的标签由三部分组成:状态名称、注释(可省略)和响应动作组成

| 动作类型 | 执行时机 | 语法 | 示例 |
|---|---|---|---|
| entry | 进入状态时 | entry: 语句 | entry: count=0; |
| during | 状态持续期间 | during: 语句 | during: count++; |
| exit | 离开状态时 | exit: 语法 | exit: save_data(); |

2-3 连接节点
在状态图中,任何转移的执行都不能停留在节点上。同流程图
2-4 转移
- 转移描述的是状态机内的逻辑流。决定了系统从当前状态改变时,系统可能发生的模式改变。
- 当转移发生变化时,原状态变为非活动状态,目标状态变为活动状态。
- 转移标签由四个部分组成,标签四部分不一定完整出现,但必须按指定顺序书写。
- 条件动作在条件满足的情况下就能执行;而转移动作需要在整个转移通路都有效的情况下,在执行转移的时候才能执行。
- 默认转移确定当父层状态处于活动状态时,在其所有的子状态中第一个被激活的状态。

2-5 父状态和子状态
默认转移优先级
转移优先级 :跳转条件都满足要求时,转移的先后顺序

3.流程图的创建
流程图是不包含状态的Stateflow框图。主要用到的图形对象是连接节点和转移
3-1 连接节点
连接节点作为转移通路的判决点或汇合点,流程图依靠连接点完成通路的连接和判断分支。
连接点不是记忆原件,因此,在状态图中任何转移的执行都不能停留在节点上,转移必须到达某个状态时才能停止。
3-2 基本顺序结构

3-3 选择结构

3-4 循环结构

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)