From 6b5b8750d1516afcefcad656a8cf5201d85aaa0e Mon Sep 17 00:00:00 2001 From: Thierry Zamofing Date: Fri, 8 Feb 2019 09:47:46 +0100 Subject: [PATCH] first rewrite of ovserver --- MXfastStageDoc/MXfastStage.tex | 16 ++-- matlab/StateSpaceControlDesign.m | 157 +++++++------------------------ matlab/identifyFxFyStage.m | 43 +++++---- matlab/observer.slx | Bin 35172 -> 35224 bytes matlab/simFxFyStage.m | 17 +--- matlab/stage_closed_loop.slx | Bin 36273 -> 35345 bytes 6 files changed, 70 insertions(+), 163 deletions(-) diff --git a/MXfastStageDoc/MXfastStage.tex b/MXfastStageDoc/MXfastStage.tex index baf513f..d3e9872 100644 --- a/MXfastStageDoc/MXfastStage.tex +++ b/MXfastStageDoc/MXfastStage.tex @@ -448,8 +448,7 @@ It has to be checked if the model matches the real stage. Therefore simulations To compare the measurements with the model following lines were executed in MATLAB \begin{verbatim} clear;clear global;close all; -mot=cell(2,1); -[mot{1},mot{2}]=identifyFxFyStage(); +mot=identifyFxFyStage(7); for k =1:2 [pb]=simFxFyStage(mot{k});sim('stage_closed_loop'); f=figure(); h=plot(desPos_actPos.Time,desPos_actPos.Data,'g'); @@ -537,10 +536,11 @@ As first approach the tf function is just converted to the ss space and the ss m The matlab models are:\\ \begin{tabular}{ll} -\texttt{ssPlt:} & best approach of the plant with mechanics, resonance, current loop etc.\\ -\texttt{ssMdl\_c1:} & model without resonance (only current and main mechanical)\\ -\texttt{ssMdl\_12:} & model without current loop, with one resonance (main mechanical + first resonance)\\ -\texttt{ssMdl\_1:} & model without current loop, no resonance (only main mechanical)\\ +\texttt{ss\_plt:} & best approach of the plant with mechanics, resonance, current loop etc.\\ +\texttt{ss\_c1:} & model without resonance (only current and main mechanical)\\ +\texttt{ss\_d1:} & model without resonance (simplified current and main mechanical)\\ +\texttt{ss\_1:} & model without current loop, no resonance (only main mechanical)\\ +\texttt{ss\_0:} & simplified mechanical, no current loop, no resonance\\ \end{tabular}\\ \vspace{1pc} @@ -549,9 +549,9 @@ Following code calculates parameters for a observer controller, does a simulatio \begin{verbatim} clear;clear global;close all; mot=cell(2,1); -[mot{1},mot{2}]=identifyFxFyStage(); +[mot{1},mot{2}]=identifyFxFyStage(7); for k =1:2 - [ssc]=StateSpaceControlDesign(mot1{k});sim('observer'); + [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_observer_%d',mot{k}.id),'-depsc'); diff --git a/matlab/StateSpaceControlDesign.m b/matlab/StateSpaceControlDesign.m index b967bfd..275de65 100644 --- a/matlab/StateSpaceControlDesign.m +++ b/matlab/StateSpaceControlDesign.m @@ -16,18 +16,12 @@ function [ssc]=StateSpaceControlDesign(mot) % https://www.youtube.com/watch?v=Lax3etc837U %mPlt: mode to select plant - %0 real plant (model of real plant) - %1 current, mechanic, no resonance - %2 no current current, mechanic, no resonance - %3 no current current, mechanic, first resonance - - - %mMdl: mode to select model for observer - %0 real plant (NOT RECOMANDED, because not observab,econtrolable) - %1 current, mechanic, no resonance - %2 no current current, mechanic, no resonance - %3 no current current, mechanic, first resonance + %0 ss_plt :real plant (model of real plant) + %1 ss_c1 :current, mechanic, no resonance + %2 ss_d1 :simpl. current, mechanic, no resonance + %3 ss_1 :no current, mechanic, no resonance + %4 ss_0 :no current, simpl. mechanic, no resonance %mPrefilt:prefilter mode %0 no filter @@ -55,34 +49,38 @@ function [ssc]=StateSpaceControlDesign(mot) switch mPlt case 0 - ssPlt=mot.ssPlt;%real plant (model of real plant) + ss_plt=mot.ss_plt; case 1 - ssPlt=mot.ssMdl_c1;%current, mechanic, no resonance + ss_plt=mot.ss_c1; case 2 - ssPlt=mot.ssMdl_1;%no current current, mechanic, no resonance + ss_plt=mot.ss_d1; case 3 - ssPlt=mot.ssMdl_12;%no current current, mechanic, first resonance + ss_plt=mot.ss_1; + case 4 + ss_plt=mot.ss_0; end - ssPlt.Name='open loop plant'; + ss_plt.Name='open loop plant'; switch mMdl case 0 - ssMdl=mot.ssPlt;%real plant (model of real plant) + ss_mdl=mot.ss_plt; case 1 - ssMdl=mot.ssMdl_c1;%current, mechanic, no resonance + ss_mdl=mot.ss_c1; case 2 - ssMdl=mot.ssMdl_1;%no current current, mechanic, no resonance + ss_mdl=mot.ss_d1; case 3 - ssMdl=mot.ssMdl_12;%no current current, mechanic, first resonance + ss_mdl=mot.ss_1; + case 4 + ss_mdl=mot.ss_0; end - ssMdl.Name='open loop model'; %model for observer + ss_mdl.Name='open loop model'; %model for observer - [Ap,Bp,Cp,Dp]=ssdata(ssPlt); - [Am,Bm,Cm,Dm]=ssdata(ssMdl); + [Ap,Bp,Cp,Dp]=ssdata(ss_plt); + [Am,Bm,Cm,Dm]=ssdata(ss_mdl); if bitand(mShow,1) - figure();h=bodeplot(ssPlt,ssMdl); + figure();h=bodeplot(ss_plt,ss_mdl); setoptions(h,'IOGrouping','all') end @@ -93,8 +91,8 @@ function [ssc]=StateSpaceControlDesign(mot) % step answer on open loop: t = 0:1E-4:.5; u = ones(size(t)); - [yp,t,x] = lsim(ssPlt,u,t,xp0); - [ym,t,x] = lsim(ssMdl,u,t,xm0); + [yp,t,x] = lsim(ss_plt,u,t,xp0); + [ym,t,x] = lsim(ss_mdl,u,t,xm0); figure();plot(t,yp,t,ym,'--');title('step on open loop (plant and model)'); legend('plt.iqMeas','plt.iqVolts','plt.actPos','mdl.iqMeas','mdl.iqVolts','mdl.actPos') end @@ -108,9 +106,9 @@ function [ssc]=StateSpaceControlDesign(mot) % %place poles for the controller feedback if use_lqr %use the lqr controller - Q=eye(length(ssMdl.A)); + Q=eye(length(ss_mdl.A)); R=1; - [K,P,E]=lqr(ssMdl,Q,R,0); + [K,P,E]=lqr(ss_mdl,Q,R,0); else if mot.id==1 %2500rad/s = 397Hz -> locate poles here @@ -155,12 +153,11 @@ function [ssc]=StateSpaceControlDesign(mot) end %if lqr V=-1./(Cm*(Am-Bm*K)^-1*Bm); %(from Lineare Regelsysteme2 (Glattfelder) page:173 ) - %Nbar(2)=1; %the voltage stuff is crap for now if length(V)>1 V=V(3); % only the position scaling needed end - ss_cl = ss(Am-Bm*K,Bm*V,Cm,0,'Name','space state controller','InputName',ssMdl.InputName,'OutputName',ssMdl.OutputName); + ss_cl = ss(Am-Bm*K,Bm*V,Cm,0,'Name','space state controller','InputName',ss_mdl.InputName,'OutputName',ss_mdl.OutputName); if bitand(mShow,4) % step answer on closed loop with space state controller: t = 0:1E-4:.5; @@ -182,7 +179,7 @@ function [ssc]=StateSpaceControlDesign(mot) Ct = [ Cm zeros(size(Cm)) ]; Dt=0; - ss_t = ss(At,Bt,Ct,Dt,'Name','observer controller','InputName',{'desPos'},'OutputName',ssMdl.OutputName); + ss_t = ss(At,Bt,Ct,Dt,'Name','observer controller','InputName',{'desPos'},'OutputName',ss_mdl.OutputName); if bitand(mShow,8) % step answer on closed loop with observer controller: figure();lsim(ss_t,ones(size(t)),t,[xm0 xm0]);title('step on closed loop with observer'); @@ -233,8 +230,8 @@ function [ssc]=StateSpaceControlDesign(mot) end %discrete plant - ssPltz = c2d(ssPlt,Ts); - [Apz,Bpz,Cpz,Dpz]=ssdata(ssPltz); + %ss_pltz = c2d(ss_plt,Ts); + %[Apz,Bpz,Cpz,Dpz]=ssdata(ss_pltz); %discrete observer controller ss_oz = c2d(ss_o,Ts); @@ -261,7 +258,9 @@ 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","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 save(sprintf('/tmp/ssc%d.mat',mot.id),'-struct','ssc'); @@ -302,93 +301,3 @@ function pf=Prefilt(mot,mode) end -%code snipplets from an example on youtube (see reference at top) -function SCRATCH() -%import numpy as np -%fh=np.load('mode1.npz') -%import scipy.io -%scipy.io.savemat('mode1.mat',fh,do_compression=True) - -%matlab: - load('mode1.mat'); - plot(pts(:,1),pts(:,2),'.');hold on; - plot(rec(:,5),rec(:,6),'-');%despos - plot(rec(:,2),rec(:,3),'-');%actPos - - %sig.time = [0 1 1 5 5 8 8 10]; - %sig.signals.values = [0 0 2 2 2 3 3 3]'; - %sig.signals.dimensions = 1; - sig.time=0:2E-4:(length(rec)-1)*2E-4; - sig.signals.values=rec(:,5); - sig.signals.dimensions = 1; - - sum(desPos_actPos.Data(:,1)-desPos_actPos.Data(:,2)) - - A = [ 0 1 0 - 980 0 -2.8 - 0 0 -100 ]; - - B = [ 0 - 0 - 100 ]; - - C = [ 1 0 0 ]; - - poles = eig(A) - - t = 0:0.01:2; - u = zeros(size(t)); - x0 = [0.01 0 0]; - - sys = ss(A,B,C,0); - - [y,t,x] = lsim(sys,u,t,x0); - plot(t,y) - title('Open-Loop Response to Non-Zero Initial Condition') - xlabel('Time (sec)') - ylabel('Ball Position (m)') - - p1 = -10 + 10i; - p2 = -10 - 10i; - p3 = -50; - - K = place(A,B,[p1 p2 p3]); - sys_cl = ss(A-B*K,B,C,0); - - lsim(sys_cl,u,t,x0); - xlabel('Time (sec)') - ylabel('Ball Position (m)') - - p1 = -20 + 20i; - p2 = -20 - 20i; - p3 = -100; - - K = place(A,B,[p1 p2 p3]); - sys_cl = ss(A-B*K,B,C,0); - - lsim(sys_cl,u,t,x0); - xlabel('Time (sec)') - ylabel('Ball Position (m)') - - - t = 0:0.01:2; - u = 0.001*ones(size(t)); - - sys_cl = ss(A-B*K,B,C,0); - - lsim(sys_cl,u,t); - xlabel('Time (sec)') - ylabel('Ball Position (m)') - axis([0 2 -4E-6 0]) - - Nbar = rscale(sys,K) - - lsim(sys_cl,Nbar*u,t) - title('Linear Simulation Results (with Nbar)') - xlabel('Time (sec)') - ylabel('Ball Position (m)') - axis([0 2 0 1.2*10^-3]) -end - - - diff --git a/matlab/identifyFxFyStage.m b/matlab/identifyFxFyStage.m index ca91adc..2e9da8c 100644 --- a/matlab/identifyFxFyStage.m +++ b/matlab/identifyFxFyStage.m @@ -31,11 +31,12 @@ function motCell=identifyFxFyStage(mode) % loadData reads members currstep,w,mag,phase,meas % % mode bits: - % 0 1 : add ss-models and do checks for motor 1 fy - % 1 2 : add ss-models and do checks for setup motor 2 fx - % 2 4 : identify_currstep - % 3 8 : identify_tf2 - % The default value for mode is 3 + % 0 1 : select motor 1 fy + % 1 2 : select motor 2 fx + % 2 4 : add ss-models and do obser/contr checks + % 3 8 : identify_currstep + % 4 16 : identify_tf (TODO!) + % The default value for mode is 7 %References: @@ -67,6 +68,7 @@ function motCell=identifyFxFyStage(mode) opt=tfestOptions; opt.Display='off'; tfc = tfest(obj.currstep, 2, 0,opt); + s=splitlines(string(evalc('tfc')));disp(join(s(5:7),newline)); s=str2ndOrd(tfc); t=(0:199)*50E-6; [y,t]=step(tfc,t); @@ -85,7 +87,7 @@ function motCell=identifyFxFyStage(mode) print(f,sprintf('figures/currstep_%d',obj.id),'-depsc'); end - function tf2=identify_tf2(obj) + function tf2=identify_tf(obj) opt=tfestOptions; opt.Display='off'; opt.initializeMethod='iv'; @@ -351,19 +353,22 @@ function motCell=identifyFxFyStage(mode) for motid= 1:2 mot=loadData('/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/MXTuning/19_01_29/',motid); mot.id=motid; - if bitand(mode,4) - %identification of second order transfer function out of the current step recorded data. - identify_currstep(mot{motid}); - end - if bitand(mode,8) - %identification of second order transfer function out of the position recorded data. - identify_tf2(mot); - end - if motid==1 && bitand(mode,1) - mot=fyStage(mot); - end - if motid==2 && bitand(mode,2) - mot=fxStage(mot); + if bitand(mode,motid) + if bitand(mode,4) + if motid==1 + mot=fyStage(mot); + else + mot=fxStage(mot); + end + end + if bitand(mode,8) + %identification of second order transfer function out of the current step recorded data. + identify_currstep(mot); + end + if bitand(mode,16) + %identification of second order transfer function out of the position recorded data. + identify_tf(mot); + end end motCell{motid}=mot; end diff --git a/matlab/observer.slx b/matlab/observer.slx index c0b0c019c6002f08092f500d2fd7a7be7564b59b..d998914c3342bc73170cb6cb790cb105dfd50c18 100644 GIT binary patch delta 20611 zcmV(rK<>Zfk^-2M0vk|E0|XQR000O8F>-EAAe1LgVgUdE!U6yQ8BYY{A${t2v?(K>;YC zi%OMq^pr2d1O?V{Rq$FXn4<$&6fCk-G)!m%_eM8hTm?4pM#?hL%+bcVhGA^Q1|+wU zS13=ewUONUt0{5A#XBznPYAihe-a!oxZ}7r44csr^_GPgEt?NhcLs&PP=f^JET$2~ z-&$F@Ljz}D4CIO0fsyvCxMN1;-d3Y(x7$U#X{Yn~DSlbqJ$7FWE7i7206O-EJ1Dg| zWKtJUr}z{~`_fDp@K_P}0_+%kV4kNpxA_uf6GE>-LPJV&I%Qm7ngqg5vt{L;05-L&_feKjkbWlaM4iN!UfqNPLoVFz7NE z*jDYjWi*OOS9e5Ox?jfZ!CNN0;|J*2!yjvxeF3wW0qFq=*Yb|nk{18~4wH%l9e>q$ zWmHsO_%0n%iW1UFC{l_j-5{YLjZ#C11M2?&3I!SPu6_s2 z1u9B6_4ghG1cb}~6++U22bKf`%zqskDvAca+50OF&SuCU%n|1O$F1S7_cWr5RHD-! zr`+Qoip-fe+Mn0TRyh7vsJ+Lh;LP3smy9q@ij0V)QDNgZDt42vkyeN4C-EucoT6*^ z5|7SaD9sbeQIj%5=b<8%*S8Gyi+J4CY3J6nGdxB;K-7|dle)U@J2vg&34clGqU^Y3 z<>l=Ba`6!U;(JP8KcD`SBY5yql=ACs4jwKg-=t8Abw#3wU&#O0HoSb%*Bpa>Q@waL zVz>mmU8%vJ9Y$ynA3GRV$eLVegzXUtR#aA2UJVFS2qh+`y=NAzOy0eNR_0AX2Qgc7 zyR-3G_=chIm!PtI)kO|9$$u$(e}XxUzf_p6TC$1w$C|c>hIK?g?Z!AvOiewqCdA^; zR|8xJR=%?(`N||XY}cf{;ajM8GA_?DNz44vv4?t$_3oMd+4}3Q^h}g{=jlF4hc=z{ zqkzMRGaC|?aWUd?^+y3Z+Vm9Zb&21I|DIfyRaFfKjD5=16X#Z0n13I@_fBAc)#wKm z^#(_+SCZ8&iw(f)pl zgpI?0H6b~3xN|%Y3%HN^U_c0R|BljCOs;P@FrCqu2kLtju);mDgsPqftFcK}CT?7N1<>OH{($jZu+ z&H*Ra8gOoHdV~6C+i81C(tVSn(=w^Nod3I?3Pg8o%h;2~{eN)Qn}9x=grHeCQNKGr z11rcdxv-$|B(<=jBF1Ock31BI3%0IhCMG79IqJTvia|!nUq7Isp<#|xZ4P@~WzCfn(XV^i3n(@g=r6;L>8o*|ATghr1?~eu5i5||X z3Nmh>CLko?imO5A=Gr+@qzXPh;`{si%#oezT~RwbJAYQ^2P?KqnDqARt#4`RpyCIG)Jy=hTAUXrnE)Mdhp|0hbaa#wu{qo zB8G;Bfq(l>pp6-05O1pH(cf4RqJ^m%WL`+FsSBL9F_%QeS+a9}MIys@HDFN7ie&e{ zxqzAZ=%WwgT?4}no}`*?ry5(luM?vDI`2-jbijYnmU5qu*)v)N>Jv{#7M{EGEp(X& z05~%ZA=K3Xc64-{-T6A3yIyJKy!ZFpTO=|Ioqr@i2#*%ri;#W!vO!x77JL9Nbwk7M z?Qpx_{gIo?$I%|Fjhi)fC4BngMbG&7xIg=B2^S%p64g97Fx_xwWJZh(bg7~le0K&fJ{7IY5)t2g}Eq@ z5*PA4dL}LPbJdr)7>x=ez$FIXBWNilXCtTP#)6t~CUZ#5ct&+4$pHUMR8)!f- zjk?By&z_&{!R4;p4w|;<1~bP_?CUF@4ChFH>g#p8x^jz*)R}`?ewb4RM_3K?D`O&3=6G+*RduYW@3u%(+PO5~j7341R)@+BU=o;biPt{DW>_=+d{j-RJ9ckdc6&8?@9({x@Dqc~|$&$T>sx zP{|Zulzw2(A(;6vX|eA&;?KeuV+&jn2XM~DnnVM;N1YJ0Uk_ZIxIM1K{DWkV%EjvM zgy_nP?m+`r14S4l{BP5!o}DKTvN;v27NQbq_? zT!|Aeadvr9=E*XGR8CaU>9m}{Zz$zmQk(F6u7MDnrN1#|VkX-TBY!S?=mOW;92-uYaS1AX$Agl5BToZtg!<7IcIgnavd8I|#2rPFN2rt4QX0+T2Nn z*j`muDvOMhF#W|($@6+_Q+pd5H!wK3MlE=ZTjS0dmdEx2&X(!6Bo>Su&a#aWt*kbk z7h$%g%oR>aC_{s_o4Y>wjG+fhxM&7yWAa9Z|OH zmW50fzJ$g1GD~!gjT;Lmg4AMUgk(KYx6?&H+dHLs!hW1o3@0Q(1-!)W+r#%=TJ~Rh zYIOm_zL1Gqo&I963x}YsIb?oNy@JoDe++QimD;XuOtZ!M8#3&qJff62z5Qdm`HM{} z9BMjA&Yv<+^?!Hbr?YN^UR^`O@el~-KEa&wPOxE9id5e4>R{#ieyD8$L2CnJ5VUIS zcPzsC!lk{nXe-tbbvnq-u1Xa#evR8RFJYjNy%GE9aT3q5TH>_?ZWQttN!7eVP3F-U z!F0B>_y*v<&Se^sA=n}ICRhILdZ>X>p|R07+)Rzm)PGc2Ie(q{myTMSO7AuChyOM> z?La^HSS&fDJoRz^KtcfVKI3BE|M3Q z7|3&OqV?uGhGIxiqGmVZal0Ca--lMZf-22RznC_WQorm{%34DWAD>!>o{dkyvY%JX z>>fNMTz?47_GSB34OT^0OiYM!j`W@YEFY%wFwBaXnubPKUq2kY#3mQmR2IWqoD?c( zDJEu_C*26WsVvD2;n>K-IRHQUUSB;g^ePdg3c{Yj5KlFV^-j;u3ei$fwENlK`|Dsl z?CqAZ5)mwvG1f|W;uE-91r+SpbCVs$t@-x)w?d=6bn&7gI%to}A2uVQzh zP;Wb_+IMRxUCV#MlSs{QT3T8?bMts~bGLP^p``x&cf$J|9DF(2NRyfx$ z_7qcM3vI*s{I!0}zu0wISy<-b9(D)lnSY=Bm6;L=;i7D>dLuJ_{IGO$OPZZE0u(Tl zc{-}u!i}PQp2g@n+fNPCq~6|FxE4G;cS_gZ*V!$O+waqQa5vbKwCb9gbjf?-`NQS< z3+NR1L*`JAe~t&I&JbWFgg-Lg+@XyEV0m2pQ;;h3gD8AdjW4DkqN|&Zy)YQp)qiT} zLStk-MOIX;0OB2jjeD`1&l$Jwm}?!(ziS|w?8UI_KP=ZfIh}K$!u>Y#}>aiITzcqqUTWSl^1ry?L&Xpyy5&q6P zrVqK$=5qQ}QA3M({?mmqmn%1g27gdit&hm!XL+MG?7`Ag_9yATc!5mgL3@a<`trbl zm(-794TbLJr{|b43%koe31cW=g;nPd73>djAc!>-VccT@GcH$G(|XPTZASK&V*6XFXZh?+9)Jbu8HF;zOD$*f<<$9EWX z(Z$P&7;e9&%5*4HeTZ6WuzvzIh1R-q;^Z$=zBSfox|hB)R)dB@blbU?1kNswHVh05 z4r>#G1YIK(xB&g?(@A7g3>L2SOc~fzf};j}-$fn% z4%pvVNX^R1avdy1c^fnBOqG5b_1?g9=JCm1zRbMSJ3tL#eWsu$&VMa2YZ%wz($PtM zK&n7RqAqhpQvZu#tWWM-@(Cy)ezUTM9ygi((;_6N1CsddIx2+gI<>~q$II#l+a6xB zZqbrvT%Kot>fhN(suXg>Cf>A^$ z8O*tsHa4bTRphLZt$%B>RR3A8cpi#i%5R260%@M!t-P_mgv%LrcG488$!XUDu*W5M ztVYq{)U%zgqx5x|N!xpeFoIW3PG=3j+<)@D-Kgxx;YGu>;9K9F3bG9C{khJ){EyAW z>dYhvfGyC39;UaED6CDW{Q`w-3BYZM=wuBJ-x*bkV@yOJn12>X8{OeHx?}2nts=oD zyu|aEfq@||E^ho2`hoKjpGm6__OwYTPV=3m9eJ;T@hl*NL%~b2eeA3(Dooi2^>%Zv zE^-|}R)$UdK()3)ZKKS{q^>g@=gC+Pb=SWz2%gx>2*KGY<=qGpxX2`E7Q017x}Q`u zK_IW?rgWgOaDR>5A0j2m#|>U$u3rOg*7d{x=MNqtO#lgXLbZnB!f6b0@wFC3iWd#q82 zxMKXMM*hl%TVJG2ebW_32E=F@eIDx<&htyZ>+9=PSAT>|cZoqjoG)=eHEZ*wDDrzv zc?RGC%>Fzdlj#!D3J86zT7yhvdnkJu5LZ%yo?04-2}YZC{BwBp8PHj`9b z+X*bd2!G+pJIxI-v$Ls&b|gPVEV_4g|785=n6D)ky4|lWa);Vl?1gQqUkj!4Lg-gk zo0sB<>64;i_$3EDg)Y(my`FGN60&!9|K=Kel7$Xpw)NPZF85k$B>6z)zf+t(i@n`I zE!ji=C!9ouf{y<70~vLNFNa)&cm7{PzekeRD}Oj+<~A`HjB7|0B}^`Huw?}|>pEBG zZSy5%Tyi&a{GqPKHKlnL@>e(a@sXoI^>N$1ag6CW39H{$7xC@ zbfLQ4Tq;^5+p#Mc_Zn&G6M+)vdJX+8mJbZ(&7SC-ZV zJ?>oO0!&(+=f8`WRO^b$N(dC1pz^Smcj$?R!fgMtkj|7CWrR{}TgdgrCxA$H_J8+_ zfiD&pP5vH9ged@IHSkF8D0&&@^6|UDu4r=&{jwM|rJHFrYUlJPGR>P>YrWEbWZ$Rw zIyhu?Q)Ou8!>Z#t0j2u;rj(SXBZ(`sJ2G>&yRLY~>i+g+O@59Xp&h^T6(1(EUYKCp zNezsgQUxigt9*-IrD#XDRbm&89dX287@d?m;zFx2q!E`O!^{fouL zr@QE9-k8x=I}RC&6USNH8oB(traA{T=ayKC@$~WWIQrZ3d1$0PqFFDpJx#~{Gn6!>Dj%Vij z`g$QJfws2xmLj?78*) zEWu+tT`EyKOG~b~6&q{o&oMDE40#`mryM4C#FEuX`pMb=0CRIW#Izv5j+2w`^!D|^ zz4uwbV6f?dk~xtc*=y1dZGe$|*L#;1VZ|(SHg8kB&y!+xg~4;+k$>{hj8D_4`xApt zxvzuelUi{o6zbh4*}oph(b|CXgThKYsKpzQXAApB0rSp)y%uL zZ@u0vttn=9b|Hy^-H&`i{d^lA=~3H@Z+wf;Qhai|0zT^!+6Oy+fFkYGh%YHE<>j&t zy5x2e&zk!4Xvgiw;mWM?8N#SVft<3x;)$)Mtw%(o_1xsvP=9(xMn)%cNUpr5s%rUL z!H>5@u$Vf9{55h=@zg?l+b>SBmP)GsbJ>BAgi>jC(wvq)DXl(>gD}%4&4{|1eVIbM z-OlkDCnB6a70W~Lon{-^b8q~(Ru!SVb-c)#!c;&`xGxaiq0-QBe&NV_25+0 zGn`4_QKO%6G(c;@7QXg7)mt4dB7M($Vi)B_POgF9HO@z)>gxfo z{Ag<0pbVKG2YOXA@E3G-3&C%Ok{LhPd<(65_Ck)fu3B-=JKvA-FC0U9{*>PMx7X%I| zL?FNeKudCN|NC{%03coifRvMH_b6AWe*r z_)ai&{rOM5RXp1>djB~1?$uc^CEkfY3&MpR1E}yW-{jysL0}+%cm>xN!drVme(H_w zFJyXnV~4gAlkh0%xOZ?hIo>l~?O!C|=hwdxCl)TkV9DCO8J%80qeavc*t3%njMNhj zJv)jRNaQU6JnG*}y~UJW_gHt(p%sSqL#{u7xS$ZiuDGSaS`&>KE*4U^gf$enPN_`B$s3s zlIUgv`1KCNzNl!TD6Yws!kz=)LU&54Z34dvJ#r)a+9Q_dQTT`hWydzsDD4|~6_L}x zvAr>gV_;s?-o{!kJ(on2pmzYHy~A+357x^~kB~lT+f)$75l2ph+36l2$LdVd0J}yv?@*3{pYZK=SD7KSDBqyz$h=~fpdEi zL~db@Ox;h(Eao+P?@mF0Qh3*o6)-g#ca%58o!`WN-Qht{!L*j)%_3O~wx*uYNB2uF z2uV1!D|FWC>0EBH8JVTcF`T+_5LSd+=U_*n`G|ED@4{Tj9gK^Xti=Cx)Jd>BC0~fg z>)|x8r)V%vMx_q8>^-`Vi62K*oswjYYLjNlWi84z|1}5}$FTSYVWkJLZ}3{3&t?&c zt7Gne>C&Jt4a|WqnW74xFN8f^>&ud;=mSMGL|s%3_0z_jMa?=47R$iLxt19`sAq7Y z5ueXB+(6IPs$;K??DxQDIivQfO_uxsf>xi5-(e+w-n%=e9WTer*d_ zDnnd>yTBfMfsO0wx3PMcXsI?bd%C)z-BS&Ju}zxR1LA5nj)8n7JT3U!zr)XwiJ#Wo zO8yS<`|$4$~A^*6YZ6cQ;&GuYb0Fy&HPgo1d+-yCa0Tr|qou z-`}zS;Rox|8h)`}pIP?Z@E7a#t@W!l^sU!d*3_~@207Ztzje#e06(wh!#CE^o%Qa2 z=i#w6I<Jfr*D1Y!MtrX>ka@q&Gkh7IbXupz`uZfBC7T%S(|_eVp_LO905?{YJ=(AdJ(9mJ65%O7KhRZF#O8(Qw%J9(aQw zNs$sqVc0~m9OQdD^pX5sV6EvFHwwbT8{*tzgW0TUvRA$vH$#m`Nyx?WogKQiAA`b8nN!s`?=4aTU@ z@K=WngeB*EG?TSo%XKWM+eaevTKlh|;#$<}g?+ zY=7E2SiqOhVSHDsvmvh5NX7B7jGgu_c*%=b!pci!3TR^H(VtFw0Ko)Ro)r#g1HspvXZ!ev=qnabHhf7RLrw<-1{i) zer$ltcziP27NIP2^{EA$a$cb-0kGc1;R>DS%rxaCz^s>mH)kjPx|R)8xIp(E6vqcu zOC}A=*UE_t)0WHA2BlcVj+5m%z9~yC=&~QTw+9xNTWUs!W~=L(LH8S4oUh{LDn_sO1XjfR z&y^gf)EC>wJ!M(5hHk_z-7sOm>+<9uI?WyI>xR=Gfo`!4+%0E*X5UlqI;v?e%4(M` z*m}U$S5Sx;9F7GT#4Txf5*?#cIJ6@&-LebjTBD|awNSFGsjMN}sQ%obt7Q{KJInO7 zJWAP2;;mZc-d5$cnWN4O`+84wBy~?!O=s`g0hL!ootV0*sruA>gvyUs3u!xzAN)Vo z_|;D1cN(9&RioRDF3YQZUM%(sw-7@RJ9MXNk_Iu}AKI~V!vZvJc7X!22qoJ`;smt` z@FaA9=XC!Kym5b3ANA!x+XBQKC@LZ+`pH2Zc{JMzF@#^6iOYeGRv{~10I3%1W3wvo znhf?T4q6($3B2j~Y{rZHa=jCp?Q8{0^Jl$-(2W3#7I?Zb-P~=Vil$i(l63O9PsR|> zwm}0Vpo^ir6)sx4o=(SLE8P1@@XqGv(Guu?_gLs-c^=Kv1n>Fzjckq!#3McP|Hb|it4g5yGw$m6e0wE+68lO1yGjV zVtWIPX~CLiC+FN2G}%d}w2>9gX`EBqi`j3&8Fy-&RR~YwEP+{>Rc$;z32i@`VeLzQ zu0~L-kHcPj!L{ubTGfQoBbH>KAT;?mB=H>~{`kRnCNz0gT(pn;XcZD+iaAMG(I9Gb z9U)Ez5S}gUdl-KK&q1M|*GKQXA+4xoOqhxQ%QBgR{67dmaj&7n0GK4+W=?RcNpMt+pdFUDfC1 za`iw5M(t8?NtUp-;&tyJO4MgB$-ec&Wn7Ep$>@zczj<$?%-G>AmP_h+Kx#yP1p3K* zrpy@hk}eK!+;G_w#0^1-lt#0tVs^-_}6sT_RVlS~Z&RruJGG`uu4POD#& z{Tf+Q>H&^}5Y#MK`BS>V3F|GH)94_^RT6NTFG*W9O@V zDwup-XO2y(=j;pBb4eEK6@9J6Drmc+z{j49S6aDVxT3>66~cW1nt?4_+BWQu9Y4jL zUM85!Etn&=GMF8mqTObC6j9s^?c#CvkpjJq4hF6~8pf|bDBDxe3@JB;S13p8Ws2Utcp@XQN_(?YM%!XxQ#ZmjK<&uP_?!tvob9voo zbLO}a!CeNrR|nfl;j`6!MqIq4l+~0b!pfZptD^KPvi?F)O*993xiq{?Sd}B+7?rko zQ7FSdG?y`I4b_ZHL=aNJ>aFXq3HfBr?!WN6og^o;Wc7sW8yfM;PWE1X)t;L?xiyMujNkcyXdeuuMv`LpjK)Q?^svY?q&lO|bG z_T+^??&HNg>=&LveEY2Ke%c*GUP*KI-)rKN5LTY6ljL?BuE_Hjn{>el3MLdvv2q+hB=bGZ1LaeH^06}*Fcx~4EJp~A<1)d_(l_0E8 zt4I(O2!Z8)A*$pUgX=&myQYZ-rEPzY=pIMX@0sg=fRzkYqtN%B)R&BbT$}@}bG5(# zt4pF*xcA}IzQzP(3AETB8~n_k7jBDv5&!CjE`!!#c?!OdKc%k$xt<#r*>+y!(J!w< zcUmRhhx*$WUI0GC`~t(rZDl3|7s**I&)q$uB(o1Zce%A~G zo-1%i(#3(HDv~mgHPwW^(moQD0K`b2ijt{|c&9ubG#lhQmQ4VX3qU4d01eaU2_i5d zhFINy3<@`tPnlZ8UQz97F+SS|rc#M@_(hR%eUiLk<^m6G=O*po_uv2d&jg6R^hIU> zim%uEKB1e+Q5Ep*YC)^3lP5}UkYWpV@$h3&ejk36OWzfCkqv;WDlItn<2oUQpmDK& zBt1`?C59k}KszDJH-BJM9A*#8@%bVh943!^)lReX}feW8UcN=D*F z!TdYHrIb(hjZ!s{B}Er>O%)UkoZxFvB=WZg9TvSi3=Cm#jC2YpGF^l#;* z2*L(_3J2MptFm)dzM-p9P@Lp=j6&no06c&3hk*X!5!9+M?lL4ZFRt8jz4$Bp_7vi% zotfI1shyeHMO6RZ5tRfYBMb~dF;wY)FAb=ON7#W}X^CI@o$V?%hgF^S%mxZ>CIakW z02hYY7FX$@X+ZwitaQhHZ*PSTX?LgfDbX!m}wj(7~KTX#jN{LiYkWD6)bi zd=0z&!uGagma^iFZ$M~61UMOYC=CVTSh+)?4~K>n^ULG}1`KsMETM2`Zp{II8+i$a z&&+(_xhb?>Bj(gl*&#dSYUnmHtri)TR*O_iw87(R9HaqmO4Ir$x=}r7Qxf$NMGj8jk8fX1 zoCHF-LU6#TkKC-L0qciMja6s0Dj%otvsfEAB@qnr*>=F1MfDA60aa|XmmYfuuFv8A zI?L5Npr?)i%L%7Xgq26k83pUPHxg|6X5ljsSMX8@8fO9Qqdyno8#kPP3e)smLXN>a zcJG(56&<^LJCU~pdz)Fze9G6s^6}&Ff3jt>u`sLyXH8lZrs6rkcvXBUqISvTn7R(O za+et1C5E43Vp!4p%AmLz&C9kZ%Af-K=WJZpjl4^-- zrasg_zqQ{2P2XnPNXJSfBLf2QO#$A6KZ`$!bXY(t?Vl$Z1_bizQz&6#836iPBg+D$8H>lpwd^g7^d$_fwU|lcyzjV+S$8q(Q;b>lzTC}s ztN{Kwj$>umMz0Y}NO8^Exs5xw@eg(z<(6Ra^;&OJm1TRD?AucaA$LY#X9RXe;4wyE z7dt++!k~dE=mQXcEk#$J%!?M4C?$QR-e^1-N$QKHWOnmZ02~$%b08KAivP5F=6Y;*e#_2pc~X8$+fLW*5BG`Tc?xmL z&Iaskz|IEjVwbIAml80ZnTsb_7aroxU)bfpP^cqo#z2sNb?vWz2?Bqnd7LjI4X!~b zzmW7bh~_h~x}EE1h{?%eI@XY?X4}bO+t(Rd?0D8F`W*DFdXQlbWXKsP2Xe?cfh-3y z;?*t#0cHpDkGm2ddy(! z32{2-oWbsY2R-K){RB)~Y%h`KMoU?}uER!>q$*n9? zL=MY3tT81i_g4!J&ni+qCH}hx!eAs`H(s4}uS|&d+V?ng@b_2$7OdhQIWbZCcHBo? zsmm|M4uLt&P3^Lig<7)4TbZ)1@y%Pa^xj{8o>WoXI~ZtxbNw=s`(*?=VI-NY80lJN zvbCMpd783PYL^3|shniWmHs)Tkrn-=u%}2ZO(>N#1*s&L5wFmx>ts~3VKQ_?S*r4- zmNTV0ulDm2%@glTf(_me=1>V%nk1N_X((khyCJ{}h^h$kiaZfPqY=T3+4vhM;!A;l z{fNZos-~2D;|dMTZ>2(tuJcC9BwVV~pjy=*z?}C~vsUGb(mkk3_v7SB(mAG{vP~bf z$`wOtbGcfZN8aoGh`>PYBsW-#yoG6&)rz4gn%s)cY;AHYHnCO`^tLrXZbxWS^6O3H z*SeA4$kbNmy}i!xSIhFd8Mdm_B&}wDqp(l}%*rCVAp*R78bhGn44aRofX4gD2a15+ ziC^-XU)*1S$ziK(j4fL}~>B=zn{ zKEnSKYeuM*0z+-{O_?@r?kRSZR;A3?nh?g=+N)Re20}1T!00x;t|Jc0QA(YOsGiHi z=g^>I^zcXf@*3|a@TgG(b#GloB)Q@UY>GnDLWY@#{OAA!=sW>~m;#Y4g?R#qN;XXb3OKpih1~vApNfTb}uYWl>`DN^b?~;oX ze?|*9-M~Ni?*9O@?K|xq4xy|4m8=~A00EQ$02ct0?}Zt&B0LTOe@g>If0ZqH-0hJf z=LQJ)CJ0GPOHiJ+175QS8U;Ds*{F?EmNOE&z^3G3CL$`jz4z?^zlO`LpxKtkk&O<> zR7S%hXM6hVAj4J{G?t^dc>B}E<;S1sE;II^iHs<34O|>OQ?81r6GU^wPSy@ZU!u^(fQXOS;RPM3nDSMj~AGbGu? z6g43(16Zppe+4V^70j3Zi$*4OB^y~@O?d=z_I*oJ3d8E`V1gJ-zpFXa@j&3wrshLl z0JM}umKMCo#%WGBN-puVCp!Yx$&B>*jWS?nv-Zx@tPM#{#6TbXUMM{+7S&6o%HWS&GI6ghVNde+T)2!!!XjKE z=uJS!fZD6$AZI{7n2FDdTyesr!2rhD$$IN%Qo~^CgaK`^gB4Rzv>CH+EGtON{y~9{ z&SB(&f0AU$zjJY)!D6-!N5Yl{Pf2wqKjVdklgbM;bznjBLZnsms=roKjZ8Ixe-n^d4PO0kETAK3OI(TFv1@uRslzunNzA4Go_t+3%Ul&pgzNK7%X-Tz^wM# zIjnkQ?2hVyQ4i{2E%`NzZ6c$WnPObI_Hyhme-+F$Doq?oSG{}sLSj#1WW+0$ zu3vWGe|3(yP0`PurU)k~VgHbpqG^zh_$_pwF<$RLDj`Im0ECE$)+ zaUN5WX8r7nXT2{rK;o&GRoLT20KLi5s!VCZ#bZC0fn%}r zf5w-S`b2y^OBCIw7{nQ^)&PF@LcRsTe%R$hw!eDBj=%)wASKeD^*{%II{Db;#&;q znm`CPCj$P2Il7`-vIhqmT>nA_Xzggge-~gWL$L>Ca0`kd1}7D5f04VKPQbm6ImsdP zD-msqM|JRP3f_EHPQ`&25ie|=JeoX9JL42o0ABf9NEn zn|xcBP-83=?Pa%tCuOMGCh?<(9Vi|pH09XrLSNUDmi9{+Y#bvop@gFVhxu-4O+U~i z+&x-cZ~1*KP4vN#l4;e?-5xLzm{$ne5#{uFF&MqxG7FjHbC%nU~PX0m*D}U4<|u z;Je%+hVGYP7!$SzHA$co;AdG9h@g=IPvwJTnv z5fPTf27Vb@5bzd7-7~X_Oh{vJ^;SHiR|P{!_0!j` z6j{y_Iq#-XfSFzJA5-#oe=chIMswnUtZ4kDU=fX4$LeW4oDJYZOv#;ks!#VB7t1*q5(bV86@nX7Am%5b3t(&>2U{Ad)OyNOQ{or< zB3EbT1Fk%yak{=GsTX`MFu)W=8Y+pZa4bVmjVwsIp+0RaD2cA2rP;e^CLd^TH0yGqq^cJFfw)7qz z8Xq?>=BE15-@zQ9fs^p&^?0)JDd8jBHX4>N9k7XAEHCEDW`oG#81S zEyn<~k3*wnHckT(dN8xx$Q%Y!=V(hyAG zAxB2!XrD_{W|e{(M$P*9qJXR6p#_Y-wte)-H3%`me?Tg+b_tu1ijboeU>tFRYH90h z%6=~n0i>fP2p?5|)0i3u6Be9H{{*z}g8p7G3{y23ms6QxO~RReMn8t-89XK{9y74J zi7k7i;=w9@3W^=}(pHL~v->JZHlDdWj0U(gj<61LjB0OjcPd5zm3@;2BP*2Mx7*kT zQ5|Def6D|l0Va5TI|XC#NBx@Kr(ieG-Pi)NJp7GDTPS9F|Ey~440JWA_{~$WW#!r} z$0dw;^US^k%R&kaowwhi6}y+93J7F!ZcRd3PG&=S+5J9EVirdjs>PIK)U|dikvT-t z*IWdFPFR@xJ7Ex@iN{hIGpRP}E~?E0uzZ}#e_&kguX+p(Y)qKLnwOv>9FI&18TNVs z5P#`o8CbW6tna7Mg6;@2umR>2aP(HlQc&Px)X%Q4zRNOY2L+)vUB0U!IL3lTe73G3 zXEKi?Lz$;iKzs0orn*3~qGFTI8g}U=G^x}l(?Uq^3i(ZaaQ!s}!IFLnOvz}E1;&W# zf0}>5qYpc2HgU%YmZ40Qc%f>SL)vuNaEMlJoDRU0<|vF_RBpL6-Q~Wc-mQ}X04v$$ zBys=;YlhCuEy)W(V(>$O6P}C!@eH?^=%@nmIl<(I7jgu)Q*u#o5~1^c#vB}a-s;`aPP|p&yA`~ox z@SyrV8^D56tU3(8$^wPb^S5oX4T8afrto{@ZUcd5D=Z+E8<*}_jEfL=#^YI29|flZPC%J1hUeGb?{XLYO=m9L)O84~Q zg9~tsRln~HyDbN>2}eug2d7|-JIfWUOh)(+9m=8zACj`B6nDbhL@`ac^Z}gb0ynlC zuoK)k%1|?s z^}uK@(!i(tIwRm%{iEL%v~_!al&okJsr;C@rsz3Qi(7(qbJ|+lFx)P|zk0d^&2++_ z>KG^=sM(<6AP^m|!BLv6e}|YY5M}8WiD8AM8^d~0Wn@5V^su`Q(`gh3;g&`?u8qnf zSn4(9PDV>tsw9lX=T{A5rXGC#xJgBp!q`f!+R8N||lyutnZS*T7l+Uqr|Vb=2YnG{k<*S4pu zGOkB?K9(p6Q)NAa7G>>T)gOJ&FJEIp*PnWP0df$H?-}UJfdsse!A?Z&a5t2IK6ArW zkt`TkE8vofgry|sM!1DK^M4u1%o`^6%) zG?cd22vSOls>{2M$;JVSr6N{96pK-~wUi_xtz5(dD}*|%D9hO_Q02~sS>T)Spw}|m z05;Q>YF0Ts+4_#9p`chBLE^g=eq+P~=X{*#EpzY(U;=C^K(65HB7c>+rA!rYe`A^6 zg|eLnkW+@ap9KY7BX>$wf$)3N5p-qDRN+d6WYKL>-47pA0Gr{Y%)$iZG z`{1F9Fx6S?bm?8CZWhb$ploV->XWCQQi!$wKDj{fgR4SNuiG1-Ah7Lmx}YcsUT0Bs z4jQW~LW(D@&&PUdYkvwah@XtPek$fD@oRJrusBJj)9-gSs%-E(UF{kDaTX4$hbhG! znCuB`MQlLBDq++aPoRLCOUk8x9-R?PPpMwK5C?K2C>T%X`%;ZXlzJDGI5i+lFhd%T;M($5u~8?(@0jM zlF)jPL!;s!t)s%tin!4UVCG$#=CUQh$JS9Iyol=}+8nes6J!l_*n?8(WrTGLW_Jc8~$zQ+;I30;MWN>>WSL z$x`q&&(aF*<==Zb_oZhqEwBYbwPgX&d;As%{?SP7h<Km^@Pr`Hz&giQMRvnLU5Rk}I4;$xGqth9Q{XTq<~g9oqJ13`PW9*`%#tS8Qi=jnlG@muXyd zYXJF1qNCnOyKknlw^6LhJ@o0rnQ=kr0#%vg%rkv*yMDy??d8!H)D!O>yle)cC+WM3 zx1Mpa^!RqWMr_>LG2i(3^3xHe_83{7?9jGYoqzt7-?xQy1`_r9b<}taROosQ<8Qw< z!rGA~&GMbRdC4D9Uic-I6FQ@3;>~&d7~uUb=;YFK+6}I;ZUbietX5T4<~mHz!YZZY zDJ?4Z2xJH5W>LicGoq5^Cl{bLV9h4l-o~*- zbqrui9>&o`UP9CDy}K|2mKUqajFX*a9aNukM$X%jf-V0sikXa_@p@wTf8xfP?U4Ok z^wX5*@rxCniX3xK^{B1 zEy*Dxyp8UWOY0(A1GiB<_OM-K>woYzxDaT;z78H7(VtqH zLowld;i7gs)R7{s~A;QL+r!g+clkQLlN(%jdGh1rO6C@9Kn;pD-aKY+ zWiI3`umFxb!q#qqOsjif!P@HEEI`NK&X%3=ZRcw+a&`$~6woPnsed3i^n;I|-V8py z?fi59HW>elEzWIhJd~Tc4nGGSSC&8G9374VyTW8yzWjrWvdRxcRF;u++KxN4W0nEc z<=dYvF_kWYbX-@tN7ALOlo|k6k!@{Zq%n=@U!NpffR~n9GqTx$FzL%?0u3 z*pd0Ob6~TC)xh2z^TWBWJm&M-lyLFCb zk;;B!c+`M&Xn$)jkJ=^O^SSJ+sv-2zsHh<_B77T|4*$~^6oy|dG*1&(y8rIrxhkT< zQWwvmR>rqktKib$;5d8{yuh$k`?irjRC^MC*ZC@Q2I^U_^DrlzL!iFIg`i?`WitBU zW$0_2FJ4~0eE0I_m#<&HwvhR{tfNcR(F5=)WU$cU0)JfyTxc(^1SR)s!{X)g3g?vQgCcgXF>gOi+y;d%01Ny6WYJk{txa=KSAI1c8cFs0IoaLiOikKkK4_Wp3FMR{D6J zu=1qk%vUuA{rRO!IXB!PbRCrgF*-SB+mX67iRDA7afqbtjDa*SQyS>P87z03I!RMx; zZN9%*PA9hGApnBEjLVaUu1ezlO`gQ6)Y9?X>Ry%{G+!v1t=CqRa-%}s+P1eoR3y25 z0DrALTPL?79fBLLPfNxyEnR{A3MSoJhMtwnFy*0dWQ-dy_G=BT~t>J=207loF zCA56R&e7f4^V=4n^8IZy%ruNb}x^)|Ybb>=!u-Eu&_(xf(o8hD* z!-q~N!@y41FjAq9k*a7kfsVJ=08Cjx>0v$NjgOB1nL%t*y=eqaeslIb=A`+C;eV0i z5DZ>}b5(6??xCFLe}Az7rJ_tJbwV*0mGfOL-6XhOKZHP=lBXH0+6apu-zQ`;>a5! zOyGvW(^h!EOv2h4yvnv|hv)vA_&#|zepXvv)<%OZ$-aA{S z5`FCcx3M#EoXC{Cg0yAS_N?+;OzQ@-Zr3b_>G2YkfX1}_70m|lgk(VSAAjFjsve6+ z_}^Y#bjp7%i+weT=Ve&Hg0Ls2HWy;qhv9>Bga`lFAI zvQ-j*#aQ{W5$NR%c&s|{`cp^$_ui@j<&kY%NG0ZlgEQ0NM6bJ|x+zvwUdbC%A3ECt zOpm(73E(<|K%GBT=lxAoXMf)oi}BDv_;z+{Nn$AtPL=ELzSiJRHo(>@eeV=23|OBd~5LHa5uJ|fm42*$rCeQYHiuEl)-N6njNq1 zUFZwclqh0vslYw*w%dBGbOwTFS)df#Ei8*sWV)E&N~ZR}m~9nof&PbXCu z3!dF2>4_2Pw7^w?tjJ<19Sn~7Jh3dG(t+7zcJi(v7O3Q|Pmgq^R{Fyu3(R38C z94|XGJkfcAU)IRh>3@`6s4{(T{3gU+(Pao3&P`7nDYi$`$d78*7b}7cV0wd0J*IY0 zlhuU+)+@=?VUJ(K*?N60YT0}BxC`!o%M`Nh3W5qlZef>OdcXb8KmA_t{NMNZxBB(p z)Q=1GLTCfow3|oS|Hc-^07-m@C zQm(-(O$5dz=8km^z(cTkiMDu#gli32UTtVkxz}j};0-W^W9jGnCBbDBWCJrpB@Ba#Nw1ISp5LJcYFy74N-kDPA zr$kgEbCDqAAq4JRUVM7l`T4`;%g)8+C;0W^;@#U$DZ+;_e120|=-yxc53{RxD+~o7 zlqXJNliPz{0h^OLgh~RN0+Tz08Vp{xCstQ`OV0h9m$7XSbN000000RR910091z?uA4F-;*+}O4^-q^OCY;5C+ZQHhO8ynlU@dWqxzF*b7Usv_{t53~L)l{9S z=|1U6U`L5y=!!Dn5EvjJATS^-PIhv}%s6TW3Fs^UMV_rN2+cxs1x6O0qWcl{<5*Nn znGK%MzMWK1yUw?jTxYMF^ByiOLXYEXp>yR(j09p)LKwhvov(vJ{N? zLM--&RIR~_bSX$=>6Lt0*o`J};jwD@h1qnTQOza-hf44&l+-Qhk%|TlwY|(nWNnb# z;C%#uGc$WxsIkS_Y7yB5gEOc0N?zp!f>US#7}DThS+GDrb2qy!BDMj-QN)J-!AD`c ziTJTlT2ZBCW_|=u&Wys{<;Qmgu+ji-l@{u3jmRoLzH+90x0ZNrZWqmQx5tnTDFUv6Sja*$A(&_J)tWop8n)xt6Xs>JJ5IzNxh z#yz;p)&Ba1*=|!7=s75CgUjq^5jF@2bW#jB0bs_%f*s#rORz8sEvKFwRXyTNok^*v zjkvKes&N4r8Xt^Oy;DQ19)Z?_uB7gwq@j~juB7prw_Ekob((#;&2}ow{W`tX@t8CB zm5f(WS0yhsD;*maCQ(sQU<{M({j(_*5nz&`#f|nmp~E`edw+j_?yKz({aB!WaLB}N z381RP`ZBkXgY4AO-!nw8hx_9wu^_-%-k4C?lu}XLMD3PPaXTSf>|_<77+SznINbkX z+|5?6vpP_$ueYG*C9#6ugb@_A3awz1 z*2GpYd8^^LZYI00i}E5}A}0IR5|A$W>IO8;??eXjHd_WRSU z%yQY|{eAAA0V48#&>$PaH7g6cZ>E>H$h78NcI&nuE6q~a!X*q@!+9Px1B7>6bWYiU z5B3tjgq?mb0#)qH!m19oXGa#b+VE{WHKZ!-3X)H0Ez1wQ5o?2sGR`f{t=0jNWxv@1 za@WSc`LCXHcb{%AMgsIalgLt_c3EFoSn86)XDL#>^kJwbX{t2=ZC9W$ju!Xi@zL>n zi#yKBd;#Cbqll({MkKHsfT2YvZ|6q~we#6uuUGLl0pUmlE|Vs@(D=t(!Kp8sCe9hO z8U*M;Q_i2QGHV+f#u;94`?^lA0I9u$D_H>|5i-}#pmRP=A)=NXMlpvqX7s42C<`fI zd{#QUS1qVSl15FyLckZ3b^t7RCexIGtf=iJq>z)_=}qTno?lZasjK)82-yj?T*y^YV68ZtbW7XC~?d z9`AkNjI5$Q+N{Ys=7xtyLP+9wMn-DYUqjuCe-esk@iWf+^1fNahv+U%aqDRe(=DsihP^37MImg!cZbd=CCaxm; z>XBq`R|9^VC58=-OK`Z3$?49|sEBZA_5H^}(Z5ae1RUzetIz#1tYHNeTb>L^JK>OU zMh4(W6&1RrNpM1Fmht599E@d4Y(-O*H4Oavu`bTju%`4dmzm(Wuo-?NPG zvGSr8DREQ)*X3o+HLmAhdnus@60gv2uYMJb5DTiOy9=dtQuJ-csHtsjdMQ>S1o%aFxDAHE)TdatZe4wWmUE`CSh3rw{04 z`h+xLWaG-SZ9imeXUh~$2zHUOETU*@NvIW)1rP540>YjlWIPfotk9i9;LlxVeDxLG zmmU#(6p)2c<)y7NvHkrO{8ngW^oYmg#wNB1%c#jUsI04L`5K?KcVXurkG{S>Je48? zHnuw8NNg__ZeStS)3U>m292Fr{qNq24pJTU%h9eA^?nHLg-0CVdFwC-nwHa(E}Ds4eJcta?MrTy4Rm--{7hw ztim=i93^PXHl@%~a#t27QX@ZLYUnkWz^`h6#$gx7_o@s_B79U70g)S)Hk(e6LoSG; z2Z24Vjcr7>VxWuPuIX5#RLF5aoPxY~Ss6#Zq8rG0?OLl1NFmh8NhS$N8^=ANZ>0*A zR_Dnw%Pj2k)?+Q>oc8K38Jcv_dMTH+&}SE=@a$|s4m{0M`+`wK9*AGZUmN@_cEiJf z;0q@$UsRunzxjeKLn3*3KcF$Btsy0x*m*HWFsOsib{P(o$5IIinXX>DD@dyWn>8DK zWo^w2sg10Du-KSwzFLsc(i$v@KfE^SuRi!W^g5*zw)PUyq=#B~-N@ z!WaV_!UfI4KN%fY1qupv8x1Y1ix3KNR()@T{i-5GKxP-5Hb*l$XOIBJ9*3=RN07Xi z#9n5z!6@1}_bjT{K#cL~>b(+MgyTwqV9}5Tk_WC53qupuwhAUDb&de!UmJda(B#+s zs-2XaTv{T;ot%n-n>zcx(15_XY9Y|7dtSBHvo+~G_w$o+WZ|!0M$?lj}il=n5o-z&>M`i|EWwZJ{BamCN!0c`)Z42h;-2( zYHG#2xLyCTj1GhI*EMGLZIvYe;Rco*b`wH@Q>Z9!=q|5M2nwcn2^ME#bu`~^efQsf z)JimK#MVpV3cY(#_{datcO_StLp^&pz}JAoNvl#Cm^QAnOarGSRY$k<4MrW0#?@}7 z+b-V4?V~0+#$C3vs{>_S^_OB2QRe}B{umufHWOU7Z%02`uqG7vKMk`0OZw<7U7%Pv zSg;jkHrmxQR8@ZxYHUWFv`-rn+oWnKjHdRfHXGMrem zyjoKMf&#}@-=$FDYXtT1zmD`Cgt{h9F7){26_2p6{i$}B@bdX|!MYw_AOvTe+F>VNrL5X8ov zJ|gWXwc>iLnHKTq&1lj4qdUMpCat+jH$p;l*Q0ktpsX@@^5q49pAsg`!;_4TjxI6a zd1(bfI>D@CRatP5Wk32<*_Tu;q*YJ=YKL_+%M-+aZwX$dm*B$T>YBT0_MFS50a{&M zJ#AxCbsjseYe*+d^*7~#aOx@}rVCznk%z5@4ZRLf=n-9!x6$hE8nXgj1@bT1SdjY5 z2S>gy>+I%F`#d9H6KP1z$A8qM^o=I}f(6XJM&?~^wO}~TawZP>neTRI{YGYX^K~bq1lk3aMwVLiem zx11}oF(hSFS+kUQEp<2iF|d_Kf?c<$&j1Hi7}*#-`77{w1iYk5e=FY`Zqr@R(j@Fr z49Nl)-6tN8?QrC!eHZG_n7`em>j~I=%nl~Fdc+xo#YG`C?p?P>h$6VTUY_rkEJ`~J zo)szC*i-;m=xW`?K9;@Ayf8+V7-e83MxIh+_7MEPHlP9>V#JS|kT6>~ z)h+FPXki?Leg?SVJC|XXq#~fFHRf-gcN2fd)6MipIv06U@L_0a$HDoie93)M z3O1-VswYKd{RpWeY?%4DN?Ky{N1uTvSq;E}N+DTf!t?IdSBWwTW#$#@DZiuw0(|nG zjC%YJxBH*6j!*ClDKaJ`2Y9IO_HEuXB$O;TGtn{Wu>8c;i88^r;o;#+XUZbs1>Uhy zNdGf3qpGZ}XoHnln#EBIbJl2&iGLx7LU#ZH&j~_64|``A)>I?oWtHf00=+(HgA_nr zSU=kE>)1xn*PdI++?t38`p_?D8W5O5f`3Ko&PX{nrlGT?&??Ky%BonO@a{>Vr5GzQ zl;PAW4C7=ukx7hU@8E!PmP3w+sijN`4-t6Lwl*=5TQUo?-{nqQ+MAyZ(st6YGWKT# zDx#=MnNq!B4g5%d90mF)gG`t7V5gn1(nP#2EJ+VsT#~%oR9DE*O9re0KKt4+Rrl6{7!>;H$QJ zU;XDLddQU!Hi2`ygVr>I;TGtfm(0`v2BRYoug}v-oo*pNMaeam!(VxniVA=OUkEfo zKon*vDoD>L5BhQwmJgj`zoi3hIg|*ci~X}*-JZpkeB` zd3Eh~A6opdsw|G+QijQnBrJeP6K}CsgbqE6dgEJ0i?+3?_xdQ}lD@JK%!sNGcBy;z z-$;ny$WH%ou?`Yf8jP5gGjB%+Vir)Xp*hvQtme@+t&e3lyJpHY3z4XHDZB=8N+;ul zBUFtc?nUw_$l%{JQuiR{#?kPIIo&;VopRXT*Kkfvc0lNut(-RU#65r~o<z_q*u? zL(bZP@2W$SNS&iFss*c^-D5u{jjejt&{+0q+sJ*gP&KOWmGM_E7gdOld*p<6_G?C9 zEUdUc7#Gn~{zAxOg~c5w)n%*yl-*HWAh+E!`Sl>n&!HroFtCj|^f0f!u!)F#SWV)1 zp^@rIhJ-6tN@w=CjS5hA4u-5cWUv0bvtsInwaapJNF>%{C&`?1R;8qwgRVKU-S=XG`3W1>D@IIU{&g73wd3^e zmSc+L+E6~MWgp)a?VVZsbl35GySG9zRxmE>C?zFWixjv^Ktp^Wz3y^jj-M0OCk@5mnS03o>S(5rn>fu))=Z+(eI1 zbMC%~t4CrHdt!5U90>7$@tP2A=I|X6%)3lma z)W>`BQpi>}wS^krdgyn1K?xa3O{vrOzx58p)8)VuOVV#kP;-X%)t_G3RXYuoD|tm% zLc}Q2Ib&B)=G%gMN5tf#cvg2=$3FhJNH)y58s}Vnq~!!O&T0~A!Y&!DmV|lKEP^VN z@=>S0(F6XiuD;$GP;sC$mR^zAW=j@N4xO!OZZK_&m6T|e1!!wyP*G9UX@4Gido8uL zwrQnj0POI$Me^rPIgeBdR63Vhrys>63oP|DzSo5Dcs@5oW1zqY;sC+VZ^91`sjlr% z+Hxc1d2%;zn|;u$^Gqvw3Cy*K8@ytIw#dGNz?qR zFfnO;(OT@+yi2*ej9q+G{**`ZlNm%r#BFZi`)+3lS=JQ$8@A%T*U|K}V@!?oH}!&F zyvG5M{Hs;?8N(aoFoef^)LpN1aT8T@rkf)hr@F3^B{Qsy`dj>RHIkI(DrtRcCa7~o!X zVlBin>0Tf{`9y&U}20qai1{3w+h{Nl8h`J%D&XBfkAfMKb{3H@kea2h`qp=F(NF4&lh3@^xTV z*sX<5T2-X7KmIlFw`6;AJZsz7XRofO28vw2e@G*nhA_X3%)z5Bb4On_X=TH4eo*n* z(Qx#+Wp4ZM1D?7b|Ha}&V}pTspxm*`(I^z8Te%tvU6qBFSFHNaMka0m3BdCz43=n< zKkix}R4}Bo!@^;F5^n9`+*z$K1V+)|U3%Q<2!x}BKG!W(Ij8Eq{p>UmExNq%S5;3R zAd@Ap5~V3JVq#l#1` zTI;FEBe*;5_`4b+{JM3?z0VjNpTL+OV=59)LIMH8BcP*7P;JA}n=f?0oCqJmFc%gA zBzuo$ukaFcYOdc9IaaC&3T|{e2`KBh?d+dYQ}vO9fM)n6Zi4sU|JUz1>40{Unr}^E zOl8V%IOyj&Wb|(n#$q|sTwXk>M}_AKKWj18MtuPm&v#90a~e&fL3>6bA|k*|1`L#i zy}efs3+h^bCngGvm0oFR>&!~K@=Wj8dKTcS+0D&uWv{SDM#?kpGfC?fwW<=7<~}TL z5;a)4nI859Oasag13zUa@;@K`)1A(a61e7J?cX8&T1GYhfzF zbZuA}SMHZbWUERS@1tnk!}M_jNqvo&ExWsffjB%Ax|t;-$GD+U^G_mPzD6O~4S|#= zf~zBS-->($aU>dUVh-Buw~~CWOqlW?mFLe*^P4nduU^5-KtLUM*x#kDjMvD~j^BN8 zO9SRy?%JKg!nJl))Pt?U(l3nwoLEg^@ za&T~Iz$v=GfhtE=8UM-Sf_u?{abW)wE{*A<8Q=lQwH#|rUHR7w_)cNvphjZ6GhtFi z+`18WfBW^p{u*=eGfw*PQ@Jm0q|pi39k~MsC#<)uyr@j3(+T+!Y~sV~gNECG$n5I+ z1p<?@?_eMu$YP0g02Op#l_Aa|Bc@FG7Z zYr5^T2PdW>1d*D^kTutkPZ35%%wNEskAZ4_oeS$=+A5%a8Qe?DUBdPTgWGaAfNV1G znlkM)dHL@68QRhME%YtLj9Ao>1X6xit7-NFEtF6E27t|F3g(){|N4i=?f%!v;ZQU- zEB}nyw!IC&A+W*n>c*se_jtLRkOhOS)Smww8&-y`Xi4}Aq3y;Roa;3ha68Nb8Sw?_ zKlYUsA(%IRN@$CO+gvp6N#6{Of(;@3OOSC72>S4q%lvdgEh%x|l)W1I(Vp%0A~Og1 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 bFr|Q`f&j`SrU+WlktFSi-%z7L|HJ-2?bzod diff --git a/matlab/simFxFyStage.m b/matlab/simFxFyStage.m index f268b5c..0684aa5 100644 --- a/matlab/simFxFyStage.m +++ b/matlab/simFxFyStage.m @@ -13,25 +13,18 @@ function [pb]=simFxFyStage(mot) %!motor_servo(mot=1,ctrl='ServoCtrl',Kp=25,Kvfb=400,Ki=0.02,Kvff=350,Kaff=5000,MaxInt=1000) %!motor(mot=1,dirCur=0,contCur=800,peakCur=2400,timeAtPeak=1,IiGain=5,IpfGain=8,IpbGain=8,JogSpeed=10.,numPhase=3,invDir=True,servo=None,PhasePosSf=1./81250,PhaseFindingDac=100,PhaseFindingTime=50,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=200,WarnFeLimit=100,InPosBand=2,homing='enc-index') Kp=25;Kvfb=400;Ki=0.02;Kvff=350;Kaff=5000;MaxInt=1000; - mot_num=mot.tf_mdl.Numerator; - mot_den=mot.tf_mdl.Denominator; else %!motor_servo(mot=2,ctrl='ServoCtrl',Kp=22,Kvfb=350,Ki=0.02,Kvff=240,Kaff=1500,MaxInt=1000) %!motor(mot=2,dirCur=0,contCur=800,peakCur=2400,timeAtPeak=1,IiGain=5,IpfGain=8,IpbGain=8,JogSpeed=10.,numPhase=3,invDir=True,servo=None,PhasePosSf=1./81250,PhaseFindingDac=100,PhaseFindingTime=50,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=200,WarnFeLimit=100,InPosBand=2,homing='enc-index') %Kp=22;Kvfb=350;Ki=0.02;Kvff=240;Kaff=1500;MaxInt=1000; Kp=22;Kvfb=350;Ki=0.02;Kvff=240;Kaff=3500;MaxInt=1000; - mot_num=mot.tf_mdl.Numerator; - mot_den=mot.tf_mdl.Denominator; end - - mdlName='stage_closed_loop'; - %open(mdlName) - %ServoDeltaTau_z(motid) - [A,B,C,D]=tf2ss(mot_num,mot_den); - - + ss_plt=mot.ss_plt; pb=struct(); - for k=["Kp","Kvfb","Ki","Kvff","Kaff","MaxInt","mot_num","mot_den","Ts","MaxDac","MaxPosErr","A","B","C","D"] + for k=["Kp","Kvfb","Ki","Kvff","Kaff","MaxInt","Ts","MaxDac","MaxPosErr","ss_plt"] pb=setfield(pb,k,eval(k)); end + %mdlName='stage_closed_loop'; + %open(mdlName) + %sim(mdlName) end diff --git a/matlab/stage_closed_loop.slx b/matlab/stage_closed_loop.slx index 9f72091335ca2dc8c9934b5d2d1b6dc432bfe93a..cc5a8b4d71095161db267c1ada97578b91758ce6 100644 GIT binary patch delta 16056 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 Ra$mFh