
%Esercizio 1 
clc
clear all
close all

s = tf('s');
G = (60*(s+10))/(s*(s+2)*(s^2 +15*s +100));
G_zpk = zpk(G)
G_zpk.DisplayFormat = 'Frequency';
G_zpk


kg = 3;
kd = 0.1
kh = 1/kd

e_ramp = 0.01
e_dist = 0.04

%bode(G);

kc = (kd^2)/(kg*e_ramp)

kc1 = 0.5/(kh * e_dist)
kc2 = (0.3 * kd^2) / (3 * 0.04)

kc = max([kc, kc1, kc2])
% 
% 
% Mr_dB = 1;
% Ts = 0.2
% 
% 
% Mr = 10^(Mr_dB/20)
% Bw = 3/Ts
% 
% wc = 11
% 
% fm = (2.3 - Mr)/1.25
% fm_deg = rad2deg(fm)
% 
% %proviamo con rete così
% 
% L = kc * kh * G 
% [m,f]=bode(L,wc)
% 
% m_dB = 20*log10(m)
% my_margin = f + 180
% 
% epsilon = 10
% dfm = fm_deg - my_margin + epsilon
% 
% %devo perdere un po' di modulo e guadagnare circa 80 di fase, userò due
% %reti anticipatrici uguali e una ritardatrice
% 
% if dfm > 60
%     dfm = ceil(dfm/2)
%     disp('ATTENTO; Fanne 2')%ne faccio 2
% end
% 
% 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)
% 
% m_dB = 20*log10(m)
% 
% %devo perdere circa 38dB
% %rete ritardatrice
% 
% if m_dB > 24
%     m_dB = ceil(m_dB/2)
%     disp('ATTENTO; Fanne 2')%ne faccio 2
% end
% 
% alpha = 10^(-m_dB/20)
% tau = 100/wc
% 
% Cr = (1+ tau*alpha*s)/(1 + tau*s)
% L2 = Cr * L1
% [m,f] = bode(L2,wc)
% 
% W = feedback(L2,1)
% bode(W)
% 
% figure(2)
% step(W)
% 
% 

