Difficulties in pole placement of an observer usign "place" command
25 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Salvatore De Luca
am 31 Jan. 2024
Beantwortet: Sam Chak
am 31 Jan. 2024
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]
D=[0]
rank(ctrb(A,B),10e-4)
rank(obsv(A,C))
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])'
0 Kommentare
Akzeptierte Antwort
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)
%% Check stability
isstable(sys)
%% Check Controllability and Observability
rkC = rank(ctrb(A, B))
rkO = rank(obsv(A, C))
%% Controller gain matrix
[K, S, Cp] = lqr(A, B, eye(4), eye(2))
%% Observer gain matrix
Op = 2*Cp % Observer should respond at least 2 times faster than the closed-loop system
L = place(A', C', Op)'
%% 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)
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Stability Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!