Académique Documents
Professionnel Documents
Culture Documents
Compte rendu
TRAVAUX PRATIQUES : AUTOMATIQUE
En Matlab, toutes les variables sont essentiellement des matrices, qu'elles soient réelles ou complexes.
Les vecteurs ligne, vecteurs colonne et scalaires sont des cas particuliers de ces matrices.
Contrairement à d'autres langages, Matlab n'exige pas une déclaration spécifique des variables ; leur
taille évolue automatiquement selon les besoins au cours de l'exécution.
Matlab ne fait pas de distinction entre les entiers et les réels, et sa syntaxe pour les noms de variables
suit les conventions standards de langages comme Fortran, C ou Pascal. Une caractéristique
importante est la sensibilité de Matlab à la casse dans la différenciation entre majuscules et
minuscules.
Pour obtenir des informations sur les variables en cours d'utilisation, les commandes ‘who’ et ‘whos’
sont utiles. Supprimer des variables du workspace se fait avec la commande ‘clear’, suivie des noms
des variables à supprimer, séparés par des espaces. La commande ‘clear all’ efface toutes les variables
du workspace en une seule fois.
3. Entrées de matrices
Dans un programme ou dans la fenêtre de commande :
>> a=[1 2 3; 4 5 6; 7 8 9] %séparation par des espaces
a=
1 2 3
4 5 6
7 8 9
Pour créer une matrice remplie de 1, la commande "ones" est employée, et ses syntaxes sont
analogues à celles de "zeros".
>> ones (3)
ans =
1 1 1
1 1 1
1 1 1
Pour obtenir une matrice identité (unité), on utilise la commande "eye". Par exemple, en saisissant
"eye(n)", une matrice identité de dimension n est générée.
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
6. Taille
Pour obtenir les dimensions d'une matrice x, on peut utiliser la commande "size", avec la syntaxe
suivante : [m,n] = size(x). Ici, m représente le nombre de lignes et n le nombre de colonnes de la
matrice. Par exemple :
>> [m,n]=size(c)
m =3 n=6
Remarque :
La variable implicite ‘ans’ conserve le résultat de l'évaluation d'expressions qui ne sont pas
assignées à une variable.
Pour obtenir la longueur d'un vecteur, on peut utiliser la fonction ‘length’.
7. Opérations matricielles :
Pour additionner : X=A+B
Pour soustraire : X=A-B
Pour multiplier : X=A*B ‘Notez que le nombre de colonnes de A doit être égal au nombre de
lignes de B’.
Pour la division :
À droite : X=A/B revient à A=X*B.
À gauche : X=A\B revient à A=B*X.
>> inv(A)
ans =
1.0e+16 *
-0.4504 0.9007 -0.4504
0.9007 -1.8014 0.9007
-0.4504 0.9007 -0.4504
Les instructions sont exécutées n fois pour des valeurs de successives de i allant de 1 à n.
Par exemple, les instructions :
>>clear all
x=[];
n=10;
for i=1:n
x=[x,i^2]
end
x =1
x =1 4
x =1 4 9
x =1 4 9 16
x =1 4 9 16 25
x =1 4 9 16 25 36
x =1 4 9 16 25 36 49
x =1 4 9 16 25 36 49 64
x =1 4 9 16 25 36 49 64 81
x =1 4 9 16 25 36 49 64 81 100
>>clear all
x=[];
n=3;
for i=n:-1:1
x=[x,i^2]
end
x =9
x =9 4
x =9 4 1
>>clear all
s=0;
A=[5 6 4;4 4 1]
for c=A
s= s + sum(c)
end
s=9
s =19
s =24
Les instructions seront exécutées de manière répétitive tant que la condition reste vraie.
>>clear all
n=0;
a=6;
while 2^n < a
n=n+1
end
3. Branchements conditionnels if
La structure générale d'une instruction de branchement conditionnel est la suivante :
if condition
instruction1
else
instruction2
end
L'instruction 1 est exécutée si la condition est vraie, sinon l'instruction 2 est exécutée. On peut
également utiliser un branchement multiple en utilisant le mot-clé ‘elseif’, comme illustré dans
l'exemple suivant :
>>clear all
n=12
if n < 0
parite = 0
elseif rem(n,2) == 0
parite = 2
else
parite= 1
end
n=12 parite=2
4. Operateurs relationnels et operateurs logiques
I. Généralités :
En Matlab, les calculs sont numériques et impliquent la manipulation de scalaires, de vecteurs et de
matrices.
Définir un scalaire : Pour définir le réel 𝑟 = 2 ∗ 𝜋, vous pouvez utiliser :
>> r = 2 * pi;
Définir un vecteur : Pour définir le vecteur vous pouvez utiliser :
>> x = [1; -1]; ou >> x = [1, -1];
1. Généralités :
Dans l'environnement de développement intégré de Matlab, la boîte à outils de commande (Control
Toolbox) offre une gamme d'outils d'analyse pour le contrôle automatique.
Définition du système par sa fonction de transfert : Considérons le système décrit par :
⁄
𝐺(𝑠) = =2 ,
( )
G= 2s+1
-------------
s^2 + 2 s + 1
F=
2 (s+0.5)
---------
(s+1)^2
G1 =
2s+1
-------------
s^2 + 2 s + 1
G2 =
2s+2
-----------------
0.5 s^2 + 2 s + 3
>> G2*G1
ans =
4 s^2 + 6 s + 2
-----------------------------------
0.5 s^4 + 3 s^3 + 7.5 s^2 + 8 s + 3
>> G1+G2
ans =
3 s^3 + 10.5 s^2 + 14 s + 5
-----------------------------------
0.5 s^4 + 3 s^3 + 7.5 s^2 + 8 s + 3
>> feedback(G1,G2)
ans =
s^3 + 4.5 s^2 + 8 s + 3
-------------------------------------
0.5 s^4 + 3 s^3 + 11.5 s^2 + 14 s + 5
>> pole(G1)
ans =
-1
-1
>> pole(G2)
ans =
-2.0000 + 1.4142i
-2.0000 - 1.4142i
>> figure(1);step(G1)
Reponse indicielle
1.4
1.2
0.8
v ites s e e n ra d /s
0.6
0.4
0.2
0
0 1 2 3 4 5 6 7 8
temps en s (seconds)
>> figure(2);impulse(G1)
Impulse Response
2
1.5
1
Amplitude
0.5
-0.5
0 1 2 3 4 5 6 7 8
Time (seconds)
>> figure(3);bode(G1)
Bode Diagram
10
0
Magnitude (dB)
-10
-20
-30
-40
0
Phase (deg)
-45
-90
-1 0 1 2
10 10 10 10
Frequency (rad/s)
Step Response
2
1.5
1
Amplitude
0.5
-0.5
0 1 2 3 4 5 6 7 8
Time (seconds)
2. Prise en main de Matlab et de la Control Toolbox
Pour illustrer les concepts fondamentaux de la boîte à outils de contrôle de Matlab, on rappelle la
modélisation du moteur à courant continu (MCC). La fonction de transfert qui lie la vitesse de rotation
du rotor à la tension appliquée à l'induit est exprimée comme suit :
𝜴(𝒔) 𝑲
𝑮(𝒔) = 𝑼(𝒔) = (𝟏 𝝉𝒆𝒍 𝒔)(𝟏 𝝉𝒆𝒎 𝒔)
,
Avec :
𝑲𝒆𝒎
𝑲 = 𝑹𝒇 : le gain statique du système,
𝑲𝒆𝒎𝟐
𝑹𝑱
𝜏𝒆𝒎 = 𝑹𝒇 : la constante de temps électromécanique,
𝑲𝒆𝒎𝟐
𝑳
𝝉𝒆𝒍 = 𝑹 : la constante de temps électrique.
K = 9.8974
tem =0.0184
tel =3.8889e-04
G=
9.897
----------------------------
7.15e-06 s^2 + 0.01877 s + 1
Question 5 :
P=
1.0e+03 *
-2.5714
-0.0544
Question 6 :
>>clear all
R=1.44;L=5.6e-4;J=1.29e-4;f=7.2e-5;Kem=0.1;
K=Kem/(R*f+Kem^2)
tem=R*J/(R*f+Kem^2)
tel=L/R
G=tf([K],[tel*tem,tel+tem,1])
P=pole(G)
figure(1);step(G)
figure(2);bode(G)
figure(3);nichols(G)
Kp=10;Kw=10/(3000*2*pi/60)
Gbo=Kp*G*Kw
Gbf=feedback(Kp*G,Kw)
figure(4);step(Gbf)
figure(5);bode(Gbf)
figure(6);nichols(Gbf)
Step Response
10
6
Amplitude
0
0 0.02 0.04 0.06 0.08 0.1 0.12
Time (seconds)
Figure 1 step(G)
Bode Diagram
20
0
Magnitude (dB)
-20
-40
-60
-80
0
-45
Phase (deg)
-90
-135
-180
0 1 2 3 4 5
10 10 10 10 10 10
Frequency (rad/s)
Figure 2 bode(G)
Nichols Chart
40
0 dB
0.25 dB
0.5 dB
20 1 dB -1 dB
3 dB
6 dB -3 dB
0 -6 dB
-12 dB
Open-Loop Gain (dB)
-20 -20 dB
-40 -40 dB
-60 -60 dB
-80 -80 dB
-100 dB
-100
-360 -315 -270 -225 -180 -135 -90 -45 0
Open-Loop Phase (deg)
Figure 3 Nichols(G)
Step Response
25
20
15
Am plitude
10
0
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035
Time (seconds)
Figure 4 step(Gbf)
Bode Diagram
20
Magnitude (dB)
-20
-40
-60
-80
0
-45
Phase (deg)
-90
-135
-180
0 1 2 3 4 5
10 10 10 10 10 10
Frequency (rad/s)
Figure 5 bode(Gbf)
Nichols Chart
40
0 dB
0.25 dB
0.5 dB
20 1 dB -1 dB
3 dB
6 dB -3 dB
0 -6 dB
Open-Loop Gain (dB)
-12 dB
-20 -20 dB
-40 -40 dB
-60 -60 dB
-80 dB
-80
-360 -315 -270 -225 -180 -135 -90 -45 0
Open-Loop Phase (deg)
Figure 6 nichols(Gbf)
Question 7 :
Kw =0.0318
Question 8 :
Gbo =
3.15
----------------------------
Gbf =
98.97
-------------------------------
>> mer
K =9.8974
tem =0.0184
tel = 3.8889e-04
G=
9.897
----------------------------
P=
1.0e+03 *
-2.5714
-0.0544
Kw =0.0318
Gbo =
3.15
----------------------------
Gbf =
98.97
-------------------------------
>> Kw=10/3000*(2*pi/60)
Question 11:
clear all
R=1.44;L=5.6e-4;J=1.29e-4;f=7.2e-5;Kem=0.1;
K=Kem/(R*f+Kem^2)
tem=R*J/(R*f+Kem^2)
tel=L/R
G=tf([K],[tel*tem,tel+tem,1])
P=pole(G)
Kp=10;Kw=10/(3000*2*pi/60)
Gbo=Kp*G*Kw
Gbf=feedback(Kp*G,Kw)
Kp=[10 100 1000];
figure(7);
for i=1:length(Kp)
Gbo(i)=Kp(i)*G*Kw;
Gbf(i)=feedback(Kp(i)*G,Kw)
step(Gbf(i));
hold on
end;
Grid;title('Reponse indicielle');
clear all
R=1.44;L=5.6e-4;J=1.29e-4;f=7.2e-5;Kem=0.1;
reponse indicielle
50
45
40
35
30
Amplitude
25
20
15
10
0
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035
Time (seconds)
K=Kem/(R*f+Kem^2)
tem=R*J/(R*f+Kem^2)
tel=L/R
G=tf([K],[tel*tem,tel+tem,1])
P=pole(G)
Kp=10;Kw=10/(3000*2*pi/60)
Gbo=Kp*G*Kw
Gbf=feedback(Kp*G,Kw)
Kp=[10 100 1000];
figure(8);
for i=1:length(Kp)
Gbo(i)=Kp(i)*G*Kw;
Gbf(i)=feedback(Kp(i)*G,Kw)
nichols(Gbo(i));
hold on
end;
grid;title('diagramme de black nichols');
diagramme de black nichols
60
40
0 dB
0.25 dB
0.5 dB
20 1 dB -1 dB
3 dB
6 dB -3 dB
-40 -40 dB
-60 -60 dB
-80 -80 dB
-100 dB
-100
-360 -315 -270 -225 -180 -135 -90 -45 0
Open-Loop Phase (deg)
clear all
R=1.44;L=5.6e-4;J=1.29e-4;f=7.2e-5;Kem=0.1;
K=Kem/(R*f+Kem^2)
tem=R*J/(R*f+Kem^2)
tel=L/R
G=tf([K],[tel*tem,tel+tem,1])
P=pole(G)
Kp=10;Kw=10/(3000*2*pi/60)
Gbo=Kp*G*Kw
Gbf=feedback(Kp*G,Kw)
Kp=[10 100 1000];
figure(9);
for i=1:length(Kp)
Gbo(i)=Kp(i)*G*Kw;
Gbf(i)=feedback(Kp(i)*G,Kw)
bode(Gbf(i));
hold on
end;
grid;title('diagramme de bode');
diagramme de bode
40
20
Magnitude (dB)
-20
-40
-60
0
-45
Phase (deg)
-90
-135
-180
1 2 3 4 5
10 10 10 10 10
Frequency (rad/s)
diagramme de black nichols
60
40
0 dB
0.25 dB
0.5 dB
20 1 dB -1 dB
System: untitled3 System: untitled2 System: untitled1
Phase Margin (deg): 22.4 Phase Margin (deg): 62.1 Phase Margin (deg): 105
3 dB
Delay Margin (sec): 6.11e-05 Delay Margin (sec): 0.000731 Delay Margin (sec): 0.0113
At frequency (rad/s): 6.39e+03 At f requency (rad/s): 1.48e+03 At f requency (rad/s): 162 -3 dB
6 dB
Closed loop stable? Yes Closed loop stable? Yes Closed loop stable? Yes
0 -6 dB
-12 dB
Open-Loop Gain (dB)
-20 -20 dB
-40 -40 dB
-60 -60 dB
-80 -80 dB
-100 dB
-100
-360 -315 -270 -225 -180 -135 -90 -45 0
Open-Loop Phase (deg)
60
40
0 dB
0.25 dB
0.5 dB
20 1 dB
System: untitled4 System: untitled2 -1 dB
Phase Margin (deg): 7.16 Phase Margin (deg): 62.1
3 dB Delay Margin (sec): 5.98e-06 Delay Margin (sec): 0.000731
-3 dB
6 dB At frequency (rad/s): 2.09e+04 At f requency (rad/s): 1.48e+03
Closed loop stable? Yes Closed loop stable? Yes
Open-Loop Gain (dB)
0 -6 dB
System: untitled3 System: untitled1
Phase Margin (deg): 22.4 Phase Margin (deg): 105
Delay Margin (sec): 6.11e-05 Delay Margin (sec): 0.0113 -12 dB
At frequency (rad/s): 6.39e+03 At frequency (rad/s): 162
Closed loop stable? Yes Closed loop stable? Yes
-20 -20 dB
-40 -40 dB
-60 -60 dB
-80 -80 dB
-100 dB
-100
-360 -315 -270 -225 -180 -135 -90 -45 0
Open-Loop Phase (deg)
3. Utilisation de Simulink
Généralités :
imulink, une extension de Matlab, offre un environnement graphique pour la simulation de systèmes.
Nous envisageons ici d'utiliser Simulink pour modéliser l'asservissement en vitesse d'un moteur à
courant continu, permettant ainsi la visualisation des réponses du système à diverses entrées.
Pour démarrer Simulink, vous pouvez accéder aux menus disponibles ou saisir la commande suivante
dans la fenêtre de commande : "simulink".
Pour créer un nouveau modèle Simulink, sélectionnez "New" dans le menu "File", puis "Model". Une
feuille de travail s'ouvrira, où vous pourrez définir graphiquement votre système. Les outils
disponibles sont accessibles à partir des menus correspondants : sources, visualisation, automatique
continue, automatique discrète, fonctions mathématiques, fonctions et tables, automatique non-
linéaire, signaux et systèmes.
Du fait de son caractère graphique, Simulink est intuitif à utiliser. Il repose sur la technique du "drag
and drop" (sélectionner et faire glisser), ce qui facilite le positionnement des éléments nécessaires dans
la fenêtre du modèle. Ensuite, vous pouvez connecter ces éléments pour construire le modèle. Chaque
élément est accompagné d'une description et éventuellement de paramètres modifiables. Pour y
accéder, double-cliquez simplement sur l'élément concerné.
Command window : >> Simulink
Conclusion
En définitive, cette expérience pratique a été hautement instructive, nous conférant une
compréhension approfondie des concepts théoriques de l'automatique et de leur mise en
œuvre concrète à travers MATLAB. Elle a renforcé notre assurance quant à l'utilisation de ces
outils puissants pour résoudre des problèmes complexes en contrôle et en automatisation, tout
en nous dotant de compétences précieuses pour notre future carrière dans les domaines de
l'ingénierie et de la recherche.