simulink第三次课程.docx
《simulink第三次课程.docx》由会员分享,可在线阅读,更多相关《simulink第三次课程.docx(26页珍藏版)》请在冰点文库上搜索。
simulink第三次课程
八、动态系统的Simulink
上面介绍了系统simulink模型的建立,下面学习具体仿真练习
简单系统的仿真分析,以下图为例:
●建立系统模型
首先根据系统的数学描述选择合适的Simulink系统模块,然后按照第4章中的方法建立此简单系统的系统模型。
这里所使用的系统模块主要有:
✓Sources模块库中的SineWave模块:
用来作为系统的输入信号。
✓Math模块库中的RelationalOperator模块:
用来实现系统中的时间逻辑关系。
✓Sources模块库中的Clock模块:
用来表示系统运行时间。
✓Nonlinear模块库中的Switch模块:
用来实现系统的输出选择。
✓Math模块库中的Gain模块:
用来实现系统中的信号增益。
●系统模块参数设置
在完成系统模型的建立之后,需要对系统中各模块的参数进行合理的设置。
这里采用的模块参数设置如下所述:
✓SineWave模块:
采用Simulink默认的参数设置,即单位幅值、单位频率的正弦信号。
✓RelationalOperator模块:
其参数设置为“>”。
✓Clock模块:
采用默认参数设置。
✓Switch模块:
设定Switch模块的Threshold值为0.5(其实只要大于0小于1即可,因为Switch模块在输入端口2的输入大于或等于给定的阈值Threshold时,模块输出为第一端口的输入,否则为第三端口的输入),从而实现此系统的输出随仿真时间进行正确的切换。
✓Gain模块:
其参数设置在之前系统模型中所示,这里不再赘述。
●系统仿真参数设置及仿真分析
(1)在对系统模型中各个模块进行正确且合适的参数设置之后,需要对系统仿真参数进行必要的设置以开始仿真。
✓在缺省情况下,Simulink默认的仿真起始时间为0s,仿真结束时间为10s。
对于此简单系统,当时间大于25时系统输出才开始转换,因此需要设置合适的仿真时间。
设置仿真时间的方法为:
选择菜单Simulation中的SimulationParameters(或使用快捷键Ctrl+E),打开仿真参数设置对话框,在Solver选项卡中设置系统仿真时间区间。
设置系统仿真起始时间为0s、结束时间为100s。
✓在系统模块参数与系统仿真参数设置完毕之后,用户便可开始系统仿真了。
运行仿真的方法有如下几种:
⏹选择菜单Simulation中的StartSimulation。
⏹
使用系统组合热键Ctrl+T。
⏹使用模型编辑器工具栏中的Play按钮(即黑色三角形)。
✓当系统仿真结束后,双击系统模型中的Scope模块,显示的系统仿真结果如图所示。
从图中可以看出,系统仿真输出曲线非常不平滑;而对此系统的数学描述进行分析可知,系统输出应该为光滑曲线。
这是由于在仿真过程中没有设置合适的仿真步长,而是使用Simulink的默认仿真步长设置所造成的。
因此,对动态系统的仿真步长需要进行合适的设置。
(2)仿真步长设置
仿真参数的选择对仿真结果有很大的影响。
对于简单系统,由于系统中并不存在状态变量,因此每一次计算都应该是准确的(不考虑数据截断误差)。
在使用Simulink对简单系统进行仿真时,影响仿真结果输出的因素有仿真起始时间、结束时间和仿真步长。
对于简单系统仿真来说,不管采用何种求解器,Simulink总是在仿真过程中选用最大的仿真步长。
如果仿真时间区间较长,而且最大步长设置采用默认取值auto,则会导致系统在仿真时使用大的步长,因为Simulink的仿真步长是通过下式得到的:
(3)Scope高级使用技术
Scope模块工具栏按钮命令
下面分别对各项功能进行详细介绍。
1)打印输出(Print)
将系统仿真结果的输出信号打印出来。
2)视图自动缩放(Autoscale)
Simulink自动调整显示范围以匹配系统仿真输出信号的动态范围。
在图中采用默认设置,如果自动缩放视图,则可以获得更好的显示效果。
3)X轴缩放、Y轴缩放以及视图整体缩放
对信号的指定范围进行缩放,可以分别对X坐标轴、Y坐标轴或同时对X、Y坐标轴(即整体视图)的信号显示作缩放,以满足用户对信号做局部观察的需要。
首先单击缩放按钮,然后选择需要观察的信号范围即可,如图所示。
如果用户需要缩小视图,单击鼠标右键,选择弹出菜单的Zoomout即可。
4)保存与恢复坐标轴设置
在使用Scope模块观测输出信号时,用户可以保存坐标轴设置。
这样,当信号的视图发生改变后,单击恢复坐标轴设置可以恢复以前保存的坐标轴设置。
5)Scope的参数设置
使用Scope模块的参数设置选项卡能够对系统仿真输出结果显示进行更多的控制,而不仅仅是上述的简单控制。
右边两个图所示分别为Scope模块参数设置选项卡中的General选项卡与DataHistory选项卡。
下面简单介绍一下各选项卡的功能与使用。
1)坐标系数目(Numberofaxes)
功能描述:
在一个Scope输出模块中使用多个坐标系窗口同时输出多个信号。
在默认设置下,Scope模块仅显示一个坐标系窗口。
2)悬浮Scope开关(Floatingscope)
功能描述:
将Scope模块切换为悬浮Scope模块。
悬浮Scope模块将在一会中进行介绍。
3)显示时间范围(Timerange)
功能描述:
设置信号显示的时间范围。
注意:
信号显示的时间范围与系统仿真时间范围并不等同,并且坐标系所示的时间范围并非为绝对时间,而是指相对时间范围,坐标系的左下角的时间偏移(Timeoffset)给出了时间的起始偏移量(即显
示时间范围的起始时刻)。
4)坐标系标签(Ticklabels)
功能描述:
确定Scope模块中各坐标系是否带有坐标轴标签。
此选项提供了三种选择:
全部坐标系都使用坐标轴标签(all)、最下方坐标系使用标签(bottomaxisonly)以及都不使用标签(none)。
用户最好使用标签,这有利于对信号的观察理解.
5)信号显示点数限制(Limitdatapointstolast)
功能描述:
限制信号显示的数据点的数目,Scope模块会自动对信号进行截取以显示信号的最后n个点(这里n为设置的数值)。
6)保存信号至工作空间变量(Savedatatoworkspace)
功能描述:
将由Scope模块显示的信号保存到Matlab工作空间变量中,以便于对信号进行更多的定量分析。
数据保存类型有三种:
带时间变量的结构体(structurewithtime)、结构体(structure)以及数组变量(Array)。
这与前面所介绍的Sinks模块库中的Toworkspace模块类似。
此外,在Scope模块中的坐标系中单击鼠标右键,选择弹出菜单中坐标系属性设置命令(axesproperties),将弹出图所示的坐标系属性设置对话框。
用户可以对Scope模块的坐标系标题与显示信号范围进行合适的设置,以满足仿真输出结果显示的需要
(4)Display模块的使用
在某些情况下,用户需要观察或动态显示某个信号的数值结果时,可以选用Display模块,它既可以显示单个信号,也可以显示向量信号或矩阵信号(帧信号)。
当信号的显示范围超出了Display模块的边界,会在Display模块的右下角出现一个向下的三角,表示还有信号的值没被显示出来,这时用户只需用鼠标拉大Display模块的显示面板即可。
(5)悬浮Scope模块
在系统仿真分析中,用户往往需要对多个输出信号进行观察分析。
如果将每一个信号都与一个Scope模块相连接,则系统模型中必定会存在多个Scope模块,使得系统模型不够简练,而且难以对不同Scope模块中显示的信号进行直观的比较。
Sinks模块库中FloatingScope模块(悬浮Scope模块)可以很好地解决这一问题。
悬浮模块特点:
模块没有任何输入与输出端口,不需要和任何信号线连接。
其与普通Scope的区别在于:
悬浮窗口可以选定要显示的信号,而普通窗口只能显示与它相连接的信号。
A、悬浮Scope模块的使用方法
有如下两种:
(1)直接将Sinks模块库中的FloatingScope模块拖动到指定的系统模型之中。
然后选择需要显示的信号并进行适当的设置,最后进行系统仿真并显示系统中指定的信号。
(2)设置普通的Scope模块为FloatingScope模块。
用户只需选择上图中所示的悬浮Scope开关即可。
其后的操作与
(1)一致。
例如,对于图所示的动态系统模型,使用FloatingScope与悬浮Display模块显示指定的信号。
B、使用悬浮Scope模块显示信号的参数设置
对于上图所示的系统模型,要使用悬浮Scope模块显示指定的信号,必须进行正确的设置。
1)设置需要显示的信号
使用悬浮Scope模块的信号选择器选择需要显示的信号:
首先打开信号选择器对话框,然后在可显示信号列表中选择需要显示的信号,这里选择显示正弦信号与方波信号。
信号选择如图所示。
2)设置信号存储缓冲区与全局变量
在缺省情况下,Simulink重复使用存储信号的缓存区。
也就是说,Simulink信号都是局部变量。
使用悬浮Scope模块显示指定信号,由于信号与模块之间没有实际的连接,因此局部变量不再适用。
故用户应当避免Simulink对变量的缓存区重复使用,需要对其进行设置。
3.运行系统仿真
在相应的参数设置完成之后,运行系统仿真,系统仿真输出结果如图所示。
从图中可以看出,正弦信号与方波信号被正确显示出来。
练习1、离散系统的仿真分析—人口变化系统的分析
人口变化系统的数学模型
这是一个简单的人口变化模型。
在此模型中,设某一年的人口数目为,其中表示年份,它与上一年的人口p(n)、人口繁殖速率r以及新增资源所能满足的个体数目k可之间的动力学方程由如下的差分方程所描述:
从此差分方程中可以看出,此人口变化系统为一非线性离散系统。
如果设人口初始值、人口繁殖速率、新增资源所能满足的个体数目,要求建立此人口动态变化系统的系统模型,并分析人口数目在0至100年之间的变化趋势。
解答过程:
a、建立模型
在建立此人口变化的非线性离散系统模型之前,首先对离散系统模块库(Discrete模块库)中比较常用的模块作简单的介绍。
UnitDelay模块:
其主要功能是将输入信号延迟一个采样时间,它是离散系统的差分方程描述以及离散系统仿真的基础。
在仿真时只要设置延迟模块的初始值便可计算系统输出。
使用Simulink对离散系统进行仿真时,单位延迟是由Discrete模块库中的UnitDelay模块来完成的。
对于人口变化系统模型而言,需要将作为UnitDelay模块的输入以得到,然后按照系统的差分方程来建立人口变化系统的模型。
b、系统模块参数设置
系统模型建立之后,首先需要按照系统的要求设置各个模块的参数,如下所述:
(1)增益模块Gain表示人口繁殖速率,故取值为1.05。
(2)模块Gain1表示新增资源所能满足的个体数目的倒数,故取值为1/100000。
(3)UnitDelay模块参数设置。
对于离散系统而言,必须正确设置所有离散模块的初始取值,否则系统仿真结果会出现错误。
这是因为在不同的初始值下,系统的稳定性会发生变化。
单位延迟模块的参数设置如图所示。
c、系统仿真参数设置及仿真分析
在正确设置系统模型中各模块的模块参数之后,需要对系统仿真参数进行设置。
下面介绍离散系统的仿真参数设置,在此之前首先介绍系统仿真的基本原理。
这可以使用户加深对离散系统仿真的理解,并且更好的掌握离散系统仿真技术。
下面设置人口变化系统的仿真参数:
(1)仿真时间设置:
按照系统仿真的要求,设置系统仿真时间范围为0~100。
(2)离散求解器与仿真步长设置:
对离散系统进行仿真需要使用离散求解器。
对于离散系统的仿真,无论是采用定步长求解器还是采用变步长求解器,都可以对离散系统进行精确的求解。
使用Simulation菜单中的SimulationParameters设置系统仿真参数,如图所示。
在对系统中各模块参数以及系统仿真参数进行正确设置之后,运行系统仿真,对人口数目在指定的时间范围之内的变化趋势进行分析。
图所示为系统仿真输出结果。
练习2、连续系统的仿真分析--蹦极跳系统地分析
蹦极跳系统的数学模型
蹦极跳是一种挑战身体极限的运动,蹦极者系着一根弹力绳从高处的桥梁(或是山崖等)向下跳。
在下落的过程中,蹦极者几乎是处于失重状态。
按照牛顿运动规律,自由下落的物体的位置由下式确定:
其中m为物体的质量,g为重力加速度,x为物体的位置,第二项与第三项表示空气的阻力。
其中位置x的基准为蹦极者开始跳下的位置(即选择桥梁作为位置的起点),低于桥梁的位置为正值,高于桥梁的位置为负值。
如果物体系在一个弹性常数为k的弹力绳索上,定义绳索下端的初始位置为0,则其对落体位置的影响为
因此整个蹦极跳系统的数学描述为
可看出此系统为一典型的具有连续状态的非线性连续系统。
设桥梁距离地面为50m,蹦极者的起始位置为绳索的长度-30,即x(0)=-30,蹦极者起始速度为0,即
,其余参数设置k=20,
,m=70KG,
a、建立模型
与建立离散系统模型类似,在建立蹦极跳系统的模型之前,首先对连续系统模块库Continuous中比较常用的模块简单的回顾。
(1)积分器(Integrator):
积分器的主要功能在于对输入的连续信号进行积分运算。
(2)微分器(Derivative):
微分器的主要功能在于对输入的连续信号进行微分运算。
在蹦极跳系统模型中,主要使用的系统模块有:
(1)Continuous模块库中的Integrator模块:
用来实现系统中的微分运算。
(2)Functions&Tables模块库中的Fcn模块:
用来实现系统中空气阻力的函数关系。
(3)Nonlinear模块库中的Switch模块:
用来实现系统中弹力绳索的函数关系。
蹦极跳系统的模型框图如图所示。
b、系统模块参数设置
在建立蹦极跳系统模型之后,需要设置系统模型中各个模块的参数。
这里仅给出积分器模块velocity与position的参数设置,如图所示。
在具有连续状态的连续系统中,千万不能忘记对积分器模块的初始值进行设置;因为在不同的初始值下,系统的动态规律可能大相径庭。
至于其它模块的参数都比较简单,这里不再给出。
c、系统仿真参数设置与仿真分析
在对蹦极跳系统模型中各个模块的参数正确设置之后,需要设置系统仿真参数以对此系统进行仿真分析。
在系统仿真参数设置之前,首先简单介绍一下Simulink的连续求解器。
上面中对离散系统的仿真原理做了简单的介绍,Simulink通过离散系统模型与Matlab求解器之间的交互完成离散系统的仿真;其实对于任何的动态系统,Simulink总是通过系统模型与Matlab求解器之间的交互来完成系统仿真。
微分方程的不同数值求解方法对应着不同的连续求解器。
Simulink的连续求解器可以使用不同的数值求解方法对连续系统进行求解:
(1)定步长连续求解器。
可以使用如下的方法:
ode5,ode4,ode3,ode2,ode1。
(2)变步长连续求解器。
可以使用如下的方法:
ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb。
使用Simulation菜单下的SimulationParameters打开仿真参数设置对话框,对蹦极跳系统的仿真参数设置如下:
(1)系统仿真时间范围为0~100s。
(2)其它仿真参数采用系统默认取值(变步长求解器、求解算法ode45、自动选择最大仿真步长、相对误差为1e-3)。
然后进行系统仿真。
仿真输出结果如图所示(蹦极者相对于地面的距离)。
由图形可以看出来,在蹦极过程中,出现了低于地面的位置,所以此系统是不安全的,必须使用弹性常数更大的绳索。
练习3、线性离散系统的仿真分析
随着数字信号处理技术的快速发展与进步,尤其是以数字信号处理芯片为核心的数字系统的设计与使用,使得数字信号处理技术得到了广泛的应用。
数字信号处理技术具有诸多模拟信号处理技术所不具备的优点,因此在很多领域都开始取代传统的模拟信号处理。
下面以数字滤波器系统为例来介绍线性离散系统的仿真技术。
(1)数字滤波器的数学描述
数字滤波器可以对系统输入的信号进行数字滤波。
这里以低通数字滤波器为例说明线性离散系统的仿真技术。
低通滤波器可以滤除信号中的高频部分,以获取信号中有用的低频信号,其使用非常广泛。
下面给出一个低通数字滤波器的差分方程描述:
其中为滤波器的输入,为滤波器的输出。
由线性系统的定义可知,此低通数字滤器为一线性离散系统。
线性离散系统往往在Z域进行描述,由滤波器系统的差分方程可获得系统的Z变换域描述:
a建立数字滤波器系统模型
这里使用简单的通信系统说明低通数字滤波器的功能。
在此系统中,发送方首先使用高频正弦波对一低频锯齿波进行幅度调制,然后在无损信道中传递此幅度调制信号;接收方在接受到幅度调制信号后,首先对其进行解调,然后使用低通数字滤波器对解调后的信号进行滤波以获得低频锯齿波信号。
建立此系统模型所需要的系统模块主要有:
(1)Sources模块库中的SineWave模块:
用来产生高频载波信号Carrier与解调信号Carrier1。
(2)Sources模块库中的SignalGenerator模块:
用来产生低频锯齿波信号sawtooth。
(3)Discrete模块库中的DiscreteFilter模块:
用来表示数字滤波器。
(4)Math模块库中的Product模块:
用来完成低频信号的调制与解调。
统-模块参数设置
在数字滤波器系统模型建立之后,需要对模型中各个系统模块进行如下的参数设置:
(1)正弦载波信号模块Carrier的参数设置:
频率Frequency为1000rad/sec,其余设置为默认值。
(2)信号发生器模块SignalGenerator参数设置:
Waveform设置为sawtooth,幅值与频率均设置为1(默认值)。
(3)正弦解调信号模块Carrier1参数设置:
频率为1000rad/sec,采样时间Sampletime为0.005s,其余设置为默认值。
(4)数字滤波器模块DiscreteFilter参数数字:
分子多项式numerator为[0.040.080.04]、分母多项式为[1-1.60.7]、采样时间Sampletime为0.005s。
由于对模块的参数设置非常的简单,因此这里不再给出相应的模块参数设置对话框;但是需要说明以下几点:
(1)信号发生器模块SignalGenerator可以用来产生多种信号如方波信号、正弦信号、锯齿波信号及随机信号等,使用时只需选择相应的信号即可。
(2)解调信号为离散信号,主要是为了使数字滤波器的输入信号为一数字信号。
(3)数字滤波器的采样时间一般应与解调信号的采样时间保持一致。
系统仿真参数设置与仿真分析
在系统模块参数设置完毕之后,接下来设置系统仿真参数,最后进行系统的仿真分析。
在此使用变步长连续求解器对此系统进行仿真分析。
仿真参数设置如图所示,注意步长选择。
接下来对系统进行仿真,以分析数字滤波器的性能。
将原始锯齿波信号与数字滤波器的输出信号(仿真结果)进行比较,如图所示。
练习4、线性连续系统的仿真分析
建立线性连续系统的模型
建立线性连续系统模型的方法与建立一般线性系统模型的方法没有什么本质的区别。
不同之处在于,线性连续系统往往使用传递函数模型、零极点模型以及状态空间模型进行描述,因此在建立线性连续系统模型时经常使用与此相应的模块(即Continuous模块库中的TransferFcn模块、Zero-Pole模块以及State-Space模块)。
下面以比例-微分控制器系统模型的建立为例进行说明。
设置系统模块参数与仿真参数
在建立比例微分控制系统模型之后,需要设置各模块参数与系统仿真参数。
系统模型中模块参数设置如下:
(1)Zero-Pole模块设置:
设置零点Zeros为[]、设置极点Poles为[0-0.5]、设置增益为1。
(2)Step信号模块设置:
使用系统的默认取值,即单位阶跃信号。
(3)其它各模块的参数设置如图中所示。
在设置系统模块参数之后,接下来使用SimulationParameters仿真参数对话框中的Solver选项卡设置系统仿真参数,如下所述:
(1)仿真时间范围为0至20s。
(2)使用变步长连续求解器(variable-step),仿真算法为ode45。
(3)最大仿真步长(Maxstepsize)为0.01。
(4)绝对误差(Absolutetolerance)为1e-6。
(5)其余仿真参数使用默认取值。
仿真分析
在对模块参数与系统仿真参数进行合适的设置之后,运行系统仿真,结果如图所示。
从系统的仿真结果可以明显的看出,比例-微分控制系统为典型的二阶线性系统;在阶跃信号的作用下,系统不断地对位置误差进行控制修正,最终使系统达到稳定的状态。
为改善此系统的性能(如降低系统的超调量、减小系统的过渡时间等),可以对比例-微分控制器进行调整(改变Gain、Gain1模块的增益)以获得更好的性能。
练习5、混合系统的仿真
在对混合系统进行仿真分析时,必须考虑系统中连续信号与离散信号采样时间之间的匹配问题。
Simulink中的变步长连续求解器充分考虑到了连续信号与离散信号采样时间的匹配问题。
因此在对混合系统进行仿真分析时,应该使用变步长连续求解器。
由于混合系统中信号类型不一,使用同样的样式表示信号不利于用户对系统模型的理解。
Simulink仿真环境提供的Sampletimecolors功能可以很好的将不同类型、不同采样时间的信号用不同的颜色表示出来,从而可以使用户对混合系统中的信号有个清晰的了解。
只需选择Format菜单中的Sampletimecolors命令便可实现这一功能。
其中黑色信号线表示连续信号,其它颜色的信号表示离散信号;并且不同的颜色表示采样时间的不同,其中红色的信号表示采样速率时间最快的,绿色次之,而黄色表示含多速率的系统或是信号。
下面举例说明变步长连续求解器对信号采样时间的匹配问题,如图所示。
图中左侧所示为一简单的混合系统模型(使用了Sampletimecolors功能表示不同采样时间的信号,其中UnitDelay模块采样时间为0.7s,UnitDelay1模块采样时间为1.1s),图中右侧所示为系统仿真输出数据点的图形,从中可以明显的看出:
变步长连续求解器不时的减小仿真步长以匹配离散信号的采样时刻。
例、混合系统设计:
通信系统
前面以低通数字滤波器为例介绍线性离散系统仿真技术时,我们以无损信道通信系统为例说明了数字滤波器的功能。
其实在实际的通信系统中,所有的信道都存在着不同程度的信道噪音,均使信道所传递的信号受到一定的损失。
下面对一个实际的通信系统进行仿真分析,以说明混合系统的设计、仿