实验四 控制系统数学建模与稳定性分析
一、实验目的
继续熟悉 MATLAB 的实验环境。
掌握MATLAB建立系统数学模型的方法。
掌握MATLAB判断系统稳定性的方法。
二、实验内容
(注:实验报告只提交第2题)
1.复习并验证相关示例。
(1)系统数学模型的建立
包括多项式模型(Transfer Function , TF),零极点增益模型 (Zero-Pole-Gain, ZPK) ,状态空间模型( State-space,SS );
(2)模型间的相互转换
系统多项式模型到零极点模型(tf2zp),零极点增益模型到多项式模型(zp2tf) , 状态空间模型与多项式模型和零极点模型之间的转换(tf2ss,ss2tf,zp2ss …);
(3)模型的连接
模型串联(series),模型并联(parallel),反馈连接(feedback)
(4)系统稳定性相关MATLAB函数(roots,eig,pzmap,pole,…)
2.完成以下实验。
(1)分别用 2 种方法建立系统模型的零极点模型和多项式传递函数模型。
(2)对于系统和系统,用不同方法求其串联和并联结果。
(3)对于装置,控制器为,建立负反馈连接。求其结果。
(4)对于系统,其闭环传递函数为,判定其稳定性。
三、实验要求
1. 验证课内示例,准确理解系统数学模型不同形式的含义及各种函数的使用方法。
2.借助帮助文档,准确理解MATLAB系统稳定判定函数的用法。
3. 认真编写实验内容之第2题的程序并做详细注释,记录实验结果。
四、实验思考
1 、如何灵活选择系统建模和连接化简函数的各种不同调用方法。
2 、复杂系统如何用 MATLAB 建立系统模型,如何对结构图进行化简。
3 、判定系统稳定性有哪些方法?各有何特点?
(1), >> num=([10 10]);
>> den=([1 2]);
>> sys1=tf(num,den)
Transfer function:
10 s + 10
---------
s + 2
>> num=([0 1]);
>> den=([1 5]);
>> sys2=tf(num,den)
Transfer function:
1
-----
s + 5
>> num=([0 1]);
>> den=([1 10]);
>> sys3=tf(num,den)
Transfer function:
1
------
s + 10
>> sys4=sys1*sys2*sys3
Transfer function:
10 s + 10
-------------------------
s^3 + 17 s^2 + 80 s + 100
>> sys6=tf(sys4)
Transfer function:
10 s + 10
-------------------------
s^3 + 17 s^2 + 80 s + 100
(2) >> num=([0 20]);
>> den=([0.5 1]);
>> sys1=tf(num,den)
Transfer function:
20
---------
0.5 s + 1
>> num=([0.2 0.2]);
>> den=([0.25 1 0]);
>> sys2=tf(num,den)
Transfer function:
0.2 s + 0.2
------------
0.25 s^2 + s
>> sys3=series(sys1,sys2)
Transfer function:
4 s + 4
------------------------
0.125 s^3 + 0.75 s^2 + s
>> sys3=parallel(sys1,sys2)
Transfer function:
5.1 s^2 + 20.3 s + 0.2
------------------------
0.125 s^3 + 0.75 s^2 + s
>> sys4=sys1*sys2
Transfer function:
4 s + 4
------------------------
0.125 s^3 + 0.75 s^2 + s
>> sys4=sys1+sys2
Transfer function:
5.1 s^2 + 20.3 s + 0.2
------------------------
0.125 s^3 + 0.75 s^2 + s
>> num=([0 20]);
den=([0.5 1]);
sys1=tf(num,den)
Transfer function:
20
---------
0.5 s + 1
num=([0.2 0.2]);
den=([0.25 1 0]);
sys2=tf(num,den)
Transfer function:
0.2 s + 0.2
------------
0.25 s^2 + s
(3) >> num=([2 5 1]);
>> den=([1 2 3 ]);
>> sys1=tf(num,den)
Transfer function:
2 s^2 + 5 s + 1
---------------
s^2 + 2 s + 3
>> num=([5 10]);
>> den=([1 10]);
>> sys2=tf(num,den)
Transfer function:
5 s + 10
--------
s + 10
>> sys3=feedback(sys1,sys2)
Transfer function:
2 s^3 + 25 s^2 + 51 s + 10
---------------------------
11 s^3 + 57 s^2 + 78 s + 4
(4)>> num=([4.8 28.8 24]);
>> den=([1 9 26 24]);
>> sys1=tf(num,den)
Transfer function:
4.8 s^2 + 28.8 s + 24
-----------------------
s^3 + 9 s^2 + 26 s + 24
实验心得:此次试验为在MATLAB中控制系统数学建模并且判断系统稳定 性。期间,对系统稳定性相关MATLAB函数(roots,eig,pzmap,pole,…)不是很理解。经过最后看书和HELP帮助,才会用了。在MATLAB中应用多种方法达到一种效果,当每一种方法成功之后,会给我最大的快乐和喜悦。
第二篇:实验四 控制系统的稳定性分析
西京学院实验教学教案
实验课程:现代控制理论基础 课序: 4 教室:工程舫0B-14
实验日期:20##-6-3、4、6 教师:万少松
一、实验名称:系统的稳定性及极点配置
二、实验目的
1.巩固控制系统稳定性等基础知识;
2.掌握利用系统特征根判断系统稳定性的方法;
3.掌握利用李雅普诺夫第二法判断系统的稳定性的方法;
4. 掌握利用状态反馈完成系统的极点配置;
5.通过Matlab编程,上机调试,掌握和验证所学控制系统的基本理论。
三、实验所需设备及应用软件
四、实验内容
1. 利用特征根判断稳定性;
2. 利用李雅普诺夫第二法判断系统的稳定性;
3. 状态反馈的极点配置;
五、实验方法及步骤
1.打开计算机,运行MATLAB软件。
2.将实验内容写入程序编辑窗口并运行。
3.分析结果,写出实验报告。
一、 利用特征根判断稳定性
用matlab求取一个系统的特征根,可以有许多方法,如,,,,等。下面举例说明。
【例题1】已知一个系统传递函数为,试不同的方法分析闭环系统的稳定性。
解:
num=[1,3]
den=conv([1,2,2],conv([1,6],[1,5]))
sys=tf(num,den)
(1)
p=eig(sys)
显示如下:
p =
-6.0000
-5.0000
-1.0000 + 1.0000i
-1.0000 - 1.0000i
所有的根都具有负的实部,所以系统稳定。
(2)
pzmap(sys)
从绘出的零极点图可看见,系统的零极点都位于左半平面,系统稳定。
(3)
[z,p,k]=tf2zp(num,den)
(4)
roots(den)
【例题2】已知线性定常连续系统的状态方程为
试用特征值判据判断系统的稳定性。
解:
A=[0,1;2,-1]
eig(A)
显示ans =
1
-2
有一个正根,所以系统不稳定。
二、 利用李雅普诺夫第二法判断系统的稳定性
1、李雅普诺夫判据:线性定常连续系统
在平衡状态处,渐进稳定的充要条件是:对任意给定的一个正定对称矩阵,如下形式的李雅普诺夫矩阵方程
存在唯一正定对称矩阵解。
2、推论:如果矩阵取为半正定,且为完全能观测,则为渐进稳定的充分必要条件是上述李雅普诺夫矩阵方程有唯一正定对称解。
3、标量函数是这个系统的一个二次型形式的李雅普诺夫函数。
4、Matlab实现
matlab提供了李雅普诺夫方程的求解函数,其调用格式为
。
要判定系统是否稳定,需要做以下工作:
① 求出P,并验证P是正定的;
② 求出V(x),并判验证V(x) 是正定的;
③ 结论:系统是稳定的。
【例题3】已知单位负反馈系统的前向通道分别是三个环节串联而成,这三个环节分别是两个惯性环节和一个积分环节:
、、
试分析系统的李雅普诺夫稳定性。
解:研究系统的稳定性时,可以令给定输入。
(1)、求出闭环系统的传递函数
G1=tf(5,[1,1])
G2=tf(1,[1,2])
G3=tf(1,[1,0])
Gtf=feedback(G1*G2*G3,1)
%运行结果如下:
%Transfer function:
% 5
%---------------------
%s^3 + 3 s^2 + 2 s – 5
%下面建立ss模型
num=5
den=[1,3,2,-5]
[A,B,C,D]=tf2ss(num,den) %也可以这样:[A,B,C,D]=tf2ss(Gtf.num{1},Gtf.den{1})
%选择半正定矩阵,且为完全能观测
%能观测性验证:
Q=[0,0,0;0,0,0;0,0,1]
Q1=Q^(1/2)
rank(ctrb(A,Q1))
%运行结果:
%ans = 3
%所以为完全能观测
%计算李雅普诺夫函数的解,并判断是否正定
P=lyap(A,Q)
det1=det(P(1,1))
det2=det(P(2,2))
detp=det(P)
%程序运行结果:
%P =
% 12.5000 0.0000 -7.5000
% 0.0000 7.5000 -0.5000
% -7.5000 -0.5000 4.7000
%det1 =
% 12.5000
%det2 =
% 7.5000
%detp =
% 15.6250
%说明P阵是对称正定的;
%又: 是半正定的;是负定的,所以也是正定的,%故得结论:该系统是在平衡点是稳定的。
【例题4】已知系统的状态方程为:
试分析系统的稳定性。
解:
A=[2.25,-5,-1.25,-0.5;2.25,-4.25,-1.25,-0.25;0.25,-0.5,-1.25,-1;1.25,-1.75,-0.25,-0.75]
Q=diag([1,1,1,1])
P=lyap(A,Q)
det1=det(P(1,1))
det1=det(P(2,2))
det1=det(P(3,3))
det1=det(P)
可见Q,P阵都是正定的,系统李雅普诺夫稳定
三、 状态反馈的极点配置
闭环系统性能与闭环极点位置密切相关。经典控制理论经常利用串联、并联校正装置及调整开环增益使系统具有希望的闭环极点位置;现代控制理论利用状态变量揭示系统内部特性以后,建立了利用状态反馈这一新方式来配置极点,显出了更多的优越性。
给定一个连续时间系统的状态空间模型:
(4.1)
其中:是系统的n维状态向量,是m维控制输入,A和B分别是适当维数的已知常数矩阵。在状态反馈
(4.2)
的作用下,闭环系统的状态方程是
(4.3)
由线性时不变系统的稳定性分析可知,闭环系统(4.3)的稳定性由闭环系统矩阵的特征值决定,即闭环系统(4.3)渐近稳定的充分必要条件是矩阵的所有特征值都具有负实部。而由经典控制理论知道,矩阵的特征值也将影响诸如衰减速度、振荡、超调等过渡过程特性。因此,若能找到一个适当的矩阵,使得矩阵的特征值位于复平面上预先给定的特定位置,则以矩阵为增益矩阵的状态反馈控制器(4.2)就能保证闭环系统(4.3)是渐近稳定的,且具有所期望的动态响应特性。这种通过寻找适当的状态反馈增益矩阵,使得闭环系统极点(即矩阵的特征值)位于预先给定位置的状态反馈控制器设计问题称为是状态反馈极点配置问题,简称为极点配置问题。
MATLAB软件提供了两个函数acker和place来确定极点配置状态反馈控制器的增益矩阵。函数acker是基于求解极点配置问题的爱克曼公式,它只能应用到单输入系统,要配置的闭环极点中可以包括多重极点。
函数acker和place的一般形式是:
K=acker(A,B,P) %A,B为系统矩阵,P为需要配置的极点,为反馈增益矩阵。
K=place(A,B,P)
得到了所要求的反馈增益矩阵后,可以用命令eig(A-B*K)来检验闭环极点。
【例题5】考虑以下系统
其中:
试设计一个状态反馈控制器:
使得闭环系统的极点是,进而对给定的初始状态,画出闭环系统的状态响应曲线。
解:提问,状态方程是什么标准型?
A=[0 1 0;0 0 1;-1 -5 -6]
B=[0;0;1]
%首先判断系统是否能控
r=rank(ctrb(A,B))
P=[-2+j*4 –2-j*4 -10] %此命令运行会提示错误,为什么?仔细检查
K=acker(A,B,P) %试一下另一个命令K=place(A,B,P)
%下面对给定的初始状态,画出闭环系统的状态响应曲线。
%新系统的状态方程为
sys_new=ss(A-B*K,eye(3),eye(3),eye(3))
x0=[1;0;0]
t=0:0.01:4;
x=initial(sys_new,x0,t);
x1=[1,0,0]*x';%取出状态分量x1
x2=[0,1,0]*x';
x2=[0,0,1]*x';
%下面绘制曲线
x1=[1 0 0]*x';
x2=[0 1 0]*x';
x3=[0 0 1]*x';
subplot(3,1,1);plot(t,x1),grid
title('Response to Initial Condition')
ylabel('x1')
subplot(3,1,2);plot(t,x2),grid
ylabel('x2')
subplot(3,1,3);plot(t,x3),grid
xlabel('t (sec)')
ylabel('x3')
四、【课堂作业】
已知系统的传递函数为:
(1)用matlab,求其传递函数模型,并转化为状态空间模型;
(2)绘制出系统的单位阶跃响应;
(3)求状态反馈矩阵增益,使系统的极点配置在的位置上。
答案:
(1)
a =
-6.0000 -11.0000 -6.0000
1.0000 0 0
0 1.0000 0
b =
1
0
0
c =
-0.0000 -0.0000 10.0000
d =
0
(3)
K =
1.0e+003 *
0.0270 0.3510 1.3140