一、认识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 循环结构

Logo

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

更多推荐