diff --git a/Prob1.m b/Prob1.m new file mode 100644 index 0000000..288881f --- /dev/null +++ b/Prob1.m @@ -0,0 +1,67 @@ +%% Dati +s = tf('s'); +Gp = 25/(s^3 + 3.3*s^2 + 2*s); +Gs = 1; +Ga = 0.095; +Gr = 1; +Gd = 1; + +% Specifiche +Kd = 1; + +%% Calcolo Kc da errore di inseguimento +% L'input di riferimento è una rampa +% Le formule sono state prese dalle tabelle sulle slide +rho_r = 0.15; +Kp = 25/2; +Kc_r = 1/(rho_r*Kp*Ga) % Kc deve essere maggiore di questo + +%% Calcolo Kc da disturbo su attuatore +% L'input di riferimento è un gradino +% La formula si ottiene calcolando il limite manualmente +rho_a = 0.015; +Da0 = 0.0055; +Kc_a = Da0/(Ga*rho_a) + +%% Calcolo MFLS e omega_c da disturbo dell'impianto +% Il disturbo è di tipo sinusoidale +rho_p = 0.0005; +ap = 0.02; +omega_p = 0.02; +MLFS = mag2db(rho_p/ap) +omega_l = omega_p*10.^(-MLFS/40); +omega_c_inf = 2*omega_l + +%% Calcolo MHFT e omega_c da disturbo del sensore +% Il disturbo è di tipo sinusoidale +rho_s = 0.0005; +as = 0.1; +omega_s = 40; +MHFT = mag2db((rho_s*Gs)/as) +omega_h = omega_s*10.^(MHFT/40); +omega_c_inf = omega_h/2 + +%% Calcolo picco di risonanza e omega_c da tempo di salita e di assestamento +scap = 0.1; +tr = 3; +ts = 12; +alpha = 0.05; +xi = abs(log(scap))/sqrt(pi.^2+log(scap).^2) +Tp = 1/(2*xi*sqrt(1-xi.^2)) +Sp = (2*xi*sqrt(2+4*xi^2+2*sqrt(1+8*xi^2)))/(sqrt(1+8*xi^2)+4*xi^2-1) +omega_c_rise = (((pi-acos(xi))*sqrt(sqrt(1+4*xi^4)-2*xi^2))/sqrt(1-xi^2))/tr +omega_c_settle = (-log(alpha)*sqrt(sqrt(1+4*xi^4)-2*xi^2))/(xi*ts) + +% Diagramma di Nichols e Nyquist +myngridst(Tp,Sp) + +%% Definizione di Gc +% Determinazione del modulo di Kc +Kc = max(Kc_a, Kc_r); + +% Analisi del diagramma di Nyquist per la determinazione del segno di Kc +L = -Kc*Gp*Ga; +[num, den] = tfdata(L, "v"); +figure +nyquist1(num, den) +grid on \ No newline at end of file