MATLAB SIMULINK在自动控制原理教学中的应用.docx
《MATLAB SIMULINK在自动控制原理教学中的应用.docx》由会员分享,可在线阅读,更多相关《MATLAB SIMULINK在自动控制原理教学中的应用.docx(27页珍藏版)》请在冰点文库上搜索。
MATLABSIMULINK在自动控制原理教学中的应用
MATLAB/SIMULINK在自动控制原理教学中的应用
《自动控制原理实验教程》
设计型实验报告
光电信息与计算机工程学院
2010年01月03日
目录
一、MATLAB基本运算…………………………………………………
……………………………………………………………………………(3)
二、基于MATLAB/Simulink建立控制系统的数学模型………………
…………………………………………………………………………..(4)
三、基于MATLAB高阶控制系统的时域响应动态性能分析……..
…………………………………………………………………………..(8)
四、基于Simulink控制系统的稳态误差分析……………………...
………………………………………………………………………….(17)
五、基于MATLAB控制系统的根轨迹及其性能分析…………….
………………………………………………………………………….(25)
六、基于MATLAB控制系统的Nyquist图及其稳定性分析………
………………………………………………………………………….(35)
七、基于MATLAB控制系统的博德图及其频域分析……………….
………………………………………………………………………….(42)
八、学习小结……………………………………………………………
……………………………………………………………………………(51)
一、MATLAB基本运算
[范例1-2]
(1)建立矩阵A=[789],B=;
(2)建立矩阵B=;(3)使用冒号生成行向量
解:
(1)
>>A=[7,8,9]
A=789
>>B=A'(实现矩阵的转置)
B=7
8
9
(2)
>>B=[112;358;101215]
B=112
358
101215
Tips:
建立矩阵时,矩阵按行展开数据,行中的元素用空格或逗号分隔,每行之间用分号分隔。
(3)
>>a=1:
1:
10
a=12345678910
>>t=10:
-1:
1
t=10987654321
Tips:
使用x:
△x:
y生成向量,其中x表示初始值,△x表示步长增量,y表示终值,向量个数自动生成。
[范例1-3]求多项式的展开式。
解:
>>D=conv([503],conv([11],[1-2]))
D=5-5-7-3-6
Tips:
conv()函数只能用于两个多项式相乘,多于两个多项式则必须嵌套使用。
[范例1-4]求多项式的根。
解:
(1)>>P=[2-56-19]
P=2-56-19
>>x=roots(P)
x=1.6024+1.2709i
1.6024-1.2709i
-0.3524+0.9755i
-0.3524-0.9755i
Tips:
若已知系统的特征多项式求根用roots();若已知系统的传递函数求特征根用eig()。
二、基于matlab/simulink建立控制系统的数学模型
[范例2-1]已知系统传递函数
解:
>>num=[013];
>>den=[1221];
>>printsys(num,den)
num/den=
s+3
---------------------
s^3+2s^2+2s+1
[范例2-2]已知系统传递函数,试建立系统的传递函数模型。
解:
>>num=5*conv(conv([1,2],[1,2]),[1,6,7]);
>>den=conv([1,0],conv([1,1],conv([1,1],conv([1,1],[1,0,2,1]))));
>>Gs=tf(num,den)
Transferfunction:
5s^4+50s^3+175s^2+260s+140
-----------------------------------------------
s^7+3s^6+5s^5+8s^4+9s^3+5s^2+s
Tips:
用函数tf()来建立控制系统的传递函数模型,用函数printsys()来输出控制系统的函数,其调用格式为
Sys=tf(num,den)和printsys(num,den)
[范例2-3]已知系统传递函数试建立控制系统的零极点模型。
解:
>>k=10;
>>z=[-5];
>>p=[-0.5-2-3];
>>sys=zpk(z,p,k)
Zero/pole/gain:
10(s+5)
-------------------------
(s+0.5)(s+2)(s+3)
控制系统模型间的相互转换
(1)>>k=10;
>>z=[-5];
>>p=[-0.5-2-3];
>>[num,den]=zp2tf(z,p,k)
num=001050
den=1.00005.50008.50003.0000
(2)num=(001050);
den=(15.58.53)
>>[z,p,k]=tf2zp(num,den)
z=-5
p=
-3.0000
-2.0000
-0.5000
k=10
(3)num=(001050);
den=(15.58.53);
>>[r,p,k]=residue(num,den)
r=
8.0000
-20.0000
12.0000
p=
-3.0000
-2.0000
-0.5000
k=0
(4)>>[num,den]=residue(r,p,k)
num=-0.000010.000050.0000
den=1.00005.50008.50003.0000
Tips:
控制系统模型间的相互转换
[num,den]=zp2tf(z,p,k)%零极点模型转换为多项式模型
[z,p,k]=tf2zp(num,den)%多项式模型转化为零极点模型
[r,p,k]=residue(num,den)%多项式模型转化为部分分式展开式模型
[num,den]=residue(z,p,k)%部分分式展开式模型转化为多项式模型
[范例2-4]已知二阶系统的自然频率=1和阻尼比ξ=0.5,建立其传递函数。
解:
>>[num,den]=ord2(1,0.5);
>>G=tf(num,den)
Transferfunction:
1
-------------
s^2+s+1
Tips:
在MATLAB中,用命令函数ord2()来建立二阶控制系统标准模型
其函数调用格式为[num,den]=ord2(,ξ)
[范例2-6]已知系统传递函数,求其等效的零极点模型。
解:
>>num=[1,5,6];den=[1,2,1,0];
>>[z,p,k]=tf2zp(num,den);
>>sys=zpk(z,p,k)
Zero/pole/gain:
(s+3)(s+2)
-------------------
s(s+1)^2
Tips:
利用[z,p,k]=tf2zp(num,den)把多项式模型转化为零极点模型,再用函数zpk()来建立系统的零极点增益模型
[范例2-7]已知三个模型的传递函数为,,,试分别用两种方法求出三个模型串联后的等效传递函数模型。
解:
>>num1=[5];den1=[11];num2=[21];den2=[10];num3=[4];den3=[31];
>>[num0,den0]=series(num1,den1,num2,den2);
>>[num,den]=series(num0,den0,num3,den3);
>>printsys(num,den)
num/den=
40s+20
------------------------
3s^3+4s^2+s
Tips:
控制系统模型连接之后的等效传递函数
(1)串联连接。
使用series()函数,其调用格式为:
[num,den]=series(num1,den1,num2,den2)
series()函数只能实现两个模型的串联,如果串联模型多于两个,则必须多次使用。
(2)并联连接。
使用parallel()函数,其调用格式为:
[num,den]=parallel(num1,den1,num2,den2)
parallel()函数只能实现两个模型的并联,如果并联模型多于两个,则必须多次使用。
[范例2-8]已知系统,,求负反馈闭环传递函数。
解:
>>numg=[251];deng=[123];
>>numh=[510];denh=[110];
>>[num,den]=feedback(numg,deng,numh,denh);
>>printsys(num,den)
num/den=
2s^3+25s^2+51s+10
----------------------------------
11s^3+57s^2+78s+40
Tips:
反馈连接。
使用feedback()函数,其调用格式为:
sys=feedback(sys1,sys2,sign)。
其中sys1为前向通道传递函数,sys2为反馈函数,sign是反馈极性,sign缺省时默认为负反馈,sign=-1;正反馈时,sign=1,单位反馈时,sys2=1,且不能省略。
特殊地,由开环系统构成单位反馈闭环系统时,可使用cloop()函数求得闭环传递函数,其调用格式为[numc,denc]=cloop(num,den,sign)
[自我实践]
[2-1]建立控制系统的传递函数模型:
①②
解:
①
>>num=5;
>>den=conv([1,0],conv([1,1],[1,4,4]));
>>Gs=tf(num,den)
Transferfunction:
5
-------------------------
s^4+5s^3+8s^2+4s
②
>>num=[142];
>>den=conv([1,0],conv([1,0],conv([1,0],conv([1,0,4],[1,4,0]))));
>>Gs=tf(num,den)
Transferfunction:
s^2+4s+2
----------------------------
s^7+4s^6+4s^5+16s^4
[2-2]建立控制系统零极点模型:
①②
解:
①
>>k=8;
>>z=[-1+j-1-j];
>>p=[00-5-6j-j];
>>sys=zpk(z,p,k)
Zero/pole/gain:
8(s^2+2s+2)
--------------------------
s^2(s+5)(s+6)(s^2+1)
②
>>P=[1101]
P=1101
>>x=roots(P)
x=-1.4656
0.2328+0.7926i
0.2328-0.7926i
>>k=1;
>>z=[];
>>p=[0-1-1.46560.2328+0.7926i0.2328-0.7926i];
>>sys=zpk(z,p,k)
Zero/pole/gain:
1
-------------------------------------------
s(s+1)(s+1.466)(s^2-0.4656s+0.6824)
三、基于MATLAB高阶控制系统的时域响应动态性能分析
【范例3-7】已知三阶系统闭环传递函数为,编写MATLAB程序,求取系统闭环极点及其单位阶跃响应,读取动态性能指标。
解:
num1=conv([05],conv([12],[13]));
den1=conv([14],[122]);
roots(den1)
[z,p,k]=tf2zp(num1,den1)
step(num1,den1)
>>
ans=
-4.0000
-1.0000+1.0000i
-1.0000-1.0000i
z=-3.0000
-2.0000
p=
-4.0000
-1.0000+1.0000i
-1.0000-1.0000i
k=5
【范例3-8】改变系统闭环极点的位置,将原极点s=-4改成s=-0.5,使闭环极点靠近虚轴,观察单位阶跃响应和动态性能指标的变化。
解:
num2=conv(0.625,conv([12],[13]));
den2=conv([10.5],[122]);
step(num2,den2)
【范例3-9】改变系统闭环零点的位置,,将原零点s=-2改成
=-1,观察单位阶跃响应和动态性能指标的变化。
解:
num3=conv(10,conv([11],[13]));
den1=conv([14],[122]);
step(num3,den1)
分析:
根据以上三组数据可以得出结论:
如果闭环极点远离虚轴,则相应的瞬态分量就衰减的快,系统的调节时间也就短。
但是如果将闭环极点接近虚轴,这相当于在增大系统阻尼,使系统响应速度变缓,超条量减小,调节时间延长,并且这种作用将随闭环极点接近虚轴而加剧。
而闭环零点减小后,相当于减小系统阻尼,使系统响应速度加快,峰值时间减小,调节时间缩短,超条量增大,并且这种作用将随闭环零点接近虚轴而加剧。
【范例3-10】已知控制系统的闭环传递函数,求
1)用MATLAB软件分析该系统的单位阶跃响应及其动态性能指标。
2)将该系统的阶跃响应与二阶系统的单位阶跃响应比较,试分析闭环主导极点的特点和作用
3)比较表3-6中编号1和编号3系统的单位阶跃响应及其动态性能指标,观察闭环零点对系统动态性能产生的影响有哪些?
4)比较表3-6中编号4和编号5系统的动态性能指标,分析非主导极点对系统性能的影响及其作用。
5)比较表3-6中编号5和编号6系统的动态性能指标,说明偶极子的作用。
解:
%graph12.m
num4=conv(1.05,[0.47621]);
den4=conv(conv([0.251],[0.51]),[111]);
damp(den4)
sys4=tf(num4,den4);
step(sys4,'r')
grid;holdon
num1=1.05;
den1=conv(conv([0.1251],[0.51]),[111]);
sys1=tf(num1,den1);
step(sys1,'g')
num2=num4;den2=den1;
sys2=tf(num2,den2);
step(sys2,'c')
num3=[1.051.05];den3=den1;
sys3=tf(num3,den3);
step(sys3,'b')
num5=num4;den5=conv([0.51],[111]);
sys5=tf(num5,den5);
step(sys5,'k')
num6=1.05;den6=[111];
sys6=tf(num6,den6);
step(sys6,'m')
title('高阶系统单位阶跃响应曲线比较')
lab1='sys1';text(1.9,0.5,lab1),lab2='sys2';text(1.6,0.60,lab2),
lab3='sys3';text(0.5,0.7,lab3),lab4='sys4';text(2.4,1.2,lab4),
lab5='sys5';text(2.3,1.15,lab5),lab6='sys6';text(2.2,1.1,lab6)
Sys1:
Sys2:
Sys3:
Sys4:
EigenvalueDampingFreq.(rad/s)
-5.00e-001+8.66e-001i5.00e-0011.00e+000
-5.00e-001-8.66e-001i5.00e-0011.00e+000
-2.00e+0001.00e+0002.00e+000
-4.00e+0001.00e+0004.00e+000
Sys5:
Sys6:
表3-6高阶系统动态性能分析比较(△=2%)
编号
sys系统闭环传递函数上升时间
峰值时间
超调量
调节时间
1
1.894.4213.88.51
2
1.683.7515.98.2
3
1.263.225.38.1
4
1.733.9815.58.36
5
1.663.64168.08
6
1.643.6416.38.08
分析:
运行的结果显示该系统(sys4)的闭环极点为:
-2,-4,-0.5±j0.866;闭环零点为-2.1。
可见,另外两极点实部的模比共轭复数极点实部的模大4倍多,并且共轭复数极点远离零点,因此可以把这对共轭复数极点当作是主导极点,则此系统的响应可近似地视为由这对极点所产生,它所决定的瞬态分量不仅持续时间最长,而且其初始值也大,充分体现了它在系统响应中的主导作用,而其他闭环极点产生的响应分量随时间的推移迅速衰减,对系统响应过程影响甚微。
因此该四阶系统可近似看成二阶系统。
Sys4,sys5和sys6的响应曲线几乎重合,说明三系统可以近似等效。
比较sys1,sys2和sys3的响应曲线和动态性能指标可以得到闭环零点对系统的影响为:
减小峰值时间,使系统响应速度加快,超调量增大。
这表明闭环零点会减小系统阻尼,并且这种作用将随闭环零点接近虚轴而加剧。
因此,配置闭环零点时,要考虑闭环零点对系统响应速度和阻尼程度的影响。
比较sys4和sys5的响应曲线和动态性能指标可以得到非主导极点对系统的响应为:
增大峰值时间,使系统响应速度变缓,超调量减小。
这表明闭环非主导极点可以增大系统的阻尼,并且这种作用将随闭环极点接近虚轴而加剧。
比较sys6和sys5的响应曲线和动态性能指标可以得到非主导极点对系统的响应为:
如果对某对零极点的距离靠的很近,则它们对系统响应的作用可以相互抵消。
四、基于Simulink控制系统的稳态误差分析
[范例3-11]已知一个单位负反馈系统开环传递函数为,分别做出K=1和
K=10时,系统单位阶跃响应曲线并求单位阶跃响应稳态误差。
解:
①K=10阶跃响应
②K=1阶跃响应
分析:
实验曲线表明,Ⅰ型单位反馈系统在单位阶跃输入作用下,稳态误差=0,即Ⅰ型单位反馈系统稳态时能完全跟踪阶跃输入,是一阶无静差系统。
[范例3-12]对范例3-11中的系统,分别作出k=0.1和k=1时,系统单位斜坡响应曲线并求单位斜坡响应稳态误差。
解:
①K=0.1
②K=1
分析:
实验曲线表明,Ⅰ型单位反馈系统在单位斜坡输入作用下,Ⅰ型系统稳态时能跟踪斜坡输入,但存在一个稳态位置误差=1,而且随着系统开环增益的增加,稳态误差减小,故可以通过增大系统开环增益来减小稳态误差。
[范例3-13]将实验内容
(1)中的积分环节改换成一个惯性环节,开环增益改为1,系统变成0型系统,在输入端分别给定单位阶跃信号和单位斜坡信号,重新仿真运行,在示波器scope中观察系统响应曲线,并读出稳态误差。
解:
阶跃响应
斜坡响应
分析:
实验结果表明,0型系统在单位阶跃输入作用下,系统稳态时能跟踪阶跃输入,但存在一个稳态位置误差=0.5,但是0型系统在单位斜坡输入作用下,系统不能跟踪斜坡输入,随着时间的增加,误差越来越大。
[范例3-14]将实验
(1)中开环增益改为1,在其前向通道中再增加一个积分环节,系统变成Ⅱ型系统,在输入端给定单位斜坡信号,重新仿真运行,在示波器scope中观察系统响应曲线。
解:
分析:
试验结果表明,Ⅱ型单位反馈系统在单位斜坡输入作用下,系统能完全跟踪斜坡输入,不存在稳态误差=0。
总结:
以上实验表明,系统型次越高,系统对斜坡输入的稳态误差越小,故可以通过提高系统的型次达到降低稳态误差的效果。
五、基于MATLAB控制系统的根轨迹及其性能分析
[范例4-1]已知系统的开环传递函数,绘制系统的
零极点图。
解:
num=[155]
den=conv([10],conv([11],[122]))
pzmap(num,den)
分析:
MATLAB提供pzmap()函数来绘制系统的零极点分布图,其调用格式为:
pzmap(num,den)或[p,z]=pzmap(num,den)
【范例4-2】若已知系统开环传递函数,绘制控制系统
根轨迹图,并分析根轨迹的一般规律。
解:
k=1;
z=[];
p=[0-1-2];
[num,den]=zp2tf(z,p,k);
rlocus(num,den),grid
分析:
由以上根轨迹图可以分析根轨迹的一般规律:
●根轨迹的条数及其运动方向。
根轨迹有3条,分别从起点(0,0)、(-1,0)和(-2,0)出发,随着k值从0→∞变化,趋向无穷远处。
●位于负实轴上的根轨迹(-∞,-2)和(-1,0)区段,其对应的阻尼ξ>1,超调量为0,系统处于过阻尼状态,而且在远离虚轴的方向,增益k增大,振荡频率ωn随之提高,系统的动态衰减速率相应增大。
●在根轨迹的分离点(-0.423,0)处,对应于阻尼ξ=1,超调量为0,开环增益k=0。
385,系统处于临界阻尼状态。
●根轨迹经过分离点后离开实轴,朝s右半平面运动。
当根轨迹在分离点与虚轴这个区间时,闭环极点由实数极点变为共轭复数极点,对应阻尼0<ξ<1,超调量越靠近虚轴越大,系统处于欠阻尼状态,其运动响应将出现衰减振荡,而且越靠近虚轴,增益k越大,阻尼越小,振荡频率ωn越高,振幅衰减越大。
●当根轨迹与虚轴相交时,闭环跟位于虚轴上,闭环极点是一对纯虚根(±j1.41,0),阻尼ξ=0,超调量最大,系统处于无阻尼状态,其运动响应将出现等幅振荡。
此时对应的增益k=5.92,成为临界稳定增益Kc。
在【范例4-2】所绘根轨迹上分段取点,构造闭环传递函数,分别绘制其对应系统的阶跃响应曲线,并比较分析将数据记录于表4-1中。
解:
图
(1)
如图
(1)
ζ=-0.2,K=23时:
z=[];
p=[0-1-2];
k=23