Automatica: la potenza è nulla senza controllo Automazione dei sistemi continui Alberto Leva © 2022 Alberto Leva Except where otherwise noted, this work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International Licence https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons and the double C in a circle are registered trademarks of Creative Commons in the United States and other countries. Third party marks, logos and brands are the property of their respective holders. Concetti fondamentali Sistema dinamico a tempo continuo e a tempo discreto. Operatori matematici coinvolti: operatore derivata temporale, operatore anticipo di un passo. Retroazione. NOTA: per praticità non li vedremo però in quest’ordine (e nemmeno tutti con lo stesso dettaglio). 3 Sistema dinamico Conoscendo l'ingresso u in un dato intervallo di tempo, questo mi basta per conoscere l'uscita y nello stesso intervallo? u S y Sì ➔ sistema NON dinamico, No ➔ sistema dinamico. Vediamo alcuni esempi 4 Sistema dinamico Resistore di resistenza R, l'ingresso u(t) è la corrente, l'uscita y(t) è la tensione. Abbiamo (legge di Ohm) y(t) = Ru(t). La risposta e sì: sistema non dinamico. 5 Sistema dinamico Serbatoio a pelo libero: l'ingresso u(t) è la portata netta (entrante meno uscente), l'uscita y(t) è il livello. La risposta e no: bisogna anche sapere il livello iniziale. sistema dinamico. 6 Sistema dinamico I sistemi dinamici si possono classificare in diversi modi. A noi qui interessa distinguere quelli "a tempo continuo", dove il tempo t è un numero reale e ha il significato intuitivo e quelli "a tempo discreto", che evolvono "a passi" secondo un indice k intero (0,1,2...) che peraltro non è necessariamente legato a un intervallo temporale. Cominciamo a tempo discreto perché è più facile e pensiamo subito a un esempio: passeggeri sul tram quando si lascia la fermata k = passeggeri che c'erano quando si è lasciata la fermata k-1 + passeggeri saliti alla fermata k - passeggeri scesi alla fermata k 7 Sistema dinamico Cosa rende dinamico un sistema? Un fenomeno di accumulo di massa in un serbatoio, di energia termica in un corpo, di carica in un condensatore, di passeggeri in un tram... Questo si rappresenta dicendo che il sistema ha uno stato che "tiene memoria" della sua condizione, cosicché allo stesso ingresso il sistema può reagire con un'uscita diversa a seconda appunto dello stato. Nel caso a tempo discreto questo si rappresenta, detto u l'ingresso e x lo stato, con un'equazione alle differenze del tipo x(k) = f(x(k-1),u(k-1)) 8 Sistemi dinamici a tempo discreto Un altro modo di rappresentare un tale sistema è dire che l'uscita dipende dai valori passati di sé stessa e dell'ingresso, che così vengono a svolgere il ruolo di stato; ovvero, detti y l'uscita e u l’ingresso, si può scrivere y(k) = f(y(k-1),y(k-2),... u(k), u(k-1)...) Per semplicità consideriamo il caso lineare e tempo-invariante, ossia y(k) = a1y(k-1)...+any(k-n)...+b0u(k)...+bmu(k-m) e quantomeno per i primi esempi teniamoci al sistema elementare y(k) = ay(k-1)+bu(k-1) 9 Sistemi dinamici a tempo discreto Proprietà fondamentale: stabilità. Se faccio evolvere il sistema liberamente (u=0) a partire da un certo stato (uscita) y(0), che succede? Verifichiamo: se |a|<1 y(k) converge a zero -> sistema asintoticamente stabile; se |a|>1 y(k) diverge a meno dell'eccezione y(0)=0 -> sistema instabile; se |a|=1 y(k) né converge né diverge, rimanendo costante (a=1) oppure oscillando indefinitamente (a=-1) -> sistema (semplicemente) stabile; 10 Sistemi dinamici a tempo discreto Definiamo ora l'operatore anticipo di un passo, che chiamiamo z: scriveremo cioè zv(k) per indicare v(k+1), qualunque cosa v sia. Questo ci permette di descrivere un sistema dinamico lineare e tempo-invariante a tempo discreto con un operatore (composto di z) che chiamiamo funzione di trasferimento e indichiamo con G(z). Esempio: y(k) = 0.2y(k-1)+0.1y(k-2)+u(k-1) y(k+2) = 0.2y(k+1)+0.1y(k)+u(k+1) z2y(k)-0.2zy(k)-0.1y(k) = zu(k) y z G(z)= = 2 u z −0.2 z−0.1 11 Sistemi dinamici a tempo discreto La funzione di trasferimento è un "ritratto" del sistema in quanto dice come risponde a un certo ingresso. Se ne possono ottenere varie rappresentazioni del sistema: una intuitiva è la cosiddetta "risposta a scalino", cioè all'ingresso u(k)= { 1 k⩾0 0 k <0 a partire da k=0. Nell'esempio precedente si ha y(0) = 0.2y(-1)+0.1y(-2)+u(-1) = 0+0+0 = 0 y(1) = 0.2y(0)+0.1y(-1)+u(0) = 0+0+1 = 1 y(2) = 0.2y(1)+0.1y(0)+u(1) = 0.2+0+1 = 1.2... Ora giochiamo un po' con GNU Octave (https://www.gnu.org/software/octave/). 12 Sistemi dinamici a tempo discreto 13 Sistemi dinamici a tempo discreto Posso giudicare la stabilità (asintotica) di un sistema dalla sua funzione di trasferimento? Nel caso b G( z)= z−a sì: occorre |a|<1. In generale è più complicato, però possiamo arrivare al caso in cui il denominatore di G(z) abbia radici – che si dicono poli di G(z) – reali distinte. Detti pi quest poli, si può scrivere G(z) nella forma r1 rn G( z)=k + …+ z− p 1 z− p n e quindi occorre e basta che tutti i poli abbiano modulo minore di 1. 14 Sistemi dinamici a tempo discreto Facciamo due esempi: G 1 (z)= z−0.2 2 , G ( z)= 2 2 2 z −0.4 z−0.05 z +1.5 z−1 15 Sistemi dinamici a tempo discreto Consideriamo ora un sistema asintoticamente stabile e applichiamogli un ingresso u(k) costante – o, equivalentemente, a scalino – a partire da k=0. A che valore tende y(k) per k→∞? Detto U il valore costante di u(k), al valore Y per cui Y= a1Y...+anY...+b0U...+bmU ovvero a G(1)U. G(1) prende di conseguenza il nome di guadagno del sistema. Passiamo ora al concetto di retroazione. 16 Retroazione – l’anello (loop) di controllo w(k) e(k) +_ C(z) u(k) P(z) y(k) w(k) segnale di riferimento o set point; e(k) errore; u(k) segnale di controllo; y(k) variabile controllata; P(z) funzione di trasferimento del processo; C(z) funzione di trasferimento del controllore (da determinarsi). Domande cui occorre rispondere: (1) Come esprimo i requisiti? (2) Una volta espressi, come ne ottengo C(z)? 17 Retroazione – requisiti del controllo Ci sono molti modi di esprimerli. Uno semplice è dire come y deve rispondere a un dato andamento di w. Di solito, anche per poter confrontare facilmente soluzioni diverse, si usa come specifica la risposta desiderata di y a uno scalino di w. Da questa – come anche da altre risposte, noi ci fermiamo qui – si può ottenere una funzione di trasferimento desiderata da w a y, che chiamiamo T°(z). Una sceltqa abbastanza tipica è T ° ( z)= 1− p z− p che ha guadagno unitario (voglio che per k→∞ y tenda al valore costante di w); si sceglie ovviamente |p|<1 perché un sistema di controllo dev’essere asintoticamente stabile. 18 Retroazione – da T°(z) a C(z) w(k) e(k) +_ C(z) u(k) P(z) y(k) Chiamiamo T(z) la funzione di trasferimento effettiva da w a y. Per esprimerla in funzione di P(z) e C(z) immaginiamo di tagliare l’anello, percorriamolo e facciamo il bilancio. Otteniamo C ( z) P( z) T ( z)= 1+C (z) P (z) 19 Retroazione – da T°(z) a C(z) Risolviamo rispetto a C e già che ci siamo vediamo un attimo anche wxMaxima (https://wxmaxima-developers.github.io/wxmaxima/download.html). T ° (z ) 1 C ( z )= P (z) 1−T ° (z) 20 Esempi Cominciamo ad applicare le idee esposte. NOTA: per semplicità qui ci limitiamo al caso in cui il processo P(z) sia asintoticamente stabile. Calcoleremo C(z) e simuleremo l’anello chiuso, vedendo come risponde al set point e anche a possibili disturbi. Useremo sia wxMaxima e Octave che OpenModelica (https://openmodelica.org). 21 Esempio 1 1 0.25 P( z)= , T ° ( z)= z +0.8 z−0.75 wxMaxima Octave 22 Esempio 1 23 Esempio 2 1 0.25 P( z)= , T ° ( z)= 2 z−0.75 ( z−0.8) Due zeri (radici del numeratore) e un polo (radice del denominatore): non va bene. Si ottiene infatti u(k) = u(k-1) +0.25e(k+1)-0.4e(k)+0.16e(k-1) Questo farebbe dipendere u dal futuro di e, il che è ovviamente impossibile. 24 Esempio 2 Dobbiamo cambiare T°(z) e sceglierne una con una differenza tra numero di poli e numero di zeri – detta anche grado relativo – pari almeno a quella di P(z) ovvero 2. Per esempio scegliamo 0.25 T ° ( z)= z( z−0.75) che essendo 1/z l’operatore ritardo unitario equivale a chiedere la stessa risposta ritardata però di un passo. Così otteniamo 2 0.25 z −0.4 z +0.16 C (z )= 2 z −0.75 z−0.25 che a differenza del precedente si può realizzare. 25 Esempio 2 - OpenModelica 26 Esempio 2 - OpenModelica 27 Retroazione e disturbi d(k) w(k) e(k) +_ C(z) u(k) + + P(z) y(k) Spesso y è soggetta a disturbi, ovvero ingressi non controllabili come d(k). La retroazione può contrastarne l’effetto senza misurarli (vedi sopra). Osserviamo – ragionando come abbiamo fatto per ricavare T(z) – che la funzione di trasferimento da d a y vale infatti P ( z) F ( z)= 1+C (z) P ( z) 28 Esempio 3 – caso semplice dell’esempio 1 rivisto 1 1− p P( z)= , T ° (z)= , z−0.8 z− p p=0.1,0 .5,0 .9 29 Esempio 3 – caso semplice dell’esempio 1 rivisto 30 ...e nel tempo continuo? Per ragioni di tempo e semplicità qui possiamo dire soltanto poche cose e ci dobbiamo basare su un esempio. Immaginiamo di voler scrivere un modello a tempo discreto per un corpo riscaldato da una potenza termica sotto il nostro controllo (ingresso) e che disperde calore verso un ambiente esterno a una data temperatura (disturbo). Stavolta ci converrà far corrispondere un passo del tempo discreto k al trascorrere di un certo intervallo (per ovvi motivi di comodità uniforme) del tempo continuo t, che chiameremo h: avremo cioè t = kh 31 ...e nel tempo continuo? Chiamiamo C [J/°C] la capacità termica del corpo, G [W/°C] la conduttanza termica vero l’ambiente, Pmax [W] la massima potenza riscaldante, u [0,1] il segnale di controllo, T la temperatura del corpo, Te quella esterna. Scriviamo il bilancio dinamico di energia energia termica posseduta dal corpo al passo k = energia termica posseduta dal corpo al passo k-1 + h * potenza riscaldante al passo k-1 - h * potenza dispersa al passo k-1 Stiamo naturalmente approssimando perché tra i passi k-1 e k, cioè nel tempo continuo tra t=(k-1)h e t=kh, temperatura e potenze in generale non restano costanti: però facendo h “abbastanza piccolo” possiamo comunque raggiungere la precisione voluta (di come la si valuti non parliamo). 32 ...e nel tempo continuo? L’energia contenuta nel corpo è CT, la potenza riscaldante è uPmax e quella dispersa vale G(T-Te); possiamo quindi trasformare il bilancio che abbiamo scritto nel modello a tempo discreto T (k )−T (k−1) P max G = u(k−1)− ( T (k−1)−T e (k−1) ) h C C Al primo membro riconosciamo il rapporto incrementale di T rispetto al tempo, ovvero “variazione di T diviso intervallo di tempo in cui è avvenuta”. Come abbiamo detto, se facciamo tendere h a zero il modello diventa una rappresentazione esatta del fenomeno come lo abbiamo descritto. Il limite del rapporto incrementale quando l’incremento della variabile indipendente (t) tende a zero si chiama derivata della variabile dipendente (T) rispetto a quella dipendente; la si indica, coi nostri simboli, con dT/dt. 33 ...e nel tempo continuo? Arriviamo quindi a scrivere il modello a tempo continuo dT (t ) P max G = u(t )− ( T (t)−T e (t ) ) dt C C Osserviamo che la derivata rispetto al tempo s’interpreta facilmente come velocità istantanea di variazione della variabile sotto derivata. Il modello a tempo continuo dice quindi che istante per istante velocità di variazione dell’energia termica posseduta dal corpo = potenza riscaldante - potenza dispersa Ancora una volta la dinamica è data da un accumulo (di energia). 34 Sistema dinamico – ricordate? Cosa rende dinamico un sistema? Un fenomeno di accumulo di massa in un serbatoio, di energia termica in un corpo, di carica in un condensatore, di passeggeri in un tram... Questo si rappresenta dicendo che il sistema ha uno stato che "tiene memoria" della sua condizione, cosicché allo stesso ingresso il sistema può reagire con un'uscita diversa a seconda appunto dello stato. Nel caso a tempo continuo questo si rappresenta, detto u l'ingresso e x lo stato, con un'equazione differenziale (cioè contenente derivate) del tipo dx(t ) =f ( x (t ),u(t ) ) dt 35 Sistemi dinamici a tempo continuo - cenni Un altro modo di rappresentare un tale sistema è istituire un legame tra ingresso, uscita e loro derivate temporali (la derivata della derivata si chiama “derivata seconda” e così via). Qui vediamo solo un esempio: corpo di massa m in moto su guida rettilinea orizzontale, coordinata y(t), molla di richiamo che esercita una forza -kmy (mettiamo lo zero di y alla lunghezza di riposo della molla per comodità), attrito che si oppone al moto esercitando una forza linearmente dipendente dalla velocità e ad essa opposta, ossia -kady/dt, forza esterna in nostro potere Fmaxu, contata positiva se diretta come l’asse y. 36 Sistemi dinamici a tempo continuo - cenni Scriviamo il bilancio dinamico lungo l’asse y massa * accelerazione = somma delle forze Indicando la derivata prima con un punto e la seconda con due abbiamo m ÿ (t )=F max u−k m y (t )−k a ẏ (t ) Osserviamo che il legame tra u, y e le dervate che compaiono è lineare e tempoinvariante. Quindi... 37 Sistemi dinamici a tempo continuo - cenni Definiamo ora l'operatore derivata temporale, che chiamiamo s: scriveremo cioè sv(t) per indicare dv(t)/dt, qualunque cosa v sia. Questo ci permette di descrivere un sistema dinamico lineare e tempo-invariante a tempo continuo con un operatore (composto di s) che chiamiamo funzione di trasferimento e indichiamo con G(s). Nell’esempio m ÿ (t )=F max u−k m y (t)−k a ẏ (t ) F max y G(s)= = 2 u m s +k a s+k m 38 … e l’anello di controllo? A patto di usare t e s invece di k e z, rappresentazione e relazioni tra gli enti coinvolti sono identici. w(t) e(t) +_ C(s) u(t) P(s) y(t) Naturalmente il modo di eseguire i calcoli cambia e qui richiede un po’ di analisi matematica, per cui ci fermiamo. 39 Cosa c’è dietro l’angolo... In futuro – se già non avete iniziato a farlo – imparete che le soluzioni delle equazioni differenziali lineari tempoinvarianti sono esponenziali, che il loro comportamento (divergente o convergente, oscillante o monotono) dipende dalla parte reale delle radici di un polinomio a esse connesso, che tutto questo si può interpretare sia nel tempo che analizzando il contenuto in frequenza dei segnali coinvolti e che tutto ciò conduce a tecniche di sintesi del regolatore più potenti, espressive e generali dei nostri esempi. 40 ...da molto tempo... J.C. Maxwell, “On governors” (1868): https://en.wikisource.org/wiki/On_Governors 41 ...e per molto tempo ancora 42