Difficulties in pole placement of an observer usign "place" command
11 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
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)
%% 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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calendar 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!