Chapitre 10

Fonctions de transfert, pôles et zéros

Peut-on lire toute la personnalité d'un système dans une seule fraction ?

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

La recette du système

June: Démarrons avec le drone en vol stationnaire à 1 m, sa poussée de base de 4,9 N compensant la gravité. Mesurons le changement demandé et le changement de hauteur réel depuis cette référence. Juste avant une nouvelle consigne, les deux changements valent zéro. Dans l’exemple de l’échelon, la consigne saute à 2 m à t=0t=0 : son changement vaut alors 1 m tandis que le drone est encore à 1 m.

Theo: Tant mieux, parce qu'au dernier chapitre on a laissé tomber les morceaux en −h(0)-h(0) et la formule a menti. Mesurées depuis le vol stationnaire, ces valeurs de départ sont vraiment nulles, donc cette fois elles disparaissent honnêtement.

Δ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) est la transformée du déplacement demandé depuis 1 m ; ΔH(s)\Delta\out{H}(s) celle du déplacement réel depuis 1 m. G(s)G(s) dépend du drone et du correcteur. C’est la fonction de transfert : déplacement de sortie divisé par déplacement d’entrée, les deux partant de zéro.

Le graphique montre toujours les hauteurs au-dessus du sol. Ajoute la hauteur initiale de 1 m au déplacement prévu par la formule pour retrouver la hauteur bleue sur le graphique.

Mika: June avait raison : la fraction est le drone. C'est comme sa recette. Donne-lui n'importe quel ingrédient et elle te dit ce qui sort !

Essaie trois entrées différentes sur le même drone. La recette ne change jamais, seul ΔR(s)\Delta\sp{R}(s) change.

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Nouveaux mots

Fonction de transfert G(s)G(s)
Déplacement de sortie transformé ÷ déplacement d’entrée transformé, en partant du même état de repos. Pour ce drone linéaire, c’est un rapport de polynômes en ss.
Partir du repos (conditions initiales nulles)
Chaque changement et sa vitesse valent zéro en t=0t = 0, comme quand on mesure depuis le vol stationnaire. Alors les termes de valeur de départ du chapitre 9, comme −h(0)-h(0), sont nuls eux aussi, et G(s)G(s) dit tout.

Les pôles : là où le système veut vivre

Où G(s)G(s) explose-t-elle ? Là où son dénominateur s'annule. Ces points sont les pôles, dessinés par des ×. Ce drone en a deux, un pour chacun des deux mouvements naturels este^{st} du chapitre 7.

Au chapitre 8, la transformée de eate^{at} hurlait en s=as = a. Lis-le à l'envers : partout où GG hurle, un mouvement epte^{pt} se cache.

June: Donc les pôles, ce sont les modes du chapitre 7, posés sur la carte !

Maintenant, retournons la question. Au lieu de choisir des gains et de trouver les pôles, faisons glisser les pôles et regardons quel drone on obtient. Il faut pour ça un deuxième bouton, Kd\eff{K_d} : une poussée contre la vitesse, qu'on rencontrera vraiment au chapitre 11. Il s'ajoute à la traînée cc, et les deux racines sont pp et son jumeau miroir pˉ\bar p (la barre change le signe de la partie imaginaire, comme les jumeaux du chapitre 6) :

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

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Prédis d'abord ! Que fait le drone si on déplace les pôles dans la moitié droite du plan s ?

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Lire la carte

Amuse-toi avec. Quelques règles sautent aux yeux, et chacune est une vieille amie déguisée :

  • Moitié gauche = ça se calme, moitié droite = ça explose. La partie réelle σ\sigma est le taux de rétrécissement ou de croissance de eσte^{\sigma t}.
  • Plus à gauche = plus rapide. Le temps de réponse vaut environ 4/∣σ∣4/|\sigma| secondes (les lignes verticales en tirets) : les quatre constantes de temps du chapitre 7, car e−∣σ∣te^{-|\sigma| t} passe sous 2 % après ln⁡50/∣σ∣≈3,9/∣σ∣\ln 50/|\sigma| \approx 3{,}9/|\sigma| secondes.
  • Plus haut = plus oscillant. La hauteur ω\omega est la pseudo-pulsation du chapitre 7, donc une oscillation dure 2π/ω2\pi/\omega secondes.
  • L'angle fixe le dépassement. L'angle θ\theta mesuré depuis l'axe réel négatif donne ζ=cos⁡θ\zeta = \cos\theta (le cercle du chapitre 7), et le dépassement vaut e−π∣σ∣/ωe^{-\pi|\sigma|/\omega} (les rayons en tirets). Près de l'axe réel, ça dépasse à peine ; près de l'axe vertical, beaucoup. (C'est exact pour deux pôles sans zéro, en partant du repos. Un zéro change la donne : dans la section suivante, l'un d'eux fait passer 12 % à 15 %.)

Mika: Je voulais juste un pôle en haut et un tout en bas. Il ne me laisse pas faire ! Celui du bas n'arrête pas de copier celui du haut.

Theo: Tu te souviens des tourniquets jumeaux du chapitre 6 ? Un vrai drone a un vrai mouvement, donc chaque este^{st} qui tourne a besoin de son jumeau miroir pour annuler les parties imaginaires. Les pôles complexes viennent toujours par paires miroirs.

Prédis d'abord ! Garde σ=−2\sigma = -2 et fais glisser les pôles tout droit vers le haut, de ±4i\pm 4i à ±8i\pm 8i. Qu'est-ce qui change ?

June: Le terrain de jeu a bondi quand on a répondu : la paire fantôme est en ±4i\pm 4i, la nouvelle en ±8i\pm 8i. Même enveloppe, deux fois plus d'oscillations, et une première oscillation bien plus ample.

Mika: Et si les deux pôles sont sur l'axe réel, l'un en −0,2-0{,}2 et l'autre en −5-5 ?

June: Le rapide disparaît en une seconde. C'est le lent qui commande.

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Nouveaux mots

Pôle
Une valeur de ss où la fonction de transfert explose. Chaque pôle pp est un mouvement epte^{pt} du système.
Paire miroir p, pˉp,\ \bar p
Deux pôles de même partie réelle et de parties imaginaires opposées. Les pôles complexes d'un système réel viennent toujours ainsi.
Pôle dominant
Le pôle le plus proche de l'axe vertical. Son mouvement lent dure plus longtemps que les autres, donc c'est en général lui qui fixe le temps de réponse, sauf si un zéro est posé presque sur lui (le chapitre 11 en a un).

Les zéros : un coup d'œil

Le numérateur peut s'annuler lui aussi. Ces points sont les zéros, dessinés par des ○. En général, ils changent la quantité de chaque mouvement de pôle qui apparaît dans la sortie. Si un zéro tombe exactement sur un pôle, le facteur commun se simplifie et ce pôle disparaît de cette recette entrée-sortie. Il est pourtant toujours dans le système : pousse le drone autrement, avec une rafale, et ce mouvement revient. C'est très important si le pôle caché est à droite.

Voici un système aux pôles fixes en −2±3i-2 \pm 3i, avec un zéro que tu peux faire glisser. (Le Kd\eff{K_d} de notre terrain de jeu pousse contre la vitesse du drone, donc sa recette n'a pas de zéro. Pousse plutôt contre la vitesse de l'erreur, comme on le fera au chapitre 11, et un zéro apparaît en −Kp/Kd-\eff{K_p}/\eff{K_d} : pour ces pôles, c'est −6,5-6{,}5, avec 15 % de dépassement au lieu de 12 %.)

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

June: Mêmes pôles, mais quand le zéro s'approche de l'origine, la réponse bondit bien plus vite et dépasse davantage !

Theo: Mêmes pôles veut dire mêmes mouvements. Donc le zéro ne peut pas en ajouter un nouveau. Il doit ajouter un peu de quelque chose qu'on a déjà.

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Multiplier par ss prend la pente (chapitre 9), donc le facteur (1+s/∣z∣)(1 + s/|z|) ajoute 1/∣z∣1/|z| fois la pente. C'est pour ça qu'un zéro près de l'origine rend le système si sensible aux changements : le dépassement grandit, alors que les pôles n'ont pas bougé. Loin, le zéro ne compte presque plus. C'est tout ce qu'il nous faut sur les zéros pour l'instant.

Nouveaux mots

Zéro
Une valeur de ss où la fonction de transfert s'annule : un mouvement ezte^{zt} que le système ne transmet pas.

Plus à gauche, c'est toujours mieux ?

June: Facile : on déplace les pôles très loin à gauche. Stabilisé en un clin d'œil. Le meilleur drone du monde !

Theo: Mais quelle poussée il faut pour ça ? Jusqu'ici, on a fait comme si les moteurs pouvaient pousser aussi fort que les maths le demandent.

L'heure d'être honnêtes. Nos moteurs peuvent pousser entre 0 N et 20 N (environ quatre fois le poids du drone). Ci-dessous, les pôles partent vers la gauche le long d'une droite à 45° (c'est ζ≈0,71\zeta \approx 0{,}71, le juste milieu du chapitre 7). Les courbes en tirets, ce sont les maths avec des moteurs imaginaires et illimités ; les courbes pleines, de vrais moteurs.

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Au-delà d'environ −3,9±3,9i-3{,}9 \pm 3{,}9i, les maths demandent plus de 20 N. La poussée orange s'écrase contre la limite, et au-delà d'environ −6±6i-6 \pm 6i les maths veulent même tirer le drone vers le bas, ce que les hélices ne savent pas faire. Le vrai drone ne suit plus la jolie prédiction linéaire. Son temps de réponse cesse de s'améliorer vers 0,7 s, près de −6,5±6,5i-6{,}5 \pm 6{,}5i, et plus à gauche il empire, avec un dépassement en plus.

June: Je l'ai fait glisser jusqu'à −8±8i-8 \pm 8i. Les maths disent 0,53 s. Le vrai drone met 0,77 s : plus lent qu'en −6,5-6{,}5 !

Mika: Et son dépassement est passé de 4 % à 16 %. Toute cette poussée en plus, elle n'a jamais été disponible.

June: Donc « plus à gauche », c'est mieux seulement jusqu'à ce qu'on soit à court de moteur. Placer des pôles, c'est un compromis, pas une course.

Nouveaux mots

Première poussée
La poussée demandée au premier instant d'un échelon : mg+Kp Δrmg + \eff{K_p}\,\Delta r, avant que le drone ait bougé.
Budget de poussée
Les positions de pôles que les moteurs peuvent se permettre pour un échelon donné : un cercle autour de 0.
Limite des moteurs (saturation)
La vraie poussée est écrêtée entre 0 et 20 N, quoi que demandent les maths.

Fermer la boucle sur le papier

June: Au chapitre 1, on a dessiné la boucle avec des boîtes et des flèches. Dans le monde de s, chaque boîte se contente de multiplier. Est-ce que les boîtes peuvent faire l'algèbre à notre place ?

Donne sa recette à chaque boîte. Le correcteur, c'est C(s)C(s), pour l'instant simplement Kp\eff{K_p}. Le drone tout seul, changement de poussée en entrée et changement de hauteur en sortie, c'est P(s)=1ms2+csP(s) = \frac{1}{ms^2 + cs} : P comme procédé, le « système » du chapitre 1, et pas le P de la commande P. Il sort tout droit de l'équation du drone, de la même façon que la recette plus haut.

June: Facile. La demande passe par le correcteur, puis par le drone. On multiplie le long de la ligne !

Δ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: Des pôles en 0 et en −2 ? Aucune oscillation, et un pôle en 0 qui ne se stabilise jamais. C'est la boucle ouverte du chapitre 1 : dire au drone quoi faire sans jamais regarder. Le correcteur ne voit pas la demande, June. Il voit l'erreur.

La flèche qui revient du drone, c'est tout l'intérêt de la rétroaction. Le correcteur agit sur ΔR−ΔH\Delta\sp{R} - \Delta\out{H}, donc la sortie apparaît des deux côtés. Regroupe-la, puis divise :

Δ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}

Pose C=KpC = \eff{K_p} et P=1/(ms2+cs)P = 1/(ms^2+cs), puis multiplie le haut et le bas par 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: C'est la recette du début du chapitre ! On l'a obtenue deux fois : une fois à partir de l'équation du drone, une fois à partir des boîtes.

Donc les pôles de la boucle sont là où le dénominateur, 1+C(s) P(s)1 + C(s)\,P(s), s'annule. C'est la même chose que C P=−1C\,P = -1. Lis C PC\,P comme un tour de boucle : ce que le correcteur, puis le drone, font subir à un signal. En un pôle, un tour ramène le signal à la même taille mais retourné, et le signe moins de l'erreur le retourne à nouveau. Donc il s'entretient tout seul, sans aucune demande.

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

Essaie sur une oscillation régulière, s=iωs = i\omega. Un tour transforme la flèche de l'oscillation en C(iω) P(iω)C(i\omega)\,P(i\omega) : plus courte ou plus longue, et tournée en arrière. Le widget dessine cette flèche pour chaque vitesse d'oscillation, ainsi que le point −1 qu'elle devrait atteindre.

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Theo: J'ai beau pousser Kp\eff{K_p} très loin, la courbe se penche vers −1 sans jamais le toucher. Elle s'en approche le plus vers la vitesse d'oscillation propre du drone.

Voilà pourquoi. La traînée retarde un tour de boucle de 90° au maximum, et la masse d'encore 90° au maximum, mais ensemble elles n'atteignent 180° que pour des oscillations infiniment rapides. Donc la commande P seule ne peut jamais faire basculer ce drone. Un Kp\eff{K_p} plus grand fait seulement passer le tour plus près de −1, et plus près veut dire moins d'amortissement : le « plus de KpK_p, plus d'oscillations » du chapitre 2, maintenant en image.

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗

Nouveaux mots

Boucle fermée
Un correcteur qui agit sur l'erreur, si bien que la sortie revient dans sa propre entrée : ΔH=C P1+C P ΔR\Delta H = \frac{C\,P}{1 + C\,P}\,\Delta R.
Gain de boucle C(s) P(s)C(s)\,P(s)
Ce qu'un tour de boucle fait subir à un signal. Les pôles de la boucle fermée sont là où il vaut −1.

Ce qu'on sait maintenant

Ce qu'on a compris

  • Oui, une seule fraction suffit. La fonction de transfert G(s)G(s) = changement de sortie ÷ changement d'entrée dans le monde de s, en partant du repos. C'est la recette du système, ΔH=G⋅ΔR\Delta\out{H} = G\cdot\Delta\sp{R}, et elle sort tout droit de l'équation du drone.
  • Les pôles (×) sont les endroits où G(s)G(s) explose : les modes epte^{pt} dont le système est fait.
  • Moitié gauche = stable, moitié droite = ça explose. Plus à gauche = plus rapide (temps de réponse d'environ 4/∣σ∣4/|\sigma| s, une règle empirique), plus haut = plus oscillant (une oscillation = 2π/ω2\pi/\omega s), angle = amortissement ζ\zeta = dépassement e−π∣σ∣/ωe^{-\pi|\sigma|/\omega}. Le pôle le plus proche de l'axe commande.
  • Les pôles complexes viennent toujours par paires miroirs.
  • Les zéros (○) changent la quantité de chaque mode qu'on obtient. Près de l'origine, ils ajoutent un coup de fouet : 1/∣z∣1/|z| fois la pente.
  • Ferme la boucle sur le papier et la recette devient C P1+C P\frac{C\,P}{1 + C\,P}. Les pôles sont là où un tour de boucle, C PC\,P, vaut −1.
  • La première poussée vaut mg+m∣p∣2mg + m|p|^2 pour un échelon de 1 m, donc des pôles lointains réclament une poussée que les moteurs n'ont pas.

Theo : « Les pôles, c'est magnifique. Mais attendez : on a triché tout le chapitre en offrant au drone sa poussée de vol stationnaire. Sans elle, la gravité le fait toujours s'affaisser. Notre carte est très bien. C'est notre correcteur qu'il faut réparer. »

Chapitre 10 : Fonctions de transfert, pôles et zéros ↗