Discrétisation pour systèmes numériques temps réel
1. Contexte : Automatique numérique
En automatique numérique, un système continu doit être implémenté sur un calculateur qui fonctionne par échantillonnage :
- On mesure les grandeurs à des instants discrets : \(t_k = k \cdot T_e\)
- On calcule la commande avec les valeurs actuelles et passées
- On ne connaît pas les valeurs futures
Objectif : Transformer une équation différentielle en équation de récurrence calculable en temps réel.
2. Méthode d'Euler explicite (temps réel)
Principe
Pour une équation différentielle :
On approxime la dérivée par :
Ce qui donne l'équation de récurrence :
✅ Calculable en temps réel : on utilise uniquement \(x_k\) et \(u_k\) (valeurs connues)
Exemple pratique : Filtre RC
Équation différentielle d'un filtre passe-bas :
Avec \(\tau = RC\), on isole la dérivée :
Application d'Euler explicite :
Implémentation C/Python :
// C
float vs_k = 0; // État initial
float Te = 0.001; // 1ms
float tau = 0.1; // 100ms
// Boucle temps réel
vs_k = vs_k * (1 - Te/tau) + (Te/tau) * ve_k;
# Python
vs_k = 0
Te = 0.001
tau = 0.1
# Boucle temps réel
vs_k = vs_k * (1 - Te/tau) + (Te/tau) * ve_k
Condition de stabilité
Analyse du pôle :
Le système discrétisé a pour pôle :
Un système discret est stable si tous ses pôles sont à l'intérieur du cercle unité :
Application :
Cela donne deux conditions :
-
\(1 - \frac{T_e}{\tau} < 1 \Rightarrow T_e > 0\) ✅ (toujours vrai)
-
\(1 - \frac{T_e}{\tau} > -1 \Rightarrow \frac{T_e}{\tau} < 2\)
Condition de stabilité :
Interprétation physique :
Si \(T_e \geq 2\tau\) : - Le pôle devient \(p \leq -1\) - Le système oscille et diverge - La discrétisation introduit une instabilité numérique qui n'existe pas dans le système continu !
Exemple : Si \(\tau = 0.1s\) et \(T_e = 0.25s\) : \(\(p = 1 - \frac{0.25}{0.1} = -1.5\)\) \(\(|p| = 1.5 > 1\)\) ❌ Instable !
En pratique : - Pour la stabilité : \(T_e < 2\tau\) - Pour la précision : \(T_e \leq \frac{\tau}{10}\)
3. Transformée en Z
Définition
La transformée en Z permet d'analyser les systèmes discrets comme Laplace pour les systèmes continus.
Pour un signal discret \(x[k]\) :
Propriétés essentielles
| Domaine temporel | Domaine en Z |
|---|---|
| \(x[k-1]\) | \(z^{-1}X(z)\) |
| \(x[k+1]\) | \(zX(z) - zx[0]\) |
De l'équation de récurrence à la fonction de transfert
Reprenons l'équation du filtre RC :
avec \(a = 1 - \frac{T_e}{\tau}\) et \(b = \frac{T_e}{\tau}\)
Transformée en Z :
Fonction de transfert :
Sous forme normalisée (division par \(z\)) :
Analyse de stabilité
Le système est stable si le pôle \(p = a\) est à l'intérieur du cercle unité :
Ce qui donne : \(0 < T_e < 2\tau\)
4. De la fonction de transfert à l'équation de récurrence
Méthode
Soit une fonction de transfert :
Étape 1 : Multiplier par le dénominateur
Étape 2 : Développer
Étape 3 : Transformée inverse (utiliser \(z^{-1}Y(z) \leftrightarrow y[k-1]\))
✅ Implémentable en temps réel : on utilise \(y_{k-1}\), \(u_k\) et \(u_{k-1}\) (valeurs connues)
5. Exemple complet : Correcteur PI
Équation continue
Discrétisation
L'intégrale est approximée par la somme :
Équation de récurrence :
avec \(S_k = S_{k-1} + e_k\) (somme cumulée)
Implémentation :
float Kp = 1.0, Ki = 0.5, Te = 0.001;
float S = 0; // Somme cumulée
// Boucle temps réel
float e_k = consigne - mesure;
S = S + e_k;
float u_k = Kp * e_k + Ki * Te * S;
Fonction de transfert en Z
6. Méthodes alternatives (aperçu)
Tustin (trapèzes)
Meilleure approximation que Euler, mais plus complexe :
Nécessite de résoudre une équation (moins direct).
Runge-Kutta d'ordre 2 (RK2)
Plus précis qu'Euler, utilisable en temps réel :
Coût : 2 évaluations de la fonction au lieu d'1.
7. Résumé pratique
Pour l'implémentation temps réel
- Partir de l'équation différentielle
- Appliquer Euler explicite : \(\frac{dx}{dt} \approx \frac{x_{k+1} - x_k}{T_e}\)
- Obtenir l'équation de récurrence : \(x_{k+1} = f(x_k, u_k)\)
- Vérifier la stabilité : \(T_e < 2\tau\)
- Implémenter en C/Python/etc.
Pour l'analyse
- Partir de l'équation de récurrence
- Appliquer la transformée en Z
- Obtenir \(H(z)\)
- Analyser : pôles, stabilité, réponse fréquentielle
Choix de \(T_e\)
- Stabilité : \(T_e < 2\tau\)
- Précision : \(T_e \leq \frac{\tau}{10}\)
- Shannon : \(T_e \leq \frac{1}{2f_{max}}\)
En pratique : prendre le plus contraignant.
8. Applications
- Filtrage numérique (anti-repliement, passe-bas, etc.)
- Correcteurs PID numériques
- Observateurs d'état
- Commande de moteurs
- Régulation de température
- Traitement du signal en temps réel