90 lines
2.2 KiB
Matlab
90 lines
2.2 KiB
Matlab
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
|
|
|
|
|