3.6 Simulink仿真举例

通过前面的内容,读者应该了解并初步掌握了Simulink的使用。下面通过几个实例,讲述如何使用Simulink进行仿真。

【例3-2】 使用Simulink求解微分方程068-1

解:首先从数学的角度看,要由t得到u的数值解,需要先对sin t进行余弦运算,然后再积分。在弄清数学模型结构之后,就可以根据数学模型设计相应的仿真模型。

在本例中,需要正弦信号、余弦函数、积分模块、观测结果的模块。

分别将Simulink Library Browser中的以下模块依次拖到untitled窗口中,如图3.16所示,其中:

068-2

图3.16 求解微分方程的Simulink模型

  • Sources模块组中的Sine Wave模块,它是正弦信号;
  • Math Operations模块组中的Trigonometric Function模块,Trigonometric Function是三角函数,双击该模块,选择余弦函数(cos);
  • Continuous模块组中的Integrator模块,它是积分模块;
  • Sinks模块组中的Scope模块,这是示波器模块,能将输出结果显示出来。

按照题意连接好模块后,在默认参数下运行仿真,输出结果如图3.17所示。

068-04

图3.17 微分方程求解的结果图

【例3-3】 产生一个5sin(2t)和sin(5t)叠加的信号,而且还叠加了功率谱为0.5的限带宽白噪声。

解:首先需要产生5sin(2t)、sin(5t)和限带宽白噪声信号,然后将这3个信号叠加起来。

在本例中,需要正弦信号、限带宽白噪声、加法模块、观测结果的模块。

分别将Simulink Library Browser中的以下模块依次拖到untitled窗口中,如图3.18所示,其中:

068-3

图3.18 信号叠加的Similink模型

  • Sources模块组中的Signal Generator模块,它是信号发生器模块,双击该模块选定sin波形、幅值5、频率2,这将产生5sin(2t)信号;另一个类似的设置将产生sin(5t)信号;
  • Sources模块组中的Band-Limited White Noise模块,它是限带宽白噪声模块,双击该模块,设置Noise power(功率谱)为0.5,这将产生功率谱为0.5的限带宽白噪声信号;
  • Math Operations模块组中的Add模块,它是加法模块,默认是两个输入相加,双击该模块,将“List of Signs”框中的两个加号(++)改为三个加号(+++),表明对3个输入量进行相加;
  • Sinks模块组中的Scope模块,这是示波器模块,能将输出结果显示出来。

按照题意连接好模块后,在默认参数下运行仿真,输出结果如图3.19所示。

069-01

图3.19 信号叠加的结果图

【例3-4】 已知单位负反馈二阶系统的开环传递函数为069gs-1,试利用Simulink求取其单位阶跃响应。

解:本题的基本求解步骤如下:

(1)利用Simulink的Library窗口中的【File】|【New】,打开一个新的模型窗口。

(2)分别从信号源库(Sourse)、输出方式库(Sink)、数学运算库(Math)、连续系统库(Continuous)中,用鼠标把阶跃信号发生器(Step)、示波器(Scope)、传递函数(Transfer Fcn)和相加器(Sum)4个标准功能模块选中,并将其拖至模型窗口。

(3)按要求先将前向通道连接好,然后把相加器(Sum)的另一个端口与传递函数和示波器间的线段相连,形成闭环反馈。

(4)双击传递函数,打开其“模块参数设置”对话框,并将其中的Numerator设置为“[10]”,Denominator设置为“[1 3 0]”,如图3.20所示,同理,将相加器设置为“+-”。

069-02

图3.20“模块参数设置”对话框

(5)绘制成功后,如图3.21所示,命名后存盘。

069-2

图3.21 二阶系统Simulink结构图

(6)对模型进行仿真,运行后双击示波器,得到系统的阶跃响应曲线如图3.22所示。

070-01

图3.22 示波器输出结果图

【例3-5】 某控制系统的传递函数表示为069gs-3,其中069gs-4,试用+Simulink求它的阶跃输出响应,并将响应曲线导入到MATLAB的工作空间中,在工作空间中绘制响应曲线。

解:本例中需要阶跃信号、传递函数、加法模块、将Simulink中的数据导出到工作空间的模块和观测结果的模块。

分别将Simulink Library Browser中的以下模块依次拖到untitled窗口中,连接后便得到整个控制系统的模型,如图3.23所示。

070-1

图3.23 例3-5的控制系统Simulink模型

  • Sources模块组中的Step模块,它是阶跃信号模块,这将产生阶跃输入信号;
  • Continuous模块组中的Transfer Fcn模块,它是传递函数模块,双击该模块设置分子多项式为[1 50],分母多项式为[2 3 0],这将构造传递函数G(s);
  • Math Operations模块组中的Add模块,它是加法模块,默认是两个输入相加,双击该模块,将“List of Signs”框中的两个加号(++)改为一个加号和一个减号(+-),减号用来进行负反馈连接;
  • Sinks模块组中的Scope模块,这是示波器模块,能将输出结果显示出来;
  • Sinks模块组中的To Workspace模块,这是将Simulink中的数据导出到MATLAB的Workspace中的模块,此处用来将输出结果导出到工作空间中。对To Workspace模块进行设置时,将导出的数据命令为y,这样仿真结果在工作空间中便会以变量y存在。需要注意的是,需要将save format设为array,这样运行后在工作空间便可用plot将导过来的数据进行绘图。

选择Simulation菜单下的Start命令,开始仿真。仿真后,双击Scope,结果如图3.24所示。

071-01

图3.24 例3-5的控制系统仿真结果

由图3.24可见,系统的瞬态响应很不理想,稳定时间长,超调量大。

在MATLAB工作空间中,看到了变量y,如图3.25所示。双击变量y,便出现了图3.25中右侧部分的“Array Editor”,里面能看到y的数据。

071-02

图3.25 导入到工作空间中的变量

可以使用plot命令来显示y,也可以简捷地利用工作空间工具条中的plot功能,单击plot,输出结果如图3.26所示。

071-1

图3.26 工作空间中仿真结果的图形化输出

从上面可以看出,采用Simulink进行仿真,不仅系统模型的搭建简单方便,而且能直接获得系统输出或状态变量变化曲线,具有简单明了、直观形象的特点,得到了广泛应用。

【例3-6】 已知一闭环系统结构如图3.27所示,其中,系统前向通道的传递函数为070gs-1,而且前向通道有一个[-0.2, 0.5]的限幅环节,图中用N表示,反馈通道的增益为1.5,系统为负反馈,阶跃输入经1.5倍的增益作用到系统,试利用Simulink对该闭环系统进行仿真,要求观测其单位阶跃响应曲线。

071-2

图3.27 例3-6的系统框图

解:使用Simulink进行仿真的基本步骤如下。

(1)在MATLAB的窗中双击Simulink图标就打开Simulink Library Browser窗口,在此窗口进入File\New\Model,就会打开一个untitled窗口(可以用“Save as”保存此窗口并改名),如图3.28所示。

071-05

图3.28 控制模型框图编辑窗口

(2)根据题意在Simulink Library Browser窗口中选定需要使用的子模块,如图3.29所示。在本例中,需要单位阶跃信号、增益模块、表示连续系统的模块、表示限幅环节的模块、用来把输入信号和输出信号组合起来以便直观观察的模块、把输入信号和反馈信号综合的模块、把仿真中的变量输入到工作空间的模块、观测系统响应曲线的模块和时钟模块。在Simulink Library Browser窗口下找到了符合要求的模块:表示阶跃信号的模块Step,它位于Sources模块组中;表示增益的模块Gain,它位于MATH OPERATIONS模块组中;表示连续系统的模块Transfer Fcn,它位于CONTINOUS模块组中;表示限幅环节的模块Saturation,它位于DISCONTINUTIES模块组中;用来把输入信号和输出信号组合的模块Mux,它位于Signal Routing模块组中;用于把输入信号和反馈信号综合的模块Sum,它位于MATH OPERATIONS模块组中;用于把仿真变量输入到工作空间的模块To Workspace,它位于SINKS模块组中;用于观测系统响应曲线的模块Scope,它位于Sinks模块组中;用来产生时钟信号的模块Clock,它位于Sources模块组中。

072-01

图3.29 Simulink Library Browser窗口

把选定好的模块依次拖到untitled窗口中,如图3.30所示。注意:模块的选择有时不是唯一的,要根据自己的习惯定。在本例中,表示系统前向通道传递函数的模块可以用Transfer Fcn,也可以用Zero-Pole或State-Space,当然,需要进行简单的转换,详见第4章。

072-02

图3.30 模块编辑窗口

(3)连接模块并设定模块参数。把各功能模块按照逻辑关系连接起来,双击某一个模块,就会出现该模块的设置窗口,如图3.31所示,依次设置模块的参数。以图3.31为例,它是传递函数的设置窗口,设定它为073gs-1,则在Numerator中输入[1 0.5],在Denominator中输入[1 0.1],其他的选项按默认值设定,然后单击“OK”按钮完成设置。

073-01

图3.31 模块参数设定窗口

在Simulink仿真中常用的一个模块是To Workspace,它把Simulink仿真的数据传送到工作空间中,以供MATLAB程序使用。用鼠标双击“To Workspace”图标,得到如图3.32所示的To Workspace模块参数对话框。

073-02

图3.32 “To Workspace”模块参数对话框

本例中,需要传输数据向量c和t。以设置数据向量c为例,在Variable name编辑框中输入向量名c,save format编辑选择Array(向量)项,然后单击“OK”按钮完成设置。仿真运行后,向量c(t)和t以各自变量名存在于MATLAB Workspace中。

(4)设置仿真器参数,“仿真器参数设置”对话框如图3.33所示,在SIMULATION\SIMULATION PARAMETERS\SOLVER中设置SolverType、Solver(步长)、Stop Time等。

073-03

图3.33 “仿真器参数设置”对话框

(5)运行仿真。模型编辑好后,单击“START”按钮,运行SIMULATION\START,如图3.34所示。

074-01

图3.34 例3-6的Simulink仿真框图

(6)分析仿真结果。仿真中,一般采用示波器观测输出结果。双击Scope模块,输出的图形如图3.35所示。由于采用了Mux模块,把输入信号和输出信号合在一起同时显示,所以图上是两条曲线,它会自动分配不同的颜色以便观察。

074-02

图3.35 示波器输出结果

(7)对工作空间中的数据做后续处理。当仿真任务比较复杂时,需要把Simulink生成的数据再导入到工作空间中来进行一些处理和分析。在本例中,Simulink仿真结束后,输出结果通过To workspace传送到工作空间中,如图3.36所示。在工作空间窗口中能看到这些变量,使用“whos”命令能看到这些变量的详细信息。另外,还有一些模块(如From file、To file)能实现文件与Simulink的数据传输,读者可以通过模块的使用说明和有关对话框的引导进行使用。

074-03

图3.36 工作空间窗口

有关Simulink的使用将在后面有关自动控制系统分析和设计的章节中进一步详细论述。