Simulink仿真基础

Simulink的特点

丰富的可扩充的预定义模块库

交互式的图形编辑器来组合和管理直观的模块图
以设计功能的层次性来分割模型,实现对复杂设计的管理
通过Model Explorer 导航、创建、配置、搜索模型中的任意信号、参数、属性,生成模型代码
提供API用于与其他仿真程序的连接或与手写代码集成
使用Embedded MATLAB™ 模块在Simulink和嵌入式系统执行中调用MATLAB算法
使用定步长或变步长运行仿真,根据仿真模式(Normal,Accelerator,Rapid Accelerator)来决定以解释性的方式运行或以编译C代码的形式来运行模型
图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为
可访问MATLAB从而对结果进行分析与可视化,定制建模环境,定义信号参数和测试数据
模型分析和诊断工具来保证模型的一致性,确定模型中的错误


Simulink的操作界面

MATLAB命令窗口键入simulink,或者在工具栏上点击image.png,或者点击左下方的按钮“Start”→“Simulink”→“Library Browser”即可打开Simulink Library Browser,如图A-9所示。继续点击该窗口中的“new”按钮,即可打开一个空白的模型窗口。此时就可以再模型窗口中建立模型并进行仿真工作,如图A-10所示。

image.png

Simulink基本操作

1 Simulink的功能模块库

为了便于仿真建模,Simulink模块库提供了丰富的功能模块,这些功能模块分属于不同功能、不同类别的子模块库。下面对Simulink的主要功能模块库进行简要介绍。

通用模块库(Commonly Used Block):该模块库是由其他模块库中的一些常用模块组成,主要是方便用户,利于提高建模速度。

(1) 连续系统模块库(Continuous):该模块库提供了连续系统运算功能的多种模块,如积分器模块、传递函数模块。

(2) 非线性系统模块库(Discontinuous):该模块库提供了常用的非线性模块,如继电器模块、磁滞回环模块。

(3) 离散系统模块库(Discrete):该模块库中提供了常用的线性离散模块,如离散滤波器模块、一阶保持器模块。

(4) 数学运算模块库(Math operations:该模块库中提供了包括数学运算、关系运算、复数运算等多种用于数学运算的模块,如加法模块、乘法模块、常用数学函数模块。

(5) 信号路径模块库(Signal routing):该模块库提供了信号在模型中流动的各种路径通道的选择,包括信号的分离、汇合以及通道选择等模块。

(6) 输出模块库(Sinks:该模块库提供了各种功能的输出模块,包括图形显示和数据存储等,如示波器模块、工作空间写入模块、数字显示模块。

(7) 信号源模块库(Sources:该模块库提供了仿真系统的输入信号源,如时间信号模块、读工作空间模块、正弦波输入模块。

2 Simulink模块的基本操作

对模块的基本操作主要对其外在状态的操作(如移动位置、改变大小等),也有对其能在属性的设定(如参数设定、输入输出信号设定等)。

(1) 添加模块到模型窗口

在模块库中选择模块,然后右键,选择【Add to xxx】,即可添加模块到“xxx”模型窗口,此外也可选中模块后直接拖动到模型窗口。

(2) 模块间连线

将鼠标指向连线的起点,光标变为十字后,按下鼠标左键并拖动到连线终点即可;也可以先选定连线起点模块,再按下【Ctrl】键保持不放,再点击连线终点模块。若要从一个连线起点连到多个连线终点,则先按上述方法连好一根线,在将光标移至该信号线上的某点,再按下鼠标右键保持不放,或者按住【Ctrl】键保持不放,拖动鼠标到需要连线的终点。模块间的连线不能实现多个连线起点连到一个连线终点。

(3) 模块的移动

若要带线移动,则选中模块,按住鼠标左键不放,将其拖到所需位置;若要脱离线而移动,可按住【Shift】键,再将其拖到所需位置。

(3) 模块的剪切、复制和粘贴

选中模块,再用按键【Ctrl + X】、【Ctrl + C】和【Ctrl + V】可分别实现剪切、复制和粘贴。此外按住鼠标右键进行拖动,也可复制出相同的功能模块。

(4) 改变模块的大小

选中模块,对模块的四个角出现的黑色标记进行拖动即可改变大小。此外,用按键【Shift +R】和【Shift +V】可以分别放大和缩小整个模型窗口中的模块。

(5) 模块参数设定

用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的Help按钮。通过对模块的参数设定,就可以获得需要的功能模块。

(6) 模块属性设定

选中模块,打开【Edit】菜单的【Block Properties】可以对模块进行属性设定。包括Description属性、Priority优先级属性、Tag属性、Open function属性、Attributes format string属性。其中Open function属性是一个很有用的属性,通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数。


SIMULINK模块库按功能进行分类,包括以下8类子库:
Continuous(连续模块)
Discrete(离散模块)
Function&Tables(函数和平台模块)
Math(数学模块)
Nonlinear(非线性模块)
Signals&Systems(信号和系统模块)
Sinks(接收器模块)
Sources(输入源模块)
连续模块(Continuous) continuous.mdl
Integrator:输入信号积分
Derivative:输入信号微分
State-Space:线性状态空间系统模型
Transfer-Fcn:线性传递函数模型
Zero-Pole:以零极点表示的传递函数模型
Memory:存储上一时刻的状态值
Transport Delay:输入信号延时一个固定时间再输出
Variable Transport Delay:输入信号延时一个可变时间再输出
离散模块(Discrete) discrete.mdl
Discrete-time Integrator:离散时间积分器
Discrete Filter:IIR与FIR滤波器
Discrete State-Space:离散状态空间系统模型
Discrete Transfer-Fcn:离散传递函数模型
Discrete Zero-Pole:以零极点表示的离散传递函数模型
First-Order Hold:一阶采样和保持器
Zero-Order Hold:零阶采样和保持器
Unit Delay:一个采样周期的延时
Function&Tables(函数和平台模块) function.mdl
Fcn:用用户自定义的函数(表达式)进行运算
MATLAB Fcn:利用matlab的现有函数进行运算
S-Function:调用自编的S函数的程序进行运算
Look-Up Table:建立输入信号的查询表(线性峰值匹配)
Look-Up Table(2-D):建立两个输入信号的查询表(线性峰值匹配)
Math(数学模块) math.mdl
Sum:加减运算
Product:乘运算
Dot Product:点乘运算
Gain:比例增益运算
Math Function:包括指数函数、对数函数、求平方、开根号等常用数学函数
Trigonometric Function:三角函数,包括正弦、余弦、正切等
MinMax:最值运算
Abs:取绝对值
Sign:符号函数
Logical Operator:逻辑运算
Relational Operator:关系运算
Complex to Magnitude-Angle:由复数输入转为幅值和相角输出
Magnitude-Angle to Complex:由幅值和相角输入合成复数输出
Complex to Real-Imag:由复数输入转为实部和虚部输出
Real-Imag to Complex:由实部和虚部输入合成复数输出
Nonlinear(非线性模块) nonlinear.mdl
Saturation:饱和输出,让输出超过某一值时能够饱和。
Relay:滞环比较器,限制输出值在某一范围内变化。
Switch:开关选择,当第二个输入端大于临界值时,输出由第一个输入端而来,否则输出由第三个输入端而来。
Manual Switch:手动选择开关
Signal&Systems(信号和系统模块) sigsys.mdl
In1:输入端。
Out1:输出端。
Mux:将多个单一输入转化为一个复合输出。
Demux:将一个复合输入转化为多个单一输出。
Ground:连接到没有连接到的输入端。
Terminator:连接到没有连接到的输出端。
SubSystem:建立新的封装(Mask)功能模块
Sinks(接收器模块) sinks.mdl
Scope:示波器。
XY Graph:显示二维图形。
To Workspace:将输出写入MATLAB的工作空间。
To File(.mat):将输出写入数据文件。
Sources(输入源模块) sources.mdl
Constant:常数信号。
Clock:时钟信号。
From Workspace:来自MATLAB的工作空间。
From File(.mat):来自数据文件。
Pulse Generator:脉冲发生器
Repeating Sequence:重复信号。
Signal Generator:信号发生器,可以产生正弦、方波、锯齿波及随意波。
Sine Wave:正弦波信号。
Step:阶跃波信号。
Ramp: 斜坡信号。



3 Simulink的仿真配置

选择模型窗口工具栏中的【Simulation】菜单下的【Configuration Parameters】就会弹出配置参数界面,如图A-11所示。在此界面中允许用户设置仿真控制参数。

image.png

        用户可以在【Simulation time】中可以仿真开始时间和最大结束时间,在【Solver option】中可以选择和设置解算器。解算器有两种类型(Type):变步长类型和固定步长类型。为了保证精度,一般建议选择变步长类型。在不同类型下对应有不同的算法(Solver),如ode45ode23等,用户可以选择不同的算法进行仿真分析。对于不同的解算器类型都对应有不同的参数设置,如变步长类型模式下的最大步长、最小步长、相对误差和绝对误差等。

Simulink系统建模示例

【例1】观察单位阶跃函数经惯性环节后的仿真曲线,传递函数模型为image.png

打开Simulink,新建空白模型窗口。

image.png

在信号源模块库(Sources)中选择阶跃输入模块(Step),在输出模块库(Sinks)中选择示波器模块(Scope),在连续系统模块库(Continuous)中选择传递函数模块(Transfer Fcn),并逐个拖入模型窗口。双击Step模块,设置其属性如图A-12

双击Scope模块,弹出如图A-13,点击左上方的属性按钮 image.png Parameters,弹出对话框,设置属性如图A-14

image.png

点击模型窗口工具栏中的开始仿真按钮image.png,即可按默认仿真参数仿真。双击Scope模块查看仿真曲线,如图A-16所示。

可以根据需要修改各模块属性,再次仿真运行,观察仿真结果与上图仿真结果的区别。


【例2】滑翔飞行器质心运动的动力学方程和运动学方程可简化为:

image.png

image.png

image.png