1、Simulink仿真基础学习Simulink仿真基础学习1.1演示一个Simulink的简单程序 21.2 Simulink的文件操作和模型窗口 51.2.1 Simulink的文件操作 51.2.2 Simulink的模型窗口 61.3 模型的创建 91.3.1模块的操作 91.3.2信号线的操作 131.3.3给模型添加文本注释 151.4.2常用模块的参数和属性设置 191.5复杂系统的仿真与分析 251.5.1仿真的设置 251.5.2连续系统仿真 281.5.3离散系统仿真 331.5.4仿真结构参数化 371.6子系统与封装 391.6.1建立子系统 391.6.2条件执行子系统
2、411.6.3子系统的封装 441.7用MATLAB命令创建和运行Simulink模型 521.1.1用MATLAB命令创建Simulink模型 521.8以Simulink为基础的模块工具箱简介 59Simulink是面向框图的仿真软件。1.1演示一个Simulink的简单程序【例1.1】创建一个正弦信号的仿真模型。步骤如下:(1) 在MATLAB的命令窗口运行simulink命令,或单击工具栏中的图标,就可以打开Simulink模块库浏览器(Simulink Library Browser) 窗口,如图1.1所示。(2) 单击工具栏上的图标或选择菜单“File”-“New”-“Model”
3、,新建一个名为“untitled”的空白模型窗口。(3) 在上图的右侧子模块窗口中,单击“Source”子模块库前的“+”(或双击Source),或者直接在左侧模块和工具箱栏单击Simulink下的Source子模块库,便可看到各种输入源模块。(4) 用鼠标单击所需要的输入信号源模块“Sine Wave”(正弦信号),将其拖放到的空白模型窗口“untitled”,则“Sine Wave”模块就被添加到untitled窗口;也可以用鼠标选中“Sine Wave”模块,单击鼠标右键,在快捷菜单中选择“add to untitled”命令,就可以将“Sine Wave”模块添加到untitled窗口
4、,如图1.2所示。(5) 用同样的方法打开接收模块库“Sinks”,选择其中的“Scope”模块(示波器)拖放到“untitled”窗口中。(6) 在“untitled”窗口中,用鼠标指向“Sine Wave”右侧的输出端,当光标变为十字符时,按住鼠标拖向“Scope”模块的输入端,松开鼠标按键,就完成了两个模块间的信号线连接,一个简单模型已经建成。如图1.3所示。(7) 开始仿真,单击“untitled”模型窗口中“开始仿真”图标,或者选择菜单“Simulink”“Start”,则仿真开始。双击“Scope”模块出现示波器显示屏,可以看到黄色的正弦波形。如图1.4所示。(8) 保存模型,单击
5、工具栏的图标,将该模型保存为“Ex0701.mdl”文件。1.2 Simulink的文件操作和模型窗口1.2.1 Simulink的文件操作1. 新建文件新建仿真模型文件有几种操作:在MATLAB的命令窗口选择菜单“File”“New”“Model”。在图1.1的Simulink模块库浏览器窗口选择菜单“File”“New”“Model”,或者单击工具栏的图标。在图1.3的Simulink模型窗口选择菜单“File”“New”“Model”,或者单击工具栏的图标。2. 打开文件打开仿真模型文件有几种操作:在MATLAB的命令窗口输入不加扩展名的文件名,该文件必须在当前搜索路径中,例如输入“Ex
6、0701”。在MATLAB的命令窗口选择菜单“File”Open”或者单击工具栏的图标打开文件。在图1.1的Simulink模块库浏览器窗口选择菜单“File”“Open”或者单击工具栏的图标打开“.mdl”文件。在图1.3的Simulink模型窗口中选择菜单“File”“Open”或者单击工具栏的图标打开文件。1.2.2 Simulink的模型窗口模型窗口由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。1. 状态栏2. 工具栏模型窗口工具栏如图1.6所示。3. 菜单Simulink的模型窗口的常用菜单如表1.1所示。表1.1模型窗口常用菜单表菜单名菜单项功能FileNewMode
7、l新建模型Model properties模型属性PreferencesSIMULINK界面的默认设置选项Print打印模型Close关闭当前Simulink窗口Exit MATLAB退出MATLAB系统EditCreate subsystem创建子系统Mask subsystem封装子系统Look under mask查看封装子系统的内部结构Update diagram更新模型框图的外观ViewGo to parent显示当前系统的父系统Model browser options模型浏览器设置Block data tips options鼠标位于模块上方时显示模块内部数据Library br
8、owser显示库浏览器Fit system to view自动选择最合适的显示比例Normal以正常比例(100%)显示模型SimulationStartStop启动停止仿真PauseContinue暂停继续仿真Simulation Parameters设置仿真参数Normal普通Simulink模型Accelerator产生加速Simulink模型FormatText alignment标注文字对齐工具Filp name翻转模块名ShowHide name显示隐藏模块名Filp block翻转模块Rotate Block旋转模块Library link display显示库链接ShowHid
9、e drop shadow显示隐藏阴影效果Sample time colors设置不同的采样时间序列的颜色Wide nonscalar lines粗线表示多信号构成的向量信号线Signal dimensions注明向量信号线的信号数Port data types标明端口数据的类型Storage class显示存储类型ToolsData explorer数据浏览器Simulink debuggerSimulink调试器Data class designer用户定义数据类型设计器Linear Analysis线性化分析工具 1.3 模型的创建1.3.1模块的操作1. 对象的选定选定单个对象选定对象
10、只要在对象上单击鼠标,被选定的对象的四角处会出现小黑块编辑框。选定多个对象如果选定多个对象,可以按下Shift键,然后再单击所需选定的模块;或者用鼠标拉出矩形虚线框,将所有待选模块框在其中,则矩形框中所有的对象均被选中,如图1.7所示。选定所有对象如果要选定所有对象,可以选择菜单“Edit”“Select all”。2. 模块的复制(1) 不同模型窗口(包括模型库窗口)之间的模块复制选定模块,用鼠标将其拖到另一模型窗口。选定模块,使用菜单的“Copy”和“Paste”命令。选定模块,使用工具栏的“Copy”和“Paste”按钮。(2) 在同一模型窗口内的复制模块(如图1.8所示)选定模块,按下
11、鼠标右键,拖动模块到合适的地方,释放鼠标。按住Ctrl键,再用鼠标拖动对象到合适的地方,释放鼠标。使用菜单和工具栏中的“Copy”和“Paste”按钮。3. 模块的移动 在同一模型窗口移动模块选定需要移动模块,用鼠标将模块拖到合适的地方。当模块移动时,与之相连的连线也随之移动。在不同模型窗之间移动模块在不同模型窗之间移动模块,在用鼠标移动的同时按下Shift键。当模块移动时,与之相连的连线不随之移动。 4. 模块的删除要删除模块,应选定待删除模块,按Delete键;或者用菜单“Edit”“Clear”或“Cut”;或者用工具栏的“Cut”按钮。 5. 改变模块大小选定需要改变大小的模块,出现小
12、黑块编辑框后,用鼠标拖动编辑框,可以实现放大或缩小。6. 模块的翻转模块翻转180度选定模块,选择菜单“Format”“Flip Block”可以将模块旋转180度,如同1.9中间为翻转180度示波器模块。模块翻转90度选定模块,选择菜单“Format”“RotateBlock”可以将模块旋转90度,如图1.9右边示波器所示。如果一次翻转不能达到要求,可以多次翻转来实现。1. 模块名的编辑修改模块名单击模块下面或旁边的模块名,出现虚线编辑框就可对模块名进行修改。模块名字体设置选定模块,选择菜单“Format”“Font”,打开字体对话框设置字体。模块名的显示和隐藏选定模块,选择菜单“Forma
13、t”“Hide /Show name”,可以隐藏或显示模块名。模块名的翻转选定模块,选择菜单“Format”“Flip name”,可以翻转模块名。1.3.2信号线的操作1. 模块间连线先将光标指向一个模块的输出端,待光标变为十字符后,按下鼠标键并拖动,直到另一模块的输入端。2. 信号线的分支和折曲(1) 分支的产生将光标指向信号线的分支点上,按鼠标右键,光标变为十字符,拖动鼠标直到分支线的终点,释放鼠标;或者按住Ctrl键,同时按下鼠标左键拖动鼠标到分支线的终点,如图1.10所示。(2) 信号线的折线选中已存在的信号线,将光标指向折点处,按住Shift键,同时按下鼠标左键,当光标变成小圆圈时
14、,用鼠标拖动小圆圈将折点拉至合适处,释放鼠标,如图1.11所示。3. 信号线文本注释(label)添加文本注释双击需要添加文本注释的信号线,则出现一个空的文字填写框,在其中输入文本。修改文本注释单击需要修改的文本注释,出现虚线编辑框即可修改文本。移动文本注释单击标识,出现编辑框后,就可以移动编辑框。复制文本注释单击需要复制的文本注释,按下Ctrl键同时移动文本注释,或者用菜单和工具栏的复制操作。4. 在信号线中插入模块如果模块只有一个输入端口和一个输出端口,则该模块可以直接被插入到一条信号线中。1.3.3给模型添加文本注释(1) 添加模型的文本注释在需要当作注释区的中心位置,双击鼠标左键,就会
15、出现编辑框,在编辑框中就可输入文字注释。(2) 注释的移动在注释文字处单击鼠标左键,当出现文本编辑框后,用鼠标就可以拖动该文本编辑框。1.4 Simulink的基本模块1.4.1基本模块Simulink的基本模块包括9个子模块库。输入信号源模块库(Sources)输入信号源模块是用来向模型提供输入信号。常用的输入信号源模块源如表1.2所示。表1.2 常用的输入信号源模块表名称模块形状功能说明Constant恒值常数,可设置数值Step阶跃信号Ramp线性增加或减小的信号Sine Wave正弦波输出Signal Generator信号发生器,可以产生正弦、方波、锯齿波和随机波信号From Fil
16、e从文件获取数据From Workspace从当前工作空间定义的矩阵读数据Clock仿真时钟,输出每个仿真步点的时间In输入模块2. 接收模块库(Sinks)接收模块是用来接收模块信号的,常用的接收模块如表1.3所示。表1.3 常用的接收模块表名称模块形状功能说明Scope示波器,显示实时信号Display实时数值显示XY Graph显示X-Y两个信号的关系图To File把数据保存为文件To Workspace把数据写成矩阵输出到工作空间Stop Simulation输入不为零时终止仿真,常与关系模块配合使用Out输出模块3. 连续系统模块库(Continuous)连续系统模块是构成连续系统
17、的环节,常用的连续系统模块如表1.4所示。表1.4 常用的连续系统模块表名称模块形状功能说明Integrator积分环节Derivative微分环节State-Space状态方程模型Transfer Fcn传递函数模型Zero-Pole零-极点增益模型Transport Delay把输入信号按给定的时间做延时4. 离散系统模块库(Discrete)离散系统模块是用来构成离散系统的环节,常用的离散系统模块如表1.5所示。表1.5 常用的离散系统模块表名称模块形状功能说明Discrete Transfer Fcn离散传递函数模型Discrete Zero-Pole离散零极点增益模型Discrete
18、 State-Space离散状态方程模型Discrete Filter离散滤波器Zero-Order Hold零阶保持器First-Order Hold一阶保持器Unit Delay采样保持,延迟一个周期1.4.2常用模块的参数和属性设置1. 模块参数设置(1) 正弦信号源(Sine Wave)双击正弦信号源模块,会出现如图1.13所示的参数设置对话框。图1.13的上部分为参数说明,仔细阅读可以帮助用户设置参数。Sine type为正弦类型,包括Time-based和Sample-based;Amplitude为正弦幅值;Bias为幅值偏移值;Frequency为正弦频率;Phrase为初始相
19、角;Sample time为采样时间。(2) 阶跃信号源(Step)阶跃信号模块是输入信号源,其模块参数对话框如图1.14所示。其中:Step time为阶跃信号的变化时刻,initial value为初始值,Final value为终止值,Sample time为采样时间。(3) 从工作空间获取数据(From workspace)从工作空间获取数据模块的输入信号源为工作空间。【例1.2】在工作空间计算变量t和y,将其运算的结果作为系统的输入。 t=0:0.1:10; y=sin(t); t=t; y=y; 然后将“From Workspace”模块的参数设置对话框打开,如图1.15(a)所示
20、,在“Data”栏填写“t,y”,单击“OK”按钮完成。则在模型窗口中该模块就显示为图1.15(b)。用示波器作为接收模块,可以查看输出波形为正弦波。“Data”的输入有几种,可以是矩阵、包含时间数据的结构数组。“From Workspace”模块的接收模块必须有输入端口,“Data”矩阵的列数应等于输入端口的个数+1,第一列自动当成时间向量,后面几列依次对应各端口。 (4) 从文件获取数据(From file)从文件获取数据模块是指从mat数据文件中获取数据为系统的输入。将【例1.2】中的数据保存到.mat文件: t=0:0.1:2*pi; y=sin(t); y1=t;y; save Ex
21、0702 y1 %保存在“Ex0702.mat”文件中 然后将“From File”模块的参数设置对话框打开,如图1.16所示,在“File name”栏填写“Ex0702.mat”,单击“OK”按钮完成。用示波器作为接收模块,可以查看输出波形。(5) 传递函数(Transfer function)传递函数模块是用来构成连续系统结构的模块,其模块参数对话框如图1.17所示。在上图中设置“Denominator”为“1 1.414 1”,则在模型窗口中显示为如图1.18所示。(6) 示波器(Scope)示波器模块是用来接收输入信号并实时显示信号波形曲线,示波器窗口的工具栏可以调整显示的波形,显示
22、正弦信号的示波器如图1.19所示。2. 模块属性设置每个模块的属性对话框的内容都相同,如图1.22所示。(1) 说明(Description)对模块在模型中用法的注释。(2) 优先级(Priority)规定该模块在模型中相对于其它模块执行的优先顺序。(3) 标记(Tag)用户为模块添加的文本格式标记。(4) 调用函数(Open function)当用户双击该模块时调用的MATLAB函数。(5) 属性格式字符串(Attributes format string)指定在该模块的图标下显示模块的哪个参数和格式。1.5复杂系统的仿真与分析Simulink的模型实际上是定义了仿真系统的微分或差分方程组,
23、而仿真则是用数值解算法来求解方程。1.5.1仿真的设置在模型窗口选择菜单“Simulation”“Simulation parameters”,则会打开参数设置对话框,如图1.24所示。1. Solver页的参数设置(1) 仿真的起始和结束时间仿真的起始时间(Start time)仿真的结束时间(Stop time)(2) 仿真步长仿真的过程一般是求解微分方程组,“Solve options”的内容是针对解微分方程组的设置。(3) 仿真解法Type的右边:设置仿真解法的具体算法类型。(4) 输出模式根据需要选择输出模式(Output options),可以达到不同的输出效果。2.Data In
24、portExport Workspace I/O(工作空间输入输出)页的设置如图1.25所示,可以设置Simulink从工作空间输入数据、初始化状态模块,也可以把仿真的结果、状态模块数据保存到当前工作空间。(1) 从工作空间装载数据(Load from workspace)Input栏Initial state栏(2) 保存数据到工作空间(Save to workspace) Time栏勾选Time栏后,模型将把(时间)变量以在右边空白栏填写的变量名(默认名为tout)存放于工作空间。States栏勾选States栏后,模型将把其状态变量在右边空白栏填写的变量名(默认名为xout)存放于工作空
25、间。Output栏如果模型窗口中使用输出模块“Out”,那么就必须勾选Output栏,并填写在工作空间中的输出数据变量名(默认名为yout)。Final state栏Final state栏的勾选,将向工作空间以在右边空白栏填写的名称(默认名为xFinal),存放最终状态值。(3) 变量存放选项(Save options)Save options必须与Save to workspace配合使用。1.5.2连续系统仿真【例1.3】建立二阶系统的仿真模型。方法一:输入信号源使用阶跃信号,系统使用开环传递函数,接受模块使用示波器来构成模型。(1) 在“Sources”模块库选择“Step”模块,在“
26、Continuous”模块库选择“Transfer Fcn”模块,在“Math Operations”模块库选择“Sum”模块,在“Sinks”模块库选择“Scope”。(2) 连接各模块,从信号线引出分支点,构成闭环系统。(3) 设置模块参数,打开“Sum”模块参数设置对话框,如图1.26所示。将“Icon shape”设置为“rectangular”,将“List of signs”设置为“|+-”,其中“|”表示上面的入口为空。“Transfer Fcn”模块的参数设置对话框中,将分母多项式“Denominator”设置为“1 0.6 0”。将“Step”模块的参数设置对话框中,将“St
27、ep time”修改为0。(4) 添加信号线文本注释双击信号线,出现编辑框后,就输入文本。则模型如图1.27所示。 (5) 仿真并分析单击工具栏的“Start simulation”按钮,开始仿真,在示波器上就显示出阶跃响应。在Simulink模型窗口,选择菜单“Simulation”“Simulation parameters”命令,在“Solver”页将“Stop time”设置为15,然后单击“Start simulation”按钮,示波器显示的就到15秒结束。打开示波器的Y坐标设置对话框,将Y坐标的“Y-min”改为0,“Y-max”改为2,将“Title”设置为“二阶系统时域响应”,
28、则示波器如图1.28所示。方法二:(1) 系统使用积分模块(Integrator)和零极点模块(zero-pole)串联,反馈使用“Math Operations”模块库中的“Gain”模块构成反馈环的增益为-1。(2) 连接模块,由于“Gain”模块在反馈环中,因此需要使用“Flip Block”翻转该模块。(3) 设置模块参数,将“zero-pole”模块参数对话框中的“Zeros”栏改为“”,将“Poles”栏改为-0.6。将“Gain”模块的“Gain”参数改为-1。模型如图1.29所示。如果将示波器换成“Sinks”模块库中的“Out”模块;然后在仿真参数设置对话框的“Workspa
29、ce I/O” 页(工作空间输入输出),将“Time”和“Output”栏勾选,并分别设置保存在工作空间的时间量和输出变量为“tout”和“yout”。仿真后在工作空间就可以使用这两个变量来绘制曲线,如图1.30所示: plot(tout,yout)1.5.3离散(Discrete)系统仿真【例1.4】控制部分为离散环节,被控对象为两个连续环节,其中一个有反馈环,反馈环引入了零阶保持器,输入为阶跃信号。创建模型并仿真:(1) 选择一个“Step”模块,选择两个“Transfer Fcn”模块,选择两个“Sum”模块,选择两个“Scope”模块,选择一个“Gain”模块,在“Discrete”模块库选择一个“Discrete Filter”和一个“Zero-Order Hold”模块。(2) 连接模块,将反馈环的“Gain”模块和“Zero-Order Hold”模块翻转。(3) 设置参数,“Discrete Filter”和“Zero-Order Hold”模块的“Sample time”都设置为0.1s。 (4) 添加文本注释,系统框图如图1.31所示。(5) 设置颜色,Simulink为帮助用户方便地跟踪不同采样频率的运作范围和信号流向,可以采用不同的颜色表示不同的采样频率,选择菜单“Format”“Sample time color”,就可以看到不同采样
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1