實驗一MATLAB系統(tǒng)的傳遞函數(shù)和狀態(tài)空間表達式的轉(zhuǎn)換
.
實驗一 MATLAB系統(tǒng)的傳遞函數(shù)和狀態(tài)空間表達式的轉(zhuǎn)換
一、 實驗?zāi)康?
1、學(xué)習(xí)多變量系統(tǒng)狀態(tài)空間表達式的建立方法;
2、通過編程、上機調(diào)試,掌握多變量系統(tǒng)狀態(tài)空間表達式與傳遞函數(shù)之間相互轉(zhuǎn)換的方法;
3、掌握相應(yīng)的MATLAB函數(shù)。
二、 實驗原理
設(shè)系統(tǒng)的模型如式(1.1)所示:
x uR’’’ yRP (1.1)
其中A為nXn維系統(tǒng)矩陣、B為nXm維輸入矩陣、C為pXn維輸出矩陣,D為直接傳遞函數(shù)。系統(tǒng)的傳遞函數(shù)和狀態(tài)空間表達式之間的關(guān)系如式(1.2)所示
G(s)=num(s)/den(s)=C (SI-A)-1 B+D (1.2)
式(1.2)中,num(s)表示傳遞函數(shù)的分子陣,其維數(shù)是pXm,den(s)表示傳遞函數(shù)的按s降冪排列的分母。
表示狀態(tài)空間模型和傳遞函數(shù)的MATLAB函數(shù)如下:
函數(shù)ss(state space的首字母)給出了狀態(tài)空間模型,其一般形式是:
sys=ss(A,B,C,D)
函數(shù)tf(transfer function的首字母)給出了傳遞函數(shù),其一般形式是:
G=tf(num,den)
其中num表示傳遞函數(shù)中分子多項式的系數(shù)向量(單輸入單輸出系統(tǒng)),den表示傳遞函數(shù)中分母多項式的系數(shù)向量。
函數(shù)tf2ss給出了傳遞函數(shù)的一個狀態(tài)空間實現(xiàn),其一般形式是:
[A,B,C,D]=tf2ss(num,den)
函數(shù)ss2tf給出了狀態(tài)空間模型所描述系統(tǒng)的傳遞函數(shù),其一般形式是:
[num,den]=ss2tf(A,B,C,D,iu)
其中對于多輸入系統(tǒng),必須確定iu的值。例如,若系統(tǒng)有三個輸入u1,u2,u3,則iu必須是1、2、或3,其中1表示u1,2表示u2,3表示u3。該函數(shù)的結(jié)果是第iu個輸入到所有輸出的傳遞函數(shù)。
三.實驗步驟及結(jié)果
1、應(yīng)用MATLAB對下列系統(tǒng)編程,求系統(tǒng)的A、B、C、D陣,然后驗證傳遞函數(shù)是相同的。
G(s)= s3+4s2+5s+1
程序和運行結(jié)果:
num=[0 0 2 1;0 1 5 3];
den=[1 4 5 1];
[A,B,C,D]=tf2ss(num,den)
A = -4 -5 -1
1 0 0
0 1 0
B = 1
0
0
C =0 2 1
1 5 3
D =0
0
A=[-4 -5 -1;1 0 0;0 1 0];
A=[-4 -5 -1;1 0 0;0 1 0];
B=[1;0;0];
C=[0 2 1;1 5 3];
D=[0;0];
[num1,den1]=ss2tf(A,B,C,D,1)
num1 = 0 0.0000 2.0000 1.0000
0 1.0000 5.0000 3.0000
den1 =1.0000 4.0000 5.0000 1.0000
2、給定系統(tǒng)G(s)=,求系統(tǒng)的零極點增益模型和狀態(tài)空間模型
程序和運行結(jié)果:
num=[0 1 4 5];
den=[1 6 11 6];
sys=tf(num,den)
Transfer function:
s^2 + 4 s + 5
----------------------
s^3 + 6 s^2 + 11 s + 6
>> sys1=tf2zp(num,den)
sys1 = -2.0000 + 1.0000i
-2.0000 - 1.0000i
>> [A,B,C,D]=tf2ss(num,den)
A =6 -11 -6
1 0 0
0 1 0
B =1
0
0
C =1 4 5
D =0
實驗2 狀態(tài)空間模型系統(tǒng)仿真及狀態(tài)方程求解
一、 實驗?zāi)康?
1、 熟悉線性定常離散與連續(xù)系統(tǒng)的狀態(tài)空間控制模型的輸入方法;
2、 熟悉系統(tǒng)模型之間的轉(zhuǎn)換功能;
3、 利用MATLAB對線性定常系統(tǒng)進行動態(tài)分析。
二、 實驗原理
函數(shù)step(sys)給出了系統(tǒng)的單位階躍響應(yīng)曲線,其中的sys表示貯存在計算機內(nèi)的狀態(tài)空間模型,它可以由函數(shù)sys=ss(A,B,C,D)得到。
函數(shù)impulse(sys)給出了系統(tǒng)的單位脈沖響應(yīng)曲線。
函數(shù)[y,T,x]=Isim(sys,u,t,x0)給出了一個狀態(tài)空間模型對任意輸入的響應(yīng),x0是初始狀態(tài)。
函數(shù)c2d將連續(xù)系統(tǒng)狀態(tài)空間描述轉(zhuǎn)化為離散系統(tǒng)狀態(tài)空間形式,其一般形式為:[G,H]=c2d(A,B,T),其中的T是離散化模型的采樣周期。
函數(shù)d2c將離散系統(tǒng)狀態(tài)空間描述轉(zhuǎn)化為連續(xù)系統(tǒng)狀態(tài)空間描述,其一般形式為:sysc=d2c(sysd,Method),其中的Method默認值為‘zoh’方法,即帶零階保持器的z變換。
函數(shù)dstep(G,H,C,D)給出了離散系統(tǒng)的單位階躍響應(yīng)曲線。
三、 實驗步驟及結(jié)果
程序和運行結(jié)果:
T=0.5s時
T=1s時
T=2s時
A=[0 1 0;-2 -3 0;-1 1 -3];
B=[0;0;1];
C=[1 1 1];
D=1;
[G1 H1]=c2d(A,B,0.5)
G1 =0.8452 0.2387 0
-0.4773 0.1292 0
-0.3326 0.0508 0.2231
H1 = 0
0
0.2590
>> dstep(G1,H1,C,D,1)
>> dstep(G1,H1,C,D,1)
>> [G2 H2]=c2d(A,B,1)
G2 =0.6004 0.2325 0
-0.4651 -0.0972 0
-0.3795 -0.0614 0.0498
H2 =0
0
0.3167
>> dstep(G2,H2,C,D,1)
>> [G3 H3]=c2d(A,B,2)
[G3 H3]=c2d(A,B,2)
G3 =0.2524 0.1170 0
-0.2340 -0.0987 0
-0.2182 -0.0853 0.0025
H3 =0
0
0.3325
>> dstep(G3,H3,C,D,1)
程序和運行結(jié)果:
Z域仿真圖形:
連續(xù)域仿真圖形:
程序:
G=[0 1;-0.16 1];
H=[1;1];
C=[1 1];
D=0;
u=1;
dstep(G,H,C,D,u)
sysd=ss(G,H,C,D,0.05)
a = x1 x2
x1 0 1
x2 -0.16 1
b = u1
x1 1
x2 1
c = x1 x2
y1 1 1
d = u1
y1 0
Sampling time: 0.05
Discrete-time model.
>> sysc=d2c(sysd,zoh)
a = x1 x2
x1 -41.43 46.21
x2 -7.394 4.779
b = u1
x1 16.34
x2 21.12
c = x1 x2
y1 1 1
d = u1
y1 0
Continuous-time model.
>> step(sysc);
實驗3 能控能觀判據(jù)及穩(wěn)定性判據(jù)
一、實驗?zāi)康?
1、利用MATLAB分析線性定常及離散系統(tǒng)的可控性與可觀性;
2、利用MATLAB判斷系統(tǒng)的穩(wěn)定性。
二、實驗原理
給定系統(tǒng)狀態(tài)空間描述[A,B,C,D],函數(shù)ctrb(A,B)計算能控性判別矩陣;
函數(shù)obsv(A,C)計算能觀測性判別矩陣;
函數(shù)P=lyap(A,Q)求解李雅普諾夫方程ATP+PA=-Q,Q為正定對稱矩陣;
函數(shù)[D p]=chol(P)可用于判斷P矩陣是否正定,p=0,矩陣正定,p為其它值,矩陣非正定。
三、實驗步驟及結(jié)果
1)(2)
A=[1 0 0 0;2 -3 0 0;1 0 -2 0;4 -1 -2 -4];
B=[0;0;1;2];
C=[3 0 1 0];
Qc=ctrb(A,B)
Qc =0 0 0 0
0 0 0 0
1 -2 4 -8
2 -10 44 -184
>> rank(Qc)
ans =2
>> rank(obsv(A,C))
ans =2
能控性判別矩陣Qc和能觀性判別矩陣都不滿秩,故系統(tǒng)既不能控,也不能觀。
(3) A=[1 0 0 0;2 -3 0 0;1 0 -2 0;4 -1 -2 -4];
B=[0;0;1;2];
C=[3 0 1 0];
D=[0];
[z,p,k]=ss2zp(A,B,C,D,1);
Flagz=0;
n=length(A);
for i=1:n
if real(p(i))>0
Flagz=1;
end
end
>> disp(系統(tǒng)的零極點模型為);z,p,k
系統(tǒng)的零極點模型為
z = 1.0000
-4.0000
-3.0000
p =-4
-3
-2
1
k =1.0000
>> if Flagz==1
disp(系統(tǒng)不穩(wěn)定);
else disp(系統(tǒng)是穩(wěn)定的);
end
系統(tǒng)不穩(wěn)定
>> step(A,B,C,D);
時間響應(yīng)曲線為:
實驗4 狀態(tài)反饋及狀態(tài)觀測器的設(shè)計
一、實驗?zāi)康?
1、熟悉狀態(tài)反饋矩陣的求法;
2、熟悉狀態(tài)觀測器設(shè)計方法。
二、實驗原理
MATLAB軟件提供了兩個函數(shù)acker和place來確定極點配置狀態(tài)反饋控制器的增益矩陣K,函數(shù)acker是基于求解極點配置問題的艾克曼公式,它只能應(yīng)用到單輸入系統(tǒng),要配置的閉環(huán)極點中可以包括多重極點。函數(shù)place用于多輸入系統(tǒng),但配置極點不可以包括多重極點。
函數(shù)acker和place的一般形式是:
K=acker(A,B,P)
K=place(A,B,P)
其中的P是一個向量,P=[],是n個期望的閉環(huán)極點。得到了所要求得反饋增益矩陣后,可以用命令eig(A-B*K)來檢驗閉環(huán)極點。
由狀態(tài)反饋極點配置和觀測器設(shè)計問題直接的對偶關(guān)系,觀測器設(shè)計是狀態(tài)反饋設(shè)計的轉(zhuǎn)置,可以用H=(acker(A’,C’,V’))’來確定一般系統(tǒng)的觀測器矩陣,用命令eig(estim(sysold,H))來檢驗極點配置。
三、實驗步驟及結(jié)果
step(A,B,C,D);
num=[0 0 1];
den=[1 3 2];
[A,B,C,D]=tf2ss(num,den)
A =-3 -2
1 0
B =1
0
C = 0 1
D = 0
2、配置后系統(tǒng)的時間響應(yīng)曲線為:
A=[-3 -2;1 0];
B=[1;0];
C=[0 1];
D=0;
P=[-1+sqrt(-1);-1-sqrt(-1)];
K=acker(A,B,P)
K = -1 0
>> disp(極點配置后的閉環(huán)系統(tǒng)為)
極點配置后的閉環(huán)系統(tǒng)為
>> sysnew=ss(A-B*K,B,C,D)
a = x1 x2
x1 -2 -2
x2 1 0
b = u1
x1 1
x2 0
c = x1 x2
y1 0 1
d = u1
y1 0
Continuous-time model.
>> step(sysnew)
所以:K=[-1 0]
A=[-3 -2;1 0];
B=[1;0];
C=[0 1];
D=0;
V=[-3;-3];
sysold=ss(A,B,C,D);
p=eig(A)
p =-2
-1
Q=obsv(A,C);
m=rank(Q);
n=length(A);
if m==n
H=acker(A,C,V)
else
disp(系統(tǒng)不是狀態(tài)完全可觀測)
end
H =-2
3
所以:H=[-2 3]
.