[Controlli Automatici] Determinare il controllore

Andy8585
Ciao a tutti, ho un problema a comprendere e risolvere questo esercizio. Qualcuno potrebbe gentilmente aiutarmi a venirne fuori? Grazie :)

Assegnato un processo con fdt $ (s+10)/[(s+1)(s+20)] $ chiuso in retroazione unitaria, determinare i parametri della fdt del controllore in modo da soddisfare le seguenti specifiche:
1) per r(t)= t (rampa unitaria come riferimento) si abbia a regime un errore $ <= 0.1 $;
2) la fdt ad anello aperto presenti margine di fase di 40° e pulsazione di attraversamento di 1 rad/s.

Mi domando: se il controllore da progettare introduce un polo e uno zero e il processo non ha nessun polo nell'origine, la funzione sul ramo diretto sarà di tipo 0.
Quindi, l'errore di cui parla è quello di velocità e dovrebbe essere infinito perché la costante di velocità è nulla. Non è in contraddizione con la specifica richiesta o sto sbagliando io?
Come si dovrebbe procedere in questo caso per progettare il controllore? :cry:

Risposte
D4lF4zZI0
Se anche il controllore introducesse uno zero ( oltre al polo ), il " tipo " del sistema si definisce in funzione del " numero di poli nello zero della fdt a catena aperte ".
Spero ti abbia risolto il dubbio ;)

Andy8585
Grazie innanzitutto per avermi risposto, ma non è quello il punto..
Provo ad esporre il procedimento che vorrei applicare, forse riesco a spiegare meglio il mio dubbio.

Io dovrei progettare una rete anticipatrice o ritardatrice del tipo
$ C(s)= a0 * (1+a1*s)/(1+b1*s) $
a1, b1 si ricavano da formule tenendo conto dei valori di modulo e fase del processo G(s) nella pulsazione di attraversamento (quindi senza il controllore), e di a0. Si applica la seguente formula:
$ K=lim_{s->0} s*C(s)*G(s) $
Sapendo che l'errore noto è $ e=1/K $ si ricava a0 invertendo la formula di sopra, e di conseguenza si ricavano a1 e b1.
Poiché il sistema C(s) G(s) non ha poli nell'origine, il K diventa nullo e di conseguenza l'errore tende ad infinito e non inferiore a 0.1.

Se invece C(s) G(s) fosse stato di tipo 1 (un polo nell'origine), avrei ottenuto un valore costante e avrei potuto determinare facilmente a0 e poi a1, b1.

Questo è il mio dubbio, non mi quadrano i conti applicando le formule analitiche di progetto. Non vorrei fosse sbagliata la traccia (forse andrebbe applicato un gradino e non una rampa), o peggio ancora non aver capito come va fatto il progetto!

D4lF4zZI0
Il problema è nel tuo metodo: tu dai per scontato che il controllore abbia quella espressione e non è scritto da nessuna parte che è così ;)
Io inizierei a fare una cosa semplice: hai due tipi di specifiche, la prima sull'errore a regime ( quindi a transitorio finito ) e la seconda in dinamica ( quindi durante il transitorio ). Inizia a dividere il controllore in due termini $ C(s)=C_r(s)C_t(s) $ dove il primo fattore tiene conto solo delle specifiche a regime, mentre il secondo tiene conto delle sole specifiche in transitorio; in questo modo puoi separare i due fenomeni.
Partendo dal regime, non puoi supporre $C_r(s)=K$ ( perchè come hai detto sopra, per avere un errore a regime finito con un ingresso a rampa, la fdt ad anello aperto deve contenere un polo nello zero ), quindi $C_r(s)=k/s$ e calcolati ora $k$ in modo che l'errore richiesto rientri nel range assegnatoti.
Successivamente puoi ragionare in transitorio e capire quale rete serve e scoprirai una cosa sfiziosa ;)

Andy8585
Ho provato a procedere come mi hai suggerito..

Ho trovato un $ K=20 $.
Quindi $ C_r(s)=20/s $.. il problema è trovare la $ C_t(s) $. Ho provato ad inserire una funzione del tipo $ C_t(s)=1+\tau s $ ma niente. Non capisco come proseguire..
Il solo $ C_r(s) $ si avvicina tanto alle specifiche richieste, ma l'esercizio vuole una rete perché come appendice riporta le formule delle reti anticipatrici e ritardatrici da utilizzare.

Ti prego illuminami :)

D4lF4zZI0
Ok...la parte del regime mi trovo con te dovendo avere un errore $ e(oo)<=0,1 hArr k_c>=20 $, io per praticità ho messo $k_c=30 $ e quindi $C_r(s)=30/s$.
Ora tocca alla parte in dinamica, ma prima occorre fare i diagrammi di Bode della $ F(s)=C_r(s)P(s)=30/s(s+1)/((s+1)(s+20)) $
Tali diagrammi ( li ho fatti con Matlab ) sono i seguenti
Ora come si vede dai diagrammi ( ho anche selezionato i punti di interesse ), per soddisfare le specifiche che ti sono richieste, devi abbassare il modulo di $20.5 db$ ( per avere $omega_t=1 (rad)/s$, ma devi anticipare la fase di circa $8°$ per avere il margine di fase di $40°$.
Quindi hai bisogno che la parte dinamica del controllore ( quella che ho chiamato $C_t(s)$ ) sia una sella ovvero l'insieme di una rete anticipatrice e di una ritardatrice.
Nel risolvere l'esercizio, ho fatto le seguenti posizioni:
1) per la rete ritardatrice: ho abbassato il modulo di $30.6 db $ e ho ritardato la fase di $30°$. Usando le formule di inversione ( che spero tu conosca ), mi è venuto fuori la seguente fdt $ C_(rit)(s)=(1+1.67s)/(1+66.04s) $;
2) per la rete anticipatrice: ho alzato il modulo di $10 db $ e ho anticipato la fase di $22°$. Usando le formule di inversione, mi è venuto fuori la seguente fdt $ C_(ant)(s)=(1+5.97s)/(1+1.63s) $ .
Quindi la fdt del tuo controllore è
$ C(s)=C_r(s)C_(rit)(s)C_(ant)(s)=30/s(1+1.67s)/(1+66.04s)(1+5.97s)/(1+1.63s) $
Infine, ho ricontrollato che la fdt a ciclo aperto soddisfasse le specifiche richieste rifacendo i diagrammi di Bode:

Come vedi, a meno di una leggera approssimazione ( che può essere corretta rifacendo i calcoli con più precisione ), abbiamo risolto il problema

Andy8585
Grazie mille per la pazienza! :)
Finalmente ho capito il ragionamento..

Mi sono rimasti dei dubbi sulle formule di inversione. Le ho applicate ma non coincidono con le tue..

1) ritardatrice: M=-30.6 (attenuazione) e fase=30°
2) anticipatrice: M=10 e fase -22°

Sono questi i valori che hai inserito nelle formule (con i rispettivi segni)?

Poi un'altra cosa: quando hai progettato la rete ritardatrice, hai imposto una attenuazione di 30.6dB per poi inserire la rete anticipatrice.
La scelta di 30.6dB è fatta a piacere perché successivamente si effettuerà una amplificazione? o ci sono dei criteri da rispettare?

Scusami per le domande anche stupide ma ho poca esperienza e voglio capire per bene

D4lF4zZI0
La rete ritardatrice o attenuatrice attenua il modulo ( quindi $M<0$ ) e ritarda la fase ( quindi $phi<0°$); in modo duale la rete anticipatrice.
Per quanto riguarda i valori a cui anticipare/ritardare, in linea teorica puoi mettere i valori che vuoi tu ( nei limiti imposti dalle formule di inversione ), ma nella realtà a quei valori corrispondono dei componenti elettrici/elettronici.
Mi spiego meglio: se devi realizzare un controllore di tipo I, questo sarà realizzato mediante capacità e resistenze. Ora avere una costante elevata del controllore, in generale, comporterà avere componenti di dimensioni, quindi costi, maggiori.
Spero che il mio discorso sia poco contorto

Andy8585
Si tutto chiaro quello che hai detto, è tutto relativo ai componenti elettronici e alla realizzabilità del sistema.
Se non chiedo troppo, potresti farmi vedere passo passo come hai calcolato $ \tau $ e $ \alpha \tau $ della rete ritardatrice sfruttando le formule di inversione? Per l'anticipo il discorso sarà duale. Mi sono bloccato e non riesco a giungere ai tuoi stessi risultati

D4lF4zZI0
Allora per usare le formule di inversione ( mi riferisco alla rete ritardatrice ) occorre che il modulo da ridurre sia espresso in numeri naturali e che la fase sia espressa in radianti.
Dunque, volendo attenuare di $-30.6 db$, il numero naturale corrispondente vale $M=10^(-30.6/20)=0.0295$, mentre un ritardo di fase di $-30°$ corrisponde a $-0.524 rad$.
Fatta la conversione, le formule sono:
$ tau=1/omega(M-sqrt(1+(tanphi)^2))/(Mtanphi)=1/1 (0.0295-sqrt(1+tan(-0.524)^2))/(0.0295*tan(-0.524)) $ $ =(0.0295-1.33)/-0.017~= 66.09 $
e:
$ alpha=1/(omegatau)sqrt((1+(omegatau)^2)M^2-1)=1/66.09sqrt((1+66.09^2)*0.0295^2-1 $
$ =0.015*sqrt(3.80-1)~= 0.025 $

Andy8585
Non avevo preso in considerazione il valore naturale del modulo.. :x
Grazie per avermi tolto tanti dubbi sulle reti!!

Posso approfittare ancora della tua competenza e pazienza? :)

Ho trovato un problema simile al precedente ma che utilizza un regolatore PI.

Assegnato un processo con fdt $ 10/(s+1)^2 $ chiuso in retroazione unitaria, determinare i parametri del regolatore $ K_I(1+\tau s)/s $ in modo da soddisfare le seguenti specifiche:
1) per r(t)= gradino unitario si abbia a regime un errore nullo;
2) la fdt ad anello aperto presenti margine di fase di 40° e pulsazione di attraversamento $ >= $ 0.2 rad/s.


Come mi hai fatto vedere in precedenza, studio il sistema prima a regime e poi nel transitorio..
L'errore richiesto deve essere nullo, quindi la costante di riposo K deve essere infinito.
Applicando $ K=lim_(s→0) s⋅C(s)⋅G(s) $ ottengo $ K=10 K_I $ .

Il fatto che l'errore sia nullo e il K infinito non mi fa andare avanti. Come andrebbe progettato in questo caso il regolatore PI?

D4lF4zZI0
Ho un dubbio: il riferimento è un gradino o una rampa? Hai scritto $r(t)$ che dovrebbe essere la rampa, ma poi hai specificato gradino...fammi capire

Andy8585
Nell'esercizio di prima la rampa unitaria la indicava con $ r(t)=\delta_(-2)(t) $

Adesso la traccia indica $ r(t)=\delta_(-1)(t) $ ..dovrebbe essere un gradino.
Però c'è una nota che dice "il simbolo $ \delta_(-2) $ indica la funzione rampa lineare unitaria $ \delta_(-2)=t $".

Effettivamente fa un po' di confusione. Credo che la nota non sia stata modificata dall'esercizio precedente e per r(t) vuole semplicemente indicare il riferimento, in questo caso un gradino

D4lF4zZI0
Guarda il ragionamento è molto più semplice; infatti:
1) avendo un controllore di tipo PI ( che introduce un polo nello zero della fdt a catena aperta ), l'errore a regime, per un ingresso a gradino, è automaticamente nullo;
2) per soddisfare la seconda specifica devi calcolarti la fdt in catena aperta:
$ F(s)=C(s)P(s)hArr F(jbar(omega))= C(jbar(omega))P(jbar(omega)) $ dove $bar(omega)$ è la pulsazione che devi scegliere come pulsazione di taglio ( che per le specifiche deve essere $bar(omega)>=0.2 (rad)/s$ ed impostare il seguente problema:
$ { ( |F(jbar(omega))|=0dB ),( phi_(F(jbar(omega)))=-140° ):} $
che rappresenta un sistema di due equazioni nelle due incognite $k_i$ e $tau$

D4lF4zZI0
Ho appena fatto questo calcolo ( una seccatura a dire il vero ), avendo scelto $bar(omega)=1 (rad)/s$, mi vien fuori questo risultato:
$ { ( k_i=0.154 ),( tau=0.839 ):} $
e i diagrammi di Bode sono:

e l'esercizio è risolto ;)

Andy8585
Si ho fatto la stessa prova e mi ritrovo con quanto hai ottenuto! :)

E se il riferimento fosse stato a rampa e non a gradino, per ottenere l'errore nullo cosa avrei dovuto cambiare nel progetto? Inserire una componente $ K/s $ ?

D4lF4zZI0
Si avresti avuto bisogno di un ulteriore polo nell'origine

Andy8585
Sto provando ad applicare una rampa unitaria..
1) Per avere un errore a regime nullo devo inserire un polo nell'origine, oltre al regolatore PI
$ G(s)=1/s*K_I*(1+\tau*s)/s*10/(s+1)^2 $

ho scelto come prima una $ ω=1 (rad)/s $ e ho impostato il sistema
$ |F(jω)|=0dB $
$ ϕF(jω)=−140° $
ma vengono valori strani:
$ \tau=-1.19 $ e $ K_I=0.13 $


D4lF4zZI0
Il motivo è semplice: hai scelto una pulsazione che non ti fa convergere il sistema ( almeno in termini di fisica realizzabilità ). Infatti, se fai i diagrammi di Bode della fdt $ P(s)=10/(s(s+1)^2) $ ( ho messo qui un polo nello zero, così da considerare $C(s)$ ancora un PI, tanto in termini di fdt non cambia nulla ) noti che:

la fase è $-180°$ in corrispondenza di $omega=1 (rad)/s$ e, quando aggiungi l'altro polo, scende nuovamente e non riesci a portala mai a $-140°$. Quindi, valuta bene quale pulsazione scegliere

D4lF4zZI0
Io ho scelto come pulsazione di attraversamento $bar(omega)=0.3 (rad)/s$ ( l'ho scelta perchè, per quanto ti ho detto prima, a quella pulsazione la fase non ha raggiunto ancora i $-140°$ ) ed ho rifatto i calcoli e mi è venuto fuori:
$ { ( k~=0.0028 ),( tau~=11.17 ):} $
e verificando è risultato questo:

Quindi il controllore è $ C(s)=0.0028(1+s11.17)/s^2 $
Guardando i diagrammi di Bode si vede come spostandoci anche solo di $0.6 (rad)/s$ la fase scende sotto i $-180°$...quindi era impossibile ottenere il risultato con $omega=1 (rad)/s$

Andy8585
Ho capito l'errore, grazie mille :)
Ma si poteva ottenere errore a regime nullo e quel margine di fase desiderato utilizzando la combinazione di un PI e di una rete? (Oltre al polo nell'origine che andrebbe inserito in ogni caso per soddisfare le specifiche)

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