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.)
visualisation graphique 2D et 3D
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.
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 …
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.
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
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);
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)
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 :
% Analyse fréquentielle
figure
bode(G),grid
xlabel('pulsation'),ylabel('gain en dB')
title(' réponse fréquentielle')
% 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)
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')
20 -20
0 -40
-89 91
-90 90
-91 89
0 1 0 1
10 10 10 10
Frequency (rad/s) Frequency (rad/s)
-20 20
-40 0
0 90
-45 45
-90 0
-2 0 -2 0
10 10 10 10
Frequency (rad/s) Frequency (rad/s)
% 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')
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);
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)
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;
% 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);