Ministère de l'Enseignement Supérieur et de la Recherche
Scientifique
Institut National des Sciences Appliquées et
de Technologie
Rapport de Travaux Pratiques
Module : Modélisation, Identification et Estimation
Filière : Informatique Industrielle et Automatique (IIA)
Réalisé par :
Année universitaire :
Bouazizi Salim
2022-2023
Fareh Mohamed
TP1 : Modélisation d'un système linéaire
Objectif :
L'objectif de ce premier TP est de nous initier à la modélisation et à l'identication des
systèmes dynamiques à l'aide de MATLAB. Plus précisément, nous allons nous familiariser
avec les calculs algébriques numériques et matriciels, ainsi que la création et l'utilisation de
fonctions, pour mieux comprendre les diérentes représentations graphiques et les commandes
de calculs polynomiaux prédénies de MATLAB.
Modélisation de la température d'un corps C en fonction du
temps :
1-Implémentation de la fonction 'dier.m '
La fonction 'dier.m' prend en entrée deux variables, la température X et le temps t, et
renvoie en sortie la variation de la température par rapport au temps. Cette relation entre les
variables d'entrée et de sortie est illustrée dans la dénition de la fonction suivante
f unctiondx = dif f er(t, X)
Xm = 10
tau = −0.1
dx = tau ∗ (X − Xm)
end
2-Implémentation de la fonction 'solution-dier.m '
La fonction "solution-dier.m" permet de résoudre numériquement l'équation diérentielle
"dier.m" à l'aide de la fonction "ode45" de MATLAB. "ode45" est un solveur d'équations
diérentielles ordinaires qui permet de résoudre numériquement des équations diérentielles de
premier ordre. Cette fonction est intégrée dans MATLAB et utilise une méthode de Runge-
Kutta d'ordre 5 pour résoudre les équations diérentielles.
t = [060]
X = 100
[t, X] = ode45(@dif f er, t, X);
plot(t, X,′ −∗′ )
Il est possible de représenter graphiquement l'évolution de la température du corps en fonction
du temps à l'aide de la commande "plot", comme illustré dans la gure ci-dessous.
g 1.1 :l'évolution de la température
Modélisation d'un système linéaire via une représentation
d'état :
Manipulation
1-Création d'un script MATLAB pour la modélisation d'un circuit
RLC
Dans le script TP1-RLC.m , nous spécions les valeurs de la résistance, de l'inductance
et de la capacité du système. Nous utilisons ensuite la commande appropriée pour déterminer la
matrice d'état A et la matrice de commande B. Nous utilisons ensuite la commande eig() pour
calculer les valeurs propres des matrices A et B. Étant donné que ces valeurs sont strictement
négatives, nous pouvons conclure que le système est stable.
R = 50
L=1
c = 5 ∗ 10− 3
A = [01; −1/(L ∗ c) − R/L]
B = [0; 1/L]
v = eig(A)
avec v=(-4.3845,-45.6155) La vérication de la commandabilité d'un système peut être eectuée
à l'aide de la commande "rank", qui renvoie une valeur égale à 2. Cela signie que le système
est commandable. Pour conrmer cela, nous pouvons utiliser les deux instructions suivantes :
Q = [BA ∗ B]
r = rank(Q)
Initialisation de vecteur d'état ainsi que la tension d'entrée du système, et dénir la matrice
d'observation C. Cette étape peut être réalisée en utilisant les instructions suivantes :
X = [0; 0]
U = 10
C = [1/c0]
D=0
On peut déterminer le nouveau vecteur d'état en utilisant les instruction suivantes.
t0 = 0
tf = 10
dt = 0.01
t = t0 : dt : tf
f ori = 1 : length(t) − 1
derX = A ∗ X(:, i) + B ∗ U ;
X(:, i + 1) = X(:, i) + derX ∗ dt;
end
La commande "hold on" permet de superposer les courbes de l'entrée et de la sortie du système
dans un même graphe. Une fois que la simulation est terminée, on utilise la commande "hold
o" pour désactiver cette superposition et acher uniquement la dernière courbe tracée. Le
résultat obtenu est illustré dans la gure.
g 1.2 :l'évolution de l'entrée et de la sortie du système
de mémé façons pour les entrées
U 1 = sin(2 ∗ pi ∗ t)
U 2 = cos(2 ∗ pi ∗ t)
g 1.3 :l'évolution d'entrées U1 et U2
2-Simulink
Pour réaliser le schéma bloc du système RLC sur Simulink, il est nécessaire de créer un
nouveau modèle. Ensuite, il faut ajouter les composants R, L, C et la source de tension U et
les lier entre eux pour connecter leurs entrées et sorties. Ces étapes permettront de représenter
le système sous forme de blocs interconnectés, comme illustré dans la gure ci-dessous.
g 1.4 :Similink
Dans cette situation, il est possible de réaliser la simulation à l'aide de Scope, un outil de visua-
lisation fourni par Simulink qui permet d'acher les résultats en temps réel. Il est également
possible d'utiliser la commande plot(simout) dans la fenêtre de commande pour obtenir un
graphique des résultats de la simulation.
g 1.5 :simout
TP2 : Modélisation et identification d'un moteur à
courant continu
Objectif :
L'objectif de ce TP est de modéliser un moteur à courant continu (MCC) et d'étudier ses
caractéristiques dans le domaine temporel à l'aide des commandes prédénies de MATLAB
Modélisation du MCC :
Le modèle mathématique du moteur à courant continu (MCC) est donné par une équation
diérentielle linéaire d'ordre deux, qui décrit la relation entre la tension d'entrée appliquée à
l'induit, U(t), et la vitesse de rotation du rotor, (t). Cette équation prend la forme :
d2 Ω(t) dΩ(t)
(LJ) 2
+ (Lf + RJ) + (Rf + Kc ∗ Ke)Ω(t) = KcU (t) (1)
dt dt
où L est l'inductance de l'induit, J est l'inertie du rotor, R est la résistance de l'induit, Kc est
la constante de couple électromagnétique, Ke est la constante électrique de vitesse, Lf est la
constante de frottement visqueux et Rf est la constante de frottement sec.
La fonction de transfert H(p) du MCC est dénie comme le rapport entre la transformée de
Laplace de la vitesse angulaire de sortie (p) et la transformée de Laplace de la tension d'entrée
U(p) :
Ω(p) Kc
H(p) = = 2
(2)
U (p) (LJ)p + (Lf + RJ)p + (Rf + Kc ∗ Ke)
Cette fonction de transfert exprime la relation entre la tension d'entrée et la vitesse de rotation
du moteur dans le domaine de Laplace. Elle peut être utilisée pour analyser le comportement
dynamique du moteur en réponse à des signaux de tension d'entrée diérents, en traçant la
réponse en fréquence de la fonction de transfert ou en simulant le système à l'aide d'outils de
simulation.
1-Implémentation de chier ' model M CC.m′
Le code ci-dessous permet de dénir les diérentes variables du moteur à courant continu
(MCC) avec les valeurs numériques données dans l'énoncé. Ensuite, il permet de calculer les
constantes de temps électrique et électromécanique du MCC. Enn, la fonction de transfert en
boucle ouverte du MCC est dénie à l'aide de la commande "tf" de MATLAB.
R = 1.44
L = 5.6e − 4
f = 1.29e − 4
j = 7.2e − 4;
ke = 0.1
kc = 0.1
taue = L/R
taum = j/f
H = tf (kc, [L ∗ j, L ∗ f + j ∗ R, R ∗ f + ke ∗ kc]);
Analyse des caractéristiques du MCC
Pour calculer les pôles de la fonction de transfert en boucle ouverte du MCC, on peut utiliser
la fonction "pole" de Matlab :
p = pole(H)
L'ordre du système est 2 car l'équation diérentielle du MCC est une équation d'ordre 2. Pour
tracer la réponse indicielle du MCC à un échelon unitaire de tension, on peut utiliser la fonction
"step" de Matlab :
step(H)
Pour donner un titre, une légende et des noms aux axes de la gure, on peut utiliser les fonctions
"title", "xlabel", "ylabel" et "legend" de Matlab :
title(′ RponseindicielleduM CCunchelonunitairedetension′ )
xlabel(′ T emps(s)′ )
ylabel(′ V itessederotation(rad/s)′ )
legend(′ Rponsedusystme′ )
La stabilité du système peut être conclue en observant la réponse indicielle. Si la réponse oscille
de manière stable autour de la valeur nale, le système est stable. Si la réponse oscille de
manière instable ou diverge, le système est instable=====>le système est stable.
g 2.1 :la réponse indicielle du MCC a un échelon unitaire de tension
Asservissement de vitesse du MCC
Pour dénir la fonction de transfert du système asservi en boucle fermée, on peut utiliser
la commande "series" pour combiner la fonction de transfert du régulateur C(p) avec celle
du MCC H(p), puis utiliser la commande "feedback" pour réaliser l'asservissement en boucle
fermée. Ainsi, la fonction de transfert du système asservi en boucle fermée sera :
C = pid(1.2)
G(p) = f eedback(series(C, H), 1)
Pour calculer les pôles de la fonction de transfert du système asservi, on peut utiliser la com-
mande "pole". poles = pole(G) Pour tracer les réponses indicielles du système asservi en boucle
ouverte et en boucle fermée, on peut utiliser la commande "step".
step(3000 ∗ H)
holdon
step(9000 ∗ G)
legend(′ Boucleouverte′ ,′ Bouclef erme′ )
title(′ RponseindicielleduM CCenboucleouverteetenbouclef erme′ )
xlabel(′ T emps(s)′ )
ylabel(′ V itessederotation(rad/s)′ )
g 2.2 :les réponses indicielles du système asservi en boucle ouverte et en boucle fermée.[1]
En interprétant les résultats, on peut constater que la réponse indicielle du MCC en boucle
ouverte plus lente Par contre, la réponse indicielle en boucle fermée montre une réponse rapide,
précise et stable. La régulation de la vitesse est bien eectuée grâce à l'action du régulateur PI.
Simulation graphique avec Simulink
Pour réaliser l'asservissement de vitesse du MCC avec une commande PI, il est nécessaire de
créer un modèle Simulink qui permettra de tracer les réponses indicielles du système en boucle
ouverte et en boucle fermée. Tout d'abord, nous créons un nouveau modèle portant le nom
MCC-model.mdl . Ensuite, nous dénissons le modèle du MCC en boucle ouverte en ajoutant
les diérents blocs correspondants. Nous traçons ensuite le schéma bloc du système en boucle
fermée selon le schéma de fascicule Nous pouvons alors tracer sur une même gure la consigne,
la réponse indicielle du système en boucle ouverte et la réponse indicielle du système en boucle
fermée.
g 2.3 :MCC-model.mdl
En faisant varier le gain de proportionnalité Kp et le gain de l'action intégrale Ki, nous
pouvons relever à chaque fois l'erreur statique . Il est important de comprendre le rôle de
chaque action du régulateur PI. Le gain proportionnel Kp permet de régler la rapidité de
réponse, tandis que le gain intégral Ki permet de corriger l'erreur statique. Nous xons ensuite
les valeurs de Kp et Ki pour que le système soit performant.
g 2.4 :Réponse du système
TP3 : Identification et optimisation d'un procédé
industriel
Objectif :
Le but de ce TP consiste à expérimenter les concepts et outils de modélisation, identication
et estimation de paramètres d'un système dynamique en utilisant des données expérimentales.
L'objectif est également de se familiariser avec l'utilisation de MATLAB pour implémenter des
algorithmes d'optimisation, des méthodes d'interpolation polynomiale et des fonctions permet-
tant de visualiser les données.
Identication de paramètres d'un système industriel en évo-
lution (EX1) :
1-Implémentation de chier ' model-erreur.m'
Dans ce code, nous avons créé une fonction nommée "modele rreur”quiprendcommeentreunparamtre”M
Après cela, nous avons calculé la valeur du gain du système (Y0) et introduit l'équation de
la sortie simulée du système (Y). Enn, nous avons déni l'erreur quadratique entre les valeurs
expérimentales et les valeurs simulées de la sortie du système en utilisant la fonction "rms". Le
code correspondant est le suivant
f unctionsquarede rror = modele rreur(M umax)
T exp = 0 : 1 : 30;
Y exp = [01.252.53.54.254.75554.54320.75−0.5−1.75−3−4−4.5−5−5−4.75−4.25−3.5−2.5−1.5012.253.254
comparee galitev ecteurs = size(T exp) == size(Y exp)
Y 0 = 1.25;
Y = Y 0 ∗ sin(M umax ∗ T exp);
squarede rror = rms(Y − Y exp)
end
2-Implémentation le script ident-erreur.m
Pour minimiser l'erreur au sens des moindres carrés, nous utilisons la fonction fminsearch, en
passant la fonction model-erreur comme argument, ainsi que la valeur initiale de Mumax, Mu-
max0. La fonction fminsearch trouve la valeur optimale de Mumax qui minimise l'erreur. An
de simuler le comportement du système calculé, nous redénissons le temps expérimental Texp
en heures et la valeur maximale du vecteur contenant les sorties simulées du système Y0 à 1.25.
Nous copions également le vecteur contenant les sorties expérimentales du système dans Yexp.
Nous utilisons ensuite l'équation de la sortie simulée du système, Y = Y0 * sin(Mumax*Texp)
pour calculer le vecteur Y contenant les sorties simulées du système. Pour tracer dans le même
graphe les courbes de l'évolution du système réel et celle du système simulé en fonction du
temps, nous utilisons la fonction plot pour tracer les courbes de Texp et Yexp, ainsi que de
Texp et Y. Nous dénissons également les labels des axes, la grille, le titre et la légende des
courbes, en utilisant les fonctions xlabel, ylabel, grid, title et legend. Enn, nous utilisons la
fonction hold o pour désactiver le mode de maintien. Voici le code correspondant :
M umax0 = 2 ∗ pi/25;
M umax = f minsearch(@modele rreur, M umax0)
T exp = 0 : 1 : 30;
Y 0 = 1.25;
Y = Y 0 ∗ sin(M umax ∗ T exp);
Y exp = [01.252.53.54.254.75554.54320.75−0.5−1.75−3−4−4.5−5−5−4.75−4.25−3.5−2.5−1.5012.253.254
f igure(1)
holdon
plot(T exp, Y exp,′ LineW idth′ , 1)
plot(T exp, Y,′ LineW idth′ , 1)
xlabel(′ T emps(h)′ )
ylabel(′ Y exp(t), Y (t)′ )
gridon
title(′ Courbesdvolutiondusystemeenf onctiondutemps′ )
legend(′ Systmerel′ ,′ Systmesimul′ )
holdof f
g 3.1 :Courbes d évolution du systeme en fonction du temps
Interpolation de courbe (EX2) :
Le code ci-dessus eectue l'interpolation des courbes du système en utilisant la fonction
polyt() et polyval() de MATLAB. La fonction sin() est utilisée pour créer une sortie simulée
initiale Y2 avec un paramètre MuMax initial de 2*pi/25.
Ensuite, la fonction polyt() est utilisée pour ajuster un polynôme de degré 5 aux données
simulées. La plage de temps Texp est utilisée comme points d'entrée et les sorties simulées Y2
sont les valeurs correspondantes.
Ensuite, la plage de temps est étendue avec une résolution plus ne et la fonction polyval()
est utilisée pour évaluer la sortie simulée à des instants de temps plus ns. Les résultats sont
stockés dans les variables T1 et Y1.
Enn, les courbes du système réel et simulé sont tracées dans la même gure en utilisant la
fonction plot(). Les légendes sont ajoutées à l'aide de la fonction legend().
Le résultat est une gure montrant les courbes du système réel et simulé avec l'interpolation
ajoutée.
Y 2 = 5 ∗ sin(M umax0 ∗ T exp);
P = polyf it(T exp, Y 2, 5);
T 1 = 0 : 0.01 : 30;
Y 1 = polyval(P, T 1);
f igure(2)
holdon
plot(T exp, Y exp);
plot(T 1, Y 1);
holdof f
gridon;
xlabel(′ T emps(h)′ );
ylabel(′ Y exp(t), Y 1(t)′ );
title(′ Courbesdvolutiondusystmeenf onctiondutempsavecinterpolation′ );
legend(′ Systmerel′ ,′ Systmesimul′ );
g 3.1 :Courbes d évolution du système en fonction du temps avec interpolation