%% Esercitazione 1
clc, clear all,close all
% Tabella risultati risposta armonica
fe=[2 10 25 50 100 500]'; % frequenza dei test
UM=[1 1 1 5 5 10]'; % Valore di picco dell’ingresso
YM=[9.755 6.291 2.250 3.256 0.708 0.015]'; % Valore di picco uscita
dT=[-25.9 -21.1 -14.7 -9.6 -5.6 -1.4]'*1e-3; % Delta t
 
MdB=20*log10(YM./UM) % Modulo della risposta armonica per ogni test
omegae=2*pi*fe % Pulsazione angolare dei test
dPhi=(180/pi)*omegae.*dT % Ritardo di fase introdotto dall’impianto
 
% Costanti di tempo del processo stimate. 
wp1=2*pi*10
wp2=2*pi*20
wp3=2*pi*100
% F.d.t. P(s)
P=tf(10,conv( [1/wp1 1],conv([1/wp2 1],[1/wp3 1]) ) ) % fdt esatta
P1= tf(10,conv( [1/60 1],conv([1/150 1],[1/700 1]) ) ) % stima ad occhio

[numP,denP]=tfdata(P,'v') 

% Blocco di retroazione
Kd=10; H=tf(1,Kd);
kc=100; G=kc*P*H

figure(10)
    bode(P,P1)

figure(1)
    margin(G)
% Progetto Correzione Attenuatrice
wdes=200; ui=100; mi=20;
taui=ui/wdes; Catt=tf([taui/mi 1],[taui 1])
% Progetto Correzione Anticipatrice
wdes=200; ua=0.8; ma=16;
taua=ua/wdes; Cant=tf([taua 1],[taua/ma 1])
% F.d.t. a ciclo aperto
C_primo=Catt*Cant
[numC_primo,denC_primo]=tfdata(C_primo,'v')

C=kc*C_primo
F=C*G;
W=feedback(C*P,H)
 
figure(2)
subplot(121)
    bode(G,Catt,Cant,Cant*Catt,F), grid
    legend('k_c P(j\omega)/K_d','C_{att}(j\omega)',...
'C_{ant}(j\omega)','C_{att}(j\omega)C_{ant}(j\omega)','F(j\omega)')
subplot(122)
    margin(F), grid
    legend('F(j\omega)')
   

figure(3)    
subplot(2,2,[1 3])
    nichols(F), grid
    axis([-270 0 -160 40])
subplot(2,2,2)
    nichols(F), grid
    axis([-180 -100 -15 25])
    title('Zoom closed-loop M_r(\omega)')
subplot(2,2,4)
    nichols(F), grid
    axis([-180 0 -10 10])
    title('Zoom closed-loop B_3')
figure(4)
    bode(W), grid

figure(5)
    step(W), grid
