MATLAB can't compute a closed-loop final-value theorem on a controller.

Hi, I have an assignment where I need to design a state-feedback controller in the form: u(k) = K x[k]+ Sy¯[k], with a sampling period pi = 0.05, such that the (discrete-time) closed-loop poles are placed in 0:8 ± 0:1i and the static gain from y¯ to y is 1.
I need to plot a response of the open-loop system to a step of u(t), (which I did)
And 1 plot of the closed-loop response to a step of y¯(t), (doesn't accept S-value, calls it infinite or NaN)
The image below is the initial state-space model:
Here's my code so far:
Phi = [-0.12 0; 5 0]
Gamma = [2.25; 0]
C = [0 1]
D = 0
Pd = ss(Phi, Gamma ,C, D, 0.05)
step(Pd) %plotting the open-loop u(t)
K = [0.45333 -0.00071] %solved K by hand, also had to write down functions so paper is my go to.
PhiCL = Phi+Gamma*[k1 k2]
GammaCL = Gamma *[ s1 ];
syms s1 z;
%MATLAB doesn't compute Z-transform either, tried it by hand, the whole function yields 0
Zg = (C+D*K) * inv(z*eye (2) - PhiCL ) * GammaCL + D*[ s1 ]
Zlim = subs (Zg , z, 1)
s_val = solve (Zlim ==1 , s1) %can't solve fo s1, says: "Empty sym: 0-by-1"
y_bar = ss(PhiCL, GammaCL, (C+D*K), D*s1, 0.05)
%Error using ss (line 284)
%The "B" matrix must be a numeric array with no Inf's or NaN's.
I plotted the y_bar by removing the s1's from D*s1 and GammaCL, and I'm not sure if it converges to 0, I'll attach the plot below. I'm kind of cheating with this plot, and I have to get full points on this assignment or I can't enter the exam.
Thank you in advance!

댓글 수: 2

Marjo Toska
Marjo Toska 2021년 6월 4일
편집: Marjo Toska 2021년 6월 4일
My big K [k1 k2] was solved for poles [0.8 0.1] since I can't really compute +-0.1i by hand. The results are slightly off by yours I know, but that's not my concern at all. Because Z-transform is always 0 no matter if I use k2=0.1, k2=0.1i or k2=+-0.1i.
I'm concerned with plotting the closed-loop response, and I'm not sure how to do that, have a feeling that Z transform should be non-zero to do that, or solve K, setpoint S and observer L for that. shrug
Paul
Paul 2021년 6월 4일
편집: Paul 2021년 6월 4일
Not sure what you meant by: "no matter if I use k2=0.1, k2=0.1i or k2=+-0.1i. " The feedback gain matrix has to be real. What's keeping you from solving for the K by hand? The problem would be to find K such that the characteristic equation of Phi + Gamma*K has roots at z = 0.8 +- 0.1*i.

댓글을 달려면 로그인하십시오.

 채택된 답변

Paul
Paul 2021년 6월 4일
이동: Arkadiy Turevskiy 2024년 1월 11일
Is that feedback gain matrix correct? Note that here I'm using K, but the code above used k1 and k2, which were not defined.
Phi = [-0.12 0; 5 0];
Gamma = [2.25; 0];
C = [0 1];
D = 0;
K = [0.45333 -0.00071];
eig(Phi + Gamma*K) % doesn't match specifcation 0.8 +- 0.1i, using positive feedback consistent witht the question as asked
ans = 2×1
0.8910 0.0090

추가 답변 (0개)

제품

릴리스

R2021a

질문:

2021년 6월 4일

이동:

2024년 1월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by