clc
clear
close all

s = tf('s');

G = (800*(s+25))/(s*((1+0.02*s)^2)*((s+200)^2));
G = zpk(G);
G.DisplayFormat = 'Frequency';

G
kg = 0.5
kd = 0.01
kh = 1/kd

e_ramp = 0.001
e_grad = 0.002
d1 = 2

kc = (kd^2)/(e_ramp * kg)
kc1 = (d1 * kg)/(e_grad * kg * kh)

kc = max([kc kc1])

kc = 0.2

L = kc * G * kh

Mr_dB = 3;
Ts = 0.03

Mr = 10^(Mr_dB/20);

fm = (2.3-Mr)/1.25;
fm_deg = rad2deg(fm)

Bw = 3 / Ts
wc = 0.65*Bw % 50<-->80

[m,f] = bode(L,wc)
bode(L)
m_dB = 20*log10(m)

epsilon = 8
dfm = fm_deg - (180+f) + epsilon

%carta normalizzata, 2 reti che in totale guadagnino in totale 25 di fase e
%perda 17db di modulo

m = 4;
wt = 1;
tau = wt / wc

Ca = (1 + tau * s)/(1 + (tau/m)*s)

L1 = Ca*L
%bode(L1)
[m,f] = bode(L1,wc)
m_dB = 20*log10(m)


%voglio perdere 20dB, sempre con carte normalizzate, integrativa
wt = 100
m = 10

tau = wt/wc

Cr = (1+(tau/m)*s)/(1+tau*s)

L2 = Cr*L1
[m,f]=bode(L2,wc)



W = feedback(L1,1)
bode(W)

