[Fondamenti di Automatica] errore sull'uscita per un disturbo di carico al gradino

Fabius911
Ciao ragazzi :D
data
$ G(s) = 160 / ((s+10)*(s+4)^2) $
funzione di trasferimento del processo


devo determinare un regolatore C(s) di struttura semplice che garantisce il soddisfacimento di:
1. errore sull’uscita per un disturbo di carico al gradino non superiore al 10%

Grazie per l'aiuto!

Risposte
D4lF4zZI0
Vediamo tu dove ti blocchi ;)

Fabius911
Beh, io faccio così:
Il controllore dovrà avere la forma k/s.
Si usa il guadagno statico per rendere errore < 10%:
in Mathematica risolvo questa
$ Reduce[Lim s->0[-(G(s))/(1+k*G(s)]<=1/10, k] $
e ottengo $ k<-11 || k> -1$
naturalmente scelgo un $k > 0$

è esatto in questo modo?

D4lF4zZI0
L'esercizio ti chiede l'errore sull'uscita dovuto al disturbo.
Allora tale errore vale:
$ E_d(s)=-D(s)(G(s))/(1+C(s)G(s)) $
ti trovi?
Ora ponendo i dati che hai, si ha:
$ E_d(s)=-D(s)(G(s))/(1+C(s)G(s))=-1/s*(160/((s+10)(s+4)^2))/(1+C(s)(160/((s+10)(s+4)^2)))=-1/s*(160/((s+10)(s+4)^2))/(( (s+10)(s+4)^2+160C(s))/( (s+10)(s+4)^2)) $
Da cui:
$ E_d(s)=-1/s*160/((s+10)(s+4)^2+160C(s)) $
A regime, si ha:
$ e_d(oo)=lim_(s -> 0)sE_d(s)= lim_(s -> 0)s(-1/s*160/((s+10)(s+4)^2+160C(s)))= $
Quindi:
$lim_(s -> 0)(-160/((s+10)(s+4)^2+160C(s)))=160/(10*16+160C(0))<0.1rArr C(0)=k<9 $
Da qui si evince subito che per avere un errore finito con un disturbo a gradino, è sufficiente un controllore di tipo proporzionale; infatti, se poni, come hai già fatto, $C(s)=k/s$, quel limite ti verrà sempre zero

Fabius911
Bene :)
quindi ad esempio scelgo un valore di k = 1.

Quindi $ L(s) = C(s)*G(s) = (1/s)*(160/( (s+4)^2*(s+10))) $

adesso per ottenere massima sovraelongazione $S% <= 20%$, tempo di assestamento $ts <= 1 sec$
eseguo le varie operazioni in matlab, bode(L),margin(L), devo portare a 46°, ottengo una nuova pulsazione di attraversamento wc, mi costruisco quindi la rete correttrice Clead, così ho la nuova $ Ln.e.w = L(s)*Cl.e.a.d (s) $

ora facendo $ T = feedback(Ln.e.w,1) $ succede che mi ritrovo due poli nel semipiano destro, e questo non dovrebbe succedere, come mai?devo aggiungere qualcosa alla funzione?

Fabius911
Scusa, ma poi il valore di $ C(0) = k $ non dovrebbe essere $ >= 9 $ ?

D4lF4zZI0
Hai perfettamente ragione, ho sbagliato a digitare, viene $C(0)>9$

D4lF4zZI0
Sebbene io abbia fatto i calcoli in fretta...a me risulta che, per avere un errore sull'uscita finito, il controllore non deve avere poli nell'origine; in altre parole, il controllore deve essere del tipo $C(s)=k$ e non $C(s)=k/s$.
Magari questa cosa rincontrollala un attimo

Fabius911
Sisi, mi trovo che $ C(s) = k $ con $ k >= 9 $

Allora adesso sviluppo l'altro punto che ho scritto sopra, sperando di non trovare problemi

Fabius911
Scelto $ k = 10 $ per ottenere massima sovraelongazione $ S ≤ 20% $, tempo di assestamento $ ts <= 1sec $, quale rete correttrice devo usare?? :(

D4lF4zZI0
Non è mica così semplice la cosa?!?!
Dal tempo di assestamente devi ricavarti la banda passante e con la sovraelongazione massima il margine di fase e con questi dati modelli la rete correttrice

Fabius911
Mi risulta che devo avere la massima sovraelongazione $ > 0.4559 $, quindi dovrà essere $ > 46° $, il margine di fase corrente $ = -0.614 $, la banda passante mi risulta essere $ > 8,6864 $, quindi scelgo $ wc = 8.8 $ rad/sec.
Poi uso Matlab e ottengo:
>> [L_mag, L_phase] = bode(L, wc_new)
L_mag = 1.2855
L_phase = -172.4599
>> 180 - abs(L_phase)
ans = 7.5401

Con questi dati che mi risultano, dovrei usare una rete a sella, giusto?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.