%appello, esercizio 2
clc
clear
close all
s = tf('s')

G = (100*(s+25))/((s^2+200*s)*(s^2+1.4*s+1))
G = zpk(G)
G.DisplayFormat = 'Frequency'

%sistema di tipo 1

kg = 12.5
kd = 10
kh = 1/kd
e_ramp = 0.16
e_grad = 0.1
kc = (10^2)/(e_ramp*kg)
kc1 = 1/(e_grad*kh)

% kc = max([kc kc1])
% wc = 2.2
% Mr_dB = 3
% Mr = 10^(Mr_dB/20)
% 
% fm = (2.3-Mr)/1.25
% fm_deg = rad2deg(fm)
% 
% L = kc * G * kh
% [m,f] = bode(L,wc)
% my_margin = f + 180
% m_dB = 20*log10(m)
% 
% epsilon = 10
% dfm = fm_deg - my_margin + epsilon
% 
% %devo guadagnare 94 deg e perdere 20dB, aia
% 
% dfm = dfm / 2
% alpha = (1-sind(dfm))/(1+sind(dfm))
% tau = 1/(wc*sqrt(alpha))
% 
% Ca = (1+tau*s)/(1+tau*alpha*s)
% L1 = Ca*Ca*L
% [m,f] = bode(L1,wc)
% 
% %bene, ora devo perdere 40 dB, diocane
% m_dB = 20*log10(m)
% m_dB = m_dB / 2
% alpha = 10^(-m_dB/20)
% tau = 100/wc
% 
% Cr = (1+tau*alpha*s)/(1+tau*s)
% 
% L2 = Cr*Cr*L1
% [m,f] = bode(L2,wc)


%parte 2 esercizio 2
%Solo controllore proporzionale

%da specifiche devo avere un kc > 100

%C = 100

%Controllore PI
%C = (100*(s+1))/s
C = 1 + s %PD
L = C*G*kh



bode(L)
W = feedback(L,1)
%bode(W)
%bandwidth(W)
