From 408e3797e92adbf08345a472b8d3935dbab44427 Mon Sep 17 00:00:00 2001 From: Thierry Zamofing Date: Fri, 9 Nov 2018 15:03:00 +0100 Subject: [PATCH] work on observer --- matlab/StateSpaceControlDesign.m | 4 +- matlab/observer.slx | Bin 26153 -> 25674 bytes matlab/testObserver.m | 143 +++++++++++++++++++++++++++++++ matlab/testObserverSim.slx | Bin 0 -> 23907 bytes 4 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 matlab/testObserver.m create mode 100644 matlab/testObserverSim.slx diff --git a/matlab/StateSpaceControlDesign.m b/matlab/StateSpaceControlDesign.m index a63f972..8a98205 100644 --- a/matlab/StateSpaceControlDesign.m +++ b/matlab/StateSpaceControlDesign.m @@ -16,7 +16,7 @@ function [ssc]=StateSpaceControlDesign(mot) % % https://www.youtube.com/watch?v=Lax3etc837U - ssPlt=mot.ssPlt; %real plant (model of real plant) + ssPlt=mot.ssMdl;%ssPlt; %real plant (model of real plant) ssPlt.Name='open loop plant'; ssMdl=mot.ssMdl;%ssMdl; %simplified model (observable,controlable) for observer ssMdl.Name='open loop model'; @@ -139,7 +139,7 @@ function [ssc]=StateSpaceControlDesign(mot) Ts=1/5000; % 5kHz ss_tz = c2d(ss_t,Ts); [Atz,Btz,Ctz,Dtz]=ssdata(ss_tz ); - ss_tz .Name='discrete obsvr ctrl'; + ss_tz.Name='discrete obsvr ctrl'; % step answer on closed loop with disctrete observer controller: t = 0:Ts:.05; figure();lsim(ss_tz ,ones(size(t)),t,[xm0 xm0]);title('step on closed loop with observer discrete'); diff --git a/matlab/observer.slx b/matlab/observer.slx index 25462e5ba9bfc479be9f4367f410af30c6fa1e8a..974f9b37030c9886e462fcbaedd02189a11222e0 100644 GIT binary patch delta 12290 zcmZX4WmFwY)9!{1gy0SdPO#wa?(XjH?!IyNjk^YSg1ZI}7Tn!}yL~x%zq{Uh?(MZ| zdb+#nsj8`2^P}b|8;2PE0fDX{4TQn~006K6r2q?AiHvbog9LO+(6n4X5yoqB=slK3 zwq4N~8mqTc#Pp{a`p}>4RdoWumTJGwM(dNgL3WMT4nKVfC2zLfH`Kpl?A_@Sh z!w!WN4Bo2LEd=Oaj>*?b)Dnt7Ea)g2R7~{cp3Z4Z9Cd%hj)Zy{m9NX3>WtAHz4AXaT1kmKcKvp+?!j?u^1gH^}X&!O{&;a+1p(JAv`U%7*H3@8Nyov>!Z zx9zKFbd-CSuz{WhZU#lX)W6ddJ!=O`%TKt&L=;0Y=Z$2R#B@fmM2@XxF1X+$tjDNdcfO_}Z_)IXh zY?7;U97DL7Y3=%D)r_jum70G|7UI$MTKF*)UwD+@nSYO_h=uf;wbQ_)k9?PO&)}yi zLoNNX>zDhWVwWUXK`yvpB1kwmrNTgo z^E{R#VinAI@;rk>N{Az(PAXcKBYZ{)cnDO8BmH&z-`TC8-{aZOC)~`>r`N_)84YH< zCz?|Y`Z%leW<@*sK!CrZ`oX^M)%x`mVEsId*1p^VGv(a2TBLelF*Npi*qN+aarOO{$d$P?{q`_7Fs}HPZpmkBdYSWFIYp zOCTUSl43$#Ec~Iq^nHyt&^m^Nodx|0@cEeDH);KYoA~9eQ#hP}ICJqX4Tx}jG%R&F zKMO{2)!tLyVk&?`rmyMm2>KW!QGk>b1(BWJxv7vcSj4CviF(~`!9>_^!W!&!>+4z1=8L%>u z1;-S2_6^HUlwWzC@}dsbIE$zn1`^t^M|a&plM8TlYjP4)l!ZY5|SJu}7 z@|_E)@#g%>LmND+tEzIV*78+~IwuX}8j|`V8ZWz0Igfy=*d72QEC~2LTly2z2(!Rp zW00c@U6aZ$w}LUdhA-$$+5QC7BJdD`nant~$=vm1;Ww)#ja=+aI(vKDLc+ajb(|b{ z_yGd`7P^fz*O{>7<^b$#30jT1I74&sug7NP9fsk@P^f+uM+{8lE$mEMjDV#~XL}0z zsmbw58jhKt0g7-8IiMQl544SfCN<26B6ekfg}*JqfuT!I@kNydT#*3 zSk&G(GwwN+@8Ib^0SNbdXsXh(^a=7RF0Rd&IcMjTro1-> qMJu;E4`su~a&BR;w8PpNdU|>- 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,. the bigger the frequency the better the result + %With sampling = 80Hz hte system already becomes instable. + ss_t=ss(At,Bt,Ct,Dt); + figure();pzplot(ss_t) + ss_tz=c2d(ss_t,Ts); + figure();pzplot(ss_tz) + [Atz,Btz,Ctz,Dtz]=ssdata(ss_tz); + + + [Apz,Bpz,Cpz,Dpz]=ssdata(c2d(ss(Ap,Bp,Cp,Dp),Ts)); + [Amz,Bmz,Cmz,Dmz]=ssdata(c2d(ss(Am,Bm,Cm,Dm),Ts)); + + + Ao=Am-L*Cm; + Bo=[Bm L]; + Co=K; + Do=zeros(size(Co,1),size(Bo,2)); + + [Aoz,Boz,Coz,Doz]=ssdata(c2d(ss(Ao,Bo,Co,Do),Ts)); + + + %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"] + ssc=setfield(ssc,k,eval(k)); + end + mdlName='testObserverSim'; + open(mdlName); + + + +end diff --git a/matlab/testObserverSim.slx b/matlab/testObserverSim.slx new file mode 100644 index 0000000000000000000000000000000000000000..df07c9da0217bc03d72208a807cfff08f1ca418d GIT binary patch literal 23907 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

<0$u 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 CPj1Wr literal 0 HcmV?d00001