Skip to content

Correcteurs Usuels

Ce chapitre présente les correcteurs P, PI et PID sous forme numérique. Pour chaque correcteur, nous donnons la fonction de transfert en z (obtenue par la méthode de Tustin) et l'équation de récurrence permettant l'implémentation.

Schéma de régulation numérique

Dans une boucle de régulation numérique, le correcteur C(z) calcule la commande u[n] à partir de l'erreur ε[n]=r[n]y[n]r[n] est la consigne et y[n] la mesure.

Correcteur Proportionnel (P)

Forme continue

C(s)=Kp

Forme discrète

Le correcteur P est indépendant de la fréquence, sa numérisation est donc triviale :

C(z)=Kp

Équation de récurrence

u[n]=Kpε[n]

Propriétés

  • Avantage : Simple à implémenter, réponse rapide
  • Inconvénient : Erreur statique non nulle en général

Correcteur Proportionnel-Intégral (PI)

Forme continue

C(s)=Kp(1+1Tis)=Kp1+TisTis

où :

  • Kp : gain proportionnel
  • Ti : constante de temps d'intégration

Forme discrète (Tustin)

En appliquant la substitution de Tustin s=2Tez1z+1 :

C(z)=Kp(Ti+Te/2)z+(Te/2Ti)Ti(z1)

En posant a=1+Te2Ti et b=1Te2Ti :

C(z)=Kpazbz1
Démonstration

Partant de C(s)=Kp(1+1Tis) et en substituant s=2Tez1z+1 :

C(z)=Kp(1+1Ti2Tez1z+1)=Kp(1+Te2Tiz+1z1)C(z)=Kp(z1)+Te2Ti(z+1)z1=Kpz(1+Te2Ti)1+Te2Tiz1

En posant a=1+Te2Ti et b=1Te2Ti :

C(z)=Kpazbz1

Équation de récurrence

À partir de U(z)(z1)=Kp(azb)E(z), on obtient :

u[n]=u[n1]+Kp(aε[n]bε[n1])

Forme incrémentale

Cette forme est dite incrémentale car la commande est calculée comme une correction de la valeur précédente. Elle présente l'avantage de limiter les discontinuités lors de changements de consigne.

Implémentation

python
# Initialisation
u_prev = 0
eps_prev = 0

# Paramètres
a = 1 + Te / (2 * Ti)
b = 1 - Te / (2 * Ti)

# Boucle de contrôle
def pi_controller(eps):
    global u_prev, eps_prev
    u = u_prev + Kp * (a * eps - b * eps_prev)
    u_prev = u
    eps_prev = eps
    return u
Réponse indicielle d'un système avec correcteur PI numérique

Correcteur Proportionnel-Intégral-Dérivé (PID)

Forme continue

C(s)=Kp(1+1Tis+Tds)

où :

  • Kp : gain proportionnel
  • Ti : constante de temps d'intégration
  • Td : constante de temps de dérivation

Forme parallèle

Le PID peut aussi s'écrire sous forme parallèle :

C(s)=Kp+Kis+Kds

avec Ki=KpTi et Kd=KpTd.

Forme discrète (Tustin)

En appliquant Tustin à chaque terme :

  • Terme P : Kp
  • Terme I : KiTe2z+1z1
  • Terme D : Kd2Tez1z+1

Équation de récurrence (forme incrémentale)

La forme incrémentale du PID numérique est :

Δu[n]=u[n]u[n1]Δu[n]=Kp(ε[n]ε[n1])+KiTeε[n]+KdTe(ε[n]2ε[n1]+ε[n2])

En regroupant les termes :

Δu[n]=q0ε[n]+q1ε[n1]+q2ε[n2]

avec :

  • q0=Kp+KiTe+KdTe
  • q1=Kp2KdTe
  • q2=KdTe

Équation de récurrence (forme position)

u[n]=u[n1]+q0ε[n]+q1ε[n1]+q2ε[n2]

Implémentation

python
# Initialisation
u_prev = 0
eps_prev1 = 0  # epsilon[n-1]
eps_prev2 = 0  # epsilon[n-2]

# Coefficients
q0 = Kp + Ki * Te + Kd / Te
q1 = -Kp - 2 * Kd / Te
q2 = Kd / Te

# Boucle de contrôle
def pid_controller(eps):
    global u_prev, eps_prev1, eps_prev2
    u = u_prev + q0 * eps + q1 * eps_prev1 + q2 * eps_prev2
    # Mise à jour des variables
    u_prev = u
    eps_prev2 = eps_prev1
    eps_prev1 = eps
    return u
Réponse indicielle d'un système avec correcteur PID numérique

Améliorations pratiques

Anti-windup

Lorsque l'actionneur sature, l'intégrateur continue d'accumuler l'erreur, ce qui provoque un dépassement important lors du retour en zone linéaire. L'anti-windup limite cet effet :

python
def pi_controller_antiwindup(eps, u_min, u_max):
    global u_prev, eps_prev, integral

    # Calcul de la commande
    integral += Ki * Te * eps
    u = Kp * eps + integral

    # Saturation avec anti-windup
    if u > u_max:
        u = u_max
        integral = u_max - Kp * eps  # Recalcul de l'intégrale
    elif u < u_min:
        u = u_min
        integral = u_min - Kp * eps

    eps_prev = eps
    return u

Filtrage de la dérivée

L'action dérivée amplifie le bruit de mesure. On ajoute souvent un filtre passe-bas :

D(s)=Kds1+TdNs

N est typiquement entre 5 et 20.

Tableau récapitulatif

CorrecteurFonction de transfert C(s)Annule l'erreur statiqueAction anticipatrice
PKpNonNon
PIKp(1+1Tis)OuiNon
PIDKp(1+1Tis+Tds)OuiOui

Choix de la période d'échantillonnage

Pour un bon fonctionnement du correcteur numérique, la période d'échantillonnage Te doit être choisie suffisamment petite par rapport à la dynamique du système :

Te[τ20,τ5]

τ est la constante de temps dominante du système en boucle fermée.

Attention

Une période d'échantillonnage trop grande dégrade les performances et peut même rendre le système instable.