Conception de contrôleurs pour le mouvement des navires : approche PID et intégrale par backstepping

I. Architecture du système de contrôle

Le système de contrôle est conçu en cascade pour gérer différentes sources d'erreur et de perturbation. La structure comprend trois composantes principales qui fonctionnent de manière synergique.

  • Couche PID : responsable de la réduction des écarts de suivi, tels que les déviations de position et de cap.
  • Couche intégrale par backstepping : compense les incertitudes du modèle dynamique et les perturbations à haute fréquence.
  • Module de préaction : annule les effets prévisibles des forces environnementales, comme le vent, les vagues et les courants.

II. Implémentation de l'algorithme PID

1. Structure de base du PID

L'implémentation utilise une version incrémentale du PID pour améliorer la stabilité numérique. Le code suivant illustre la logique de calcul.

% Contrôleur PID en forme incrémentale
function sortie = pid_increm(kp, ki, kd, err_prev, err_act, ref)
    term_P = kp * (err_act - err_prev);
    term_I = ki * integrale;
    term_D = kd * (err_act - 2*err_prev + err_ant);
    sortie = term_P + term_I + term_D;
end

2. Méthodes de réglage des paramètres

Plusieurs techniques existent pour déterminer les gains du PID, chacune adoptée à des contextes spécifiques.

Méthode Procédure Domaine d'application
Ziegler-Nichols 1. Isoler les termes intégral et dérivé. 2. Trouver le gain critique Ku et la période Tu. 3. Calculer les paramètres. Réglage industriel classique
Algorithme génétique 1. Définir une fonction d'optimisation. 2. Encoder l'espace des paramètres. 3. Itérer vers la solution optimale. Systèmes complexes nécessitant une haute précision
Méthode de courbe d'amortissement 1. Observer le taux d'amortissement de la réponse indicielle. 2. Ajuster les paramètres selon des ratios spécifiques (ex. 4:1 ou 10:1). Procédés industriels continus

3. Exemple de paramétrage pour un navire

Les gains ci-dessous ont été affinés par des essais en conditions réelles de mer.

% Gains du PID pour le contrôle de position et de cap
kp_pos = 1.25;   % Gain proportionnel de la boucle de position
ki_pos = 0.045;  % Gain intégral de la boucle de position
kd_pos = 0.85;   % Gain dérivé de la boucle de position

kp_cap = 0.75;   % Gain proportionnel de la boucle de cap
ki_cap = 0.025;  % Gain intégral de la boucle de cap
kd_cap = 0.55;   % Gain dérivé de la boucle de cap

III. Design du contrôleur intégral par backstepping

1. Établissement de la loi de contrôle

Le contrôleur est conçu à l'aide de la méthode de Lyapunov pour garantir la stabilité. L'algorithme calcule le signal de commande en intégrant une variable d'état auxiliaire.

% Commande par backstepping avec intégration
function cmd = backstepping_cmd(ref_etat, etat_actuel, etat_int)
    erreur_pos = ref_etat(1) - etat_actuel(1);  % Erreur sur la position
    
    % Calcul de la commande
    cmd = (masse * (erreur_pos + gain_k1 * etat_int(1)) - amortissement * cmd_prec) / inertie;
    
    % Mise à jour de l'intégrateur
    etat_int(2) = etat_int(2) + (erreur_pos + gain_k1 * etat_int(1)) * pas_temps;
end

2. Paramètres clés

Le choix des paramètres influence fortement les performances et la robustesse du contrôleur.

Paramètre Principe de conception Plage de valeurs typique
K1 Lié à l'inertie du système, ajusté pour la réponse transitoire. 0.5 à 2.0
K2 Doit satisfaire les conditions de stabilité de Hurwitz. 0.1 à 0.5
λ Coefficient d'amortissement pour atténuer les oscillations hautes fréquences. 0.707 à 1.0

IV. Stratégie de contrôle combinée

1. Module de compensation par préaction

Ce module calcule une correction basée sur des modèles empiriques des forces environnementales.

% Calcul de la compensation pour le vent et les vagues
function cmd_ff = compens_env(force_vent, force_courant)
    gain_ff = 0.75;  % Gain de la préaction
    cmd_ff = gain_ff * (force_vent + force_courant);
end

2. Boucle de contrôle principale

La routine suivante orchestre l'ensemble des composantes pour une exécution en temps réel.

% Boucle principale de contrôle
for iter = 1:nb_iterations
    % Acquisition de l'état actuel
    etat_actuel = lire_etat_navire();
    
    % Compensation des perturbations
    cmd_env = compens_env(force_vague, force_courant);
    
    % Action PID
    err_prec = err_act;
    err_act = ref_etat - etat_actuel;
    delta_pid = pid_increm(kp, ki, kd, err_prec, err_act);
    
    % Action par backstepping
    etat_int = maj_integrateur(etat_int, err_act);
    delta_bs = backstepping_cmd(ref_etat, etat_actuel, etat_int);
    
    % Synthèse de la commande totale
    cmd_totale = cmd_env + delta_pid + delta_bs;
    
    % Application de la commande
    appliquer_commande(cmd_totale);
end

V. Points clés pour l'implémentation pratique

1. Configuration matérielle recommandée

Module Spécifications suggérées Exigences de précision
Unité de traitement DSP 32 bits en virgule flottante (ex. TI C6678) Cycle de calcul ≤ 1 ms
Capteurs Compas à fibre optique (précision 0.01°) Bruit < 0.05°/√Hz
Actionneurs Servo de direction (temps de réponse < 50 ms) Précision de positionnement ±0.1°
Interface de communication EtherCAT (cycle 1 ms) Jitter de latence < 1 μs

2. Mesures anti-perturbation

  1. Filtrage matériel : Ajouter un filtre actif d'ordre deux à l'entrée du CAN (fréquence de coupure 10 Hz).
  2. Filtrage logiciel : Combiner une moyenne mobile avec un filtre de Kalman.
  3. Diagnostic de pannes : Détection des défaillances de capteurs par analyse des résidus.

3. Gestion du temps réel

% Planification des tâches en temps réel
Tâche1 : Calcul PID (Priorité=10, Période=1 ms)
Tâche2 : Backstepping (Priorité=9, Période=1 ms)
Tâche3 : Journalisation (Priorité=5, Période=10 ms)

VI. Extensions et applications

Cette architecture de contrôle peut être étendue à des scénarios plus avancés, tels que le contrôle coordonné de plusieurs navires via des algorithmes de cohérence, l'optimisation de la consommation d'énergie par prédiction du modèle, ou la tolérance aux pannes grâce à des observateurs à modes glissants pour la reconstruction des défauts d'actionneurs.

Étiquettes: PID backstepping contrôle de mouvement navires algorithmes de contrôle

Publié le 5 août à 21h52