Nothing Special   »   [go: up one dir, main page]

Compte Rendu Asservissement 1 (Enregistré Automatiquement)

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 19

Mastère de recherche :

Micro-électronique

Compte Rendu 1
Asservissement

Préparer Par: Rimeh Nasri

2020/2019
I. Objectif 
Le but de ce TP, vise à familiariser l’étudiant avec les propriétés
des structures de commande des systèmes linéaires continus et
l'analyse temporelle et fréquentielle des systèmes de bases
(système de 1er et 2ème ordre). Au terme de ce TP, l'étudiant
devrait être capable :

- de connaître les définitions et concepts propres aux systèmes


linéaires continus.

- de se familiariser avec la structure des systèmes de commande


(en boucle ouverte et en boucle fermée) et le rôle de chacun des
composants dans ces systèmes.

- d'être en mesure de déterminer les performances statiques et


dynamiques d’un système linéaire continu.

- de connaître les techniques classiques de représentation des


systèmes linéaires continus: équation différentielle, fonction de
transfert, diagramme fonctionnel et graphe de fluence.

- d'être en mesure d’analyser les systèmes de bases dans le


domaine temporelle et fréquentielle. - d'analyser la stabilité d’un
système asservi.
II. Analyse temporelle 
Réponse aux signaux usuels :
1. Réponse a une impulsion de Dirac :
 code sous Matlab :

clc ;
clear all;
close all;
sys=tf(10,[0.5 1]);
impulse(sys);
title('réponse impulsionnelle')
sys=tf(10,[0.5 1]);
sys.InputDelay=2
impulse(sys);
title('réponse impulsionnelle')
sys=tf(1,[1 1 1]);
impulse(sys);
title('réponse impulsionnelle')

 La représentation de la réponse Impulsionnelle :

réponse impulsionnelle
0.6
sys
0.5

0.4

0.3
plitude

0.2
Am

0.1

-0.1
0 2 4 6 8 10 12 14
Time (seconds)

La réponse impulsionnelle permet la représentation d'un système


en fonction de son entrée et de sa sortie uniquement, par
opposition à une représentation d'état. Cette fonction impossible
à réaliser matériellement permet de simuler l'effet d'une action
s'exerçant durant un temps très bref (choc; impulsion).
La fonction de transfert d’écrit le comportement du système
dynamique.

2.Réponse à un échelon :
 Réponse à un échelon unité :
 code sous Matlab :

clc ;
clear all;
close all;
sys1=tf(10,[0.5 1]) ;
step(sys1)
title('réponse à un échelon unité ')
sys=tf(10,[0.5 1]);
sys.InputDelay=2
step(sys)
title('réponse à un échelon unité')
sys2=tf(10,[1 1 1]);
step(sys2)
title('réponse à un échelon unité ')
step(sys1)
hold on
step(sys2)

 La représentation de la réponse à un échelon


unité :

Step Response
12
sys1
10 sys2

8
Amplitude

0
0 2 4 6 8 10 12
Time (seconds)

La fonction step permet de tracer la réponse indicielle d’un


système.
step(syst) : tracer la réponse indicielle, intervalle de temps et
nombre de points
choisis par MATLAB .
Il faut remarquer qu’en utilisant la fonction step sans demander
de retour, l’affichage se fait automatiquement.

 Réponse à un échelon avec LSIM :


 code sous Matlab :

clc;
clear all;
close all;
sys=tf(10,[0.5,1]);
t=[0:0.1:3];
amplitude=10;
input=amplitude*ones(size(t))
output=lsim(sys,input,t)
plot(t,input,t,output)

 On obtient la figure suivante : 


100
data1
data2
80

60

40

20

0
0 0.5 1 1.5 2 2.5 3

La fonction échelon permet de soumettre le système à une entrée


constante depuis t=0.
Ce signal est le principal signal d’étude des systèmes linéaires.
La réponse des systèmes linéaires du premier et du deuxième
ordre à ce signal est parfaitement connue et caractéristique du
système.
3.Réponse à une Rampe :
 code sous Matlab :

clc;
clear all;
close all;
t=[0:0.1:3]
input=t
sys=tf(10,[0.5,1])
plot(t,input,t,dcgain(sys)*t,t,lsim(sys,input,t))
title('Réponse à une Rampe')

 On obtient cette figure :

Réponse à une Rampe


30
data1
25 data2
data3

20

15

10

0
0 0.5 1 1.5 2 2.5 3

Le signal rampe est le signal de base permettant d’analyser la


réponse d’un
système en poursuite.
pour analyser la réponse d’un système par rapport à un autre
signal d’entrée, on utilisé la fonction lsim().
Comme pour la fonction step, l’affichage de la fonction lsim se fait
automatiquement.

4.Réponse à une sinusoïde :


 code sous Matlab :

clc;
clear all;
close all;
sys=tf(10,[1 0.5 1]);
[u,t]=gensig('sin',100,1000);
plot(t,u,t,lsim(sys,u,t))
title('Réponse à une sinusoïde')

 On observe le résultat suivant :


Réponse à une sinusoïde
15
data1
data2
10

-5

-10

-15
0 100 200 300 400 500 600 700 800 900 1000

Ce signal est le signal de base de l’étude fréquentielle des


systèmes linéaires, c’est à dire la réponse en fréquence du
système.
Pour obtenir des réponses à des signaux d’entrées plus complexe
on utilisé la fonction lsim avec un signal généré par gensig ,
square ou sawtooth .
Remarque :
Avec ces commandes de bases nous sommes en mesure de faire
un bon nombre de simulations pour évaluer les temps de réponse,
les dépassements, erreurs statique ou de traînée de nos
systèmes.
Si nous désirons conserver les données relatives à nos
simulations (réponses à un échelon, rampe…), il suffit de donner
deux noms de vecteurs (un pour la réponse, l’autre pour le temps)
lorsque vous faites l’appel des fonctions step() ou lsim()

III. Simulation des systèmes linéaires


continus :
Influence des zéros sur la réponse
temporelle :
Les zéros ont seulement une influence transitoire sur le
comportement d'un système.
La présence des zéros peut provoquer des dépassements
indésirables sur la réponse indicielle d'un système, ou
encore sur le signal de commande.

Un système discret possédant un ou plusieurs zéros à


l'origine est plus rapide que le système qui ne possède pas de
zéro à l'origine. Un zéro à l'origine se traduit dans le domaine
temporel par une avance d'une période d'échantillonnage.

 Système d’ordre 1 avec un zéros :


 Code sous Matlab :
clc; clear all ;close all
k=3;
t=[0:0.1:30];
input=ones(size(t));
sys1=tf(k*[-10 1],[15 1])
sys2=tf(k*[0 1],[15 1])
sys3=tf(k*[10 1],[15 1])
sys4=tf(k*[15 1],[15 1])
sys5=tf(k*[50 1],[15 1])
step (sys1)
hold on
step (sys2)
step (sys3)
step (sys4)
step (sys5)
legend('taux= -10','taux= 0','taux= 10','taux= 15','taux=50');
title('système d''ordre 1 avec un zéro')

 On obtient cette courbe :


système d'ordre 1 avec un zéro
10
taux= -10
taux= 0
8
taux= 10
taux= 15
6 taux=50
System: taux=50
Time (seconds): 86.3
Amplitude

4 Amplitude: 3.02

-2
0 20 40 60 80 100 120 140
Time (seconds)

On remarque que tous les systèmes sont stables dans un point


commun.
Système d’ordre 2 avec un zéros :
 Code sous Matlab :

clc ;clear all ;close all


K=2;
t11=15;
t12=5;
t0=-10;
t1=0;
t2=10;
t3=15;
t4=50;
sys0=[t0*K 1*K];
sys1=[t1*K 1*K];
sys2=[t2*K 1*K];
sys3=[t3*K 1*K];
sys4=[t4*K 1*K];
den=[t11*t12 t11+t12 1];
H0=tf(sys0,den,'Variable','p')
H1=tf(sys1,den,'Variable','p')
H2=tf(sys2,den,'Variable','p')
H3=tf(sys3,den,'Variable','p')
H4=tf(sys4,den,'Variable','p')
step (H0)
hold on
step (H1)
step (H2)
step (H3)
step (H4)
legend('taux= -10','taux= 0','taux= 10','taux= 15','taux= 50');
title('systeme d"ordre 2 avec un zero');

 La représentation :
systeme d"ordre 2 avec un zero
4.5
taux= -10
4
taux= 0
3.5 taux= 10
taux= 15
3
taux= 50
2.5
Amplitude

1.5

0.5

-0.5
0 20 40 60 80 100 120
Time (seconds)

La stabilité ne dépend seulement des pôles de système mais aussi


dépend des zéros.

Système d’ordre 2 sans un zéros :


Code sous Matlab :

clc, clear all, close all


k=2;
t2=25;
t3=5;
t=(0:0.1:33);
input=ones(size(t));
hold on
sys=tf(k*[600 1],conv([t2 1],[t3
1]));
output=lsim(sys,input,t);
plot(t,output)
title('system ordre 2 sans zeros');
hold off

La representation :
system ordre 2 sans zeros
60
data1
50

40

30

20

10

0
0 5 10 15 20 25 30 35

Ce système d’ordre 2 sans zéro est stable par ses pôles.

 Système d’ordre 2 avec deux pôles réels et deux


zéros réels:
Code sous Matlab :
clc, clear all, close all
k=2;
t=[0:0.1:33];
hold on
sys1=tf(k*conv([10 1],[20 1]),conv([10 1],[3 1]))
sys2=tf(k*conv([0 1],[20 2]),conv([3 1],[2 2]))
sys3=tf(k*conv([-10 1],[30 2]),conv([3 1],[1 2]))
sys4=tf(k*conv([15 1],[40 2]),conv([2 1],[5 3]))
sys5=tf(k*conv([50 1],[30 1]),conv([1 1],[6 12]))
step (sys1)
hold on
step (sys2)
step(sys3)
step (sys4)
step (sys5)
legend('taux= -10','taux= 0','taux= 10','taux= 15','taux= 50');
title('système d’’ordre 2 deux pôles réels et deux zéros réels')
hold off
La représentation :

système d’’ordre 2 deux pôles réels et deux zéros réels


500
taux= -10
400 taux= 0
taux= 10
300 taux= 15
taux= 50

200
Amplitude

100

-100

-200
0 5 10 15 20 25 30
Time (seconds)

La partie réelle d’un pôle génère un exponentiel.

Système stable   partie réelle de tous les pôles de la fonction


de transfert négative.
Lorsque les pôles sont réels et doubles, un des exponentiels est
multiplie par un facteur t.

Le système est toujours stable par ses pôles et non par ses zéros
car les zéros n’influent pas sur le régime permanant, ils influent
sur le régime transitoire.

 Système d’ordre 2 avec deux pôles complexes et deux


zéros complexes:

Code sous Matlab :

clc, clear all, close all


k=2;
t2=1.5;
t3=1;
t4=21;
t1=[-10,-2,0,4,20];
t=(0:0.1:33);
input=ones(size(t));
hold on
for i=1:len1gth(t1)
sys(i)=tf(k*conv([2 2 1],[3 2 1]),conv([5 2 1],[3 -4 1]));
output=lsim(sys(i),input,t);
plot(t,output)
title ('système ordre 2 avec 2 pôles complexe et 2 zéros complexe')
end
hold off

La représentation :

14
x 10 systéme d'ordre 2 avec 2 poles complexes et 2 zeros complexes
8

0
0 5 10 15 20 25 30 35

On remarque que les pôles complexes ont une partie réelle


positive

Le système est instable et il se diverge vers l’infini.

 Système d’ordre 2 avec deux pôles complexes et deux


zéros réels:
Code sous Matlab :

clc, clear all, close all


k=2;
t=(0:0.1:33);
sys1=tf((k*conv([-10 1],[20 1])),conv([2 2 2],[2 1 2]));
sys2=tf((k*conv([0 1],[20 1])),conv([2 2 2],[2 1 2]));
sys3=tf((k*conv([10 1],[20 1])),conv([2 2 2],[2 1 2]));
sys4=tf((k*conv([15 1],[20 1])),conv([2 2 2],[2 1 2]));
sys5=tf((k*conv([50 1],[20 1])),conv([2 2 1],[2 1 2]));
step(sys1)
hold on
step(sys2)
step(sys3)
step(sys4)
step(sys5)
legend('taux= -10','taux= 0','taux= 10','taux= 15','taux= 50')
title ('système d’’ordre 2 avec deux pôles complexe et 2 zéros
réels')
hold off

La représentation :

systemd"ordre 2 avec deux poles complex et 2 zeros reels


300
taux= -10
250 taux= 0
taux= 10
200 taux= 15
taux= 50
150
Amplitude

100

50

-50

-100
0 5 10 15 20 25
Time (seconds)

L’effet des zéros est d’augmenter le dépassement mais diminuer


le temps de monté et le temps de stabilité n’est pas trop affecté
c’est pour cela dit que le système est stable par ses pôles et non
par ses zéros aussi les zéros sont ralentie le système.
Conclusion :
Si les parties réelles sont toutes négatives, alors la réponse → 0
quand t → ∞, le système revient à sa position d’équilibre, le
système est stable.
Si un des pôles réels est positif, le système est instable. Il est de
type divergent exponentiel.
Si un des pôles complexes est à partie réelle positive, le système
est instable. Il est de type oscillatoire divergent.

IV. Etude d’un actionneur


électromagnétique :
1re partie : (f = 0)

Soit la fonction de transfert suivante :


1- L’introduction de la fonction de transfert dans Matlab est la
suivante :

2- Le gain statique est égal à : K= 0.0400

3- Les pôles de système sont : p1 = -0.9973 ; p2 = -0.0013 +


0.7081i ; p3 = -0.0013 - 0.7081i
on remarque que ce système n’a pas des zéros.

La représentation des pôles de ce système sous Matlab :


Pole-Zero Map
0.8
0.74 0.6 0.46 0.34 0.22 0.1

sys
0.6 0.86

0.4
Imaginary Axis (seconds

0.96
-1
)

0.2

1 0.8 0.6 0.4 0.2


0

-0.2
0.96

-0.4

-0.6 0.86

0.74 0.6 0.46 0.34 0.22 0.1


-0.8
-1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0
Real Axis (seconds-1)

4 - La représentation de la réponse impulsionnelle sous Matlab :

Réponse impulsionnelle
0.025
sys
0.02

0.015

0.01

0.005
Amplitude

-0.005

-0.01

-0.015

-0.02

-0.025
0 500 1000 1500 2000 2500 3000 3500 4000
Time (seconds)

5 - La représentation de la réponse indicielle à une amplitude =100 V sous


Matlab :
Réponse à échelon
0.08

0.07

0.06

0.05

Amplitude
0.04

0.03

0.02

0.01

0
0 500 1000 1500 2000 2500 3000 3500 4000
Time (seconds)

6 - Le système est à la limite de stabilité alors c’est difficile


d’attendre La valeur de régime
permanent.
7 - Le système est à la limite de stabilité donc le type de régime
transitoire est oscillatoire amortie.
8 - Le temps de réponse est égal à 2863 seconds. Donc, le système
est lent.

Code sous Matlab :

clc ; clear all ; close all


M=30;
k=15;
f=0;
r=10;
L=10;
alpha=0.2;
beta=6;

sys=tf(beta,[(L*M) ((r*M)+(L*f)) (r*f)+(L*k)+(alpha*beta) (r*k)]);


dcgain(sys);
%% 1)
p= pole(sys);
z= zero(sys);
figure(1);
pzmap(sys, 'r')
grid on
%% 2)
figure(2);
impulse(sys)
title('Réponse impulsionnelle')
%% 3)
figure(3);
amplitude= 100;
step(sys)
title('Réponse à échelon')
2éme partie : (f ≠ 0)

9 -L’introduction de la fonction de transfert dans Matlab


est la suivante :

10 - Le gain statique est égal à : K= 0.0400


11 - Les pôles de système sont : p1 = - 0.9960 ; p2 = -
0.2520 + 0.6622i ; p3 = - 0.2520 - 0.6622i
 On remarque que ce système n’a pas des zéros.

La représentation des pôles de ce système sous


Matlab :
Pole-Zero Map
0.8
0.74 0.6 0.46 0.34 0.22 0.1

0.6 0.86

0.4

Imaginary Axis (seconds


-1
) 0.96
0.2

1 0.8 0.6 0.4 0.2


0

-0.2
0.96

-0.4

-0.6 0.86

0.74 0.6 0.46 0.34 0.22 0.1


-0.8
-1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0
Real Axis (seconds-1)

12 - La représentation de la réponse impulsionnelle sous


Matlab :

-3
x 10 Réponse impulsionnelle
15
sys

10
plitude

5
Am

-5
0 5 10 15 20 25
Time (seconds)

13 - La représentation de la réponse indicielle à une


amplitude =100 V sous Matlab :

Réponse à échelon
0.05
sys
0.045

0.04

0.035

0.03
plitude

0.025
Am

0.02

0.015

0.01

0.005

0
0 5 10 15 20 25
Time (seconds)
14 - La valeur de régime permanent est à 5τ.
15 - Le type de régime transitoire est un systéme à faible
amortissement.
16 - Le temps de réponse est égal à 17.4 seconds

Code sous Matlab :


Clc ;clear all ;close all
M=30;
k=15;
f=15;
R=10;
L=10;
alpha=0.2;
beta=6;

sys=tf(beta,[ L*M R*M+L*f R*f+L*k+alpha*beta R*k]);


dcgain(sys)
%% 1)
p= pole(sys);
z= zero(sys);
figure(1);
pzmap(sys, 'r')
grid on
%% 2)
figure(2);
impulse(sys)
title('Réponse impulsionnelle')
%% 3
figure(3);
amplitude= 100;
step(sys)
title('Réponse à échelon')

Vous aimerez peut-être aussi