Rapport de TP : Systèmes Multivariables et
Commande Optimale
Suspension Électromagnétique
Salhi Mohamed : GE-SE
19 mai 2025
Supervision du Professeur Hassan EL FADIL
1
1 Introduction
Ce TP porte sur la modélisation et la commande d'un système de suspension élec-
tromagnétique. L'objectif est de stabiliser une balle métallique en lévitation à l'aide d'un
électroaimant piloté par des lois de commande avancées (retour d'état, observateur, LQR).
Les étapes clés comprennent :
La modélisation non linéaire et linéarisée du système,
L'analyse de stabilité en boucle ouverte,
La conception d'un régulateur par retour d'état,
L'implémentation d'un observateur d'état,
La comparaison entre placement de pôles et commande optimale.
2 Modélisation sous forme d'état
2.1 Point d'équilibre
À l'équilibre, les forces s'équilibrent :
i2eq Kea i2eq
M g = Kea =⇒ heq = .
heq Mg
Avec ieq = 7 A, Kea = 0.0001, M = 0.05 kg , et g = 9.81 m/s2 :
0.0001 × 72
heq = ≈ 0.01 m.
0.05 × 9.81
2.2 Expressions théoriques des matrices linéarisées
Les matrices A, B et C sont obtenues par linéarisation Jacobienne autour du point
d'équilibre :
∂ ḣ
∂ ḣ ∂ ḣ ∂ ḣ
∂h
∂ v̇
∂v
∂ v̇
∂i
∂ v̇ ∂V c
∂ v̇
A= ∂h ∂v ∂i
, B = ∂V c
, C= 1 0 0 .
∂ i̇ ∂ i̇ ∂ i̇ ∂ i̇
∂h ∂v ∂i eq ∂Vc eq
Avec les équations du système :
ḣ = v
Kea i2
v̇ = g −
Mh
Vc − Ri
i̇ =
L
On obtient analytiquement :
0 1 0
0
K i2
A = Meah2eq 0 − 2K ea ieq
M heq
, B = 0 .
eq
R 1
0 0 −L L
2
2.3 Expressions numériques
Avec les valeurs M = 0.05 kg , Kea = 0.0001, ieq = 7 A, heq = 0.01 m, R = 1 Ω,
L = 0.01 H :
0 1 0
A = 982 0 −2.80 ,
0 0 −100
0 0
B = 0 = 0 , C = 1 0 0 .
1
0.01
100
3 Analyse du système
3.1 Dénition du système linéarisé
Le système est déni dans un script MATLAB (Script1.m) avec la commande ss :
M = 0.05; % Masse ( kg )
g = 9.81; % G r a v i t (m/ s )
Kea = 0.0001; % Coefficient m a g n t i q u e
L = 0.01; % Inductance (H )
R = 1; % R sistance ( )
i_eq = 7; % Courant d ' quilibre ( A)
%% Calcul du point d ' quilibre h_eq
h_eq = ( Kea * i_eq ^2) / ( M * g ); % 0.01 m
Vc_eq = R * i_eq ; % Tension d ' quilibre (7 V)
%% Calcul symbolique des matrices A et B
syms h v i Vc
% quations d ' tat non l i n a i r e s
dhdt = v;
dvdt = (M* g - Kea *i ^2/ h ) / M ;
didt = ( Vc - R *i) / L;
% Jacobiennes par rapport aux tats [h , v , i] et l ' e n t r e Vc
A_sym = jacobian ([ dhdt ; dvdt ; didt ], [h , v , i ]);
B_sym = jacobian ([ dhdt ; dvdt ; didt ], Vc );
% Substitution des valeurs d ' quilibre
A_val = subs ( A_sym , {h , i , Vc }, { h_eq , i_eq , Vc_eq });
B_val = subs ( B_sym , {h , i , Vc }, { h_eq , i_eq , Vc_eq });
% Conversion en matrices n u m r i q u e s
A = double ( A_val )
B = double ( B_val )
C = [1 0 0]; % Sortie = h
sys = ss (A ,B ,C ,0);
3
3.2 Pôles, zéros et stabilité
% Calcul des p l e s et z r o s
poles = pole ( sys ); % R s u l t a t : [ -100 , 44.27 , -44.27]
zeros = zero ( sys ); % R s u l t a t : [] ( aucun z r o )
Conclusion : Le système est instable en boucle ouverte à cause du pôle positif
+31.3369.
3.3 Valeurs propres vs pôles
eigenvalues = eig (A ); % Identique poles : confirmation
Les valeurs propres de A coïncident avec les pôles du système.
3.4 Fonction de transfert en BO
Hbo = tf ( sys );
−280.3
HBO (s) = s3 +100s2 −982s−9.82·104
3.5 Modèle Simulink
Figure 1 Modèle Simulink du système linéarisé boucle ouverte
Figure 2 Résultat de la simulation en boucle ouverte pour u = 0
4
Figure 3 Résultat de la simulation en boucle ouverte pour u = 7
Figure 4 Résultat de la simulation en boucle ouverte pour u = 10
3.6 Conclusion
La divergence observée dans les réponses temporelles est directement liée au pôle
instable s1 = +31.34
Tout écart par rapport au point d'équilibre (∆h 6= 0) entraîne une croissance
exponentielle non amortie
4 Commande par retour d'état
4.1 Matrice de commandabilité et rang
Après qu'on a charger le script1 et on ajoute le code ci-dessous :
La matrice de commandabilité C est calculée dans MATLAB avec la fonction ctrb :
C_AB = ctrb (A , B );
rang_CAB = rank ( C_AB ); % R sultat : 3
Conclusion : Le système est entièrement commandable (rang = 3).
4.2 Stabilisation par retour d'état
La commandabilité complète permet de placer librement les pôles en boucle fermée.
La stabilisation est donc possible.
4.3 Calcul du gain K
Le polynôme caractéristique désiré est :
Pdes (s) = (s + 50)(s2 + 20s + 400) = s3 + 70s2 + 1400s + 20000
Les pôles désirés sont : −50, −10 ± j17.32. Calcul de K avec acker :
poles_des = [ -50 , -10+17.32 i , -10 -17.32 i ];
K = acker (A , B , poles_des );
% R s u l t a t : K = [ -316.6058 -8.4985 -0.3]
5
4.4 Calcul du gain f
Pour un gain statique unitaire :
1
f=
C(−A + BK)−1 B
Implémentation MATLAB :
f = 1 / (C * inv (-A + B *K) * B ); % R s u l t a t : f = -71.3558
4.5 Fonction de transfert en boucle fermée
Le système bouclé a pour fonction de transfert :
Y (s)
HBF (s) = = C(sI − (A − BK))−1 B · f
V (s)
Calcul avec MATLAB :
sys_bf = ss (A - B *K , B*f , C , 0);
Hbf = tf ( sys_bf );
% R s u l t a t : Hbf = 20000 / (s ^3 + 70 s ^2 + 1400 s + 20000)
4.6 Simulations Simulink
Figure 5 Architecture Simulink avec retour d'état (u = −Kx + f · v)
Résultats pour href = 0.04 m et href = 0.1 m :
Figure 6 Réponse en boucle fermée (href = 0.04 m)
6
Figure 7 Réponse en boucle fermée (href = 0.1 m)
Figure 8 Réponse en boucle fermée (href = 0.04 m et (perturbation = 0.01m)
4.7 Conclusion
Le retour d'état permet de stabiliser ecacement le système. Les spécications dyna-
miques (temps de réponse, dépassement) sont respectées grâce au placement de pôles. Le
gain f assure un suivi précis de la consigne en régime permanent.
L'analyse des résultats de simulation révèle les propriétés clés du système en boucle
fermée :
Suivi de consigne précis
Avant t = 1 s : La sortie h(t) suit parfaitement href (Fig. 8)
Temps de réponse < 0.5 s avec dépassement < 10%
Gain statique f = 50 garantit lim h(t) = href
t→∞
Rejet robuste des perturbations
Perturbation à t = 1 s (0.01 m) rejetée en < 0.2 s (Fig.8)
Stabilité assurée par :
Pôle intégrateur dans A − BK
Marges de gain/phase élevées (margin(Hbf))
5 Mise en ÷uvre d'un observateur
5.1 Matrice d'observabilité et rang
La matrice d'observabilité OAC est calculée via la fonction obsv dans MATLAB :
O_AC = obsv (A , C ); % Matrice d ' o b s e r v a b i l i t
rang_OAC = rank ( O_AC ); % R sultat : 3
Conclusion : Le système est observable (rang = 3), donc un observateur peut être conçu.
5.2 Construction de l'observateur
Les pôles désirés pour l'observateur sont p1 = p2 = p3 = −100. On utilise la commande
acker :
poles_obs = [ -100 , -100 , -100];
L = acker (A ', C ', poles_obs ) '; % T r a n s p o s e s pour l ' observateur
% R s u l t a t : L = [200; 1.098 e4 ; 0]
7
5.3 Modèle Simulink de l'observateur
Figure 9 Observateur de Luenberger (entrée : y = h, sortie : x̂)
Figure 10 Schéma Complet
5.4 Test de l'observateur
Conditions initiales : x̂(0) = [0; 0; 0] (observateur) vs x(0) = [0.01; 0; 7] (système
réel).
Résultats après 2 s de simulation :
Convergence de ĥ vers h en 0.01 s.
Estimation précise de v et i malgré les perturbations.
Figure 11 Estimation de la hauteur h
8