Implémentation d'un contrôleur par mode glissant Super-Twisting via S-Function MATLAB

Architecture de l'algorithme Super-Twisting (STA)

La commande par mode glissant de type Super-Twisting est une techniqeu de contrôle d'ordre supérieur conçue pour atténuer le phénomène de broutement (chattering) tout en conservant la robustesse face aux incertitudes du modèle. Contrairement aux approches classiques, le STA génère une commande continue en agissant sur la dérivée de la surface de glissement.

La structure globale du signal de commande \(u\) se compose de deux éléments principaux :

  • Commande équivalente (\(u_{eq}\)) : Elle compense la dynamique connue du système pour maintenir l'état sur la surface de glissement.
  • Terme de commutation non-linéaire (\(u_{sta}\)) : Il s'appuie sur une intégration de la fonction signe pour lisser les discontinuités.

L'expression mathématique de la loi de commande est définie par :

\(u = u_{eq} + \alpha |s|^{1/2} \text{sgn}(s) + \int \beta \text{sgn}(s) dt\)

Où \(s\) représente la surface de glissement, généralement définie pour un système de second ordre par \(s = \dot{e} + \lambda e\).

Développement de la S-Function dans Simulink

Pour intégrer ce contrôleur dans un schéma Simulink, nous utilisons une S-Function de niveau 1. Voici la structure de gestion des flags système :

function [sys, x0, str, ts] = sta_controller_core(t, x, u, flag)
    switch flag
        case 0
            [sys, x0, str, ts] = init_sizes();
        case 1
            sys = compute_derivatives(t, x, u);
        case 3
            sys = generate_outputs(t, x, u);
        case {2, 4, 9}
            sys = [];
        otherwise
            error(['Code de flag non géré : ', num2str(flag)]);
    end
end

Configuration des paramètres d'entrée/sortie

Dans cette phase, nous définissons le nombre de ports d'entrée et les dimensions du vecteur d'état. Pour le Super-Twisting, un état continu est nécessaire pour stocker l'intégrale de la fonction signe.

function [sys, x0, str, ts] = init_sizes()
    setup = simsizes;
    setup.NumContStates  = 1;    % Pour le terme intégral du STA
    setup.NumDiscStates  = 0;
    setup.NumOutputs     = 1;    % Signal de commande u
    setup.NumInputs      = 3;    % [Consigne, Position, Vitesse]
    setup.DirFeedthrough = 1;
    setup.NumSampleTimes = 1;
    
    sys = simsizes(setup);
    x0  = 0;                     % État initial de l'intégrateur
    str = [];
    ts  = [0 0];                 % Échantillonnage continu
end

Calcul de la loi de commande

Le calcul effectif s'effectue dans les fonctions de dérivées et de sortie. Nous séparons la logique pour respecter la structure ODE de MATLAB.

function sys = compute_derivatives(t, x, u)
    % Gains de gain de robustesse
    W = 1.2; 
    
    % Calcul de l'erreur et de la surface
    target_pos = u(1);
    current_pos = u(2);
    current_vel = u(3);
    
    error_val = current_pos - target_pos;
    slope_param = 8.5;
    sliding_surf = current_vel + slope_param * error_val;
    
    % Mise à jour de la partie intégrale du Super-Twisting
    sys = W * sign(sliding_surf);
end

function sys = generate_outputs(t, x, u)
    % Gains du contrôleur
    K1 = 2.5; 
    
    % Récupération des entrées
    err = u(2) - u(1);
    dot_err = u(3);
    lambda = 8.5;
    
    % Surface de glissement
    s = dot_err + lambda * err;
    
    % Terme proportionnel non-linéaire
    u_prop = K1 * sqrt(abs(s)) * sign(s);
    
    % Terme intégral (provenant de l'état continu x)
    u_int = x(1);
    
    % Loi de commande totale (sans u_eq pour simplification)
    sys = u_prop + u_int;
end

Analyse de Convergence

La stabilité du système est garantie par une fonction de Lyapunov de type quadratique stricte. En choisissant des gains \(\alpha\) et \(\beta\) suffisamment élevés par rapport aux bornes supérieures des perturbations externes, la trajectoire du système atteint la surface \(s = 0\) en temps fini et y reste malgré les bruits de mesure ou les variations de paramètres.

Comparaison des performances

L'application de cette méthode sur un système mécanique oscillant (type pendule) permet de mettre en évidence les avantages suivants par rapport à une commande glissante classique (SMC) :

Critère d'évaluation SMC Classique (Signe) SMC Super-Twisting
Amplitude du broutement Élevée (Haute fréquence) Quasi-nulle (Signal lisse)
Précision en régime établi Moyenne (Erreur résiduelle) Excellente (Convergence vers 0)
Complexité de calcul Faible Modérée

Étiquettes: MATLAB Simulink Control-Theory Sliding-Mode-Control Super-Twisting-Algorithm

Publié le 22 juin à 18h21