Parametri di progetto di un sistema di controllo
Le specifiche per il progetto di un sistema di controllo riguardano:
Precisione, relativa al comportamento statico del sistema, si quantifica in base agli errori a regime ed in definitiva in base al guadagno statico
Stabilità, in base ai margini di guadagno e di fase che devono risultare relativamente soddisfacenti
Rapidità di risposta, relativa alle caratteristiche dinamiche, si quantifica assegnando la larghezza di banda e quindi dipende dalla posizione delle radici
Per garantire queste specifiche, se inizialmente non soddisfatte, bisogna modificare il guadagno d'anello aggiungendo in cascata una opportuna rete, detta correttrice, stabilizzatrice o anche di compensazione.
Sia GHnc il guadagno d'anello non compensato e GHc il guadagno d'anello compensato.
Precisione e scelta del guadagno statico di anello
L'aumento del guadagno statico di anello garantisce una migliore precisione ma peggiora la stabilità. In ogni caso la specifica di progetto, spesso data in termini di errore statico, comporta un suo ben determinato valore massimo, da determinare in base al tipo di sistema (0, 1 o 2).
L'aumento del guadagno comporta l'introduzione di un amplificatore (non invertente), mentre la riduzione è possibile con un semplice partitore resistivo.
Es. Un sistema di tipo 0 presenta un guadagno statico K=10. Calcolare l'errore di posizione e progettare una rete correttrice per un errore di posizione inferiore al 2%.
Stabilità
Garantita la precisione, se le specifiche sulla stabilità non sono soddisfatte si procede nel progetto all'inserimento, in genere in cascata sul ramo diretto, di una rete correttrice per ottenere i margini richiesti, senza penalizzare il guadagno statico precedentemente dimensionato. Questa operazione viene detta compensazione.
Le tecniche più comunemente utilizzate sono:
compensazione con polo dominante
compensazione con rete ritardatrice
compensazione con rete anticipatrice
compensazione con rete a sella
Bisogna scegliere la rete che soddisfa le specifiche di progetto in base alla particolare GHnc. Esistono diverse tecniche, anche abbastanza complicate per i nostri obiettivi didattici; faremo riferimento solo alla tecnica del polo dominante e della cancellazione polo-zero che tuttavia non forniscono sempre risultati soddisfacenti.
Compensazione con polo dominante
Il metodo è utilizzabile solo per i sistemi di tipo 0. Bisogna aggiungere un polo ad una pulsazione molto inferiore a quella dei poli di GHnc.
Secondo il criterio approssimato di Bode il diagramma del modulo deve attraversare l'asse a 0dB con una pendenza di -20dB/dec. Il polo dominante viene scelto quindi in modo tale che il modulo di GHc attraversi l'asse a 0 dB con una pendenza di -20dB/dec in corrispondenza del primo polo di GHnc.
In questo modo si potrebbe ottenere un margine di fase di circa 45° se la posizione degli altri poli lo consente...
La scelta del nuovo polo può avvenire:
graficamente in base al diagramma di Bode; si traccia una retta a -20dB/dec a partire dal primo polo di GHnc fino ad intersecare la parte costante del diagramma...
analiticamente in base alla costante di Bode e al valore del primo polo di GHnc... ( 10 K/-20 * p1 )
Circuitalmente si può utilizzare una semplice rete RC passa basso (che non altera il guadagno in continua) per la quale si dimensiona a piacere C, e quindi il valore di R in un campo di valori non estremo. Bisogna considerare quanto detto sulla non interagenza dei blocchi ed eventualmente prevedere un buffer.
Questo tipo di compensazione presenta l'inconveniente di ridurre la banda passante di GH e quindi di peggiorare le caratteristiche dinamiche di W. Inoltre non può essere utilizzata per sistemi del tipo 1 e 2.
Gli amplificatori operazionali per applicazioni generali, e quindi destinati ad essere reazionati negativamente, presentando diversi poli a causa dei numerosi componenti attivi, rischiano l'instabilità. Allora sono compensati internamente con la tecnica del polo dominante che assicura tra l'altro una pendenza di -20dB/dec (GBW costante) penalizzando però fortemente la banda passante (già a poche decine di Hz Aol inizia a scendere). Invece i comparatori, destinati per il funzionamento in reazione positiva o ad anello aperto, non sono compensati e godono della massima banda e velocità possibile per la loro tecnologia.
Compensazione con rete ritardatrice
La rete ritardatrice è composta da un polo ed uno zero con la pulsazione del polo che precede quella dello zero. La fase della rete risulta sempre negativa da cui la caratteristica ritardatrice.
Utilizziamo la semplice tecnica della cancellazione polo-zero che purtroppo non sempre si può applicare. Lo zero si sceglie di pulsazione pari a quella del primo polo di GHnc che risulta cancellato. Si sceglie quindi il polo come per il caso precedente, con riferimento però al secondo polo di GHnc. Si ottengono quindi caratteristiche di riduzione di banda meno drastiche della compensazione con polo dominante.
Il metodo può essere impiegato anche per stabilizzare sistemi di tipo 1.
Circuitalmente basta aggiungere alla rete precedente una resistenza R2 in serie al C. Infatti un gruppo CR serie, disposto in senso trasversale, produce uno zero sulla FdT per il valore di s che annulla R+1/sC
Compensazione con rete anticipatrice
La rete anticipatrice è composta da un polo ed uno zero con la pulsazione del polo che segue quella dello zero. La fase della rete risulta sempre positiva da cui la caratteristica anticipatrice. Lo zero si sceglie di pulsazione pari a quella del primo polo di GHnc che risulta cancellato. Si sceglie quindi il polo di valore elevato per non disturbare la pendenza all'intersezione con l'asse a 0dB.
La cancellazione del primo polo aumenta la banda e quindi aumenta la velocità di risposta; quindi questo tipo di compensazione è obbligatoria quando è necessario migliorare le caratteristiche dinamiche.
Si può anche affermare che la stabilità migliora perchè lo zero innalza il grafico della fase dando luogo a un aumento del margine di fase;
La rete anticipatrice può essere utilizzata anche per compensare sistemi di tipo 2.
Circuitalmente si può adottare la rete passiva CR passaalto con l'aggiunta di una resistenza in parallelo al condensatore (l'impedenza longitudinale comporta uno zero per la FdT per il valore di s che rende infinita l'impedenza, oppure che rende nulla la sua ammettenza ). Tuttavia tale rete passiva, diversamente dai casi precedenti, comporta una riduzione della costante di Bode e quindi è necessario introdurre una amplificazione. In pratica si usa una rete attiva RC con OP.
Compensazione con rete a sella
La rete a sella è composta da due zeri e due poli, con gli zeri interni ai poli secondo l'ordine crescente p1, z1, z2, p2.
La rete riunisce le caratteristiche della rete ritardatrice ( p1 e z1) ed anticipatrice (z2, p2) e quindi consente ampie possibilità di progettazione.
Circuitalmente si realizza con una rete CR parallelo disposta in senso longitudinale ed una rete CR serie disposta in senso trasversale, da cui i due poli (due C) ed i due zeri (uno per il ramo trasversale e l'altro per quello longitudinale).
Es. Ricavare le FdT delle reti e determinare il tipo di azione di compensazione realizzata.
Es. Determinare le possibili applicazioni della rete nell'ambito della compensazione.
Calcolo dei margini con Scilab
Copiare i seguenti comandi su scinotes ed eseguire il file con echo.
s=poly(0,'s');
F=30/(1+s)/(1+s/10)/(1+s/400)
GH=syslin('c',F)
[Mg, f180]=g_margin(GH)
[Mf, f0dB]=p_margin(GH)
Risulato dei comandi da apprezzare sulla console di scilab.
La chiusura del comando con ; non produce echo.
Scilab fornisce le frequenze e non le pulsazioni, Mg è espresso in dB
GH =
30
--------------------------------
2 3
1 + 1.1025s + 0.10275s + 0.00025s
f180 = 10.569135 Hz
Mg = 23.562793 dB
f0dB = 2.5331262 Hz
Mf = 33.457448°
Analisi del comportamento dinamico di un sistema
num=poly([20 0 0],'s','coeff');
den=poly([20 5 1],'s','coeff');
maxt=10;
t=0:0.005:maxt;
g=syslin('c',num/den)
// si calcola gs, l'array dei valori temporali della risposta al gradino
gs=csim('step',t,g);
// calcolo l'istante in cui la risposta raggiunge il 90%
r=1;
while gs(r)<0.9001;
r=r+1;
end;
// calcolo l'istante in cui la risposta raggiunge il 10%
r2=1;
while gs(r2)<0.1001;
r2=r2+1;
end;
// calcolo risetime per differenza tra gli istanti al 90% e al 10%
risetime=(r-1 - r2 + 1)*0.005;
// calcolo il valore massimo tra i disponibili e il relativo istante
[gsmax,rp]=max(gs);
peaktime=(rp-1)*0.005;
Maxshoot=gsmax-1;
// calcolo settling time a ritroso, k=k-1, calcolando il primo valore della //risposta, a partire dal valore finale, che esce fuori dall'intervallo assegnato
rmax=maxt/0.005;
k=rmax+1;
while gs(k)>0.98 & gs(k)<1.02;
k=k-1;
end;
settlingtime=(k-1)*0.005;
// per comodità si stampano a video al termine dell'elaborazione i valori trovati //(manca il ;)
Maxshoot
risetime
peaktime
settlingtime
Si osserva che scilab, open source, offre minori funzioni di matlab, che fornisce i tempi direttamente su LTIview .
In questa situazione si ricorre all'analisi dei valori forniti dalla funzione csim sotto forma di array. Si suppone che il valore finale sia 1.
In altri casi bisogna ricavare preventivamente il valore finale, dato dall'ultimo campione
Ovviamente nel caso di sistemi reazionati, caso che stiamo trattando, bisogna fornire a syslin W(s) e non GH(s)
g = 20 / 20 + 5s + s2
Maxshoot =0.1202586
risetime = 0.39
peaktime = 0.845
settlingtime = 1.305
Analisi del comportamento dinamico e della stabilità di un sistema reazionato
s=poly(0,'s');
gh=100/((s^2+5*s+40)*(s+1)); ghs=syslin('c',gh); // FdT del sistema ad anello aperto
w=gh/(1+gh); ws=syslin('c',w); // FdT del sistema del sistema a reazione unitaria
// calcolo l'array dei valori temporali della risposta al gradino del sistema reazionato
maxt=10; // intervallo temporale
t=0:0.005:maxt; // istanti di campionamento
rispostagradino=csim('step',t,ws); // array dei campioni della risposta al gradino di ws
k=maxt/0.005 +1; // numero di campioni
vfin=rispostagradino(k) // valore finale della risposta al gradino
// calcolo l'istante in cui la risposta raggiunge il 90% del valore finale
r=1;
while rispostagradino(r)< (0.9001*vfin);
r=r+1;
end;
// calcolo l'istante in cui la risposta raggiunge il 10% del valore finale
r2=1;
while rispostagradino(r2)<(0.1001*vfin);
r2=r2+1;
end;
// calcolo risetime per differenza tra gli istanti al 90% e al 10%
risetime=(r-1 - r2 + 1)*0.005;
// calcolo il valore massimo tra i campioni e il relativo istante
[Overshoot,rp]=max(rispostagradino);
peaktime=(rp-1)*0.005;
Overshootpc = (Overshoot-vfin)*100/vfin; // sovraelongazione in percentuale del valore finale
// calcolo settling time a ritroso, k=k-1, calcolando il primo valore della //risposta, a partire dal valore finale, che esce fuori dall'intervallo //assegnato
k=maxt/0.005 +1; // numero di campioni
while rispostagradino(k)>(0.98*vfin) & rispostagradino(k)<(1.02*vfin);
k=k-1;
end;
settlingtime=(k-1)*0.005;
// calcolo i margini di stabilità
[Mg, f180]=g_margin(ghs);
[Mf, f0dB]=p_margin(ghs);
w180=f180*2*%pi;
w0dB=f0dB*2*%pi;
// per comodità si stampano a video al termine dell'elaborazione i valori trovati (manca il ;)
Overshoot
Overshootpc
peaktime
risetime
settlingtime
Mg
w180
Mf
w0dB
///////////////////////////////////////// fine comandi
OUTPUT
Overshoot = 0.8665654
Overshootpc = 21.319003
peaktime = 0.74
risetime = 0.315
settlingtime = 2.95
Mg = 7.2345567
w180 = 6.7082039
Mf = 89.263691
w0dB = 2.6231363
Esempio
Compensare per ottenere un Mf>45°
Si osserva che la rete ritardatrice ha peggiorato di un ordine di grandezza il tempo di assestamento, ma ha migliorato nettamente il Mg da 9 a 29 dB