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 CenterFile Exchange에서 Calendar에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by