MATLAB系统模型建立和动态特性分析报告实验.docx
- 文档编号:7963112
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:61.92KB
MATLAB系统模型建立和动态特性分析报告实验.docx
《MATLAB系统模型建立和动态特性分析报告实验.docx》由会员分享,可在线阅读,更多相关《MATLAB系统模型建立和动态特性分析报告实验.docx(13页珍藏版)》请在冰豆网上搜索。
MATLAB系统模型建立和动态特性分析报告实验
实验二MATLAB系统模型建立和动态特性分析实验
一、实验目的
1.掌握如何使用MALAB进行系统模型的建立;
2.学习利用MALAB命令得阶跃响应曲线,分析系统动态特性;3.利用MALAB求阶跃响应的性能指标。
实验仪器
计算机
三、实验内容
2.1控制系统的模型
控制系统的表示可用三种模型:
传递函数、零极点增益、状态空间。
每一种模型又有连续与离散之分。
为分析系统方便有时需要在三种模型间转换。
MATLAB提供了各种命令,使我们可以很方便的完成这些工作,下面以连续系统为例简要说明有关命令。
2.1.1模型与表示式
1、传递函数模型
G(s)
bmsmbm1sm1...b1sb0
nn1
ansan1s...a1sa0
在MATLAB中直接用矢量组表示传递函数的分子、分母多项式系数,即:
num=[bmbm-1⋯b0];表示传递函数的分子多项式系数den=[anan-1⋯a0];表示传递函数的分母多项式系数
sys=tf(num,den)tf命令将sys变量表示成传递函数模型。
2、零极点增益模型
G(s)k
(sz1)(sz2)...(szm)
(sp1)(sp2)...(spn)
在MATLAB中用z、p、k矢量组分别表示系统的零点、极点和增益,即:
z=[z1z2⋯⋯zm];p=[p1p2⋯⋯pn];
k=[k];
sys=zpk(z,p,k)zpk命令将sys变量表示成零极点增益模型。
3、状态空间模型
x=ax+bu
y=cx+du
在MATLAB中用(a、b、c、d)矩阵组表示,然后sys=ss(a,b,c,d)ss命令将sys变量表示成状态空间模型。
2.1.2模型间的转换
在MATLAB中进行模型间转换的命令有:
ss2tf、ss2zp、tf2ss、tf2zp、zp2tf、zp2ss
1、系统的并联
parallel命令可以实现两个系统的并联。
示意图如下:
n1d2n2d1
g(s)g1(s)g2(s)1221
d1d2
其中n1、d1和n2、d2分别为g1(s)、g2(s)的传递函数分子、分母系数行矢量。
命令格式:
[n,d]=paralltl(n1,d1,n2,d2)
[a,b,c,d]=paralltl(a1,b1,c1,d1,a2,b2,c2,d2)例十七将下面两个系统并联连接
g1(s)
s4
g2(s)
2s4
s22s3
执行下面程序:
n1=[3];
d1=[14];
n2=[24];
d2=[123];
[n,d]=parallel(n1,d1,n2,d2)运行结果:
n=
051825d=
161112可得并联后系统的传递函数为
5s218s25g(s)32s36s211s122、系统的串联
series命令实现两个系统的串联,示意图如下:
n1n2
g(s)g1(s)g2(s)12
d1d2
命令格式:
[n,d]=series(n1,d1,n2,d2)
[a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2)3、系统的反馈
feedback命令实现两个系统的反馈连接,示意图如下:
n1d2
g1(s)
g(s)
1g2(s)d1d2n1n2
命令格式:
[n,d]=feedback(n1,d1,n2,d2)或:
[n,d]=feedback(n1,d1,n2,d2,sign)
[a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,其中sign是指示y2到u1连接的符号,缺省时默认为负(即例十八设有下面两个系统:
s1
g1(s)2
号,
c2,d2,sign)
sign=-1)。
1
g2(s)s10
现要将它们负反馈连接,求传递函数
输入:
n1=
[1,1];
d1=
[1,2,3];
n2=
1;
d2=
[1,10];
[n,
d]=feedback(n1,d1,
运行结果:
n2,d2)
n=0
d=1
s2s3
11110
122431
即所求系统为:
g(s)
s211s10
22
s212s224s31
4、系统的闭环
cloop命令可以将系统的输出反馈到系统的输入构成闭环系统,u
示意图如下:
g1(s)
正、负反馈后闭环系统为:
g1(s)
g(s)1g1(s)
n1
n1d1
命令格式:
[n,d]=cloop(n1,d1,sign)
s2
[ac,bc,cc,dc]=cloop(a,b,c,d,sign)例十九已知系统如下
g1(s)s22s3
求该系统闭环后的传递函数(负反馈)。
输入:
n1=[12];
d1=[123];
[n,d]=cloop(n1,d1)运算结果:
n=012d=135即:
闭环后系统的传递函数为
g1(s)s2
s2
3s5
5、生成二阶系统
1
2nsn2
z)
ord2命令在给定n,ξ下可以生成相应的二阶系统,即:
g1(s)2s
命令格式:
[n,d]=ord2(Wn,
其中:
z=ξWn=n
2.2控制系统的时域分析系统对不同的输入信号具有不同的响应,而控制系统在运行中受到的外作用信号具有随机性。
因此在研究系统的性能和响应时,需要采用某些标准的测减信号。
常用的测减信号有:
阶跃信号、速度信号、冲激信号、加速度信号等等。
具体采用哪种信号,则要看系统主要工作于那种信号作用的场所,如系统的输入信号是突变信号,则采用阶跃信号分析为宜。
而系统输入信号是以时间为基准成比例变化的量时,则采用速度信号分析为宜。
MATLAB中包融了一些常用分析命令要求单位阶跃响应、冲激响应等供我们分析所用。
本节实验的主要目的是使学生通过上机实验,掌握运用MATLAB常用命令对系统进行时域分析的基本方法。
2.2.1单位阶跃响应的求法
step命令可以求得连续系统的单位阶跃响应,当不带输出变量时,可在当前窗口中绘出单位阶跃响应曲线。
带有输出变时时则输出一组数据。
命令格式:
step(n,d,t);或[y,x,t]=step(n,d,t);step(a,b,c,d,t)或[y,x,t]=step(a,b,c,d,t);其中t是事先确定的时间矢量,当t缺省时则时间由函数自行决定。
如果需要将输出结果返回到MATLAB工作空间,则采用以下调用格式:
c=step(G)
此时,屏幕上不会显示响应曲线,必须利用plot()命令去查看响应曲线。
Plot可以根据两
个或多个给定的矢量绘制二维图形。
例二十
已知传递函数为
利用以下MALAB命令可得阶跃响应曲线num=[0,0,25];
den=[1,4,25];
step(num,den)
grid%绘制网格线
0.5
1
1.5Time(sec)
2
2.53
StepResponse1.4
8
0
edutilpmA
4
0
还可用下面的语句来得出阶跃响应曲线:
G=tf([0,0,25],[1,4,25]);
t=0:
0.1:
5;%从0到5每隔0.1取一个值
c=step(G,t);%动态响应的幅值赋给变量c
plot(t,c)%绘二维图形,横坐标取t,纵坐标取c
Css=dcgain(G)%求取稳态值
系统显示的图形类似于上一个例子,在命令窗口中显示了如下结果:
Css=1
2.2.2求阶跃响应的性能指标
方法一:
游动鼠标法
如上例,在程序运行完毕后,用鼠标左键单击时域响应曲线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)。
按住鼠标左键在曲线上移动,可找到曲线幅值最大的一点,即曲线最大峰值,此时小方框显示的时间就是此二阶系统的峰值时间,根据观测到的稳态值和峰值可计算出系统的超调量。
系统的上升时间和稳态响应时间可以此类推。
注:
它不适用于用己于plot()命令画出的图形。
方法二:
用编程方式求取时域响应的各项性能指标
通过前面的学习,我们已经可以用阶跃响应函数step()获得系统输出量,若将输出量返
回到变量y中,可调用如下格式:
[y,t]=step(G)
对返回的这一对y和t变量的值进行计算,可得到时域性能指标。
峰值时间(timetopeak)可由以下命令获得:
[Y,k]=max(y);
timetopeak=t(k)
应用取最大值函数max()求出y的峰值及相应的时间,并存于变量Y和k中。
然后在变量t中取出峰值时间,并将它赋给变量timetopeak。
最大(百分比)超调量(percentovershoot)可由以下命令获得:
C=dcgain(G);
[Y,k]=max(y);
percentovershoot=100*(Y-C)/C
dcgain()函数用于求取系统的终值,将终值赋给变量C,然后依据超调量的定义,由Y和C计算出百分比超调量。
上升时间(risetime)可利用MATLAB中的循环控制语句编制M文件来获得。
要求出上升时间,可用while语句编写以下程序得到:
C=dcgain(G);
n=1
whiley(n) n=n+1; end risetime=t(n) 在阶跃输入条件下,y的值由零逐渐增大,当以上循环满足y=C时,推出循环,此时对应的时刻即为上升时间。 对于输出无超调的系统响应,上升时间定义为输出从稳态值的10%上升到90%所需时间, 则计算程序如下: C=dcgain(G); n=1; whiley(n)<0.1*C n=n+1; end m=1; whiley(n)<0.9*C m=m+1; end risetime=t(m)-t(n) 调节时间(setllingtime)可由语句编程得到: C=dcgain(G); i=length(t); while(y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end setllingtime=t(i) 用矢量长度函数length()可求得t序列的长度,将其设定为变量i的上限值。 已知二阶系统传递函数为 利用下面的程序可得到阶跃响应如图所示及性能指标数据。 G=zpk([],[-1+3*i,-1-3*i],3);%计算最大峰值时间和它对应的超调量。 C=dcgain(G) [y,t]=step(G); plot(t,y) grid [Y,k]=max(y); timetopeak=t(k) percentovershoot=100*(Y-C)/C%计算上升时间。 n=1; whiley(n) n=n+1; end risetime=t(n)%计算稳态响应时间。 i=length(t); while(y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end setllingtime=t(i)运行后的响应图如下图所示,命令窗口中显示的结果为: C=0.3000timetopeak=1.0491 percentovershoot=35.0914risetime=0.6626 setllingtime=3.5337 2.2.3求系统的单位冲激响应 impulse命令可求得系统的单位冲激响应。 当不带输出变量时可在当前窗口得到单位冲激响应曲线,带有输出变量时则得到一组对应的数据。 命令格式: impulse(n,d)或[y,x]=impulse(n,d)impulse(a,b,c,d)或[y,x]=impulse(a,b,c,d)也可加入事先选定的时间矢量t,其t的特性同上。 例二十二设单位反馈控制系统的开环传递函数为: G(s) 10 s(s4) 求此系统的单位冲激响应。 num1=[10]; den1=[140]; [n,d]=cloop(num1,den1);impulse(n,d) 1.6 ImpulseResponse 1.4 1.2 0.8 0.6 0.4 0.2 0 -0.2 0.5 1.5 2.5 Time(sec) eduitulpmA 四、实验步骤 1、运行Matlab软件; 2、在其命令窗口中输入响应的命令或程序; 3、观察并记录。 五、实验习题 实验习题一 已知系统传递函数为: G(s) 2s1 s20.4s1 求上述传递函数的零极点和状态空间的表达形式。 实验习题二 已知传递函数为: G(s) 16 s26s16 求其单位阶跃响应的最大值,峰值时间和它对应的超调量,上升时间。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 系统 模型 建立 动态 特性 分析 报告 实验