Difficulties in pole placement of an observer usign "place" command

17 ビュー (過去 30 日間)
Salvatore De Luca
Salvatore De Luca 2024 年 1 月 31 日
回答済み: Sam Chak 2024 年 1 月 31 日
I have this MIMO system, which as you can see is fully observable and fully controllable: yet if I attempt to place poles in a desired position using 'place' i obtain the error message:
A=[0 1 0 0;1690.3 0 -17.71 0.065111;0 0 -234.42 0; 0 0 0 -1.0882e+05];
B=[0 0; 0 0;1031.5 0;0 2.9056e+05];
C=[1 0 0 0]
C = 1×4
1 0 0 0
D=[0]
D = 0
rank(ctrb(A,B),10e-4)
ans = 4
rank(obsv(A,C))
ans = 4
L=place(A',C',[-1 -2 -3 -4])'
The only way to make it works is to place one of the poles very far,but I receive e warning, for example:
L1=place(A',C',[-1 -2 -3 -4e5])'
Warning: Achieved pole locations differ by more than 10 percent from specified locations.
L = 4×1
1.0e+16 * 0.0000 -0.0000 0.0000 5.5048

採用された回答

Sam Chak
Sam Chak 2024 年 1 月 31 日
In general, the Observer is typically designed to respond at least twice as fast as the full-state closed-loop system. However, the initial eigenvalue selection of [-1 -2 -3 -4] for the observer appears to be too slow.
%% MISO system
A = [0 1 0 0;
1690.3 0 -17.71 0.065111;
0 0 -234.42 0;
0 0 0 -1.0882e+05];
B = [0 0;
0 0;
1031.5 0;
0 2.9056e+05];
C = [1 0 0 0];
D = 0*C*B;
sys = ss(A, B, C, D)
sys = A = x1 x2 x3 x4 x1 0 1 0 0 x2 1690 0 -17.71 0.06511 x3 0 0 -234.4 0 x4 0 0 0 -1.088e+05 B = u1 u2 x1 0 0 x2 0 0 x3 1032 0 x4 0 2.906e+05 C = x1 x2 x3 x4 y1 1 0 0 0 D = u1 u2 y1 0 0 Continuous-time state-space model.
%% Check stability
isstable(sys)
ans = logical
0
%% Check Controllability and Observability
rkC = rank(ctrb(A, B))
rkC = 2
rkO = rank(obsv(A, C))
rkO = 4
%% Controller gain matrix
[K, S, Cp] = lqr(A, B, eye(4), eye(2))
K = 2×4
-203.5183 -5.0501 0.8796 -0.0000 0.7470 0.0186 -0.0003 0.6933
S = 4×4
513.1477 12.2520 -0.1973 0.0000 12.2520 0.3045 -0.0049 0.0000 -0.1973 -0.0049 0.0009 -0.0000 0.0000 0.0000 -0.0000 0.0000
Cp = 4×1
1.0e+05 * -0.0003 -0.0005 -0.0106 -3.1027
%% Observer gain matrix
Op = 2*Cp % Observer should respond at least 2 times faster than the closed-loop system
Op = 4×1
1.0e+05 * -0.0007 -0.0010 -0.0212 -6.2054
L = place(A', C', Op)'
L = 4×1
1.0e+16 * 0.0000 -0.0000 -0.0000 9.1314
%% Observed-state feedback control system
cls = ss([A-B*K B*K; zeros(size(A,1)) A-L*C], eye(2*size(A,1)), eye(2*size(A,1)), eye(2*size(A,1)));
%% Check stability
isstable(cls)
ans = logical
1

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStability Analysis についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by