Capitolo 10

Funzioni di trasferimento, poli e zeri

Possiamo leggere l'intera personalità di un sistema da una sola frazione?

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

La ricetta del sistema

June: Partiamo con il drone in volo stazionario a 1 m, con 4,9 N di spinta di base che bilanciano la gravità. Misuriamo sia il cambiamento richiesto sia quello reale di quota rispetto a quel riferimento. Appena prima di una nuova richiesta entrambi sono zero. Nell’esempio del gradino il riferimento salta a 2 m a t=0t=0: il cambiamento richiesto diventa 1 m, mentre il drone è ancora a 1 m.

Theo: Bene, perché nel capitolo scorso abbiamo buttato via i pezzi −h(0)-h(0) e la formula ha mentito. Misurati dal volo stazionario, quei valori di partenza sono davvero zero, quindi stavolta spariscono onestamente.

ΔH(s)=Kpms2+cs+Kp⏟G(s)⋅ΔR(s)\Delta\out{H}(s) = \underbrace{\frac{\eff{K_p}}{m s^2 + c s + \eff{K_p}}}_{G(s)} \cdot \Delta\sp{R}(s)

ΔR(s)\Delta\sp{R}(s) è la trasformata dello spostamento richiesto da 1 m; ΔH(s)\Delta\out{H}(s) è quella dello spostamento reale da 1 m. G(s)G(s) dipende dal drone e dal controllore. È la funzione di trasferimento: spostamento in uscita diviso per quello in ingresso, entrambi inizialmente zero.

Il grafico mostra sempre le altezze da terra. Aggiungi il metro iniziale allo spostamento previsto dalla formula per ottenere l’altezza blu nel grafico.

Mika: June aveva ragione: la frazione è il drone. È come la sua ricetta. Ci metti dentro qualsiasi ingrediente e ti dice cosa esce!

Prova tre ingressi diversi sullo stesso drone. La ricetta non cambia mai, cambia solo ΔR(s)\Delta\sp{R}(s).

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Parole nuove

Funzione di trasferimento G(s)G(s)
Spostamento in uscita trasformato ÷ spostamento in ingresso trasformato, partendo dallo stesso stato di quiete. Per questo drone lineare è un rapporto di polinomi in ss.
Partire da fermo (condizioni iniziali nulle)
Ogni cambiamento e la sua velocità valgono zero a t=0t = 0, come quando misuriamo dal volo stazionario. Allora anche i termini dei valori di partenza del Capitolo 9, come −h(0)-h(0), sono zero, e G(s)G(s) racconta tutta la storia.

I poli: dove il sistema vuole vivere

Dove esplode G(s)G(s)? Dove il denominatore si annulla. Questi punti sono i poli, disegnati come ×. Questo drone ne ha due, uno per ciascuno dei due moti naturali este^{st} del Capitolo 7.

Nel Capitolo 8, la trasformata di eate^{at} urlava in s=as = a. Leggilo al contrario: dovunque GG urla, si nasconde un moto epte^{pt}.

June: Quindi i poli sono i modi del Capitolo 7, seduti sulla mappa!

Ora rovesciamo la cosa. Invece di scegliere i guadagni e trovare i poli, trasciniamo i poli e vediamo che drone otteniamo. Serve una seconda manopola, Kd\eff{K_d}: una spinta contro la velocità, che conosceremo per bene nel Capitolo 11. Si somma all'attrito cc, e le due radici sono pp e la sua gemella allo specchio pˉ\bar p (la barra cambia segno alla parte immaginaria, come le gemelle del Capitolo 6):

ms2+(c+Kd) s+Kp=0⟹s=p, pˉ(i poli)\begin{aligned} & m s^2 + (c + \eff{K_d})\,s + \eff{K_p} = 0 \\ \Longrightarrow\quad & s = p,\ \bar p \qquad \text{(i poli)} \end{aligned}

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Prima indovina! Cosa fa il drone se trasciniamo i poli nella metà destra del piano s?

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Leggere la mappa

Giocaci. Saltano fuori alcune regole, e ognuna è una vecchia amica travestita:

  • Metà sinistra = si calma, metà destra = esplode. La parte reale σ\sigma è il tasso con cui eσte^{\sigma t} si restringe o cresce.
  • Più a sinistra = più rapido. Assestarsi richiede circa 4/∣σ∣4/|\sigma| secondi (le linee verticali tratteggiate): le quattro costanti di tempo del Capitolo 7, perché e−∣σ∣te^{-|\sigma| t} scende sotto il 2% dopo ln⁡50/∣σ∣≈3,9/∣σ∣\ln 50/|\sigma| \approx 3{,}9/|\sigma| secondi.
  • Più in alto = più oscillante. L'altezza ω\omega è la pulsazione smorzata del Capitolo 7, quindi un'oscillazione dura 2π/ω2\pi/\omega secondi.
  • L'angolo fissa la sovraelongazione. L'angolo θ\theta dal semiasse reale negativo dà ζ=cos⁡θ\zeta = \cos\theta (il cerchio del Capitolo 7), e la sovraelongazione è e−π∣σ∣/ωe^{-\pi|\sigma|/\omega} (i raggi tratteggiati). Vicino all'asse reale va oltre pochissimo, vicino all'asse verticale moltissimo. (Esatto per due poli e nessuno zero, partendo da fermo. Uno zero lo cambia: nella prossima sezione uno trasforma il 12% in 15%.)

Mika: Volevo un solo polo in alto e uno in basso. Non me lo lascia fare! Quello di sotto continua a copiare quello di sopra.

Theo: Ti ricordi le trottole gemelle del Capitolo 6? Un drone reale ha un moto reale, quindi ogni este^{st} che gira ha bisogno della sua gemella allo specchio per annullare le parti immaginarie. I poli complessi arrivano sempre in coppie allo specchio.

Prima indovina! Tieni σ=−2\sigma = -2 e fai scorrere i poli dritti in su, da ±4i\pm 4i a ±8i\pm 8i. Cosa cambia?

June: Il parco giochi è saltato quando abbiamo risposto: la coppia fantasma sta in ±4i\pm 4i, quella nuova in ±8i\pm 8i. Stesso inviluppo, il doppio delle oscillazioni, e una prima escursione molto più grande.

Mika: E se entrambi i poli stessero sull'asse reale, uno in −0,2-0{,}2 e uno in −5-5?

June: Quello veloce sparisce in un secondo. Quello lento è il capo.

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Parole nuove

Polo
Un valore di ss in cui la funzione di trasferimento esplode. Ogni polo pp è un moto epte^{pt} del sistema.
Coppia allo specchio p, pˉp,\ \bar p
Due poli con la stessa parte reale e parti immaginarie opposte. I poli complessi di un sistema reale arrivano sempre così.
Polo dominante
Il polo più vicino all'asse verticale. Il suo moto lento dura più degli altri, quindi di solito decide il tempo di assestamento, a meno che uno zero non gli stia quasi sopra (nel Capitolo 11 ce n'è uno).

Gli zeri: un'occhiata veloce

Anche il numeratore può annullarsi. Questi punti sono gli zeri, disegnati come ○. Di solito cambiano quanto del moto di ogni polo appare in uscita. Se uno zero cade esattamente su un polo, il fattore comune si semplifica e quel polo sparisce da questa ricetta ingresso-uscita. Però è ancora dentro il sistema: spingi il drone in un altro modo, con una raffica, e quel moto ritorna. Questo conta parecchio se il polo nascosto sta a destra.

Ecco un sistema con poli fissi in −2±3i-2 \pm 3i e uno zero che puoi far scorrere. (Il Kd\eff{K_d} del nostro parco giochi spinge contro la velocità del drone, quindi la sua ricetta non ha zeri. Spingi invece contro la velocità dell'errore, come farà il Capitolo 11, e compare uno zero in −Kp/Kd-\eff{K_p}/\eff{K_d}: per questi poli è −6,5-6{,}5, con il 15% di sovraelongazione invece del 12%.)

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

June: Stessi poli, ma quando lo zero si avvicina all'origine la risposta schizza su molto più in fretta e va più oltre!

Theo: Stessi poli vuol dire stessi moti. Quindi lo zero non può aggiungerne uno nuovo. Deve aggiungere un po' di qualcosa che abbiamo già.

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Moltiplicare per ss prende la pendenza (Capitolo 9), quindi il fattore (1+s/∣z∣)(1 + s/|z|) aggiunge 1/∣z∣1/|z| volte la pendenza. Ecco perché uno zero vicino all'origine fa reagire il sistema con tanta forza ai cambiamenti: la sovraelongazione cresce, anche se i poli non si sono mossi. Da lontano, lo zero conta pochissimo. Per ora sugli zeri non ci serve altro.

Parole nuove

Zero
Un valore di ss in cui la funzione di trasferimento vale zero: un moto ezte^{zt} che il sistema non fa passare.

Più a sinistra è sempre meglio?

June: Facile: trasciniamo i poli molto a sinistra. Si assesta in un lampo. Il drone migliore di sempre!

Theo: Però, che spinta serve? Finora abbiamo fatto finta che i motori potessero spingere forte quanto vuole la matematica.

È ora di essere onesti. I nostri motori possono spingere tra 0 N e 20 N (circa quattro volte il peso del drone). Qui sotto, i poli si spostano a sinistra lungo una linea a 45° (cioè ζ≈0,71\zeta \approx 0{,}71, il punto ideale del Capitolo 7). Le curve tratteggiate sono la matematica con motori immaginari e illimitati; quelle continue sono i motori veri.

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Oltre circa −3,9±3,9i-3{,}9 \pm 3{,}9i la matematica chiede più di 20 N. La spinta arancione si appiattisce contro il limite, e oltre circa −6±6i-6 \pm 6i la matematica vorrebbe persino tirare il drone in giù, cosa che le eliche non sanno fare. Il drone vero smette di seguire la bella previsione lineare. Il suo assestamento smette di migliorare a circa 0,7 s, vicino a −6,5±6,5i-6{,}5 \pm 6{,}5i, e più a sinistra peggiora, con sovraelongazione in più.

June: L'ho fatto scorrere fino a −8±8i-8 \pm 8i. La matematica dice 0,53 s. Il drone vero ci mette 0,77 s: più lento che a −6,5-6{,}5!

Mika: E la sua sovraelongazione è passata dal 4% al 16%. Tutta quella spinta in più non è mai stata disponibile.

June: Quindi "più a sinistra" è meglio solo finché non finisci il motore. Piazzare i poli è un compromesso, non una gara.

Parole nuove

Prima spinta
La spinta richiesta nel primo istante di un gradino: mg+Kp Δrmg + \eff{K_p}\,\Delta r, prima che il drone si sia mosso.
Budget di spinta
Le posizioni dei poli che i motori si possono permettere per un dato gradino: un cerchio attorno a 0.
Limite dei motori (saturazione)
La spinta vera viene tagliata a 0–20 N, qualunque cosa chieda la matematica.

Chiudere l'anello sulla carta

June: Nel Capitolo 1 abbiamo disegnato l'anello come scatole e frecce. Nel mondo di s ogni scatola si limita a moltiplicare. Possono le scatole fare l'algebra al posto nostro?

Diamo a ogni scatola la sua ricetta. Il controllore è C(s)C(s), per ora semplicemente Kp\eff{K_p}. Il drone da solo, con il cambiamento di spinta in ingresso e il cambiamento di altezza in uscita, è P(s)=1ms2+csP(s) = \frac{1}{ms^2 + cs}: P come plant, l'inglese per impianto, la parola del Capitolo 1, non la P del controllo P. Viene dritto dall'equazione del drone, proprio come la ricetta qui sopra.

June: Facile. La richiesta passa dal controllore, poi dal drone. Moltiplichiamo lungo la linea!

ΔH=?C P ΔR=Kpms2+cs ΔR\Delta\out{H} \overset{?}{=} C\,P\,\Delta\sp{R} = \frac{\eff{K_p}}{ms^2 + cs}\,\Delta\sp{R}

Theo: Poli in 0 e −2? Nessuna oscillazione, e un polo in 0 che non si assesta mai. È l'anello aperto del Capitolo 1: dire al drone cosa fare e non guardare mai. Il controllore non vede la richiesta, June. Vede l'errore.

La freccia che torna indietro dal drone è tutto il senso della retroazione. Il controllore agisce su ΔR−ΔH\Delta\sp{R} - \Delta\out{H}, quindi l'uscita compare da tutti e due i lati. Raccoglila e dividi:

ΔH=C P (ΔR−ΔH)ΔH (1+C P)=C P ΔRΔH=C P1+C P ΔR\begin{aligned} \Delta\out{H} &= C\,P\,\big(\Delta\sp{R} - \Delta\out{H}\big) \\ \Delta\out{H}\,\big(1 + C\,P\big) &= C\,P\,\Delta\sp{R} \\ \Delta\out{H} &= \frac{C\,P}{1 + C\,P}\,\Delta\sp{R} \end{aligned}

Metti C=KpC = \eff{K_p} e P=1/(ms2+cs)P = 1/(ms^2+cs), poi moltiplica sopra e sotto per ms2+csms^2 + cs:

C P1+C P=Kp/(ms2+cs)1+Kp/(ms2+cs)=Kpms2+cs+Kp\frac{C\,P}{1 + C\,P} = \frac{\eff{K_p}/(ms^2+cs)}{1 + \eff{K_p}/(ms^2+cs)} = \frac{\eff{K_p}}{ms^2 + cs + \eff{K_p}}

Mika: È la ricetta dell'inizio del capitolo! L'abbiamo trovata due volte: una dall'equazione del drone, una dalle scatole.

Quindi i poli dell'anello stanno dove il denominatore, 1+C(s) P(s)1 + C(s)\,P(s), vale zero. È lo stesso che C P=−1C\,P = -1. Leggi C PC\,P come un giro dell'anello: quello che il controllore e poi il drone fanno a un segnale. In un polo, un giro riporta il segnale della stessa grandezza e capovolto, e il segno meno nell'errore lo capovolge di nuovo. Così si mantiene da solo, senza nessuna richiesta.

1+C(s) P(s)=0⟺C(s) P(s)=−11 + C(s)\,P(s) = 0 \quad\Longleftrightarrow\quad C(s)\,P(s) = -1

Provalo su un'oscillazione costante, s=iωs = i\omega. Un giro trasforma la freccia dell'oscillazione in C(iω) P(iω)C(i\omega)\,P(i\omega): più corta o più lunga, e girata all'indietro. Il widget disegna quella freccia per ogni velocità di oscillazione, e il punto −1 che dovrebbe raggiungere.

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Theo: Per quanto spinga Kp\eff{K_p}, la curva si piega verso −1 ma non lo tocca mai. Ci va più vicino più o meno alla velocità di oscillazione propria del drone.

Ecco perché. L'attrito ruota il giro all'indietro fino a 90°, e la massa di altri 90° al massimo, ma insieme arrivano a 180° solo per oscillazioni infinitamente rapide. Quindi il controllo P da solo non può mai rendere instabile questo drone. Un Kp\eff{K_p} più grande fa solo passare il giro più vicino a −1, e più vicino vuol dire meno smorzamento: il "più KpK_p, più oscillazione" del Capitolo 2, ora in un disegno.

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗

Parole nuove

Anello chiuso
Un controllore che agisce sull'errore, così l'uscita torna indietro nel suo stesso ingresso: ΔH=C P1+C P ΔR\Delta H = \frac{C\,P}{1 + C\,P}\,\Delta R.
Guadagno d'anello C(s) P(s)C(s)\,P(s)
Quello che un giro dell'anello fa a un segnale (nei libri: la funzione d'anello). I poli dell'anello chiuso stanno dove vale −1.

Cosa sappiamo adesso

Cosa abbiamo capito

  • Sì, basta una frazione. La funzione di trasferimento G(s)G(s) = cambiamento dell'uscita ÷ cambiamento dell'ingresso nel mondo di s, partendo da fermo. È la ricetta del sistema, ΔH=G⋅ΔR\Delta\out{H} = G\cdot\Delta\sp{R}, e viene dritta dall'equazione del drone.
  • I poli (×) sono dove G(s)G(s) esplode: i modi epte^{pt} di cui è fatto il sistema.
  • Metà sinistra = stabile, metà destra = esplode. Più a sinistra = più rapido (si assesta in circa 4/∣σ∣4/|\sigma| s, una regola pratica), più in alto = più oscillante (un'oscillazione = 2π/ω2\pi/\omega s), angolo = smorzamento ζ\zeta = sovraelongazione e−π∣σ∣/ωe^{-\pi|\sigma|/\omega}. Il polo più vicino all'asse è il capo.
  • I poli complessi arrivano sempre in coppie allo specchio.
  • Gli zeri (○) cambiano quanto ottieni di ciascun modo. Vicini all'origine aggiungono uno scatto: 1/∣z∣1/|z| volte la pendenza.
  • Chiudi l'anello sulla carta e la ricetta è C P1+C P\frac{C\,P}{1 + C\,P}. I poli stanno dove un giro dell'anello, C PC\,P, vale −1.
  • La prima spinta è mg+m∣p∣2mg + m|p|^2 per un gradino di 1 m, quindi i poli lontani richiedono una spinta che i motori non hanno.

Theo: "I poli sono bellissimi. Ma un momento: per tutto il capitolo abbiamo barato regalando al drone la sua spinta di hovering. Senza, la gravità lo fa ancora abbassare. La nostra mappa va bene. È il nostro controllore che va sistemato."

Capitolo 10: Funzioni di trasferimento, poli e zeri ↗