【MATLAB完全自学一本通:Simulink仿真基础】

2025-11-10 18:31:00 情怀礼包

学习笔记:Simulink仿真基础

Simulink概述Simulink基本概念Simulink的工作环境与启动Simulink模型的特点Simulink模块的组成Simulink中的数据类型Simulink中的模块和模块库常用工具

模型创建模块参数设置模型和模型文件

过零检测和代数环过零检测代数环

B站听课笔记: 对Simulink的基本了解,后续将深入学习。

Simulink概述

是MATLAB的重要组成部分。 向用户提供一个动态系统建模、 仿真和综合分析的集成环境。

功能: 提供建立系统模型、 选择仿真参数和数值算法、 启动仿真程序对该系统进行仿真、 设置不同的输出方式来观察仿真结果等。

优点: 适用面广、 结构和流程清晰、 仿真更为精细、 模型内码更容易向DPS/FPGA等硬件移植。同时还可以转为C/C++代码。

使用Simulink的时候要有逆向思维。 作用:

能够对连续系统、 离散系统及连续离散的混合系统进行充分的建模与仿真;能够借助其他工具直接从模型中生成可以直接投入运行的执行代码;可以仿真离散事件系统的动态行为;能够在众多专业工具箱的帮助下完成诸如DSP、 电力系统等专业系统的设计与仿真。(DSP-数字信号处理digital sign process)

Simulink基本概念

1、模块与模块框图 Simulink模块框图是动态系统的图形显示。 模块代表了动态系统的某个单元,并产生输出宏。 模块之间的连线表明模块的输入端口与输出端口之间的信号连续。

Simulink允许用户创建自己的模块, 这个过程又称为模块的定制。 定制模块不同于Simulink中的标准模块, 它可以由子系统封装得到, 也可以采用M文件或C语言实现自己的功能算法, 称为S函数。

2、信号 Simulink使用“信号”一词来表示模块的输出值。

3、求解器 Simulink提供了一套高效、 稳定、 精确的微分方程数值求解方法(ODE) , 用户可以根据需要和模型特点选择适合的求解算法。

4、子系统 每一个子系统都是相对完整的、 完成一定功能的模块框图。 通过对子系统的封装, 用户还可以实现带触发使用功能的特殊子系统。

Simulink的重要特征之—:子系统的概念体现了分层建模的思想。

5、零点穿越 在Simulink对动态系统进行仿真的过程中, 一般在每一个仿真中都会检查系统状态变化的连续性。

如果Simulink检测到了某个变量的不连续性, 为了保持状态突变处系统仿真的准确性, 仿真程序就会自动调整仿真步长, 以适应这种变化。

若采用固定步长的算法: 求解器就不能对此做相应的处理,则不能正确反映系统的特性;

Simulink采用变步长的求解算法: 在确定突变时刻之后, 在突变前增加额外的仿真计算, 以保证突变前后计算的准确性。

【说明】 变步长的求解算法在状态变化缓慢时会增加仿真的步长, 而在状态变化剧烈时则会减小仿真的步长。

在系统突变时刻, 过小的仿真步长将会导致仿真时间的增加。 Simulink采用一种称为零点穿越检测的方法来解决这个问题。

【补充】 零点穿越检测: 模块首先记录下零点穿越的变量, 每—个变量都是有可能发生突变的状态变量的函数。 在突变发生时, 零点穿越函数也从正数或负数穿过零点。 通过观察零点穿越变量的符号变化, 就可以判断仿真过程中系统状态是否发生了突变现象。

如果检测到穿越事件发生, Simulink将通过对变量的以前时刻和当前时刻的插值来确定突变发生的具体时刻。 然后, Simulink调整仿真的步长,逐步逼近并跳过状态的不连续点, 这样就避免了直接在不连续点上进行仿真,提高了系统仿真的速度和精度。

Simulink的工作环境与启动

启动Simulink的3种方式:

在MATLAB的命令行窗口中直接输入simulink命令。单击MATLAB主页选项卡中的 simulink按钮。单击MATLAB主页选项卡中新建按钮,下拉菜单选择simulink模型。

Simulink模型的特点

Simulink的主要优点如下:

适应面广。结构和流程清晰。仿真更为精细。模型内码更容易向DPS、 FPGA等硬件移植。

使用Simulink建立的模型具有以下3个特点:

仿真结果的可视化。模型的层次性。可封装子系统。

Simulink模块的组成

应用工具Simulink编码器Simulink Coder,可以将Simulink模型、Stateflow图和MATLAB函数等生成C和C++代码并执行。状态流模块,在Simulink模块窗中使用Stateflow模块。扩展的模块集

Simulink中的数据类型

Simulink支持的数据类型: 数据类型的传播: 不同类型的模块所支持的数据类型往往不完相同,连接不同模块之后,若出现冲突,可通过在有冲突的模块之间插入一个Data Type Conversion 模块来解决类型冲突。

Simulink中的模块和模块库

建模的三个步骤: 1、建立系统仿真模型 2、设置仿真参数 3、启动仿真,并记录仿真结果

常用工具

仿真加速器,可以使 Simulink既可以工作在正常模式(Normal) 下, 也可以工作在加速模式(Accelerator)模型比较工具,在“建模-评估和管理-比较”中选择。模型数据编辑器,在“仿真-设计-模型数据编辑器-仿真管理器”中选择。

模型创建

模块参数设置

常规 选项卡

描述: 用于对该模块在模型中的用法进行注释。优先级: 规定该模块在模型中相对于其他模块执行的优先顺序。 优先级的数值必须是整数。 如果用户不输入数值, 系统就会自动选取合适的优先级。 优先级的数值越小( 可以是负整数),优先级越高。 一般不需要设置它。标记: 用户为模块添加的文本格式的标记。

模块注释 选项卡

用于指定在模块的图标下显示模块的哪个参数及其值, 以及以什么格式显示。属性格式字符串由任意的文本字符串加嵌入式参数名组成。(具体的格式,百度搜索)

回调 选项卡

用于定义当该模块发生某种特殊行为时所要执行的MATLAB 表达式, 也称回调函数。

模型和模型文件

** Simulink模型的概念** 从系统组成上来看, 一个典型的Simulink模型一般包括3部分: 系统、 输入及输出。

系统是指在Simulink当中建立并研究的系统方框图;输入一般用信源(Source) 表示, 具体形式可以为常数、 正弦信号、 方波及随机信号等, 代表实际对系统的输入信号;输出则一般用信宿(Sink) 表示, 具体可以是示波器、 图形记录仪等。

模型文件的创建和修改 模型文件是指在Simulink环境当中记录模型中的模块类型、 模块位置及各个模块相关参数等信息的文件, 其文件扩展名为.mdl。

模型文件格式 文件分成下面几个部分来描述模型。

Model部分: 用来描述模型参数, 包括模型名称、 模型版本和仿真参数等。BlockDefaults部分: 用来描述模块参数的默认设置。AnnotationDefaults部分: 用来描述模型的注释参数的默认值, 这些参数值不能用set_param命令来修改。System部分: 用来描述模型中每一个系统(包括顶层的系统和各级子系统) 的参数。 每一个System部分都包括模块、 连线和注释等。

过零检测和代数环

过零检测

如果检测到过零点, Simulink就会在每一个发生符号改变的变量的前一时刻值和当前值之间插入新值以评估过零点的个数, 然后逐步增加内插点数目并使其值依次越过每一个过零点。

通过过零检测技术, Simulink可以避免精确地在不连续发生点进行仿真(不连续点处的状态变量的值可能没有定义) 。

过零检测使得Simulink可以精确地仿真不连续点而不必通过减小仿真步长、 增加仿真点来实现, 因此仿真速度不会受太大影响。

大多数Simulink模块都支持过零检测。

如果用户需要显示定义的过零事件, 则可以使用Discontinuities子库中的Hit Crossing模块来实现。

如果仿真的误差容忍度设置得太大, 那么Simulink有可能检测不到过零点。

代数环

当一个支持直接输入的输入端口由同一模块的输出直接或间接地通过由其他模块组成的反馈回路的输出驱动时, 就会产生一个代数环。 Algebraic Constraint模块为代数方程等式建模及定义其初始猜想值提供了方便, 它约束输入信号F(z)等于零并输出代数状态z, 其输出必须能够通过反馈回路影响输入。 【注意】用户可以为代数环状态提供一个初始猜想值, 以提高求解代数环的效率。 当一个模型包含一个Algebraic Constraint模块时就会产生一个代数环, 这种约束可能是系统的物理连接的结果, 也可能是用户试图为一个微分-代数系统(DAE) 建模的结果。

用户可以为代数环中的某个连线(对应一个信号) 定义一个初始值, 设置的办法有两种:

可以通过Algebraic Constraint模块的参数设置;还可以通过在连线上放置IC模块(初始信号设置模块) 来设置。

当一个系统包含代数环时, Simulink会在每一个时间步进行循环求解。 如果有可能, 环路求解器会采用迭代的办法来求解, 因此仿真速度会比较慢。 所以我们要尽可能减小代数环的产生。