实验五线性系统的稳定性和稳态误差分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五 自动控制系统的稳定性和稳态误差分析
一、实验目的
1、研究高阶系统的稳定性,验证稳定判据的正确性;
2、了解系统增益变化对系统稳定性的影响;
3、观察系统结构和稳态误差之间的关系。
二、实验任务
1、稳定性分析
欲判断系统的稳定性,只要求出系统的闭环极点即可,而系统的闭环极点就是闭环传递函数的分母多项式的根,可以利用MATLAB 中的tf2zp 函数求出系统的零极点,或者利用root 函数求分母多项式的根来确定系统的闭环极点,从而判断系统的稳定性。
(1)已知单位负反馈控制系统的开环传递函数为
0.2( 2.5)
()(0.5)(0.7)(3)
s G s s s s s +=
+++,用MATLAB 编写程序来判断闭环系统的稳定性,
并绘制闭环系统的零极点图。
在MATLAB 命令窗口写入程序代码如下: z=-2.5
p=[0,-0.5,-0.7,-3] k=0.2 Go=zpk(z,p,k) Gc=feedback(Go,1) Gctf=tf(Gc) dc=Gctf.den
dens=poly2str(dc{1},'s') 运行结果如下: dens=
s^4 + 4.2 s^3 + 3.95 s^2 + 1.25 s + 0.5
dens 是系统的特征多项式,接着输入如下MATLAB 程序代码:
den=[1,4.2,3.95,1.25,0.5]
p=roots(den)
运行结果如下:
p =
-3.0058
-1.0000
-0.0971 + 0.3961i
-0.0971 - 0.3961i
p为特征多项式dens的根,即为系统的闭环极点,所有闭环极点都是负的实部,因此闭环系统是稳定的。
下面绘制系统的零极点图,MATLAB程序代码如下:
z=-2.5
p=[0,-0.5,-0.7,-3]
k=0.2
Go=zpk(z,p,k)
Gc=feedback(Go,1)
Gctf=tf(Gc)
[z,p,k]=zpkdata(Gctf,'v')
pzmap(Gctf)
grid
运行结果如下:
z =
-2.5000
p =
-3.0058
-1.0000
-0.0971 + 0.3961i
-0.0971 - 0.3961i
k =
0.2000
输出零极点分布图如图3-1所示。
图3-1 零极点分布图
(2)已知单位负反馈控制系统的开环传递函数为
(2.5)
()(0.5)(0.7)(3)
k s G s s s s s +=
+++,当取k =1,10,100用MATLAB 编写程序来判断
闭环系统的稳定性。
只要将(1)代码中的k 值变为1,10,100,即可得到系统的闭环极点,从而判断系统的稳定性,并讨论系统增益k 变化对系统稳定性的影响。
当K=1时,MATLAB 程序如下: z=-2.5
p=[0,-0.5,-0.7,-3] k=1
Go=zpk(z,p,k) Gc=feedback(Go,1) Gctf=tf(Gc)
[z,p,k]=zpkdata(Gctf,'v') pzmap(Gctf) grid z =
-2.5000
p =
0 -0.5000 -0.7000 -3.0000 k =
1
Zero/pole/gain:
(s+2.5)
-----------------------
s (s+0.5) (s+0.7) (s+3)
Zero/pole/gain:
(s+2.5)
--------------------------------------------
(s+3.03) (s+1.332) (s^2 - 0.1616s + 0.6195)
Transfer function:
s + 2.5
---------------------------------------
s^4 + 4.2 s^3 + 3.95 s^2 + 2.05 s + 2.5
z =
-2.5000 p =
-3.0297 -1.3319 0.0808 + 0.7829i 0.0808 - 0.7829i k = 1 波形图如下:
-0.8-0.6-0.4
-0.2
0.2
0.4
0.6
0.8
P ole-Zero Map
Real Axis
I m a g i n a r y A x i s
图一:K=1时的零点极点分布图
当K=1时,由于闭环极点不是全都具有负实部,所以该系统是不稳定的。当K=10时,MATLAB程序如下:
z=-2.5
p=[0,-0.5,-0.7,-3]
k=10
Go=zpk(z,p,k)
Gc=feedback(Go,1)
Gctf=tf(Gc)
[z,p,k]=zpkdata(Gctf,'v')
pzmap(Gctf)
grid
z =
-2.5000
p =
0 -0.5000 -0.7000 -3.0000
k =
10
Zero/pole/gain:
10 (s+2.5)
-----------------------