Difficulties in pole placement of an observer usign "place" command
17 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Sam Chak
on 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 Comments
More Answers (0)
See Also
Categories
Find more on Stability Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!