towards pole placement
This commit is contained in:
89
matlab/SCRATCH3.m
Normal file
89
matlab/SCRATCH3.m
Normal file
@@ -0,0 +1,89 @@
|
||||
Ts=1/5000
|
||||
tf1=tf([1],[1 0])
|
||||
%tfz1=tf([1],[1 0],Ts)
|
||||
tfz1a=c2d(tf1,Ts);%%'zoh'=default
|
||||
tfz1b=c2d(tf1,Ts,'foh');
|
||||
tfz1c=c2d(tf1,Ts,'impulse');
|
||||
tfz1d=c2d(tf1,Ts,'tustin');
|
||||
tfz1e=c2d(tf1,Ts,'matched');
|
||||
tfz1f=c2d(tf1,Ts,'least-squares');
|
||||
% 'zoh' Zero-order hold on the inputs
|
||||
% 'foh' Linear interpolation of inputs
|
||||
% 'impulse' Impulse-invariant discretization
|
||||
% 'tustin' Bilinear (Tustin) approximation.
|
||||
% 'matched' Matched pole-zero method (for SISO systems only).
|
||||
% 'least-squares' Least-squares minimization of the error between
|
||||
|
||||
|
||||
|
||||
bo = bodeoptions;
|
||||
%bo.FreqUnits = 'Hz'; bo.MagUnits='abs'; bo.Grid='on';
|
||||
bo.FreqUnits = 'Hz'; bo.Grid='on';
|
||||
bodeplot(tf1,tfz1a,tfz1b,tfz1c,tfz1d,tfz1e,tfz1f,bo)
|
||||
bodeplot(tf1,bo)
|
||||
|
||||
%k=1.548e04
|
||||
k=1:
|
||||
tf1=tf(k ,[1 0 0]);
|
||||
ss1=ss(tf1)
|
||||
[Am,Bm,Cm,Dm]=ssdata(ss1);
|
||||
pl=[-3 -4];
|
||||
pl=[-30 -40];
|
||||
pl=[-100 -110];
|
||||
pl=[-1000 -1100];
|
||||
%pl=[-10+40i -10-40i];
|
||||
K = place(Am,Bm,pl);
|
||||
V=-1./(Cm*(Am-Bm*K)^-1*Bm); %(from Lineare Regelsysteme2 (Glattfelder) page:173 )
|
||||
ss_cl = ss(Am-Bm*K,Bm*V,Cm,0,'Name','space state controller','InputName','u','OutputName','y');
|
||||
step(ss_cl);
|
||||
|
||||
bodeplot(ss_cl)
|
||||
|
||||
t=0:1E-4:.5; %time vector for simulations
|
||||
u = ones(size(t));
|
||||
xm0=[0 0];
|
||||
[y,t,x]=lsim(ss_cl,V*u,t,xm0);
|
||||
|
||||
|
||||
k=1.548e04
|
||||
%tf1=tf(k ,[1 0 0]);
|
||||
tf1=tf({[k 0]; k},[1 0 0]); %not controlabe, not observable
|
||||
%tf1=tf({[k 0]; k},[1 .3 .5]); %controlabe, observable
|
||||
%chkCtrlObsv(ss1,'ss1');
|
||||
ss1=ss(tf1);
|
||||
[Am,Bm,Cm,Dm]=ssdata(ss1);
|
||||
pl=[-1500 -1600];
|
||||
K = place(Am,Bm,pl);
|
||||
V=-1./(Cm*(Am-Bm*K)^-1*Bm); %(from Lineare Regelsysteme2 (Glattfelder) page:173 )
|
||||
V=V(end);
|
||||
ss_cl = ss(Am-Bm*K,Bm*V,Cm,0); %THIS WORKS
|
||||
step(ss_cl)
|
||||
|
||||
pb.ss_plt=ss1
|
||||
pb.Kfb=K*(Cm^-1);
|
||||
pb.V=V;
|
||||
bode(ss_cl)
|
||||
|
||||
|
||||
pb.ss_plt=mot{1}.ss_q;
|
||||
pl=[-1000 -1100]*1;
|
||||
[Am,Bm,Cm,Dm]=ssdata(pb.ss_plt);
|
||||
K = place(Am,Bm,pl);
|
||||
V=-1./(Cm*(Am-Bm*K)^-1*Bm); %(from Lineare Regelsysteme2 (Glattfelder) page:173 )
|
||||
V=V(end);
|
||||
pb.Kfb=K*(Cm^-1);
|
||||
pb.V=V;
|
||||
|
||||
%k/s^2 -> w^2/s^2 ->frq=sqrt(k)/(w/2*pi)=sqrt(1.548e04)/(2*pi)=19.8Hz
|
||||
|
||||
[Am,Bm,Cm,Dm]=ssdata(mot.ss_dq);
|
||||
pl=[-3300 -2100 -2500];
|
||||
K = place(Am,Bm,pl);
|
||||
V=-1./(Cm*(Am-Bm*K)^-1*Bm); %(from Lineare Regelsysteme2 (Glattfelder) page:173 )
|
||||
|
||||
KK=K*(Cm^-1);
|
||||
KK=KK(1,:);
|
||||
pb.Kfb=KK
|
||||
pb.V=V
|
||||
|
||||
|
||||
Reference in New Issue
Block a user