Carlo Mazzarella - Ing. Meccanica A.A. 1999/00

Controlli Automatici

Prof.ssa FANTI - Ing. NASO

 

Studio

di un sistema di posizionamento azimutale

di un'antenna parabolica

 


Studio del Sistema in Anello Aperto (K=1)

 

La risposta al gradino del sistema in Anello Chiuso diverge:

Ciò è dovuto alla presenza del polo nell'origine (Sistema Semplicemente Stabile), infatti la sua risposta all'impulso è:

In Anello Aperto: un polo nell'origine à Sistema di tipo 1, quindi non avrò errori di posizione!

 

Studio del Sistema in Anello Chiuso (K=1)

Ora chiudo in retroazione:

Divido num0 e den0 per , in modo da mettere in evidenza i poli:

Poiché tutti i poli della sono a parte Reale < 0:

roots(den0)

-100.0007

-1.6696

-0.0397

il sistema in Anello Chiuso è Asintoticamente Stabile, infatti le sue risposte all'impulso e al gradino sono:

Quindi abbiamo visto che chiudendo il sistema in retroazione siamo riusciti a stabilizzarlo.

Vediamo ora cosa succede se aumento il guadagno K dell'amplificatore.

 

 

Studio per K=10

numG=numG*10

ridefinisco la con feedback:

[num0,den0]=feedback(numG,denG,numH,denH,-1)

Divido num0 e den0 per , in modo da mettere in evidenza i poli:

Ora le risposte all'impulso e al gradino sono:

I poli della sono:

roots(den0)

-100.0067

-1.1012

-0.6021

cioè sono ancora tutti a parte Reale < 0.

 

 

Studio per K=50

Le risposte all'impulso e al gradino sono:

I poli della sono:

roots(den0)

-100.03

-0.84 + 1.62j

-0.84 - 1.62j

Ora due poli sono diventati complessi e coniugati a parte Reale < 0, infatti la risposta al gradino ha delle sovraelongazioni, è oscillante.

All'aumentare del guadagno K abbiamo visto che il sistema è diventato più veloce (vedi le risposte); abbiamo spostato la posizione dei poli in Anello Chiuso.

Attento che se aumentiamo troppo il valore di K potremmo anche ottenere un sistema Instabile, cioè potremmo spostare i poli nel semipiano positivo dell'Asse Reale. (vedi luogo delle radici)

Specifiche del sistema

Vediamo di calcolare le specifiche più importanti del sistema. Poniamo K=1.

Si tratta di un sistema del 3° Ordine, ma un polo (-100) è totalmente dominato dagli altri due, quindi posso non considerarlo:

numG=20.83

denG=[1 1.71 0]

Ridefnisco la con feedback:

[num0,den0]=feedback(numG,denG,numH,denH,-1)

I poli della sono:

roots(den0)

-0.855 + 2.43j

-0.855 - 2.43j

La mappa poli-zeri è:

La risposta al gradino è:

à wn=sqrt(den0(3))

wn=2.575

à d=den0(2)/(2*wn)

d=0.332

(vedi mappa poli-zeri)

Con questo valore così piccolo di d mi aspetto una Massima Sovraelongazione Percentuale (msp) abbastanza elevata ed un Tempo di Picco (tp) molto piccolo.

MASSIMA SOVRAELONGAZIONE PERCENTUALE

msp=100*exp((-pi*d)/sqrt(1-d^2)

msp= 33.0915 %

Un altro modo di calcolarla è quello di usare la definizione:

Calcolo , il valore massimo assunto dalla risposta al gradino:

T=0:0.1:100;

y=step(num0,den0,T);

ymax=max(y) à ymax=4.181

Calcolo , il valore a regime. è il (vedi Th. del Valore Finale), quindi è pari al rapporto tra i termini noti di num0 e den0.

yfin=num0/den0(3) à yfin=3.1416=

quindi:

msp=100*(ymax-yfin)/yfin à msp=33.0868 %

TEMPO DI PICCO

Per definizione è l'ascissa della ymax=.

[ymax,i]=max(y)

ottengo i=14, che è l'indice del vettore dei tempi T.

tp=T(14) à tp=1.3 sec

Per calcolarlo posso anche usare la formula:

wd=wn*sqrt(1-d^2) à wd=2.4289

tp=pi/wd à tp=1.2934 sec

 

Vediamolo nella risposta al gradino:

TEMPO DI ASSESTAMENTO AL 2%

T=0:0.1=10;

l=length(T) à l=101

[y,s]=step(num0,den0,T);

Ora nel vettore y ho i valori della risposta al gradino. Percorro questo vettore partendo dalla fine (da destra nel grafico) per vedere sino a quando la y rimane nella banda del ± 2%

while y(l)>0.98*yfin & y(l)<1.02*yfin,

l=l-1;

end

(attento alla punteggiatura del ciclo while!)

Alla fine del ciclo uscirò con l'indice voluto: l=44.

Vedo il tempo di assestamento nel vettore dei tempi:

ts2=T(l) à ts2=4.3 sec

Un altro metodo è quello di usare la formula approssimata:

ts2=4/(d*wn) à ts2=4.6784 sec.

Vediamolo nella risposta al gradino:

Luogo delle Radici di G0(s) al variare del guadagno K dell'amplificatore

Torniamo al sistema del 3° ordine:

G(s)H(s) ha 3 poli e nessuno zero, quindi mi aspetto 3 rami che vanno ad ¥ à 3 asintoti.

numGH=6.6304

denGH=[1 101.71 171 0]

roots(denGH)

0

-1.71

-100

Traccio il luogo con la funzione rlocus(num,den), dove num e den si riferiscono alla G(s)H(s)!!!

rlocus(numGH,denGH)

Zoom sui due poli dominanti:

 

Studio della Stabiltà con il Criterio di Routh

Tabella di Routh:

 

 

 

 

 

 

 

 

 

 

 

 

2 Poli Stabili (Re>0) e 1 Polo Instabile (Re<0) à INSTABILE

3 Poli Stabili (Re<0) à ASINTOTICAMENTE STABILE

2 Poli Instabili (Re>0) e 1 Polo Stabile (Re<0) à INSTABILE

(passaggio dei 2 poli complessi e coniugati a destra dell'Asse Immaginario)

Studio gli estremi:

annulla solo l'ultima riga à corrisponde al polo nell'origine

Osservando la Tabella ho 2 Poli Stabili (Re<0) ed un polo in O (Re=0) à SEMPLICEMENTE STABILE

annulla un'intera riga della Tabella, quindi devo ricorrere all'Equazione Ausiliaria:

La derivo e continuo la Tabella scrivendo questi coefficienti nella riga che si era annullata:

Nella prima parte della Tabella c'è 1 Permanenza à 1 Polo Stabile (Re<0), mentre lella seconda parte ci sono 2 Permanenze che corrispondono a 2 Poli Immaginari Puri (Re=0). Queste sono le intersezioni del Luogo con l'Asse Immaginario.

In definitiva per K=2623.2 ho che il sistema è SEMPLICEMENTE STABILE.

 

Le intersezioni con l'Asse Immaginario le ottengo sostituendo K=2623.2 nell'Equazione Ausiliaria:

Il punto doppio sull'asse Reale lo ottengo dalla derivata prima dell'Equazione caratterstica:

Quindi:

a cui corrisponde un valore di K (lo metto nella q(s)):

Esempi di Sintesi

  1. Voglio una Max Sovraelongazione Percentuale del 25%. Che valore del guadagno K devo usare?
  2. risolvendo l'equazione ottengo:

    (ovviamente valori di maggiori mi danno MS% minori).

    Noto voglio sapere il K corrispondente. Sul Luogo delle Radici disegno le due rette corrispondenti a quel con:

    sgrid(,) à sgrid(0.4036, [])

    Graficamente vedo qual'è il punto a cui corrisponde una MS% = 25%; per trovare il valore di K uso rlocfind():

    [k,poli]=rlocfind(numGH,denGH)

    e clicco sul un'intersezione (meglio zoomare prima e ricordarsi di fare poi zoom off).

    rlocfind mi restituisce:

    K=64.068

    poli:

    -100.04

    -0.83 + 1.88 j

    -0.83 - 1.88 j

    Per K=64.068 la f.d.t. in Anello Chiuso è:

    la cui risposta al gradino è:

     

  3. Voglio K tale che il Tempo di Assestamento al 2% sia minore di 2 sec.
  4. Traccio una retta verticale di ascissa –0.5 e dal grafico, con rlocfind():

    [k,poli]=rlocfind(numGH,denGH)

    ottengo:

    K=883.9

    poli:

    -100.59

    -0.56 + 7.61j

    -0.56 - 7.61j

    In definitiva per avere un , deve essere:

     

  5. Voglio che siano soddisfatte contemporaneamente le seguenti specifiche:

Va notato che è definito per una retroazione unitaria, che il nostro sistema non ha, quindi, facendo uso dell'algebra dei blocchi, giungiamo allo schema:

 

num=(100*2.083)/(10*pi)

den=conv([1 100],[1 1.71 0])

6.6304

G(s)= ------------------------

s^3 + 101.71 s^2 + 171 s

 

La specifica sul tempo di assestamento pone:

(minimo tempo di assestamento; tempi minori corrispondono a valori di maggiori).

La specifica sulla Mp (vedi sopra) mi imponeva un , per cui voglio che il mio luogo delle radici passi per i punti individuati da e , con quel valore di K.

Voglio 'traslare' il luogo.

SINTESI PER CANCELLAZIONE (applicabile solo per poli nel semipiano sx)

Voglio mettere uno zero in –1.71 ed un polo più spostato verso sinistra.

Per trovare la posizione del polo incognito da inserire, calcolo la somma delle fasi di tutti i poli rispetto a quel punto di passaggio e la pongo essere 180°. In questa relazione l'unica incognita è la fase del nuovo polo.

Indico le rispettive fasi con .

teta=acos(0.4036) (teta=1.1553)

teta1=pi-teta (teta1=1.9863)

Da considerazioni di carattere trigonometrico sul triangolo ingrossato, ricavo l'ordinata del punto di passaggio.

d=0.4036

ipotenusa=2/d (ipotenusa=4.95)

h=ipotenusa*sin(acos(0.4036)) (h=4.53)

 

Ora calcolo:

teta2=atan(4.63/98) (teta2=0.0472)

 

tetax=pi-teta1-teta2 (tetax=1.1081)

a=h/tan(tetax) (a=2.2615)

quindi il polo sarà in –4.2615.

che scrivo nella forma di costanti di tempo per non cambiare il guadagno.

Inserisco questa rete nel sistema:

numR=[0.5848 1]

denR=[0.2347 1]

printsys(numR,denR)

0.5848 s + 1

------------

0.2347 s + 1

[numC,denC]=series(num,den,numR,denR)

printsys(numC,denC)

3.8775 s + 6.6304

-----------------------------------------------

0.2347 s^4 + 24.8713 s^3 + 141.8437 s^2 + 171 s

 

Traccio il nuovo luogo delle radici e verifico che passa per il punto desiderato:

rlocus(numC,denC)

grid

sgrid(0.4036, [])

Vedo con quale valore di K passa per quel punto:

rlocfind(numC,denC)

Select a point in the graphics window

selected_point =

-1.9747 + 4.1667i

ans =

130.1413

Questo valore non soddisfa però la specifica sull'errore . Facendo i conti, in questa situazione risulta un , quindi devo aumentare il K di un fattore pari a . Questo aumento del valore del K, però, porta i poli in un'altra posizione. Potrei quindi fare questa sintesi con una rete ritardatrice.