Vous êtes sur la page 1sur 29

Rapport 1

Outils De Simulation

ENCADRÉ PAR

MR. HOUCINE
CHAFOUK

PRÉPARÉ PAR

ABDELLAOUI SOUMIA
INTRODUCTION

Programme simulation du RC
TP : 01
- Courbe Sinus
- Création d’un bruit de mesure
- Création d’un défaut de jeu mécanique
- Affichage en 3D
TP : 02
- Analyse des systèmes : 1er et 2eme ordre :
Système de 1er ordre :
-Analyse temporelle
-Analyse fréquentielle
Système de 2eme ordre :
-Analyse de l’état de santé d’un amortisseur
-Analyse temporelle
-Analyse fréquentielle
TP : 03
- Identification des systèmes :
TP : 04
Méthode de STARJEC :

ESI2A-2021/2022 01
Introduction sur MATLAB

MATLAB est un langage interprété qui permet de développer des algorithmes rapidement, de visualiser des
données (sous la forme de graphiques 2D ou 3D et d'images, voire de séquences d'images), et de réaliser des
interfaces graphiques conviviales.

MATLAB est un logiciel de traitement numérique qui présente de nombreux avantages pour l’étude, et même
la conception, de systèmes de traitement numériques des signaux. Parmi ces avantages, on peut citer les
suivants :

- La syntaxe MATLAB est très proche du formalisme de l’algèbre linéaire, ce qui permet de transcrire
rapidement en code des opérations comme le produit scalaire de deux vecteurs (corrélation) ou encore le
produit d’une matrice et d’un vecteur (transformée)

- Toutes les variables sont par définition des matrices de complexes, ce qui signifie qu’on n’a pas à déclarer
une variable avant de l’utiliser – les variables sont instances à leur première affectation (par exemple, la ligne
a = 1 crée la variable a – si cette variable n’existe pas déjà – puis lui affecte la valeur 1)

- MATLAB comprend de nombreuses librairies, notamment pour le traitement numérique des signaux, ce qui
permet de réaliser rapidement des opérations comme le filtrage numérique et les transformées discrètes, et
même de concevoir des filtres numériques FIR et IIR (Butterworth, Chebychev, elliptiques, etc.)

- MATLAB comprend également une bonne librairie graphique, ce qui permet d’observer facilement les
caractéristiques des signaux et le comportement des systèmes numériques (réponses en fréquence, pôles et
zéros, etc.)

Actuellement, MATLAB recouvre plusieurs domaines d'applications de l'informatique scientifique:

 visualisation graphique 2D et 3D

 résolution d'équations aux dérivées partielles

 optimisation

 contrôle de procédés

 traitement du signal

 traitement de l'image

 réseaux de neurones

ESI2A-2021/2022 3
Programme simulation du RC

clear all
close all
clc
% Déclaration
R=100e3; % Résistance en ohms
C=1e-6; % Capacité du circuit en farade
tau=R*C; num=1;
den=[tau 1];
% Réponse indicielle
H=tf(num,den,'variable','p')
step(H),grid
title('réponse indicielle')
xlabel('Time')
ylabel('Amplitude')

réponse indicielle
1

0.9

0.8

0.7

0.6
Amplitude

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6
Time (seconds)

ESI2A-2021/2022 4
TP1 : Génération des signaux
1- Introduction :
 Un signal numérique est défini par un nombre d'échantillons N relevés à une
fréquence d'échantillonnage Fe. Les signaux sont toujours captés de manière temporelle, mais
on s'intéresse souvent à leur allure fréquentielle.

Afin de rester cohérents avec les mesures, il est important de respecter les grandeurs
physiques impliquées dans le signal. Il faut donc définir les axes temporels et fréquentiels
relatifs au signal.

Ainsi. les axes seront définis comme suit :

L'axe temporel est un vecteur de N points espacés de 1/Fe. Sous Matlab, la syntaxe est :

- axe_temps = (1:N)/Fe;

L'axe fréquentiel est un vecteur de N points compris entre 0 et Fe. La syntaxe est :

- axe_freq = (0:N-1)*Fe/N;

 Sous Matlab les signaux doivent être stockés dans un vecteur (ligne ou colonne
suivant les préférences de l'utilisateur). Les opérations sur les signaux se font comme des
opérations sur les matrices.

ESI2A-2021/2022 5
2- Programmes
%Courbe Sinus :
clear all
close all
clc
t=0:0.01:10-0.01; % echelle des temps
a=2; % amplitude
w=3; % pulsation
y=a*sin(w*t);
plot(t,y),grid

1.5

0.5

-0.5

-1

-1.5

-2
0 1 2 3 4 5 6 7 8 9 10

ESI2A-2021/2022 6
% Création d’un bruit de mesure :
clear all
close all
clc
t=0:0.01:10-0.01; % echelle des temps
a=2; % amplitude
w=3; % pulsation
y=a*sin(w*t);
plot(t,y),grid
N=length(t);
b=randn(N,1); % bruit gaussien
yb=y+0.2*b';
figure
plot(t,y,'b',t,yb,'r'),grid
title('courbe sinus')
xlabel('degré')
ylabel('amplitude')
courbe sinus
3

1
amplitude

-1

-2

-3
0 1 2 3 4 5 6 7 8 9 10
degré
% Génération d'un signal issu d'un capteur accéléromètre
% Exemple pour le déclenchement de l’Airbag
clear all
close all
clc
t=0:0.01:10-0.01; % echelle des temps
a=2; % amplitude
w=3; % pulsation
g=9.81; % accélération de la pesanteur
y=a*sin(w*t);
N=length(t);
b=randn(N,1); % bruit gaussien
yb=y+0.2*b';
y1= g * ones(N/4,1);
y2= 1.2*g * ones(N/40,1);
y3= g * ones(N/10,1);
y4= 2*g * ones(N/50,1);
y5= g * ones(N-(N/4+N/40+N/10+N/50),1);
y=[y1;y2;y3;y4;y5];
20

yb=y+0.2*b;
18
figure
plot(t,y,'b',t,yb,'r'),grid 16

14

12

10

8
0 1 2 3 4 5 6 7 8 9 10
3- Affichage en 3D :

Les fonctions intervenant dans le tracé de surfaces 3D sont nombreuses. Parmi elles : mesh, surf,
meshgrid, camlight …

 Fonction Meshgrid et Surf


- Surf  : surf(X, Y, Z) crée un tracé de surface en trois dimensions, qui est une surface en trois dimensions
qui a des couleurs de bord unies et DES COULEURS DE FACE UNIES. La fonction trace les valeurs dans la
matrice Z sous forme de hauteurs au-dessus d’une grille dans le plan x-y défini par X et Y. La couleur de la
surface varie en fonction des hauteurs spécifiées par Z.
- Mesh  : mesh(X, Y, Z) crée un tracé de maillage, qui est une surface tridimensionnelle qui a des couleurs
de bord unies et AUCUNE COULEURS DE FACE. La fonction trace les valeurs dans la matrice Z sous forme
de hauteurs au-dessus d’une grille dans le plan x-y défini par X et Y. Les couleurs des bords varient en
fonction des hauteurs spécifiées par Z.

 Programme :
figure
[x,y] = meshgrid(-5 : 0.2 : 5);
r = sqrt(x.^2 + y.^2) + eps;
z = sin(pi*r) ./ r;
surf(x, y, z);
TP 2 : Analyse des systèmes : 1er et 2eme ordre :

Introduction :
Un système est un groupement de composant (électrique, mécanique, …..) Qui paramètre de
transformait grandeur d’être X(t) en une autre grandeur Y(t) et ce la pour obtenir une certain
tache.

Objectif :
Le but est l’analyse des réponses temporelles des systèmes linéaires invariants dans

le temps, du 1ier et du 2ème ordre er d’ordre supérieur. Les sorties temporelles seront évaluées
pour des entrées usuelles telle que l’impulsion, l’échelon, et la rampe, par Matlab et Simulink.

 La fonction de transfert du système premier ordre est :

Les paramètres caractéristiques du système :


a) Pour un échelon unité :
- La constante de temps : τ = R*C
- Le temps de montée : tm = 2*2* τ
- Le temps d’établissement : te = 4* τ
b) pour une rampe :
- L’erreur statique : es = τ
- L’erreur du traînage : yt = τ*K (K le gain)
% Système de 1er ordre :
R=100e3; % Résistance en ohms
C=1e-6; % Capacité du circuit en farade
tau = R*C;
num=1;
den=[tau 1];
H=tf(num,den,'variable','p')
step(H),grid

Step Response
1

0.9

0.8

0.7

0.6
Amplitude

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6
Time (seconds)
% Système de 1er ordre : (Analyse fréquentielle et Analyse temporelle)
clear all
close all
clc
K = 10; % Gain statique
T = 1; % Cte de temps
num_G = K;
den_G = [T 1];
G = tf(num_G,den_G,'variable','p')

% Analyse Temporelle :
figure
step(G),grid % Réponse incdielle
xlabel('temps'),ylabel('amplitude')
title(' Réponse indicielle')
figure
impulse(G),grid % Réponse impulsionnelle
xlabel('temps'),ylabel('amplitude')
title(' Réponse indicielle')

% Analyse Fréquentielle :
figure
bode(G),grid % Réponse impulsionnelle
xlabel('fréquence'),ylabel('gain')
title(' Diagramme de Bode')
Réponse indicielle Réponse indicielle
10 10

9 9

8 8

7 7

6 6
amplitude

amplitude
5 5

4 4

3 3

2 2

1 1

0 0
0 1 2 3 4 5 6 0 1 2 3 4 5 6
temps (seconds) temps (seconds)

Diagramme de Bode
20

10
Magnitude (dB)

-10

-20
0
gain (deg)

-45

-90
-2 -1 0 1 2
10 10 10 10 10
fréquence (rad/s)
% Système de 2eme ordre : (Analyse fréquentielle et Analyse temporelle)

clear all
close all
clc

% Les paramètres du système


% r = 0.05; % raideur du ressort
% f = 10; % coef de frottement de l'amortisseur
% f = 20;

r = input(' Entrer la valeur de la raideur mécanique du ressort r = ');


f = input(' Entrer la valeur du coefficient de frottement f = ');
M = 20e3; % Masse de la roue

% les coef du de la fonction de transfert


K0 = 1/r; % Gain statique
w0 = sqrt(r/M); % pulsation propre
ksi = f/(2*sqrt(r*M)); % coef d'amortissemnt
num = K0;
den = [1/w0^2 2*ksi/w0 1];
G = tf(num,den,'variable','p');

% Analyse temporelle du système (réponse indicielle et impulsionnelle)

figure
% réponse indicielle
step(G),grid
xlabel('temps'),ylabel('amplitude')
title( 'Réponse indicielle')
figure
% réponse impulsionnelle
impulse(G),grid
xlabel('temps'),ylabel('amplitude')
title( 'Réponse impulsionnelle')

% Détermination de f
pause
D = input(' Entrer le dépassement D = ');
%D=35
TR=5030;
x=abs(log(D/100));
ksi1 =x/sqrt(pi^2 + x^2);
f1=2*ksi1*sqrt(r*M);

% Analyse fréquentielle (Bode, Nyquist et BlackNichols)

figure
% réponse indicielle
bode(G),grid
xlabel('fréquence'),ylabel('gain en db')
title( 'Diagramme de Bode')
figure
% réponse impulsionnelle
nyquist(G),grid
xlabel('real (G)'),ylabel('Imag (G)')
title( 'Diagramme de Nyquist')
figure
% réponse impulsionnelle
nichols(G),grid
xlabel('fréquence'),ylabel('gain en db')
title( 'Diagramme de Bolack Nichols')
wr=w0*sqrt(1-2*ksi^2)
x1=2*ksi*sqrt(1-ksi^2);
M=20*log10(1/x1)

Réponse impulsionnelle Réponse indicielle


0.025 30

0.02
25

0.015
20

0.01
amplitude

amplitude

15

0.005

10
0

5
-0.005

-0.01 0
0 2000 4000 6000 8000 10000 12000 0 2000 4000 6000 8000 10000 12000
temps (seconds) temps (seconds)

Diagramme de Bode
40

20
M agnitude (dB)

-20

-40

-60
0
gain en db (deg)

-45

-90

-135

-180
-4 -3 -2 -1
10 10 10 10
f réquence (rad/s)
TP3 :Identification des systèmes mécatroniques
par l’analyse fréquentielle
Objectif :
La maitrise de la réponse fréquentielle en se basant sur le diagramme de Bode. Savoir lire le de
diagramme de l'amplitude, et déduire et tirer des valeurs du signal de sortie à partir de sa
fréquence, son gain Gdb, sa phase en degré.
L’application des filtres passe haut et passe bas :
- Un filtre passe-haut atténue les signaux en dessous d'une fréquence de coupure (bande
atténuée) et laisse passer les signaux au-dessus de cette fréquence (bande passante). Le degré
d'atténuation dépend du design du filtre.
-Un filtre passe-bas laisse passer les signaux en dessous d'une fréquence de coupure (bande
passante) et atténue les signaux au-dessus d'une fréquence de coupure (bande atténuée)
Programmes :

%Identification des paramètres d'un moteur MCC


clear all
close all
clc
% les paramètres du MCC
% Km = 100 % Gain statique
% Tm = 0.05 % cte de temps du moteur
Km = input(' Entrer le gain statique du Moteur Km = ');
Tm = input(' Entrer la cte de temps du Moteur Tm = ');
% Fonction de Transfert du MCC
num = Km;
den = [Tm 1 0];
G = tf(num,den,'variable','p');

% 1ère partie : Analyse en Boucle ouverte


% Analyse temporelle et fréquentielle en Boucle ouverte
% Analyse temporelle
figure
step(G),grid
xlabel('temps'),ylabel('amplitude')
title(' réponse indicielle')

% Analyse fréquentielle
figure
bode(G),grid
xlabel('pulsation'),ylabel('gain en dB')
title(' réponse fréquentielle')

% 1ère partie : Analyse en Boucle fermée


% Analyse temporelle et fréquentielle
F = feedback(G,1,-1);

% Analyse temporelle
figure
step(F),grid
xlabel('temps'),ylabel('amplitude')
title(' réponse indicielle')

% Analyse fréquentielle
figure
bode(F),grid
xlabel('pulsation'),ylabel('gain en dB')
title(' réponse fréquentielle')
pause
% wr = 42.4
% w0 = 44.7
wr = input(' Entrer la pulsation de résonance wr = ');
w0 = input(' Entrer la pulsation propre w0 = ');
x=wr/w0;
ksi = 0.707*sqrt(1 - x^2);
Tmm = 1/(2*ksi*w0)
Kmm = Tm*w0^2
réponse indicielle
12000
réponse fréquentielle
60

10000 40

20

Magnitude (dB)
8000 0

-20
amplitude

-40
6000
-60
-90
4000
gain en dB (deg)

2000 -135

0
0 20 40 60 80 100 120 -180
0 1 2 3
temps (seconds) 10 10 10 10
pulsation (rad/s)

réponse indicielle réponse fréquentielle


1.5 20

0
Magnitude (dB)

-20

1
-40
amplitude

-60
0

0.5 -45
gain en dB (deg)

-90

-135

0 -180
0 0.1 0.2 0.3 0.4 0.5 0.6 10
0
10
1 2
10
3
10
temps (seconds) pulsation (rad/s)
% Identification des systèmes à l'aide de Bode par Matlab 1
clear all
close all
clc
% Fonctions de transfert usuelles de bases
w1=10;
% Intégrateur pur
subplot(221)
G1=tf(w1,[1 0],'variable','p');
bode(G1),grid
title(' Intégrateur pur')
% Dérivateur pur
subplot(222)
G2=tf([1 0],w1,'variable','p');
bode(G2),grid
title(' Dérivateur pur')
% Filtre passe bas
subplot(223)
G3=tf(1,[w1 1],'variable','p');
bode(G3),grid
title(' Passe bas')
% Filtre passe-haut
subplot(224)
G4=tf([w1 1],1,'variable','p');
bode(G4),grid
title(' Passe haut')

% Fonctions de transfert des systèmes mécatroniques


% w1=4
% w2=8
% w3=12
figure
w1 = input(' Entrer la valeur de w1 = ');
w2 = input(' Entrer la valeur de w2 = ');
w3 = input(' Entrer la valeur de w3 = ');
K=(w1*w3)/w2^2;
num_G1=K*conv([1/w1 0],[1/w3 1]);
den_G1=conv([1/w2 1],[1/w2 1]);
G1 = tf(num_G1,den_G1,'variable','p');
bode(G1),grid
title(' le diagramme du 1er système')

Intégrateur pur Dérivateur pur


40 0
Phase (deg)Magnitude (dB)

Phase (deg)Magnitude (dB)

20 -20

0 -40
-89 91

-90 90

-91 89
0 1 0 1
10 10 10 10
Frequency (rad/s) Frequency (rad/s)

Passe bas Passe haut


0 40
Phase (deg)Magnitude (dB)

Phase (deg)Magnitude (dB)

-20 20

-40 0
0 90

-45 45

-90 0
-2 0 -2 0
10 10 10 10
Frequency (rad/s) Frequency (rad/s)

% Identification des systèmes à l'aide de Bode par Matlab 2


clear all
close all
clc
choix1 = menu('Identif des Systèmes par Bode',' Système simples','
Systèmes complexes');
if choix1 == 1,

% Fonctions de transfert usuelles de bases


w1=10;

% Intégrateur pur
subplot(221)
G1=tf(w1,[1 0],'variable','p');
bode(G1),grid
title(' Intégrateur pur')

% Dérivateur pur
subplot(222)
G2=tf([1 0],w1,'variable','p');
bode(G2),grid
title(' Dérivateur pur')

% Filtre passe bas


subplot(223)
G3=tf(1,[w1 1],'variable','p');

bode(G3),grid
title(' Passe bas')

% Filtre passe-haut
subplot(224)
G4=tf([w1 1],1,'variable','p');
bode(G4),grid
title(' Passe haut')
elseif choix1 == 2,
choix2 = menu('Systèmes complexes','FT1','FT2','FT3','FT4');
if choix2 == 1,
% Fonctions de transfert des systèmes mécatroniques
% Fonction 1
figure
w1 = input(' Entrer la valeur de w1 = ');
w2 = input(' Entrer la valeur de w2 = ');
w3 = input(' Entrer la valeur de w3 = ');
K=(w1*w3)/w2^2;
num_G1=K*conv([1/w1 0],[1/w3 1]);
den_G1=conv([1/w2 1],[1/w2 1]);
G1 = tf(num_G1,den_G1,'variable','p');
subplot(211)
bode(G1),grid
title(' Diagramme de Bode')
subplot(212)

step(G1),grid
title(' Réponse indicielle')
elseif choix2 == 2,
% Fonction 2
figure
w1 = input(' Entrer la valeur de w1 = ');
w2 = input(' Entrer la valeur de w2 = ');
num_G2=[1/w2 1];
den_G2=[1/w1 1];
G2 = tf(num_G2,den_G2,'variable','p');
subplot(211)
bode(G2),grid
title(' Diagramme de Bode')
subplot(212)
step(G2),grid
title(' Réponse indicielle')
elseif choix2 == 3,
% Fonction 3
figure
w1 = input(' Entrer la valeur de w1 = '); %w1=4
w2 = input(' Entrer la valeur de w2 = '); %w2=8
w3 = input(' Entrer la valeur de w3 = '); %w3=10
w4 = input(' Entrer la valeur de w4 = '); %w4=20
K=(w1*w4)/(w2*w3);

num_G3=K*conv([1/w1 1],[1/w4 1]);


den_G3=conv([1/w2 1],[1/w3 1]);
G3 = tf(num_G3,den_G3,'variable','p');
subplot(211)
bode(G3),grid
title(' Diagramme de Bode')
subplot(212)
step(G3),grid
title(' Réponse indicielle')
elseif choix2 == 4,
end
end

Diagramme de Bode
Magnitude (dB)

0
10
Phase (deg)

-10
-1 0 1 2 3
10 10 10 10 10
Frequency (rad/s)

Réponse indicielle
1.4

1.3
Amplitude

1.2

1.1

1
0 0.2 0.4 0.6 0.8 1 1.2 1.4
Time (seconds)

TP 4 : Identification d'un procédé par la méthode de Strejc


Introduction
La première étape d'un asservissement est de déterminer les modèles mathématiques des
différents éléments de la chaîne à asservir. Cette détermination peut se faire, soit en écrivant les lois
physiques qui régissent le système, soit expérimentalement en calculant les paramètres du procédé
à partir :
- des réponses indicielles,
- des réponses harmoniques.
Dans une première partie, on identifiera une "boîte noire" par une méthode temporelle
(méthode de Strejc). Puis on simulera, sur la maquette analogique, la fonction de transfert (voir
annexe A) trouvée par la méthode de Strejc. Les deux réponses indicielles doivent alors
correspondre le mieux possible.

La Méthode Strejc
Si le système n'a pas de dépassement (on parle de système apériodique) et que sa pente ne
présente pas de discontinuité, on peut choisir de le modéliser par une fonction de transfert de la
forme :

avec :
K : Gain statique du système,
T : Constante de temps du système,
 : Retard de la réponse,
n : Ordre du système.
Programme :

% load boite
nu=length(u); % nombre de points
% u = signal de commande
% u1 = signal de commande filtré
% ys = signal de sortie
t = 0 : length(u)-1;

% courbe sans filtre


plot(t,u,'g',t,u1,'b',t,ys,'r'),grid
title(' Courbe des signaux entrées - sortie')
xlabel('temps'),ylabel('amplitude')

% courbe avec filtre


plot(t,u1,'b',t,ys,'r'),grid
title(' Courbe des signaux entrées - sortie')
xlabel('temps'),ylabel('amplitude')

% Modèle de strejc
n=2;
T=180;
K=3.93;
tau = 30;

% G1 : partie linéaire
num1=[K];
den1=conv([T 1],[T 1]);
G1=tf(num1,den1);

% G2 : partie non linéaire


N=2; % ordre d'approximation
[num2,den2]=pade(T,N);
G2=tf(num2,den2);
F = series(G1,G2);
ym=0.1*lsim(F,u1,t);
plot(t,u1,'g',t,ys,'r',t,ym,'b'),grid
title(' Courbe des signaux réel et estimé')
xlabel('temps'),ylabel('amplitude')

% Développement limité de exp(tau p)


numd=1;
fact=1;
dend=[1];
for k=1:N
dend=[(tau)^k/fact dend];
fact=fact*k;
end
Gd=tf(numd,dend);
Fd = series(G1,Gd);
ymd=0.1*lsim(Fd,u1,t);
plot(t,u1,'g',t,ys,'r',t,ymd,'b',t,ym,'k'),grid
title(' Courbe des signaux réel et estimé')
xlabel('temps'),ylabel('amplitude')

Vous aimerez peut-être aussi