clc
clear
close all

s = tf('s');
G = (s+200)/(s*(s+1)^2*(s+400))
G = zpk(G)
G.DisplayFormat = 'Frequency'

kg = 0.5
kd = 10
kh = 1/kd
e_ramp = 0.1
e_grad = 0.05

% kc = (kd^2)/(e_ramp*kg)
 kc1 = 3/(e_grad*kh)
% 
% Mr_dB = 2
% Mr = 10^(2/20)
% 
% fm = (2.3-Mr)/1.25
% fm_deg = rad2deg(fm)
% 
% Ts = 0.3 
% Bw = 3 / Ts
% 
% wc = 0.8 * Bw
% 
% %Provo 
% L = kc * kh * G
% 
% [m,f] = bode(L,wc)
% my_margin = f + 180
% m_dB = 20*log10(m)
% 
% eps = 6
% dfm = fm_deg - my_margin + eps
% 
% %rete anticipatrice
% 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)
% my_margin = f + 180
% 
% %ritardatrice
% alpha = 1/m
% tau = 100/wc
% 
% Cr = (1+tau*alpha*s)/(1+tau*s)
% L2 = Cr * L1
% [m,f] = bode(L2,wc)
%C = 1
C = (5*(s+0.1))/s 
L2 = C * G * kh
bode(L2)

W = feedback(L2,1)
%step(W)
figure(2)
bode(W)