From af732b313e9b2b335969e6c2093d350952ca7cb5 Mon Sep 17 00:00:00 2001 From: Thierry Zamofing Date: Fri, 8 Feb 2019 16:46:38 +0100 Subject: [PATCH] towards simple prefilters --- MXfastStageDoc/MXfastStage.tex | 45 ++++++++++++++++++++++--------- matlab/StateSpaceControlDesign.m | 40 +++++++++++++-------------- matlab/documentFunctions.m | 14 ++++++++++ matlab/observer.slx | Bin 35544 -> 35899 bytes 4 files changed, 64 insertions(+), 35 deletions(-) diff --git a/MXfastStageDoc/MXfastStage.tex b/MXfastStageDoc/MXfastStage.tex index 30fa79c..a7457df 100644 --- a/MXfastStageDoc/MXfastStage.tex +++ b/MXfastStageDoc/MXfastStage.tex @@ -466,11 +466,11 @@ Figures \ref{fig:mot_chirp_sim} showed similar response as the real stages (Figu \begin{figure}[h!] \center -\includegraphics[scale=.45]{../matlab/figures/sim_cl_DTGz.png} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_1.eps} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_bode1.eps} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_2.eps} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_bode2.eps} +\includegraphics[scale=.45]{../matlab/figures/sim_cl_DTGz.png}\\ +\includegraphics[scale=.45]{../matlab/figures/sim_cl_DTGz_1.eps} +\includegraphics[scale=.45]{../matlab/figures/sim_cl_DTGz_bode1.eps}\\ +\includegraphics[scale=.45]{../matlab/figures/sim_cl_DTGz_2.eps} +\includegraphics[scale=.45]{../matlab/figures/sim_cl_DTGz_bode2.eps} \caption{Motor 1 sim Motor 2 sim} \label{fig:mot_chirp_sim} \end{figure} @@ -562,27 +562,46 @@ end \begin{figure}[h!] \center +\includegraphics[scale=.35]{../matlab/figures/sim_cl_observer.png} +\caption{Observer flow chart} +\label{fig:mot_observer_sim} +\end{figure} -\includegraphics[scale=.45]{../matlab/figures/sim_cl_observer.png} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_1.eps} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_bode1.eps} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_2.eps} -\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_bode2.eps} -\caption{Motor 1 sim Motor 2 sim} -\label{fig:mot_chirp_sim} + +\begin{figure}[h!] +\center +\includegraphics[scale=.45]{../matlab/figures/sim_cl_observer_1.eps} +\includegraphics[scale=.45]{../matlab/figures/sim_cl_observer_bode1.eps}\\ +\includegraphics[scale=.45]{../matlab/figures/sim_cl_observer_2.eps} +\includegraphics[scale=.45]{../matlab/figures/sim_cl_observer_bode2.eps} +\caption{Observer sim: Motor 1 Motor 2} +\label{fig:mot_observer_sim} \end{figure} - +Comparing figures \ref{fig:mot_chirp_sim} and \ref{fig:mot_observer_sim} shows the better behavious of the observer model. With an additional prefilter resonance and reductions can be suppressed a bit.\\ +\begin{figure}[h!] +\center +\includegraphics[scale=.45]{../matlab/figures/sim_cl_obs_pf_1.eps} +\includegraphics[scale=.45]{../matlab/figures/sim_cl_obs_pf_bode1.eps}\\ +\includegraphics[scale=.45]{../matlab/figures/sim_cl_obs_pf_2.eps} +\includegraphics[scale=.45]{../matlab/figures/sim_cl_obs_pf_bode2.eps} +\caption{Observer with prefilter sim: Motor 1 Motor 2} +\label{fig:mot_observer_sim} +\end{figure} + + + The system was simulated with 5kHz servo loop frequency. Higher servo loop frequency does not help, because a continious state space controller behaves not relevantly better than a sampled state space controller at 5kHz.\\ Now the controller must be implemented on deltatau to check the performance on the real stage. +\FloatBarrier \subsection{Implementing state space controller on Deltatau} In MATLAB the function \verb|StateSpaceControlDesign()| produces files \verb%/tmp/ssc[1|2].mat%.\\ diff --git a/matlab/StateSpaceControlDesign.m b/matlab/StateSpaceControlDesign.m index 275de65..3342f6e 100644 --- a/matlab/StateSpaceControlDesign.m +++ b/matlab/StateSpaceControlDesign.m @@ -75,8 +75,6 @@ function [ssc]=StateSpaceControlDesign(mot) end ss_mdl.Name='open loop model'; %model for observer - - [Ap,Bp,Cp,Dp]=ssdata(ss_plt); [Am,Bm,Cm,Dm]=ssdata(ss_mdl); if bitand(mShow,1) @@ -84,7 +82,7 @@ function [ssc]=StateSpaceControlDesign(mot) setoptions(h,'IOGrouping','all') end - xp0 = zeros(1,length(Ap)); + xp0 = zeros(1,length(ss_plt.A)); xm0 = zeros(1,length(Am)); if bitand(mShow,2) @@ -142,6 +140,7 @@ function [ssc]=StateSpaceControlDesign(mot) %p1=-6300+2800i; p2=-6200+1500i; %P=[p1 p1' p2 p2']; P=[-2500 -2800 -1500+10j -1500-10j]; + P=[-2500 -2800 -1100+10j -1100-10j]; case 2 %p1=-6300+2800i; p2=-6200+1500i; %P=[p1 p1' p2 p2']; @@ -235,21 +234,12 @@ function [ssc]=StateSpaceControlDesign(mot) %discrete observer controller ss_oz = c2d(ss_o,Ts); - [Aoz,Boz,Coz,Doz]=ssdata(ss_oz); - %mdlName='observer'; - %open(mdlName); - %prefilter to compensate non observable resonance frequencies prefilt=Prefilt(mot,mPrefilt); - numV=prefilt.Numerator{1}; - denV=prefilt.Denominator{1}; - %discrete prefilter prefiltz=c2d(prefilt,Ts); - numVz=prefiltz.Numerator{1}; - denVz=prefiltz.Denominator{1}; if bitand(mShow,64) h=bodeplot(prefilt,prefiltz); @@ -258,8 +248,6 @@ function [ssc]=StateSpaceControlDesign(mot) %state space controller ssc=struct(); - %for k=["Ts","At","Bt","Ct","Dt","Atz","Btz","Ctz","Dtz","Ap","Bp","Cp","Dp","Am","Bm","Cm","Dm","Ao","Bo","Co","Do","Apz","Bpz","Cpz","Dpz","Aoz","Boz","Coz","Doz","V","K","L","ss_cl","ss_o","ss_oz","numV","denV","numVz","denVz"] - %for k=["Ts","Ap","Bp","Cp","Dp","Ao","Bo","Co","Do","Aoz","Boz","Coz","Doz","V","K","L","ss_cl","ss_o","ss_oz","numV","denV","numVz","denVz"] for k=["Ts","ss_plt","ss_o","ss_oz","prefilt","prefiltz","V"] ssc=setfield(ssc,k,eval(k)); end @@ -287,14 +275,22 @@ function pf=Prefilt(mot,mode) denV=den1; pf=tf(numV,denV); else - f=277;w0=f*2*pi; num1=[1 20 w0^2]; den1=[1 500 w0^2]; - f=138;w0=f*2*pi; num2=[1 300 w0^2]; den2=[1 100 w0^2]; - f=60;w0=f*2*pi; num3=[1 33 w0^2]; den3=[1 20 w0^2]; - numV=conv(num1,num2); - denV=conv(den1,den2); - numV=conv(conv(num1,num2),num3); - denV=conv(conv(den1,den2),den3) ; - pf=tf(numV,denV); + + %Lag + f=[100 200]; w=f*2*pi; T=1./w; + tf1=tf([T(1) 1],[T(2) 1]); + %bo = bodeoptions; + %bo.FreqUnits = 'Hz'; bo.MagUnits='abs'; bo.Grid='on'; + %bode(tf1,bo) + + %k=1.2; aa=2; f=[40 60];w=f*2*pi; tf([1 33 w0^2]; den3=[1 20 w0^2]; + %f=277;w0=f*2*pi; num1=[1 20 w0^2]; den1=[1 500 w0^2]; + %f=138;w0=f*2*pi; num2=[1 300 w0^2]; den2=[1 100 w0^2]; + %f=60;w0=f*2*pi; num3=[1 33 w0^2]; den3=[1 20 w0^2]; + %numV=conv(conv(num1,num2),num3); + %denV=conv(conv(den1,den2),den3) ; + %pf=tf(numV,denV); + pf=tf1; end end %controlSystemDesigner('bode',1,pf); % <<<<<<<<< This opens a transferfunction that can be edited diff --git a/matlab/documentFunctions.m b/matlab/documentFunctions.m index 6c53f84..b838cbf 100644 --- a/matlab/documentFunctions.m +++ b/matlab/documentFunctions.m @@ -26,6 +26,20 @@ for k =1:2 end disp('document figure generation done');close all; + +close all;disp('simulate observer with prefilter...'); +for k =1:2 + [ssc]=StateSpaceControlDesign(mot{k});sim('observer'); + f=figure(); h=plot(desPos_actPos.Time,desPos_actPos.Data,'g'); + set(h(1),'color','b'); set(h(2),'color',[0 0.5 0]); + print(f,sprintf('figures/sim_cl_obs_pf_%d',mot{k}.id),'-depsc'); + f=bodeSamples(desPos_actPos); + print(f,sprintf('figures/sim_cl_obs_pf_bode%d',mot{k}.id),'-depsc'); +end +disp('document figure generation done');close all; + + + function SCRATCH() %plots bode of desPos_actPos [mot1,mot2]=identifyFxFyStage(); diff --git a/matlab/observer.slx b/matlab/observer.slx index 09eddda2cb3ca7b7eb3b2461e039eaad143d5025..22811d6cca3758bff5fcd4f2e917f73602a0e3f5 100644 GIT binary patch delta 13824 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 CqzTXf delta 13476 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 SPy#uGlm3f020DcR0001z%@^SS