Vous êtes sur la page 1sur 59

TP : automatique des systèmes échantillonnés :

Tp1 : initiation à MATLAB et SIMULINK

Tp2 : systèmes échantillonnées, notion de base

Tp3 : commande numérique d’un moteur

Tp4 : correction des systèmes échantillonnés

Elaboré par :

beldi amenallah

elect 1 grp :2 tp 1/2

2017/2018
TP1:Initiation à MATLAB et SIMULINK

1. but:
Dans ce tp on va manipuler en MATLAB et connaitre les syntaxes élémentaires ainsi que les
fonctions de base utilisées dans MATLAB. de plus , une partie importante est consacrée à la maitrise
de la visualisation graphique .

2. prise en main de MATLAB:

>> r=2*pi

r=

6.2832

>> x=[1 ; -1]

x=

-1

>> A=[1 2 3 ; 4 5 6 ]

A=

1 2 3

4 5 6

>> A=[ 1,2,3;4,5,6]

A=

1 2 3

4 5 6

opérations sur les matrices

>> B=[12.5 0.8; 2 4]

B=

12.5000 0.8000

2.0000 4.0000

>> A=[-0.0286 0.0186; 0.0186 -0.0233]

A=

-0.0286 0.0186

0.0186 -0.0233
addition A+B

>> A+B

ans =

12.4714 0.8186

2.0186 3.9767

multiplication: A*B

>> A*B

ans =

-0.3203 0.0515

0.1859 -0.0783

>> B*A

ans =

-0.3426 0.2139

0.0172 -0.0560

soustraction: A-B

>> A-B

ans =

-12.5286 -0.7814

-1.9814 -4.0233

inversion: inv(A)

calculer l'inverse de A

> inv(A)

ans =

-72.7171 -58.0488

-58.0488 -89.2578

transposition: transpose(A)

>> transpose(A)

ans =

-0.0286 0.0186

0.0186 -0.0233
valeurs propres: eig(A)

>> eig(A)

ans =

-0.0447

-0.0072

rang: rank(A)

>> rank(A)

ans =

trace: trace(A)

>> trace(A)

ans =

-0.0519

determinant:det(A)

>> det(A)

ans =

3.2042e-04

définition d'un systéme par sa fonction de transfert

> G=tf([2 1],[1 2 1])

G=

2s+1

-------------

s^2 + 2 s + 1

Continuous-time transfer function.

>> help zpk

zpk Constructs zero-pole-gain model or converts to zero-pole-gain format.

Construction:

SYS = zpk(Z,P,K) creates a continuous-time zero-pole-gain (zpk) model

SYS with zeros Z, poles P, and gains K. SYS is an object of class @zpk.
>> G=zpk([-1/2],[-1 -1],2)

G=

2 (s+0.5)

---------

(s+1)^2

Continuous-time zero/pole/gain model

>> G1=tf([2 2],[1 0.5 2])

G1 =

2s+2

---------------

s^2 + 0.5 s + 2

Continuous-time transfer function.

>> G2=tf([0 1],[16 0])

G2 =

----

16 s

Continuous-time transfer function.

>> G1*G2

ans =

2s+2

---------------------

16 s^3 + 8 s^2 + 32 s

Continuous-time transfer function.

>> series(G1,G2)

ans =
2s+2

---------------------

16 s^3 + 8 s^2 + 32 s

Continuous-time transfer function.

>> G1+G2

ans =

33 s^2 + 32.5 s + 2

---------------------

16 s^3 + 8 s^2 + 32 s

Continuous-time transfer function.

>> parallel(G1,G2)

ans =

33 s^2 + 32.5 s + 2

---------------------

16 s^3 + 8 s^2 + 32 s

Continuous-time transfer function.

>> feedback(G1,G2)

ans =32 s^2 + 32 s

-------------------------

16 s^3 + 8 s^2 + 34 s + 2

Continuous-time transfer function.

> pole(G)

ans =

-1

-1

>> step(G) tracer le réponse indicielle


>> impulse(G) réponse impulsionnelle
>> bode(G)
>> rlocus(G)

programmation

boucle for
close all; clear all;
for i=1:100
wt(i)=24*i*0.01;
x(i)=12.5*cos(wt(i)+pi/3);
end
plot(wt,x,'h');
grid;
title('fonction sinusoidale')
xlabel('pulsation wt')
ylabel('fonction x')
instruction IF
close all;
clear all;
n=input('donner un nombre')
m=input('donner un nombre')
if n<m
disp('n est inférieur à m')
elseif n>m
disp('n est supérieur à m')
else
dsip('n est égal à m')
end
prise en main SIMULINK
etude d'un moteur à courant continu

aprés tout calcul faite on trouve les valeurs suivantes :

K=9.89738

Tem=0.01838

Tel=3888.88

>> G=zpk([],[-1/0.01838 -1/3888.88],0.1384)

G=

0.1384

-----------------------

(s+54.41) (s+0.0002571)

Continuous-time zero/pole/gain model.

>>step(G)
Vcap= Ω*Kw , Ω=3000tr/min=314.159rad/s

Kw=10/314.159 Kw=0.0318sv/rad
Tp2 : systèmes échantillonnées , notion de base
2. But

ce TP constitue une introduction aux systèmes échantillonnés , il a pour but de mettre en évidence
certains phénomènes produisant lors d'échantillonnage d'un processus continu

3. Discrétisation

>> G=tf([2 1],[1 2 1])

Transfer function:

2s+1

-------------

s^2 + 2 s + 1
>> help c2d

c2d Converts continuous-time dynamic system to discrete time.

SYSD = c2d(SYSC,TS,METHOD) computes a discrete-time model SYSD with

sampling time TS that approximates the continuous-time model SYSC.

The string METHOD selects the discretization method among the following:

'zoh' Zero-order hold on the inputs

'foh' Linear interpolation of inputs

'impulse' Impulse-invariant discretization

'tustin' Bilinear (Tustin) approximation.

'matched' Matched pole-zero method (for SISO systems only).

The default is 'zoh' when METHOD is omitted. The sampling time TS should

be specified in the time units of SYSC (see "TimeUnit" property).

>> Gd=c2d(G,0.1,'ZOH')

Transfer function:

0.1856 z - 0.1766

---------------------

z^2 - 1.81 z + 0.8187

Sampling time: 0.1

>> Gd=c2d(G,0.1)

Transfer function:

0.1856 z - 0.1766

---------------------

z^2 - 1.81 z + 0.8187

Sampling time: 0.1

>> Gd1=c2d(G,0.6)
Transfer function:

0.7805 z - 0.5769

----------------------

z^2 - 1.098 z + 0.3012

Sampling time: 0.6

>> Step(G,'b',Gd,'r',Gd1,'g');grid;
4.Fonction de transfert discrète

>> Hd=tf([0.047 0.046],[1 -1.81 0.9],-1)

Transfer function:

0.047 z + 0.046

------------------

z^2 - 1.81 z + 0.9

>> help zpk

zpk Constructs zero-pole-gain model or converts to zero-pole-gain format.

Construction:

SYS = zpk(Z,P,K) creates a continuous-time zero-pole-gain (zpk) model

SYS with zeros Z, poles P, and gains K. SYS is an object of class @zpk.

SYS = zpk(Z,P,K,Ts) creates a discrete-time zpk model with sampling

time Ts (set Ts=-1 if the sampling time is undetermined).

>> Den=[1 -1.81 0.9]

Den =
1.0000 -1.8100 0.9000

>> p=roots(Den)

p=

0.9050 + 0.2846i

0.9050 - 0.2846i

>> Hd=zpk(-0.046/0.047,p,0.047,-1)

Hd =

0.047 (z+0.9787)

-------------------

(z^2 - 1.81z + 0.9)

Sample time: unspecified

Discrete-time zero/pole/gain model.

>> pzmap(Hd)

>> pole(Hd)

ans =
0.9050 + 0.2846i

0.9050 - 0.2846i

5.etude de stabilité

5.1/

→ Un système échantillonné linéaire est stable si tous les pôles de la fonction de transfert
échantillonnée sont situés à l’intérieure du cercle unité du plan z

D’après la figure 1 , les pôles de la fonction Hd sont situés a l’intérieur de la cercle unité du plan Z
donc se système est stable

5.2/

H(Z) = = =

>> k=1

k=

>> H=zpk([],[0.4 0.8],k,-1)

Zero/pole/gain:

---------------

(z-0.4) (z-0.8)

Sampling time: unspecified

>> pzmap(H)
>> help feedback

feedback Feedback connection of two input/output systems.

M = feedback(M1,M2) computes a closed-loop model M for the feedback loop:

u --->O---->[ M1 ]----+---> y

| | y=M*u

+-----[ M2 ]<---+

Negative feedback is assumed and the model M maps u to y. To apply

positive feedback, use the syntax M = feedback(M1,M2,+1).

5.3

>> G=feedback(H,1)

Zero/pole/gain:

-------------------

(z^2 - 1.2z + 1.32)

5.4/

>> H=tf([1],[1 -1.2 0.32],0.1)


Transfer function:

------------------

z^2 - 1.2 z + 0.32

Sampling time: 0.1

>> rltool

Pour c=1 instable


C frontière au limite de stabilité c=0.68214
Pour c staable c=0.31516
.

6.utilisaton de Simulink
7. Erreur de position
8.Influence de la période d'échantillonnage sur la stabilité
h=tf([10],[0.1 1])

Transfer function:

10

---------

0.1 s + 1

>> h1=c2d(h,0.1)

Transfer function:

6.321

----------

z - 0.3679

Sampling time: 0.1

>> h2=c2d(h,0.01)

Transfer function:

0.9516

----------

z - 0.9048

Sampling time: 0.01

>> hbf1=feedback(h1,1)

Transfer function:

6.321

---------

z + 5.953

Sampling time: 0.1

>> hbf2=feedback(h2,1)

Transfer function:

0.9516

-----------
z + 0.04679

Sampling time: 0.01

>> figure(1);

step(hbf1,'b',hbf2,'r');

grid;

>> figure(2);

pzmap(hbf1,'b',hbf2,'r');
8.2/

• pour Te=0.1 RI divergente ==> systéme instable en BF

le pole 5.85>1 ==> pole instable

--> a l'éxtérieur du cercle

==> Te1=T mauvaise choix

• pour Te =0.01 RI convergente ==> systéme stable en BF

le pole 0.046<1 ==> pole stable ; a l'intérieur du cercle

Te2=T/10 ==> bonne choix


TP3: commande numérique d'un moteur
1. But:

étudier le comportement et l'asservissement numérique d'un moteur à courant continu :

- calcul de la fonction de transfert en z

-comportement dynamique de systèmes numériques du premier ordre

-stabilité en boucle fermée de systèmes numériques et synthèse de correcteurs numériques

-influence de la période d'échantillonnage

2. Etude du moteur en continu :

G(p)=20/(1+0.3p)

2.1

la fonction de transfert est équivalente au gain statique en régime permanent

p-->0 , Kb0=20rad/s.v

Ωmoteur= Kb0.Umoteur =20*12=240rad/s

240 rad/s = 2292 tr/min

2.2

il faut calculer le gain statique en boucle fermée:

FTBF=G(p)/(1+R.G(p))
p-->0 Kbf=20/3=6.66

Ωm=Kbf.consigne =6.66*24=160rad/s

2.3

3. Commande numérique

3.2.1

3.2.2

>> g=tf(20,[0.3 1])

Transfer function:

20
---------

0.3 s + 1

>> gd=c2d(g, 0.03)

Transfer function:

1.903

----------

z - 0.9048

Sampling time: 0.03

>> step(gd);

>> grid;
>>

3.2.3
3.2.4
3.2.5
3.2.6:

3.2.7

>> g=tf(20,[0.3 1])

Transfer function:

20

---------

0.3 s + 1

>> gd=c2d(g,0.35)
Transfer function:

13.77

----------

z - 0.3114

Sampling time: 0.35

>> rltool(gd)

>>
3.2.8
Tp °4 : regulatio d’un niveau d’eau par PID numerique
But
On s’intéresse dans ce TP à identifier les différents types de correction et étudier les
performances du système échantillonné bouclé.

Travail demandé :
Soit H(p)= K/(1+Tp) la fonction du transfert du système à étudier :

2.1 Correcteur Proportionnel: (P)

On veut intégrer système dans une boucle fermée à retour unitaire et on veut étudier les
performances du système échantillonné bouclé :

>> h=tf(0.3,[26.65 1]);

1.1 on discrétise la fonction de transfert H pour les valeurs Te=0.1 ; 0.07 ;0.05 ;0.03

>> hd1=c2d(h,0.1)

Transfer function:
0.001124

----------

z - 0.9963

Sampling time: 0.1

>> hd2=c2d(h,0.07)

Transfer function:

0.000787

----------

z - 0.9974

Sampling time: 0.07

>> hd3=c2d(h,0.05)

Transfer function:

0.0005623

----------

z - 0.9981

Sampling time: 0.05

>> hd4=c2d(h,0.03)

Transfer function:

0.0003375

----------

z - 0.9989

Sampling time: 0.03

1.2 Avec “rltool” on dégage la valeur de kp correspondant à la limite de stabilité pour


chaque cas :

>> rltool(hd1)

Val sup: limite 1 kp=1778.9


>> rltool(hd2)

Kp=2541.3

>> rltool(hd3)
Kp=3557.9

>> rltool(hd4)

Kp=5929.3
A la limite de stabilité, lorsque Te diminue kp augmente,

1.3

Pour Te = 0.03(dernier cas)

• Kp= 0.66

Erreur1= 1-0.165 =0.835 ;

• Kp=0.6
Erreur2= 1-0.152 =0.848

• Kp= 0.356
Erreur3= 1- 0.0962=0.9038

Kp 0.66 0.6 0.356


Ε 0.835 0.848 0.9038
Temps.monté 48.9 49.6s 52.9s
L’erreur statique augmente mais le système est toujours stable

2.2 Correcteur proportionnel intégral (PI)

On considère le correcteur pi suivant :*

PI(p)=kp+ki/p

2.1 On intègre cette fonction avec kp=0.6, ki=1 ;

>> pi=tf([0.6 1],[1 0])

Transfer function:

0.6 s + 1

---------

2.2 Discrétisation avec”c2d” ; Te=0.03:

>> piz=c2d(pi,0.03)

Transfer function:

0.6 z - 0.57

------------

z-1

Sampling time: 0.03

>> rltool(piz)
2.3 importer hd4 (la discrétisation de la fonction de transfert en Te=0.03)

Et le correcteur piz

La réponse du système est la suivante:


2.4

2.5

Effets indésirables :

Le ralentissement , la stabilité , la précision statique est parfaite

=> après l’ajout de l’action dérivé :

Ajout d’un déphasagestabilité augmentebande passante s’élargit le ralentissement augmente.

2.3 Correcteur PID :

>> c= zpk ([0.9989 0.3] ,[0 1], 1,0.03)

Zero/pole/gain:

(z-0.9989) (z-0.3)

------------------

z (z-1)
Sampling time: 0.03

>> rltool

pid= 0.6 + tf([1 0],[1 -1],0.03) + tf([0.2 -0.2],[1 0],0.03)


rltool

Vous aimerez peut-être aussi