Commande en espace d’état Guy Gauthier ing. Ph.D. SYS-823 - Juillet 2011
Représentation en boucle ouverte Équation : m entrées, p sorties, n équations d’état linéaires.
Commande par retour d’état linéaire Structure :
Représentation en boucle fermée (retour d’état linéaire) Équation en boucle fermée :
Contrôlabilité Au préalable, il faut vérifier si le système est contrôlable. Rang(M)=n Matrice de contrôlabilité M :
Design par placement de pôles Valeurs propres désirées pour (A-BK) : Parties réelles négatives; Choix des gains de la matrice de gains K.
Exemple de design Soit le système suivant :
Étape 1 Vérifier si le système est contrôlable: Matrice de contrôlabilité Rang(M) = 3 = n contrôlable.
Étape 2 (si complètement contrôlable) Du polynôme caractéristique de la matrice A, déterminer les coefficients a1, a2, ..., an : Polynôme caractéristique :
Étape 2 (si complètement contrôlable) Ainsi, pour l’exemple : Donc :
Étape 3 Construire la matrice de transformation T = MW. Matrice W :
Étape 3 (exemple) Construire la matrice W :
Étape 3 (fin exemple) Obtenir la matrice de transformation T : Ici :
Étape 4 Choisir les valeurs propres désirées: Pôles en boucle fermée. Écrire le polynôme caractéristique correspondant. Ce qui mène au coefficients :
Étape 4 (exemple) Donc, si on choisi les pôles suivants: Cela mène à : 1 2 3
Étape 5 Calcul de la matrice de gains K : Donc : Taille : 1 ligne et n colonnes. Donc :
Étape 5 (exemple) Dans l’exemple :
Exemple sur MATLAB® % Entrée des matrices A et B % Déterminer la matrice de contrôlabilité » M=ctrb(A,B); % Déterminer le rang de M » r=rank(M) r = 3 % Puisque le rang est de 3, le placement des pôles est possible
Exemple sur MATLAB® (suite) % Calcul du polynôme caractéristique » JA = poly(A) JA = 1.0000 6.0000 5.0000 1.0000 % Extraction des coefficients » a1 = JA(2); a2 = JA(3); a3 = JA(4); % Définition des matrices W et T » W = [a2 a1 1; a1 1 0 ; 1 0 0]; » T = M*W;
Exemple sur MATLAB® (suite) % Calcul du polynôme caractéristique désiré en définissant la matrice diagonale J » J=[-2-4*j 0 0 ; 0 -2+4*j 0; 0 0 -10]; » JJ=poly(J) JJ = 1 14 60 200 % Extraction des coefficients désirés » aa1 = JJ(2); aa2 = JJ(3); aa3 = JJ(4);
Exemple sur MATLAB® (suite) % Calcul de la matrice de gains K » K=-[aa3-a3 aa2-a2 aa1-a1]*inv(T) K = -199.0000 -55.0000 -8.0000 % Donc les gains k1, k2 et k3 sont: » k1 = K(1) k1 = -199 » k2 = K(2) k2 = -55.0000 » k3 = K(3) k3 = -8.0000
Exemple sur SIMULINK® (schéma bloc)
Exemple sur SIMULINK® (résultats) Amplitude x2 x1 Temps (min)
Exemple #2 Soit un système représenté par les matrices suivantes : » B = [0 ; -1 ; 0 ; 0.5]; » C = [1 0 0 0 ; 0 0 1 0]; MATLAB®
Solution – Est-ce contrôlable ? Vérifions : » M = ctrb(A,B); » r = rank(M) r = 4 % Oui MATLAB®
Solution – Équation caractéristique de A det(sI-A) donne ce polynôme de A : Conclusion : » JA = poly(A); » a1 = JA(2); a2 = JA(3); a3 = JA(4); a4 = JA(5); MATLAB®
Solution – Équation caractéristique désirée En choisissant les pôles pour obtenir une dynamique ayant un temps de réponse à 2% de 2 secondes et un amortissement de 0.5. 2ième ordre. Puisque :
Solution – Équation caractéristique désirée Le dépassement maximal étant : Les pôles désirés sont donc : mu 1 et 2 sont les pôles dominants correspondant à une fréquence propre de 4 rd/s et un amortissement de 0.5 mu 3 et 4 sont placés loin à gauche pour minimiser leur effets sur le système
Solution – Équation caractéristique désirée L’équation caractéristique est finalement : Les coefficients désirés : » J = [-2-2*sqrt(3)*j 0 0 0; 0 -2+2*sqrt(3)*j 0 0; 0 0 -10 0; 0 0 0 -10]; » JJ = poly(J); » aa1 = JJ(2); aa2 = JJ(3); aa3 = JJ(4); aa4 = JJ(5); MATLAB®
Solution – Matrice de transformation T La matrice W étant déduite des coefficients de A, on peut obtenir la matrice T comme suit : » W = [a3 a2 a1 1; a2 a1 1 0 ; a1 1 0 0 ; 1 0 0 0]; » T=M*W; MATLAB®
Solution – Matrice des gains K La matrice K est calculée comme suit : » K=-[aa4-a4 aa3-a3 aa2-a2 aa1-a1]*inv(T) K = 300.2105 61.8947 168.4211 75.7895 MATLAB®
Simulation (pendule inversé) Schéma SIMULINK® : x1 = angle du pendule (radians) x2 = vitesse angulaire du pendule (radians par secondes) x3 = position du chariot (mètres) x4 = vitesse du chariot (mètres par secondes) y1 = x1 = angle du pendule (radians) y2 = x3 = position du chariot (mètres)
Simulation (pendule inversé) Conditions initiales : x1 = 0.1; x2 = 0 ; x3 = 0 ; x4 = 0 y2 y1 x1 = angle du pendule (radians) x2 = vitesse angulaire du pendule (radians par secondes) x3 = position du chariot (mètres) x4 = vitesse du chariot (mètres par secondes) Temps (min)
Simulation (pendule inversé) Conditions initiales : x1 = 0.1; x2 = 0 ; x3 = 0 ; x4 = 0 x2 x3 x1 x4 x1 = angle du pendule (radians) x2 = vitesse angulaire du pendule (radians par secondes) x3 = position du chariot (mètres) x4 = vitesse du chariot (mètres par secondes) Temps (min)
Réservoir de mélange À contrôler: Température T Hauteur h Commande: Débit eau froide FC Débit eau chaude FH
Modèle du réservoir de mélange Équations :
Paramètres du système Voici les paramètres du système : K = 1 m2.5/min hs = 4 m Ac = 2 m2 TH = 65 °C TC = 15 °C TS = 35 °C
Matrices du modèle Donc : MATLAB® » A = [-1/8 0 ; 0 -1/4];
Contrôlabilité Calcul de M : Rang de M = 2. MATLAB® » M = ctrb(A,B); » r = rank(M); r = 2 MATLAB®
Équation en boucle fermée Posant K : Alors : % En symbolique » syms k11 k12 k21 k22 » S = A+B*[k11 k12; k21 k22]; MATLAB®
Élimination de l’interaction Il suffit que A+BK soit diagonal, donc : Il faut donc que :
Élimination de l’interaction En remplaçant, on trouve que : » S = A+B*[k11 -k22; 3/2*k11 k22] S = [ -1/8+5/4*k11, 0] [ 0, -1/4-25/4*k22] MATLAB®
Placement des pôles En ajustant les gains k11 et k22, on modifie la dynamique du système. Indépendance de l’ajustement des 2 gains. On désire un constante de temps de 2 min pour le niveau et de 5 min pour la température.
Équation caractéristique L’équation caractéristique de A+BK est : D’où :
Calcul de la matrice N Il faut que BN soit une matrice diagonale. Définissant N : Alors :
Calcul de la matrice N Pour BN diagonale, il faut : Ce qui mène à :
Calcul de la matrice N Donc la matrice N sera : MATLAB® » syms n11 n12 n21 n22 » U = B*[n11 n12; n21 n22] U = [ 1/2*n11+1/2*n21, 1/2*n12+1/2*n22] [ 15/4*n11-5/2*n21, 15/4*n12-5/2*n22] » U = B*[n11 -n22; 3/2*n11 n22] [ 5/4*n11, 0] [ 0, -25/4*n22] MATLAB®
Simulation Schéma SIMULINK® : y1 = x1 = Δ niveau (mètres) x1 = angle du pendule (radians) x2 = vitesse angulaire du pendule (radians par secondes) x3 = position du chariot (mètres) x4 = vitesse du chariot (mètres par secondes) y1 = x1 = Δ niveau (mètres) y2 = x2 = Δ température (°C)
Simulation °C ou m y1 = Δh y2 = ΔT Temps (min) Échelons unitaires sur température à 1 min; sur niveau à 10 min. x1 = angle du pendule (radians) x2 = vitesse angulaire du pendule (radians par secondes) x3 = position du chariot (mètres) x4 = vitesse du chariot (mètres par secondes) Temps (min)
Simulation u2 = débit d’eau froide m3/min u1 = débit d’eau chaude Échelons unitaires sur température à 1 min; sur niveau à 10 min. m3/min x1 = angle du pendule (radians) x2 = vitesse angulaire du pendule (radians par secondes) x3 = position du chariot (mètres) x4 = vitesse du chariot (mètres par secondes) u1 = débit d’eau chaude Temps (min)
Commande par retour de la sortie Structure :
Représentation en boucle fermée (retour de sortie) Équation en boucle fermée :
Observateur d’état (préambule) Considérons le système suivant : On peut faire l’approximation de l’état du système comme suit :
Observateur d’état L’approximation est l’observateur d’état. En utilisant u et y comme entrée, il déduit la valeur du vecteur d’état.
Schéma bloc d’un observateur d’état Terme de correction
Observateur d’état complet Schéma bloc :
Observateur d’état complet (Erreur) L’erreur est évaluée comme suit : Si les paramètres de l’observateur sont identiques aux paramètres réels, cela simplifie l’équation.
Observateur d’état complet (Erreur – suite) Donc, comme Ae = A, Be = B et Ce = C: La dynamique du vecteur d’erreur « e » est définie par les valeurs propres de la matrice A-KeC.
Observateur d’état complet (Dynamique de l’erreur) Les valeurs propres de la matrice A-KeC sont ajustés pour que la dynamique soit beaucoup plus rapide que la dynamique du système réel.
Observateur d’état complet (Condition essentielle) Pour pouvoir réaliser un observateur d’état, il faut que le système soit observable. Rang(N) = n Matrice d’observabilité N :
Exemple de conception d’un observateur d’état complet Soit le système suivant :
Étape 1 Vérifier si le système est observable: Matrice d’observabilité Rang(N) = 3 = n observable.
Étape 2 (si complètement observable) Du polynôme caractéristique de la matrice A, déterminer les coefficients a1, a2, ..., an : Polynôme caractéristique :
Étape 2 (si complètement contrôlable) Ainsi, pour l’exemple : Donc :
Étape 3 Construire la matrice de transformation Q = (WN*)-1. Rappel - Matrice W :
Étape 3 (exemple) Construire la matrice W :
Étape 3 (fin exemple) Obtenir la matrice de transformation Q : Ici :
Étape 4 Choisir les valeurs propres désirées: Pôles en boucle fermée. Écrire le polynôme caractéristique correspondant. Ce qui mène au coefficients :
Étape 4 (exemple) Donc, si on choisi les pôles suivants: Cela mène à : 1 2 3
Étape 5 Calcul de la matrice de gains Ke :
Étape 5 (exemple) Dans l’exemple :
Exemple sur MATLAB® % Entrée des matrices A et B % Déterminer la matrice d’observabilité » N=obsv(A,C)’; % Déterminer le rang de N » r=rank(N) r = 3 % Puisque le rang est de 3, le placement des pôles est possible
Exemple sur MATLAB® (suite) % Calcul du polynôme caractéristique » JA = poly(A) JA = 1.0000 6.0000 5.0000 1.0000 % Extraction des coefficients » a1 = JA(2); a2 = JA(3); a3 = JA(4); % Définition des matrices W et Q » W = [a2 a1 1; a1 1 0 ; 1 0 0]; » Q = inv(W*N’);
Exemple sur MATLAB® (suite) % Calcul du polynôme caractéristique désiré en définissant la matrice diagonale J » J=[-4-8*j 0 0 ; 0 -4+8*j 0; 0 0 -10]; » JJ=poly(J) JJ = 1 18 160 800 % Extraction des coefficients désirés » aa1 = JJ(2); aa2 = JJ(3); aa3 = JJ(4);
Exemple sur MATLAB® (suite) % Calcul de la matrice de gains Ke » Ke=Q*[aa3-a3;aa2-a2;aa1-a1] Ke = 12.0000 83.0000 241.0000
Exemple sur SIMULINK® (schéma bloc)
Exemple sur SIMULINK® (schéma bloc) Sous-système : Observateur
Exemple sur SIMULINK® (schéma bloc) [B Ke] Sous-système : Observateur
Exemple sur SIMULINK® (résultats) y =x1 Amplitude erreur sur y x2 x3 Temps (min)
Si on ajoute l’aspect contrôle Le contrôle par retour d’état sera le même que celui décrit au début de la présentation. On avait obtenu la matrice de gain K :
Exemple sur SIMULINK® (schéma bloc)
Exemple sur SIMULINK® (résultats) y Temps (min)