Simulink仿真基础学习.docx
《Simulink仿真基础学习.docx》由会员分享,可在线阅读,更多相关《Simulink仿真基础学习.docx(44页珍藏版)》请在冰豆网上搜索。
![Simulink仿真基础学习.docx](https://file1.bdocx.com/fileroot1/2023-2/2/2e04e84d-f908-43ed-80a9-a9da6e82e597/2e04e84d-f908-43ed-80a9-a9da6e82e5971.gif)
Simulink仿真基础学习
Simulink仿真基础学习
1.1演示一个Simulink的简单程序2
1.2Simulink的文件操作和模型窗口5
1.2.1Simulink的文件操作5
1.2.2Simulink的模型窗口6
1.3模型的创建9
1.3.1模块的操作9
1.3.2信号线的操作13
1.3.3给模型添加文本注释15
1.4.2常用模块的参数和属性设置19
1.5复杂系统的仿真与分析25
1.5.1仿真的设置25
1.5.2连续系统仿真28
1.5.3离散系统仿真33
1.5.4仿真结构参数化37
1.6子系统与封装39
1.6.1建立子系统39
1.6.2条件执行子系统41
1.6.3子系统的封装44
1.7用MATLAB命令创建和运行Simulink模型52
1.1.1用MATLAB命令创建Simulink模型52
1.8以Simulink为基础的模块工具箱简介59
Simulink是面向框图的仿真软件。
1.1演示一个Simulink的简单程序
【例1.1】创建一个正弦信号的仿真模型。
步骤如下:
(1)在MATLAB的命令窗口运行simulink命令,或单击工具栏中的
图标,就可以打开Simulink模块库浏览器(SimulinkLibraryBrowser)窗口,如图1.1所示。
(2)单击工具栏上的
图标或选择菜单“File”-“New”-“Model”,新建一个名为“untitled”的空白模型窗口。
(3)在上图的右侧子模块窗口中,单击“Source”子模块库前的“+”(或双击Source),或者直接在左侧模块和工具箱栏单击Simulink下的Source子模块库,便可看到各种输入源模块。
(4)用鼠标单击所需要的输入信号源模块“SineWave”(正弦信号),将其拖放到的空白模型窗口“untitled”,则“SineWave”模块就被添加到untitled窗口;也可以用鼠标选中“SineWave”模块,单击鼠标右键,在快捷菜单中选择“addto'untitled'”命令,就可以将“SineWave”模块添加到untitled窗口,如图1.2所示。
(5)用同样的方法打开接收模块库“Sinks”,选择其中的“Scope”模块(示波器)拖放到“untitled”窗口中。
(6)在“untitled”窗口中,用鼠标指向“SineWave”右侧的输出端,当光标变为十字符时,按住鼠标拖向“Scope”模块的输入端,松开鼠标按键,就完成了两个模块间的信号线连接,一个简单模型已经建成。
如图1.3所示。
(7)开始仿真,单击“untitled”模型窗口中“开始仿真”图标
,或者选择菜单“Simulink”——“Start”,则仿真开始。
双击“Scope”模块出现示波器显示屏,可以看到黄色的正弦波形。
如图1.4所示。
(8)保存模型,单击工具栏的
图标,将该模型保存为“Ex0701.mdl”文件。
1.2Simulink的文件操作和模型窗口
1.2.1Simulink的文件操作
1.新建文件
新建仿真模型文件有几种操作:
在MATLAB的命令窗口选择菜单“File”“New”“Model”。
在图1.1的Simulink模块库浏览器窗口选择菜单“File”“New”“Model”,或者单击工具栏的
图标。
在图1.3的Simulink模型窗口选择菜单“File”“New”“Model”,或者单击工具栏的
图标。
2.打开文件
打开仿真模型文件有几种操作:
在MATLAB的命令窗口输入不加扩展名的文件名,该文件必须在当前搜索路径中,例如输入“Ex0701”。
在MATLAB的命令窗口选择菜单“File”Open…”或者单击工具栏的
图标打开文件。
在图1.1的Simulink模块库浏览器窗口选择菜单“File”“Open…”或者单击工具栏的
图标打开“.mdl”文件。
在图1.3的Simulink模型窗口中选择菜单“File”“Open…”或者单击工具栏的
图标打开文件。
1.2.2Simulink的模型窗口
模型窗口由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。
1.状态栏
2.工具栏
模型窗口工具栏如图1.6所示。
3.菜单
Simulink的模型窗口的常用菜单如表1.1所示。
表1.1模型窗口常用菜单表
菜单名
菜单项
功能
File
New——Model
新建模型
Modelproperties
模型属性
Preferences
SIMULINK界面的默认设置选项
Print…
打印模型
Close
关闭当前Simulink窗口
ExitMATLAB
退出MATLAB系统
Edit
Createsubsystem
创建子系统
Masksubsystem…
封装子系统
Lookundermask
查看封装子系统的内部结构
Updatediagram
更新模型框图的外观
View
Gotoparent
显示当前系统的父系统
Modelbrowseroptions
模型浏览器设置
Blockdatatipsoptions
鼠标位于模块上方时显示模块内部数据
Librarybrowser
显示库浏览器
Fitsystemtoview
自动选择最合适的显示比例
Normal
以正常比例(100%)显示模型
Simulation
Start/Stop
启动/停止仿真
Pause/Continue
暂停/继续仿真
SimulationParameters…
设置仿真参数
Normal
普通Simulink模型
Accelerator
产生加速Simulink模型
Format
Textalignment
标注文字对齐工具
Filpname
翻转模块名
Show/Hidename
显示/隐藏模块名
Filpblock
翻转模块
RotateBlock
旋转模块
Librarylinkdisplay
显示库链接
Show/Hidedropshadow
显示/隐藏阴影效果
Sampletimecolors
设置不同的采样时间序列的颜色
Widenonscalarlines
粗线表示多信号构成的向量信号线
Signaldimensions
注明向量信号线的信号数
Portdatatypes
标明端口数据的类型
Storageclass
显示存储类型
Tools
Dataexplorer…
数据浏览器
Simulinkdebugger…
Simulink调试器
Dataclassdesigner
用户定义数据类型设计器
LinearAnalysis
线性化分析工具
1.3模型的创建
1.3.1模块的操作
1.对象的选定
选定单个对象
选定对象只要在对象上单击鼠标,被选定的对象的四角处会出现小黑块编辑框。
选定多个对象
如果选定多个对象,可以按下Shift键,然后再单击所需选定的模块;或者用鼠标拉出矩形虚线框,将所有待选模块框在其中,则矩形框中所有的对象均被选中,如图1.7所示。
选定所有对象
如果要选定所有对象,可以选择菜单“Edit”“Selectall”。
2.模块的复制
(1)不同模型窗口(包括模型库窗口)之间的模块复制
选定模块,用鼠标将其拖到另一模型窗口。
选定模块,使用菜单的“Copy”和“Paste”命令。
选定模块,使用工具栏的“Copy”和“Paste”按钮。
(2)在同一模型窗口内的复制模块(如图1.8所示)
选定模块,按下鼠标右键,拖动模块到合适的地方,释放鼠标。
按住Ctrl键,再用鼠标拖动对象到合适的地方,释放鼠标。
使用菜单和工具栏中的“Copy”和“Paste”按钮。
3.模块的移动
在同一模型窗口移动模块
选定需要移动模块,用鼠标将模块拖到合适的地方。
当模块移动时,与之相连的连线也随之移动。
在不同模型窗之间移动模块
在不同模型窗之间移动模块,在用鼠标移动的同时按下Shift键。
当模块移动时,与之相连的连线不随之移动。
4.模块的删除
要删除模块,应选定待删除模块,按Delete键;或者用菜单“Edit”“Clear”或“Cut”;或者用工具栏的“Cut”按钮。
5.改变模块大小
选定需要改变大小的模块,出现小黑块编辑框后,用鼠标拖动编辑框,可以实现放大或缩小。
6.模块的翻转
模块翻转180度
选定模块,选择菜单“Format”“FlipBlock”可以将模块旋转180度,如同1.9中间为翻转180度示波器模块。
模块翻转90度
选定模块,选择菜单“Format”“Rotate Block”可以将模块旋转90度,如图1.9右边示波器所示。
如果一次翻转不能达到要求,可以多次翻转来实现。
1.模块名的编辑
修改模块名
单击模块下面或旁边的模块名,出现虚线编辑框就可对模块名进行修改。
模块名字体设置
选定模块,选择菜单“Format”“Font”,打开字体对话框设置字体。
模块名的显示和隐藏
选定模块,选择菜单“Format”“Hide/Showname”,可以隐藏或显示模块名。
模块名的翻转
选定模块,选择菜单“Format”“Flipname”,可以翻转模块名。
1.3.2信号线的操作
1.模块间连线
先将光标指向一个模块的输出端,待光标变为十字符后,按下鼠标键并拖动,直到另一模块的输入端。
2.信号线的分支和折曲
(1)分支的产生
将光标指向信号线的分支点上,按鼠标右键,光标变为十字符,拖动鼠标直到分支线的终点,释放鼠标;或者按住Ctrl键,同时按下鼠标左键拖动鼠标到分支线的终点,如图1.10所示。
(2)信号线的折线
选中已存在的信号线,将光标指向折点处,按住Shift键,同时按下鼠标左键,当光标变成小圆圈时,用鼠标拖动小圆圈将折点拉至合适处,释放鼠标,如图1.11所示。
3.信号线文本注释(label)
添加文本注释
双击需要添加文本注释的信号线,则出现一个空的文字填写框,在其中输入文本。
修改文本注释
单击需要修改的文本注释,出现虚线编辑框即可修改文本。
移动文本注释
单击标识,出现编辑框后,就可以移动编辑框。
复制文本注释
单击需要复制的文本注释,按下Ctrl键同时移动文本注释,或者用菜单和工具栏的复制操作。
4.在信号线中插入模块
如果模块只有一个输入端口和一个输出端口,则该模块可以直接被插入到一条信号线中。
1.3.3给模型添加文本注释
(1)添加模型的文本注释
在需要当作注释区的中心位置,双击鼠标左键,就会出现编辑框,在编辑框中就可输入文字注释。
(2)注释的移动
在注释文字处单击鼠标左键,当出现文本编辑框后,用鼠标就可以拖动该文本编辑框。
1.4Simulink的基本模块
1.4.1基本模块
Simulink的基本模块包括9个子模块库。
输入信号源模块库(Sources)
输入信号源模块是用来向模型提供输入信号。
常用的输入信号源模块源如表1.2所示。
表1.2常用的输入信号源模块表
名称
模块形状
功能说明
Constant
恒值常数,可设置数值
Step
阶跃信号
Ramp
线性增加或减小的信号
SineWave
正弦波输出
SignalGenerator
信号发生器,可以产生正弦、方波、锯齿波和随机波信号
FromFile
从文件获取数据
FromWorkspace
从当前工作空间定义的矩阵读数据
Clock
仿真时钟,输出每个仿真步点的时间
In
输入模块
2.接收模块库(Sinks)
接收模块是用来接收模块信号的,常用的接收模块如表1.3所示。
表1.3常用的接收模块表
名称
模块形状
功能说明
Scope
示波器,显示实时信号
Display
实时数值显示
XYGraph
显示X-Y两个信号的关系图
ToFile
把数据保存为文件
ToWorkspace
把数据写成矩阵输出到工作空间
StopSimulation
输入不为零时终止仿真,常与关系模块配合使用
Out
输出模块
3.连续系统模块库(Continuous)
连续系统模块是构成连续系统的环节,常用的连续系统模块如表1.4所示。
表1.4常用的连续系统模块表
名称
模块形状
功能说明
Integrator
积分环节
Derivative
微分环节
State-Space
状态方程模型
TransferFcn
传递函数模型
Zero-Pole
零-极点增益模型
TransportDelay
把输入信号按给定的时间做延时
4.离散系统模块库(Discrete)
离散系统模块是用来构成离散系统的环节,常用的离散系统模块如表1.5所示。
表1.5常用的离散系统模块表
名称
模块形状
功能说明
DiscreteTransferFcn
离散传递函数模型
DiscreteZero-Pole
离散零极点增益模型
DiscreteState-Space
离散状态方程模型
DiscreteFilter
离散滤波器
Zero-OrderHold
零阶保持器
First-OrderHold
一阶保持器
UnitDelay
采样保持,延迟一个周期
1.4.2常用模块的参数和属性设置
1.模块参数设置
(1)正弦信号源(SineWave)
双击正弦信号源模块,会出现如图1.13所示的参数设置对话框。
图1.13的上部分为参数说明,仔细阅读可以帮助用户设置参数。
Sinetype为正弦类型,包括Time-based和Sample-based;Amplitude为正弦幅值;Bias为幅值偏移值;Frequency为正弦频率;Phrase为初始相角;Sampletime为采样时间。
(2)阶跃信号源(Step)
阶跃信号模块是输入信号源,其模块参数对话框如图1.14所示。
其中:
Steptime为阶跃信号的变化时刻,initialvalue为初始值,Finalvalue为终止值,Sampletime为采样时间。
(3)从工作空间获取数据(Fromworkspace)
从工作空间获取数据模块的输入信号源为工作空间。
【例1.2】在工作空间计算变量t和y,将其运算的结果作为系统的输入。
t=0:
0.1:
10;
y=sin(t);
t=t';
y=y';
然后将“FromWorkspace”模块的参数设置对话框打开,如图1.15(a)所示,在“Data”栏填写“[t,y]”,单击“OK”按钮完成。
则在模型窗口中该模块就显示为图1.15(b)。
用示波器作为接收模块,可以查看输出波形为正弦波。
“Data”的输入有几种,可以是矩阵、包含时间数据的结构数组。
“FromWorkspace”模块的接收模块必须有输入端口,“Data”矩阵的列数应等于输入端口的个数+1,第一列自动当成时间向量,后面几列依次对应各端口。
(4)从文件获取数据(Fromfile)
从文件获取数据模块是指从mat数据文件中获取数据为系统的输入。
将【例1.2】中的数据保存到.mat文件:
t=0:
0.1:
2*pi;
y=sin(t);
y1=[t;y];
saveEx0702y1%保存在“Ex0702.mat”文件中
然后将“FromFile”模块的参数设置对话框打开,如图1.16所示,在“Filename”栏填写“Ex0702.mat”,单击“OK”按钮完成。
用示波器作为接收模块,可以查看输出波形。
(5)传递函数(Transferfunction)
传递函数模块是用来构成连续系统结构的模块,其模块参数对话框如图1.17所示。
在上图中设置“Denominator”为“[11.4141]”,则在模型窗口中显示为如图1.18所示。
(6)示波器(Scope)
示波器模块是用来接收输入信号并实时显示信号波形曲线,示波器窗口的工具栏可以调整显示的波形,显示正弦信号的示波器如图1.19所示。
2.模块属性设置
每个模块的属性对话框的内容都相同,如图1.22所示。
(1)说明(Description)
对模块在模型中用法的注释。
(2)优先级(Priority)
规定该模块在模型中相对于其它模块执行的优先顺序。
(3)标记(Tag)
用户为模块添加的文本格式标记。
(4)调用函数(Openfunction)
当用户双击该模块时调用的MATLAB函数。
(5)属性格式字符串(Attributesformatstring)
指定在该模块的图标下显示模块的哪个参数和格式。
1.5复杂系统的仿真与分析
Simulink的模型实际上是定义了仿真系统的微分或差分方程组,而仿真则是用数值解算法来求解方程。
1.5.1仿真的设置
在模型窗口选择菜单“Simulation”“Simulationparameters…”,则会打开参数设置对话框,如图1.24所示。
1.Solver页的参数设置
(1)仿真的起始和结束时间
仿真的起始时间(Starttime)
仿真的结束时间(Stoptime)
(2)仿真步长
仿真的过程一般是求解微分方程组,“Solveoptions”的内容是针对解微分方程组的设置。
(3)仿真解法
Type的右边:
设置仿真解法的具体算法类型。
(4)输出模式
根据需要选择输出模式(Outputoptions),可以达到不同的输出效果。
2.DataInport\ExportWorkspaceI/O(工作空间输入输出)页的设置
如图1.25所示,可以设置Simulink从工作空间输入数据、初始化状态模块,也可以把仿真的结果、状态模块数据保存到当前工作空间。
(1)从工作空间装载数据(Loadfromworkspace)
Input栏
Initialstate栏
(2)保存数据到工作空间(Savetoworkspace)
Time栏
勾选Time栏后,模型将把(时间)变量以在右边空白栏填写的变量名(默认名为tout)存放于工作空间。
States栏
勾选States栏后,模型将把其状态变量在右边空白栏填写的变量名(默认名为xout)存放于工作空间。
Output栏
如果模型窗口中使用输出模块“Out”,那么就必须勾选Output栏,并填写在工作空间中的输出数据变量名(默认名为yout)。
Finalstate栏
Finalstate栏的勾选,将向工作空间以在右边空白栏填写的名称(默认名为xFinal),存放最终状态值。
(3)变量存放选项(Saveoptions)
Saveoptions必须与Savetoworkspace配合使用。
1.5.2连续系统仿真
【例1.3】建立二阶系统的仿真模型。
方法一:
输入信号源使用阶跃信号,系统使用开环传递函数
,接受模块使用示波器来构成模型。
(1)在“Sources”模块库选择“Step”模块,在“Continuous”模块库选择“TransferFcn”模块,在“MathOperations”模块库选择“Sum”模块,在“Sinks”模块库选择“Scope”。
(2)连接各模块,从信号线引出分支点,构成闭环系统。
(3)设置模块参数,打开“Sum”模块参数设置对话框,如图1.26所示。
将“Iconshape”设置为“rectangular”,将“Listofsigns”设置为“|+-”,其中“|”表示上面的入口为空。
“TransferFcn”模块的参数设置对话框中,将分母多项式“Denominator”设置为“[10.60]”。
将“Step”模块的参数设置对话框中,将“Steptime”修改为0。
(4)添加信号线文本注释
双击信号线,出现编辑框后,就输入文本。
则模型如图1.27所示。
(5)仿真并分析
单击工具栏的“Startsimulation”按钮,开始仿真,在示波器上就显示出阶跃响应。
在Simulink模型窗口,选择菜单“Simulation”——“Simulationparameters…”命令,在“Solver”页将“Stoptime”设置为15,然后单击“Startsimulation”按钮,示波器显示的就到15秒结束。
打开示波器的Y坐标设置对话框,将Y坐标的“Y-min”改为0,“Y-max”改为2,将“Title”设置为“二阶系统时域响应”,则示波器如图1.28所示。
方法二:
(1)系统使用积分模块(Integrator)和零极点模块(zero-pole)串联,反馈使用“MathOperations”模块库中的“Gain”模块构成反馈环的增益为-1。
(2)连接模块,由于“Gain”模块在反馈环中,因此需要使用“FlipBlock”翻转该模块。
(3)设置模块参数,将“zero-pole”模块参数对话框中的“Zeros”栏改为“[]”,将“Poles”栏改为[-0.6]。
将“Gain”模块的“Gain”参数改为-1。
模型如图1.29所示。
如果将示波器换成“Sinks”模块库中的“Out”模块
;然后在仿真参数设置对话框的“WorkspaceI/O”页(工作空间输入输出),将“Time”和“Output”栏勾选,并分别设置保存在工作空间的时间量和输出变量为“tout”和“yout”。
仿真后在工作空间就可以使用这两个变量来绘制曲线,如图1.30所示:
plot(tout,yout)
1.5.3离散(Discrete)系统仿真
【例1.4】控制部分为离散环节,被控对象为两个连续环节,其中一个有反馈环,反馈环引入了零阶保持器,输入为阶跃信号。
创建模型并仿真:
(1)选择一个“Step”模块,选择两个“TransferFcn”模块,选择两个“Sum”模块,选择两个“Scope”模块,选择一个“Gain”模块,在“Discrete”模块库选择一个“DiscreteFilter”和一个“Zero-OrderHold”模块。
(2)连接模块,将反馈环的“Gain”模块和“Zero-OrderHold”模块翻转。
(3)设置参数,“DiscreteFilter”和“Zero-OrderHold”模块的“Sampletime”都设置为0.1s。
(4)添加文本注释,系统框图如图1.31所示。
(5)设置颜色,Simulink为帮助用户方便地跟踪不同采样频率的运作范围和信号流向,可以采用不同的颜色表示不同的采样频率,选择菜单“Format”“Sampletimecolor”,就可以看到不同采样