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

18 views (last 30 days)
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

Accepted Answer

Sam Chak
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)
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

More Answers (0)

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!