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

25 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Sam Chak
Sam Chak am 31 Jan. 2024
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

Weitere Antworten (0)

Kategorien

Mehr zu Stability Analysis finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by